<?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>225841</bug_id>
          
          <creation_ts>2021-05-14 20:57:56 -0700</creation_ts>
          <short_desc>Add support for creating/accessing/setting non-sRGB ImageData via canvas</short_desc>
          <delta_ts>2021-05-17 23:21:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>225140</blocked>
    
    <blocked>225907</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1760355</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-14 20:57:56 -0700</bug_when>
    <thetext>Add support for creating/accessing/setting non-sRGB ImageData via canvas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760365</commentid>
    <comment_count>1</comment_count>
      <attachid>428713</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-14 21:13:45 -0700</bug_when>
    <thetext>Created attachment 428713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760413</commentid>
    <comment_count>2</comment_count>
      <attachid>428728</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-15 09:48:41 -0700</bug_when>
    <thetext>Created attachment 428728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760414</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-15 09:49:32 -0700</bug_when>
    <thetext>Going to leave out updating ImageData serialized script value updating from this one, as that is a whole todo test wise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760435</commentid>
    <comment_count>4</comment_count>
      <attachid>428733</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-15 11:22:38 -0700</bug_when>
    <thetext>Created attachment 428733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760439</commentid>
    <comment_count>5</comment_count>
      <attachid>428734</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-15 11:29:15 -0700</bug_when>
    <thetext>Created attachment 428734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760440</commentid>
    <comment_count>6</comment_count>
      <attachid>428735</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-15 11:32:34 -0700</bug_when>
    <thetext>Created attachment 428735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760466</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-15 14:03:55 -0700</bug_when>
    <thetext>Windows failure in EWS looks real, related to P3 support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760494</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-15 16:46:17 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Windows failure in EWS looks real, related to P3 support.

Yep, I forgot to add a setting to enable the new canvas color space setting for windows (it is the one that is still not generated) to fix the objectstore-autoincrement-types.html test and also need to skip the P3 test on windows as I am for the glib platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760498</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-15 16:56:28 -0700</bug_when>
    <thetext>Do you want me to review before you upload the patch that deals with the Windows part?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760501</commentid>
    <comment_count>10</comment_count>
      <attachid>428751</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-15 17:00:49 -0700</bug_when>
    <thetext>Created attachment 428751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760503</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-15 17:02:09 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Do you want me to review before you upload the patch that deals with the
&gt; Windows part?

Should be dealt with now (though we will see). It should be good to review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760505</commentid>
    <comment_count>12</comment_count>
      <attachid>428751</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-15 17:18:26 -0700</bug_when>
    <thetext>Comment on attachment 428751
Patch

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

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3148
&gt; +        auto buffer = ImageBitmap::createImageBuffer(*scriptExecutionContextFromExecState(m_lexicalGlobalObject), logicalSize, RenderingMode::Unaccelerated, resolutionScale);

This function is still named scriptExecutionContextFromExecState! No longer seems quite such a good name given we don’t have something named ExecState any more.

&gt; Source/WebCore/html/ImageData.cpp:50
&gt; +    if (settings &amp;&amp; settings-&gt;colorSpace)
&gt; +        return *settings-&gt;colorSpace;
&gt; +    return defaultColorSpace;

We don’t have valueSquaredOr, more’s the pity.

&gt; Source/WebCore/html/ImageData.cpp:57
&gt; +    auto colorSpace = toPredefinedColorSpace(pixelBuffer.format().colorSpace);
&gt; +    RELEASE_ASSERT(colorSpace);
&gt; +    return adoptRef(*new ImageData(pixelBuffer.size(), pixelBuffer.takeData(), *colorSpace));

The Optional::operator*() function already includes a RELEASE_ASSERT, so we don’t need to add one. (I wonder if that will be an impediment to our moving from WTF::Optional to std::optional.)

&gt; Source/WebCore/html/ImageData.cpp:96
&gt; +        // FIXME: Does this need to be a &quot;real&quot; out of memory error with setOutOfMemoryError called on it?

How much longer are we going to move this comment around from file to file without asking around and fixing it?

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:2158
&gt; +    // FIXME: Add support for initializing the ImageData when settings.alpha is false, requiring
&gt; +    // every 4th byte to be 0xFF.

This seems a peculiar FIXME. It’s about a problem that will exist once we add a feature, and the comment is only needed if we don’t test the feature!

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:2171
&gt; +    if (newImageData.hasException())
&gt; +        return newImageData.releaseException();
&gt; +
&gt; +    initializeEmptyImageData(newImageData.returnValue());
&gt; +
&gt; +    return newImageData;

Can we write this instead?

    if (!newImageData.hasException())
        initializeEmptyImageData(newImageData.returnValue());
    return newImageData;

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:2185
&gt; +    auto imageData = ImageData::createUninitialized(std::abs(sw), std::abs(sh), m_settings.colorSpace, settings);
&gt; +    if (imageData.hasException())
&gt; +        return imageData.releaseException();
&gt; +
&gt; +    initializeEmptyImageData(imageData.returnValue());
&gt; +
&gt; +    return imageData;

Ditto.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:2218
&gt; +        auto imageData = ImageData::createUninitialized(imageDataRect.width(), imageDataRect.height(), m_settings.colorSpace, settings);
&gt; +        if (imageData.hasException())
&gt; +            return imageData.releaseException();
&gt; +
&gt; +        initializeEmptyImageData(imageData.returnValue());
&gt; +        
&gt; +        return imageData;

Ditto.

&gt; Source/WebCore/html/canvas/PredefinedColorSpace.h:29
&gt; +#include &lt;wtf/Optional.h&gt;

I think Forward.h is sufficient. Maybe trouble if some automatically generated code tries to use the return value of toPredefinedColorSpace, but otherwise should not be a problem.

&gt; Source/WebCore/platform/graphics/ImageBufferBackend.cpp:120
&gt; +    // FIXME: Add support for non 8-bit pixel formats.
&gt; +    ASSERT(destinationFormat.pixelFormat == PixelFormat::RGBA8 || destinationFormat.pixelFormat == PixelFormat::BGRA8);

What makes it safe to assert here without returning nullopt?

&gt; Source/WebCore/platform/graphics/ImageBufferBackend.cpp:157
&gt; +    // FIXME: Add support for non 8-bit pixel formats.

I’d write non-8-bit. But also given how this is written it’s supporting only two specific formats. The comment implies these are the only two 8-bit ones, which might be accurate now, but will it be forever?

&gt; Source/WebCore/platform/graphics/PixelBuffer.cpp:72
&gt; +    // NOTE: Only 8-bit formats are currently supported.
&gt; +    ASSERT(format.pixelFormat == PixelFormat::RGBA8 || format.pixelFormat == PixelFormat::BGRA8);

I wish there was a way that all these assertions shared a single comment, and a single &quot;list of 8-bit formats&quot;.

Also, I am not clear exactly what level protects us and makes this safe to assert rather than runtime check and runtime fail (as I asked above).

&gt; Source/WebCore/testing/Internals.cpp:6206
&gt; +            auto imageData = ImageData::create(static_cast&lt;unsigned&gt;(image-&gt;width()), static_cast&lt;unsigned&gt;(image-&gt;height()), { { PredefinedColorSpace::SRGB } });

Better to use static_cast than function-call-style cast, but are these type casts both needed and safe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760515</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-15 18:08:31 -0700</bug_when>
    <thetext>Thanks for the review!

(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 428751 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=428751&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3148
&gt; &gt; +        auto buffer = ImageBitmap::createImageBuffer(*scriptExecutionContextFromExecState(m_lexicalGlobalObject), logicalSize, RenderingMode::Unaccelerated, resolutionScale);
&gt; 
&gt; This function is still named scriptExecutionContextFromExecState! No longer
&gt; seems quite such a good name given we don’t have something named ExecState
&gt; any more.


So much ExecState baggage still exists! Most just need to be renamed GlobalObject, but its not 100% don&apos;t believe so I have never done the &quot;replace all&quot;.

&gt; 
&gt; &gt; Source/WebCore/html/ImageData.cpp:50
&gt; &gt; +    if (settings &amp;&amp; settings-&gt;colorSpace)
&gt; &gt; +        return *settings-&gt;colorSpace;
&gt; &gt; +    return defaultColorSpace;
&gt; 
&gt; We don’t have valueSquaredOr, more’s the pity.

One day perhaps we will work in a language with optional-chaining and the world will be our oyster.

&gt; 
&gt; &gt; Source/WebCore/html/ImageData.cpp:57
&gt; &gt; +    auto colorSpace = toPredefinedColorSpace(pixelBuffer.format().colorSpace);
&gt; &gt; +    RELEASE_ASSERT(colorSpace);
&gt; &gt; +    return adoptRef(*new ImageData(pixelBuffer.size(), pixelBuffer.takeData(), *colorSpace));
&gt; 
&gt; The Optional::operator*() function already includes a RELEASE_ASSERT, so we
&gt; don’t need to add one. (I wonder if that will be an impediment to our moving
&gt; from WTF::Optional to std::optional.)

I kind of feel like this is too sneaky now and I want to just make this create return a RefPtr&lt;&gt; instead.

&gt; 
&gt; &gt; Source/WebCore/html/ImageData.cpp:96
&gt; &gt; +        // FIXME: Does this need to be a &quot;real&quot; out of memory error with setOutOfMemoryError called on it?
&gt; 
&gt; How much longer are we going to move this comment around from file to file
&gt; without asking around and fixing it?

Hm, like two-to-three more refactors.

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:2158
&gt; &gt; +    // FIXME: Add support for initializing the ImageData when settings.alpha is false, requiring
&gt; &gt; +    // every 4th byte to be 0xFF.
&gt; 
&gt; This seems a peculiar FIXME. It’s about a problem that will exist once we
&gt; add a feature, and the comment is only needed if we don’t test the feature!

This is what happens when I write a much bigger patch and then break it up. Going to just remove the FIXME since it is really only for myself.

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:2171
&gt; &gt; +    if (newImageData.hasException())
&gt; &gt; +        return newImageData.releaseException();
&gt; &gt; +
&gt; &gt; +    initializeEmptyImageData(newImageData.returnValue());
&gt; &gt; +
&gt; &gt; +    return newImageData;
&gt; 
&gt; Can we write this instead?
&gt; 
&gt;     if (!newImageData.hasException())
&gt;         initializeEmptyImageData(newImageData.returnValue());
&gt;     return newImageData;


Yep. Will fix.

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:2185
&gt; &gt; +    auto imageData = ImageData::createUninitialized(std::abs(sw), std::abs(sh), m_settings.colorSpace, settings);
&gt; &gt; +    if (imageData.hasException())
&gt; &gt; +        return imageData.releaseException();
&gt; &gt; +
&gt; &gt; +    initializeEmptyImageData(imageData.returnValue());
&gt; &gt; +
&gt; &gt; +    return imageData;
&gt; 
&gt; Ditto.

Yep. Will fix.

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:2218
&gt; &gt; +        auto imageData = ImageData::createUninitialized(imageDataRect.width(), imageDataRect.height(), m_settings.colorSpace, settings);
&gt; &gt; +        if (imageData.hasException())
&gt; &gt; +            return imageData.releaseException();
&gt; &gt; +
&gt; &gt; +        initializeEmptyImageData(imageData.returnValue());
&gt; &gt; +        
&gt; &gt; +        return imageData;
&gt; 
&gt; Ditto.


Yep. Will fix.
&gt; 
&gt; &gt; Source/WebCore/html/canvas/PredefinedColorSpace.h:29
&gt; &gt; +#include &lt;wtf/Optional.h&gt;
&gt; 
&gt; I think Forward.h is sufficient. Maybe trouble if some automatically
&gt; generated code tries to use the return value of toPredefinedColorSpace, but
&gt; otherwise should not be a problem.

Will fix.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ImageBufferBackend.cpp:120
&gt; &gt; +    // FIXME: Add support for non 8-bit pixel formats.
&gt; &gt; +    ASSERT(destinationFormat.pixelFormat == PixelFormat::RGBA8 || destinationFormat.pixelFormat == PixelFormat::BGRA8);
&gt; 
&gt; What makes it safe to assert here without returning nullopt?

Nothing. In practice, we currently only ever request PixelFormat::RGBA8 at the moment, but that is not something to hang my hat on.

The other two pixel formats, PixelFormat::RGB10 and PixelFormat::RGB10A8, are only used to create ImageBuffers currently, and if we ever add support for something like &quot;deep buffer&quot; canvas (e.g. non-8-bits per component), it is likely we will follow CG convention and use half-float per-component read back rather than doing anything with the packed 10-bit per-component buffers themselves. 

I&apos;m going to try to do better here by investigating differentiating between ImageBuffer backing memory and pixel buffer representation, though I imagine it will take some iteration to get right. 

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ImageBufferBackend.cpp:157
&gt; &gt; +    // FIXME: Add support for non 8-bit pixel formats.
&gt; 
&gt; I’d write non-8-bit. But also given how this is written it’s supporting only
&gt; two specific formats. The comment implies these are the only two 8-bit ones,
&gt; which might be accurate now, but will it be forever?

Good point.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/PixelBuffer.cpp:72
&gt; &gt; +    // NOTE: Only 8-bit formats are currently supported.
&gt; &gt; +    ASSERT(format.pixelFormat == PixelFormat::RGBA8 || format.pixelFormat == PixelFormat::BGRA8);
&gt; 
&gt; I wish there was a way that all these assertions shared a single comment,
&gt; and a single &quot;list of 8-bit formats&quot;.
&gt; 
&gt; Also, I am not clear exactly what level protects us and makes this safe to
&gt; assert rather than runtime check and runtime fail (as I asked above).

I&apos;ll add a single choke point for these asserts and continue to refine this.

&gt; 
&gt; &gt; Source/WebCore/testing/Internals.cpp:6206
&gt; &gt; +            auto imageData = ImageData::create(static_cast&lt;unsigned&gt;(image-&gt;width()), static_cast&lt;unsigned&gt;(image-&gt;height()), { { PredefinedColorSpace::SRGB } });
&gt; 
&gt; Better to use static_cast than function-call-style cast, but are these type
&gt; casts both needed and safe?

I&apos;ll try to remove them and see. They are safe, though for large enough floats (which is what image-&gt;width() and image-&gt;height() return) will return an exception, which the code handles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760528</commentid>
    <comment_count>14</comment_count>
      <attachid>428751</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-15 18:48:38 -0700</bug_when>
    <thetext>Comment on attachment 428751
Patch

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

&gt;&gt;&gt; Source/WebCore/testing/Internals.cpp:6206
&gt;&gt;&gt; +            auto imageData = ImageData::create(static_cast&lt;unsigned&gt;(image-&gt;width()), static_cast&lt;unsigned&gt;(image-&gt;height()), { { PredefinedColorSpace::SRGB } });
&gt;&gt; 
&gt;&gt; Better to use static_cast than function-call-style cast, but are these type casts both needed and safe?
&gt; 
&gt; I&apos;ll try to remove them and see. They are safe, though for large enough floats (which is what image-&gt;width() and image-&gt;height() return) will return an exception, which the code handles.

I think you are saying that out of range floating point values clamp when converting to an integer, which I wasn’t sure of. If so, then clamping negative values to 0 and positive ones to huge sizes probably works fine. Seems like implicit conversion and a cast probably do the same thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760545</commentid>
    <comment_count>15</comment_count>
      <attachid>428766</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-15 19:37:53 -0700</bug_when>
    <thetext>Created attachment 428766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760562</commentid>
    <comment_count>16</comment_count>
      <attachid>428772</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-15 21:39:29 -0700</bug_when>
    <thetext>Created attachment 428772
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760596</commentid>
    <comment_count>17</comment_count>
      <attachid>428787</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-16 07:16:43 -0700</bug_when>
    <thetext>Created attachment 428787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760602</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-16 08:21:42 -0700</bug_when>
    <thetext>Committed r277569 (237797@main): &lt;https://commits.webkit.org/237797@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428787.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760603</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-16 08:22:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/78078911&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761051</commentid>
    <comment_count>20</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-05-17 23:21:11 -0700</bug_when>
    <thetext>r277569 introduced new assertion failures for GTK, WPE and WinCairo ports.
Filed: Bug 225907 – ASSERTION FAILED: m_imageBufferResult-&gt;colorSpace() == m_resultColorSpace in FilterEffect::copyPremultipliedResult</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428713</attachid>
            <date>2021-05-14 21:13:45 -0700</date>
            <delta_ts>2021-05-15 09:48:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225841-20210514211345.patch</filename>
            <type>text/plain</type>
            <size>89339</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBACisyMDIxLTA1LTE0ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY3JlYXRp
bmcvYWNjZXNzaW5nL3NldHRpbmcgbm9uLXNSR0IgSW1hZ2VEYXRhIHZpYSBjYW52YXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg0MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2Fu
dmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS5odG1sCisKKyAgICAg
ICAgW1dJUF0KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnR5cGVkQXJyYXlFbGVtZW50U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
U2VyaWFsaXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6
OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OmdldEpTVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlRGF0
YVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjb21wdXRlQ29sb3JTcGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpwaXhlbEJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmRhdGFTaXplKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6ZGVlcENsb25lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEYXRhOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6d2lkdGgg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpoZWlnaHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGF0YTo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURh
dGE6OnBpeGVsQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0ltYWdlRGF0
YS5pZGw6CisgICAgICAgICogaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBodG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC9P
ZmZzY3JlZW5DYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpn
ZXRDb250ZXh0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnBp
eGVsRm9ybWF0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6Y29sb3JTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVFbXB0eUltYWdlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OnBpeGVsRm9ybWF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRW1wdHlJbWFnZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldENvbnRleHRBdHRyaWJ1dGVzIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
aW50UmVuZGVyaW5nQ29udGV4dDJEOjpQYWludFJlbmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dG9QcmVkZWZpbmVkQ29sb3JTcGFjZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvUHJlZGVm
aW5lZENvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjpQaXhl
bEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFnZSk6CisK
IDIwMjEtMDUtMTQgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBQaXhlbEJ1ZmZlckZvcm1hdCB0byBzcGVjaWZ5IEltYWdlQnVmZmVyOjpnZXRQaXhlbERhdGEg
ZGVzdGluYXRpb24gZm9ybWF0IGFsbG93aW5nIGZvciBtb3JlIGNvbnRyb2wgb3ZlciBkYXRhIGNv
bnZlcnNpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNzc1MjUpCisrKyBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAyNCw2ICsx
MDI0LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBodG1sL0ltYWdlQml0
bWFwLmlkbAogICAgIGh0bWwvSW1hZ2VCaXRtYXBPcHRpb25zLmlkbAogICAgIGh0bWwvSW1hZ2VE
YXRhLmlkbAorICAgIGh0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsCiAgICAgaHRtbC9NZWRpYUNv
bnRyb2xsZXIuaWRsCiAgICAgaHRtbC9NZWRpYUVuY3J5cHRlZEV2ZW50LmlkbAogICAgIGh0bWwv
TWVkaWFFcnJvci5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTAzNiw2ICsx
MDM2LDcgQEAgJChQUk9KRUNUX0RJUikvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAogJChQUk9K
RUNUX0RJUikvaHRtbC9JbWFnZUJpdG1hcC5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvSW1hZ2VC
aXRtYXBPcHRpb25zLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9JbWFnZURhdGEuaWRsCiskKFBS
T0pFQ1RfRElSKS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbAogJChQUk9KRUNUX0RJUikvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL01lZGlhRW5jcnlwdGVk
RXZlbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL01lZGlhRXJyb3IuaWRsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNp
b24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTExODAsNiArMTE4MCw4IEBAICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWIKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZURhdGEu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdl
RGF0YS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0lt
YWdlRGF0YVNldHRpbmdzLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNJbWFnZURhdGFTZXR0aW5ncy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdlU21vb3RoaW5nUXVhbGl0eS5jcHAKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VTbW9vdGhpbmdRdWFs
aXR5LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW5u
ZXJIVE1MLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAy
Nzc1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC04OTcsNiArODk3LDcgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvSW1hZ2VCaXRtYXAuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSW1hZ2VCaXRt
YXBPcHRpb25zLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0ltYWdlRGF0YS5pZGwgXAorICAg
ICQoV2ViQ29yZSkvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwgXAogICAgICQoV2ViQ29yZSkv
aHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFFbmNy
eXB0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9NZWRpYUVycm9yLmlkbCBcCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMyMTAsNiArMzIxMCw3IEBAIEpTSW1hZ2VCaXRt
YXBPcHRpb25zLmNwcAogSlNJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCiBKU0ltYWdl
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmNwcAogSlNJbWFnZURhdGEuY3BwCitKU0lt
YWdlRGF0YVNldHRpbmdzLmNwcAogSlNJbWFnZVNtb290aGluZ1F1YWxpdHkuY3BwCiBKU0lucHV0
RXZlbnQuY3BwCiBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDEwMCw2ICs0MTAwLDcgQEAKIAkJQkM5
NkRCNDMwRjNBODgwRTAwNTczQ0IzIC8qIFJlbmRlckJveE1vZGVsT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk2REI0MjBGM0E4ODBFMDA1
NzNDQjMgLyogUmVuZGVyQm94TW9kZWxPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzk3RTIzQTEwOTE0NDk1MDAxMEQzNjEgLyogSFRN
TEFsbENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDOTdFMjM4MTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlvbi5oICov
OyB9OwogCQlCQzk3RTQxMzEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5N0U0MTEx
MDkxNTRGQTAwMTBEMzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uaCAqLzsgfTsKKwkJQkNBMDg4
RjUyNjRFMUMwODAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EwODhGMjI2NEUxQkY5MDAzRTJBNkMg
LyogSW1hZ2VEYXRhU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCQ0ExNjlBMzBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVD
YXB0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNBMTY5QTEwQkZENTVCNDAwMTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQuaCAqLzsgfTsKIAkJQkNBMjU3MTUxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRp
b25DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNBMjU3MTQxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oICovOyB9
OwogCQlCQ0EyQjA2MTEwNTA0NzYwMDA0M0JEMUMgLyogVXNlclNjcmlwdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMkIwNjAxMDUwNDc1RjAwNDNC
RDFDIC8qIFVzZXJTY3JpcHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTQzMzQsNiArMTQzMzUsOCBAQAogCQlCQzlBNjE0MjE0Njg1OUQ5MDA2
MDU3RkQgLyogRXZlbnROYW1lcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFdmVudE5hbWVzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzlBNjE0NTE0Njg1OUQ5MDA2MDU3RkQgLyogbWFrZV9ldmVudF9m
YWN0b3J5LnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9IG1ha2VfZXZlbnRfZmFjdG9yeS5wbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5QTYxNDYxNDY4NTlEOTAwNjA1N0ZEIC8qIG1ha2Vf
bmFtZXMucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gbWFrZV9uYW1lcy5wbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkNBMDg4RjIyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRp
bmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGF0YVNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDQTA4OEY0MjY0RTFCRjkwMDNFMkE2QyAvKiBJbWFnZURhdGFTZXR0
aW5ncy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gSW1hZ2VEYXRhU2V0dGluZ3MuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0ExNjlBMDBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVDYXB0aW9u
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1M
VGFibGVDYXB0aW9uRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QTE2OUExMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxUYWJsZUNhcHRpb25FbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQTI1NzE0MTI5M0MwMTAwMDdBMjYz
RCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmVydGljYWxQb3NpdGlvbkNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMzk0MCw2ICsyMzk0Myw4IEBACiAJCQkJQTc3OTc5MTMwRDZCOUQwQzAwMzg1MUI5IC8q
IEltYWdlRGF0YS5jcHAgKi8sCiAJCQkJQTc3OTc5MTQwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdl
RGF0YS5oICovLAogCQkJCUE3Nzk3OTE1MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaWRs
ICovLAorCQkJCUJDQTA4OEYyMjY0RTFCRjkwMDNFMkE2QyAvKiBJbWFnZURhdGFTZXR0aW5ncy5o
ICovLAorCQkJCUJDQTA4OEY0MjY0RTFCRjkwMDNFMkE2QyAvKiBJbWFnZURhdGFTZXR0aW5ncy5p
ZGwgKi8sCiAJCQkJOTcyMDVBQjExMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuY3Bw
ICovLAogCQkJCTk3MjA1QUIyMTIzOTI5MTAwMEIxNzM4MCAvKiBJbWFnZURvY3VtZW50LmggKi8s
CiAJCQkJRjU1QjNEOEQxMjUxRjEyRDAwM0VGMjY5IC8qIEltYWdlSW5wdXRUeXBlLmNwcCAqLywK
QEAgLTMyOTE5LDYgKzMyOTI0LDcgQEAKIAkJCQlCMkExMEQ5MTBCMzgxOEJEMDAwOTlBQTQgLyog
SW1hZ2VCdWZmZXJQaXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNFMjFERDIxODM0NDRBMDBF
NjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3
OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QkNBMDg4RjUyNjRFMUMwODAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRDE5RkVBODFGNTczOTcyMDAwQzQyRkIgLyogSW1hZ2VEZWNvZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRDE5RkVBRTFGNTc0QjZEMDAwQzQyRkIgLyogSW1hZ2VEZWNvZGVy
QVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU1Qjg3RUQxQ0FBRjBBQjAwMzQ5NDI1IC8q
IEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkocmV2aXNpb24g
Mjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzLDkgKzIzMywxNSBAQCBzdGF0aWMgdW5zaWdu
ZWQgdHlwZWRBcnJheUVsZW1lbnRTaXplKEFyCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQotCiB9CiAKK2VudW0gY2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2VUYWcgewor
ICAgIFNSR0IgPSAwCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlf
UDMpCisgICAgLCBEaXNwbGF5UDMgPSAxCisjZW5kaWYKK307CisKICNpZiBFTkFCTEUoV0VCX0NS
WVBUTykKIAogY29uc3QgdWludDMyX3QgY3VycmVudEtleUZvcm1hdFZlcnNpb24gPSAxOwpAQCAt
MzE0LDggKzMyMCw5IEBAIHN0YXRpYyB1bnNpZ25lZCBjb3VudFVzYWdlcyhDcnlwdG9LZXlVc2EK
ICAqIFZlcnNpb24gNS4gYWRkZWQgc3VwcG9ydCBmb3IgTWFwIGFuZCBTZXQgdHlwZXMuCiAgKiBW
ZXJzaW9uIDYuIGFkZGVkIHN1cHBvcnQgZm9yIDgtYml0IHN0cmluZ3MuCiAgKiBWZXJzaW9uIDcu
IGFkZGVkIHN1cHBvcnQgZm9yIEZpbGUncyBsYXN0TW9kaWZpZWQgYXR0cmlidXRlLgorICogVmVy
c2lvbiA4LiBhZGRlZCBzdXBwb3J0IGZvciBJbWFnZURhdGEncyBjb2xvclNwYWNlIGF0dHJpYnV0
ZS4KICAqLwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN1cnJlbnRWZXJzaW9uID0gNzsKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDg7CiBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgVGVybWluYXRvclRhZyA9IDB4RkZGRkZGRkY7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
aW5nUG9vbFRhZyA9IDB4RkZGRkZGRkU7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm9uSW5kZXhQ
cm9wZXJ0aWVzVGFnID0gMHhGRkZGRkZGRDsKQEAgLTQyMyw3ICs0MzAsNyBAQCBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RyaW5nRGF0YUlzOEJpdEZsCiAgKiAgICBGaWxlTGlzdFRhZyA8bGVuZ3Ro
OnVpbnQzMl90Pig8ZmlsZTpGaWxlRGF0YT4pe2xlbmd0aH0KICAqCiAgKiBJbWFnZURhdGEgOi0K
LSAqICAgIEltYWdlRGF0YVRhZyA8d2lkdGg6aW50MzJfdD48aGVpZ2h0OmludDMyX3Q+PGxlbmd0
aDp1aW50MzJfdD48ZGF0YTp1aW50OF90e2xlbmd0aH0+CisgKiAgICBJbWFnZURhdGFUYWcgPHdp
ZHRoOmludDMyX3Q+IDxoZWlnaHQ6aW50MzJfdD4gPGxlbmd0aDp1aW50MzJfdD4gPGRhdGE6dWlu
dDhfdHtsZW5ndGh9PiA8Y29sb3JTcGFjZTpQcmVkZWZpbmVkQ29sb3JTcGFjZVRhZz4KICAqCiAg
KiBCbG9iIDotCiAgKiAgICBCbG9iVGFnIDx1cmw6U3RyaW5nRGF0YT48dHlwZTpTdHJpbmdEYXRh
PjxzaXplOmxvbmcgbG9uZz4KQEAgLTEyMjksNiArMTIzNiw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgd3JpdGUoZGF0YS0+aGVpZ2h0KCkpOwogICAgICAgICAgICAgICAgIHdyaXRlKGRh
dGEtPmRhdGEoKS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgp
LmRhdGEoKSwgZGF0YS0+ZGF0YSgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB3cml0ZShz
dGF0aWNfY2FzdDx1aW50MzJfdD4oZGF0YS0+Y29sb3JTcGFjZSgpKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYXV0byogcmVn
RXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgb2JqKSkgewpAQCAtMTU1OCw2
ICsxNTY2LDIwIEBAIHByaXZhdGU6CiAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGRvdWJsZT4o
ZmlsZS5sYXN0TW9kaWZpZWRPdmVycmlkZSgpLnZhbHVlT3IoLTEpKSk7CiAgICAgfQogCisgICAg
dm9pZCB3cml0ZShQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgICAgIGNhc2UgUHJlZGVmaW5lZENvbG9yU3Bh
Y2U6OlNSR0I6CisgICAgICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbjx1aW50OF90PihtX2J1ZmZl
ciwgc3RhdGljX2Nhc3Q8dWludDhfdD4oUHJlZGVmaW5lZENvbG9yU3BhY2VUYWc6OlNSR0IpKTsK
KyAgICAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9E
SVNQTEFZX1AzKQorICAgICAgICBjYXNlIFByZWRlZmluZWRDb2xvclNwYWNlOjpEaXNwbGF5UDM6
CisgICAgICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbjx1aW50OF90PihtX2J1ZmZlciwgc3RhdGlj
X2Nhc3Q8dWludDhfdD4oUHJlZGVmaW5lZENvbG9yU3BhY2VUYWc6OkRpc3BsYXlQMykpOworICAg
ICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KKwogI2lmIEVOQUJMRShX
RUJfQ1JZUFRPKQogICAgIHZvaWQgd3JpdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdv
cml0aG0pCiAgICAgewpAQCAtMjUzNyw2ICsyNTU5LDI2IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAorICAgIGJvb2wgcmVhZChQcmVkZWZpbmVkQ29sb3JTcGFjZSYg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgdWludDhfdCB0YWc7CisgICAgICAgIGlmICghcmVhZCh0
YWcpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHN3aXRjaCAoc3RhdGlj
X2Nhc3Q8UHJlZGVmaW5lZENvbG9yU3BhY2VUYWc+KHRhZykpIHsKKyAgICAgICAgY2FzZSBQcmVk
ZWZpbmVkQ29sb3JTcGFjZVRhZzo6U1JHQjoKKyAgICAgICAgICAgIHJlc3VsdCA9IFByZWRlZmlu
ZWRDb2xvclNwYWNlOjpTUkdCOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxF
KERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisgICAgICAgIGNhc2UgUHJlZGVm
aW5lZENvbG9yU3BhY2VUYWc6OkRpc3BsYXlQMzoKKyAgICAgICAgICAgIHJlc3VsdCA9IFByZWRl
ZmluZWRDb2xvclNwYWNlOjpEaXNwbGF5UDM7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNl
bmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCiAgICAgYm9vbCByZWFkKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXImIHJlc3VsdCkKICAgICB7CkBAIC0yODY0LDE1ICsyOTA2LDkg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBKU1ZhbHVl
IGdldEpTVmFsdWUoVCogbmF0aXZlT2JqKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRvSlMobV9s
ZXhpY2FsR2xvYmFsT2JqZWN0LCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2dsb2JhbE9i
amVjdCksIG5hdGl2ZU9iaik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBK
U1ZhbHVlIGdldEpTVmFsdWUoVCYgbmF0aXZlT2JqKQorICAgIEpTVmFsdWUgZ2V0SlNWYWx1ZShU
JiYgbmF0aXZlT2JqKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRvSlMobV9sZXhpY2FsR2xvYmFs
T2JqZWN0LCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX2dsb2JhbE9iamVjdCksIG5hdGl2
ZU9iaik7CisgICAgICAgIHJldHVybiB0b0pTKG1fbGV4aWNhbEdsb2JhbE9iamVjdCwganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9nbG9iYWxPYmplY3QpLCBzdGQ6OmZvcndhcmQ8VD4obmF0
aXZlT2JqKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KQEAgLTMxNDEsMzAgKzMx
NzcsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAg
IH0KIAotICAgICAgICBhdXRvIGFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZShX
VEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAg
ICAgIGlmICghYXJyYXkpIHsKLSAgICAgICAgICAgIGZhaWwoKTsKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7Ci0gICAgICAgIH0KLQogICAgICAgICBJbnRTaXplIGxvZ2ljYWxTaXplID0g
SW50U2l6ZShsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpOwogICAgICAgICBJbnRTaXplIGlt
YWdlRGF0YVNpemUgPSBsb2dpY2FsU2l6ZTsKICAgICAgICAgaW1hZ2VEYXRhU2l6ZS5zY2FsZShy
ZXNvbHV0aW9uU2NhbGUpOwogCi0gICAgICAgIC8vIEZJWE1FOiBDcmVhdGluZyB0aGlzIEltYWdl
RGF0YSBpcyBub3QgbmVjZXNzYXJ5LiBXZSBzaG91bGQgc2tpcCByaWdodCB0byBjcmVhdGluZyBh
IFBpeGVsQnVmZmVyIGRpcmVjdGx5LgotICAgICAgICBhdXRvIGltYWdlRGF0YSA9IEltYWdlRGF0
YTo6Y3JlYXRlKGltYWdlRGF0YVNpemUsIGFycmF5LnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAg
ICBpZiAoIWltYWdlRGF0YSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQml0bWFwOjpj
cmVhdGVJbWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9s
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIHJlc29sdXRpb25TY2FsZSk7CisgICAgICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAg
ICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAK
LSAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCks
IGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2Nh
bGUpOwotICAgICAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBm
b3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1h
dDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGltYWdlRGF0YVNpemUs
IGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBpZiAoIXBpeGVsQnVmZmVy
KSB7CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVyLT5wdXRQaXhlbEJ1ZmZlcihpbWFnZURhdGEtPnBp
eGVsQnVmZmVyKCksIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7CisgICAgCisg
ICAgICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCB7IElu
dFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOwogCiAgICAgICAgIGF1dG8gYml0bWFwID0g
SW1hZ2VCaXRtYXA6OmNyZWF0ZShJbWFnZUJpdG1hcEJhY2tpbmcoV1RGTW92ZShidWZmZXIpLCBP
cHRpb25TZXQ8U2VyaWFsaXphdGlvblN0YXRlPjo6ZnJvbVJhdyhzZXJpYWxpemF0aW9uU3RhdGUp
KSk7CiAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKGJpdG1hcCk7CkBAIC0zMzg0LDE5ICszNDE0
LDI0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9wdHIgKz0gbGVuZ3RoOwogICAgICAg
ICAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIElu
dFNpemUgaW1hZ2VTaXplKHdpZHRoLCBoZWlnaHQpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIWxlbmd0aCB8fCAoaW1hZ2VTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IGxlbmd0
aCk7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEltYWdlRGF0YTo6Y3JlYXRlKGltYWdlU2l6
ZSk7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgYXV0byByZXN1bHRD
b2xvclNwYWNlID0gUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0I7CisgICAgICAgICAgICBpZiAo
bV92ZXJzaW9uID4gNykgeworICAgICAgICAgICAgICAgIGlmICghcmVhZChyZXN1bHRDb2xvclNw
YWNlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxlbmd0aCB8fCAoSW50U2l6ZSh3aWR0
aCwgaGVpZ2h0KS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSA9PSBsZW5ndGgpOworICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQod2lkdGgsIGhl
aWdodCwgcmVzdWx0Q29sb3JTcGFjZSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobGVuZ3RoKQotICAg
ICAgICAgICAgICAgIG1lbWNweShyZXN1bHQtPmRhdGEoKS5kYXRhKCksIG1fcHRyLCBsZW5ndGgp
OworICAgICAgICAgICAgICAgIG1lbWNweShyZXN1bHQucmV0dXJuVmFsdWUoKS0+ZGF0YSgpLmRh
dGEoKSwgbV9wdHIsIGxlbmd0aCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
cmVzdWx0LT5kYXRhKCkuemVyb0ZpbGwoKTsKKyAgICAgICAgICAgICAgICByZXN1bHQucmV0dXJu
VmFsdWUoKS0+ZGF0YSgpLnplcm9GaWxsKCk7CiAgICAgICAgICAgICBtX3B0ciArPSBsZW5ndGg7
Ci0gICAgICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShyZXN1bHQuZ2V0KCkpOworICAgICAgICAg
ICAgcmV0dXJuIGdldEpTVmFsdWUocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEJsb2JUYWc6IHsKICAgICAgICAgICAgIENhY2hlZFN0cmluZ1Jl
ZiB1cmw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCShyZXZpc2lvbiAyNzc1MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DaGVja2VkPHVuc2lnbmVk
LCBSZWNvcmRPdmVyZmxvdz4gSW1hZ2VEYXRhOjpkYXRhU2l6ZShjb25zdCBJbnRTaXplJiBzaXpl
KQorc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBjb21wdXRlRGF0YVNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRP
dmVyZmxvdz4gY2hlY2tlZERhdGFTaXplID0gNDsKICAgICBjaGVja2VkRGF0YVNpemUgKj0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUud2lkdGgoKSk7CkBAIC00Myw5ICs0MywxOCBAQCBDaGVj
a2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gSW1hZ2VECiAgICAgcmV0dXJuIGNoZWNrZWRE
YXRhU2l6ZTsKIH0KIAorUHJlZGVmaW5lZENvbG9yU3BhY2UgSW1hZ2VEYXRhOjpjb21wdXRlQ29s
b3JTcGFjZShPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MsIFByZWRlZmluZWRD
b2xvclNwYWNlIGRlZmF1bHRDb2xvclNwYWNlKQoreworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0
aW5ncy0+Y29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJuICpzZXR0aW5ncy0+Y29sb3JTcGFjZTsK
KyAgICByZXR1cm4gZGVmYXVsdENvbG9yU3BhY2U7Cit9CisKIFJlZjxJbWFnZURhdGE+IEltYWdl
RGF0YTo6Y3JlYXRlKFBpeGVsQnVmZmVyJiYgcGl4ZWxCdWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW1hZ2VEYXRhKFdURk1vdmUocGl4ZWxCdWZmZXIpKSk7CisgICAgYXV0byBj
b2xvclNwYWNlID0gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShwaXhlbEJ1ZmZlci5mb3JtYXQoKS5j
b2xvclNwYWNlKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2xvclNwYWNlKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbWFnZURhdGEocGl4ZWxCdWZmZXIuc2l6ZSgpLCBwaXhlbEJ1ZmZlci50
YWtlRGF0YSgpLCAqY29sb3JTcGFjZSkpOwogfQogCiBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURh
dGE6OmNyZWF0ZShPcHRpb25hbDxQaXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlcikKQEAgLTU1LDQ1
ICs2NCw1NCBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShPcHRpCiAgICAg
cmV0dXJuIEltYWdlRGF0YTo6Y3JlYXRlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSk7CiB9CiAKLVJl
ZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUpCitS
ZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBS
ZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBj
b2xvclNwYWNlKQogewotICAgIGF1dG8gZGF0YVNpemUgPSBJbWFnZURhdGE6OmRhdGFTaXplKHNp
emUpOwotICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGF1dG8gYnl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoZGF0YVNpemUudW5zYWZlR2V0KCkpOwotICAgIGlmICghYnl0ZUFycmF5
KQorICAgIGF1dG8gZGF0YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CisgICAgaWYgKGRh
dGFTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBkYXRhU2l6ZS51bnNhZmVHZXQoKSAhPSBieXRlQXJy
YXktPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IgfSwgc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSkpOworCisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSwgY29sb3JT
cGFjZSkpOwogfQogCi1SZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJ
bnRTaXplJiBzaXplLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5KQorRXhjZXB0
aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCByb3dzLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xvclNwYWNlIGRl
ZmF1bHRDb2xvclNwYWNlLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCiB7
Ci0gICAgYXV0byBkYXRhU2l6ZSA9IEltYWdlRGF0YTo6ZGF0YVNpemUoc2l6ZSk7Ci0gICAgaWYg
KGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBkYXRhU2l6ZS51bnNhZmVHZXQoKSA+IGJ5dGVB
cnJheS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIEludFNpemUgc2l6
ZShyb3dzLCBwaXhlbHNQZXJSb3cpOworICAgIGF1dG8gZGF0YVNpemUgPSBjb21wdXRlRGF0YVNp
emUoc2l6ZSk7CisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJDYW5ub3QgYWxsb2NhdGUgYSBidWZmZXIgb2Yg
dGhpcyBzaXplIl9zIH07CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJH
QkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgV1RGTW92ZShieXRlQXJy
YXkpIH0pKTsKKyAgICBhdXRvIGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKGRhdGFTaXplLnVuc2FmZUdldCgpKTsKKyAgICBpZiAoIWJ5dGVBcnJh
eSkgeworICAgICAgICAvLyBGSVhNRTogRG9lcyB0aGlzIG5lZWQgdG8gYmUgYSAicmVhbCIgb3V0
IG9mIG1lbW9yeSBlcnJvciB3aXRoIHNldE91dE9mTWVtb3J5RXJyb3IgY2FsbGVkIG9uIGl0Pwor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgIk91dCBvZiBtZW1vcnkiX3Mg
fTsKKyAgICB9CisKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBjb21wdXRlQ29sb3JTcGFjZShzZXR0
aW5ncywgZGVmYXVsdENvbG9yU3BhY2UpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
RGF0YShzaXplLCBieXRlQXJyYXkucmVsZWFzZU5vbk51bGwoKSwgY29sb3JTcGFjZSkpOwogfQog
Ci1FeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGUodW5zaWduZWQg
c3csIHVuc2lnbmVkIHNoKQorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6
Y3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGlu
Z3M+IHNldHRpbmdzKQogewogICAgIGlmICghc3cgfHwgIXNoKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKwogICAgIEludFNpemUgc2l6ZShzdywgc2gpOwot
ICAgIGF1dG8gZGF0YVNpemUgPSBJbWFnZURhdGE6OmRhdGFTaXplKHNpemUpOworICAgIGF1dG8g
ZGF0YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CiAgICAgaWYgKGRhdGFTaXplLmhhc092
ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJDYW5u
b3QgYWxsb2NhdGUgYSBidWZmZXIgb2YgdGhpcyBzaXplIl9zIH07CisKICAgICBhdXRvIGJ5dGVB
cnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXpl
LnVuc2FmZUdldCgpKTsKICAgICBpZiAoIWJ5dGVBcnJheSkgewogICAgICAgICAvLyBGSVhNRTog
RG9lcyB0aGlzIG5lZWQgdG8gYmUgYSAicmVhbCIgb3V0IG9mIG1lbW9yeSBlcnJvciB3aXRoIHNl
dE91dE9mTWVtb3J5RXJyb3IgY2FsbGVkIG9uIGl0PwogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgUmFuZ2VFcnJvciwgIk91dCBvZiBtZW1vcnkiX3MgfTsKICAgICB9CiAgICAgYnl0ZUFycmF5
LT56ZXJvRmlsbCgpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YSh7IHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCBzaXplLCBieXRlQXJyYXkucmVsZWFzZU5v
bk51bGwoKSB9KSk7CisKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBjb21wdXRlQ29sb3JTcGFjZShz
ZXR0aW5ncyk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIGJ5dGVB
cnJheS5yZWxlYXNlTm9uTnVsbCgpLCBjb2xvclNwYWNlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJl
ZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYg
Ynl0ZUFycmF5LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoKQorRXhjZXB0aW9u
T3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJh
eT4mJiBieXRlQXJyYXksIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNpZ25lZD4gc2gsIE9wdGlv
bmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncykKIHsKICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBieXRlQXJyYXktPmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAlIDQpCkBA
IC0xMDcsMjIgKzEyNSwyOCBAQCBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRh
OjpjCiAgICAgaWYgKHNoICYmIHNoLnZhbHVlKCkgIT0gaGVpZ2h0KQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IsICJzaCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaGVp
Z2h0Il9zIH07CiAKLSAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZShJbnRTaXplKHN3LCBoZWlnaHQp
LCBXVEZNb3ZlKGJ5dGVBcnJheSkpOwotICAgIGlmICghcmVzdWx0KQorICAgIEludFNpemUgc2l6
ZShzdywgaGVpZ2h0KTsKKyAgICBhdXRvIGRhdGFTaXplID0gY29tcHV0ZURhdGFTaXplKHNpemUp
OworICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgZGF0YVNpemUudW5zYWZlR2V0
KCkgIT0gYnl0ZUFycmF5LT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJh
bmdlRXJyb3IgfTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisKKyAgICBh
dXRvIGNvbG9yU3BhY2UgPSBjb21wdXRlQ29sb3JTcGFjZShzZXR0aW5ncyk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSwgY29sb3JT
cGFjZSkpOwogfQogCi1JbWFnZURhdGE6OkltYWdlRGF0YShQaXhlbEJ1ZmZlciYmIHBpeGVsQnVm
ZmVyKQotICAgIDogbV9waXhlbEJ1ZmZlcihXVEZNb3ZlKHBpeGVsQnVmZmVyKSkKK0ltYWdlRGF0
YTo6SW1hZ2VEYXRhKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiYmIGRhdGEsIFByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UpCisgICAgOiBtX3Np
emUoc2l6ZSkKKyAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQorICAgICwgbV9jb2xvclNwYWNl
KGNvbG9yU3BhY2UpCiB7CiB9CiAKIEltYWdlRGF0YTo6fkltYWdlRGF0YSgpID0gZGVmYXVsdDsK
IAotUmVmPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpkZWVwQ2xvbmUoKSBjb25zdAorUGl4ZWxCdWZm
ZXIgSW1hZ2VEYXRhOjpwaXhlbEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW1hZ2VEYXRhKG1fcGl4ZWxCdWZmZXIuZGVlcENsb25lKCkpKTsKKyAgICBQaXhlbEJ1
ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UobV9jb2xvclNw
YWNlKSB9OworICAgIHJldHVybiB7IGZvcm1hdCwgbV9zaXplLCBtX2RhdGEuZ2V0KCkgfTsKIH0K
IAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSW1hZ2VEYXRh
JiBpbWFnZURhdGEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgJKHJldmlzaW9uIDI3NzUy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CisjaW5jbHVkZSAiSW1hZ2VEYXRhU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCiAj
aW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKKyNpbmNsdWRlICJQcmVkZWZpbmVkQ29sb3JTcGFjZS5o
IgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywzMCArNDIs
MzIgQEAgY2xhc3MgSW1hZ2VEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZwogcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SW1hZ2VEYXRhPiBjcmVhdGUoUGl4ZWxCdWZm
ZXImJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0
ZShPcHRpb25hbDxQaXhlbEJ1ZmZlcj4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJiwgUmVmPFVp
bnQ4Q2xhbXBlZEFycmF5PiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9u
T3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRl
KFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWduZWQgc3csIE9wdGlvbmFsPHVuc2lnbmVk
PiBzaCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0
ZShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCBQcmVkZWZpbmVkQ29s
b3JTcGFjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxJbWFn
ZURhdGE+PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIHJvd3MsIHVuc2lnbmVkIHBpeGVs
c1BlclJvdywgUHJlZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UsIE9wdGlvbmFs
PEltYWdlRGF0YVNldHRpbmdzPiA9IFdURjo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUodW5zaWduZWQgc3csIHVu
c2lnbmVkIHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4pOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKFJlZjxVaW50OENs
YW1wZWRBcnJheT4mJiwgdW5zaWduZWQgc3csIE9wdGlvbmFsPHVuc2lnbmVkPiBzaCwgT3B0aW9u
YWw8SW1hZ2VEYXRhU2V0dGluZ3M+KTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIH5JbWFnZURhdGEo
KTsKIAotICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsQnVm
ZmVyLnNpemUoKTsgfQotICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxCdWZm
ZXIuc2l6ZSgpLndpZHRoKCk7IH0KLSAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9w
aXhlbEJ1ZmZlci5zaXplKCkuaGVpZ2h0KCk7IH0KKyAgICBzdGF0aWMgUHJlZGVmaW5lZENvbG9y
U3BhY2UgY29tcHV0ZUNvbG9yU3BhY2UoT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+LCBQcmVk
ZWZpbmVkQ29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSA9IFByZWRlZmluZWRDb2xvclNwYWNl
OjpTUkdCKTsKIAotICAgIFVpbnQ4Q2xhbXBlZEFycmF5JiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9waXhlbEJ1ZmZlci5kYXRhKCk7IH0KKyAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9CiAKLSAgICBSZWY8SW1hZ2VEYXRhPiBkZWVwQ2xvbmUoKSBjb25z
dDsKKyAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsgfQorICAg
IGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KKyAgICBVaW50
OENsYW1wZWRBcnJheSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAg
IFByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
U3BhY2U7IH0KIAotICAgIGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fcGl4ZWxCdWZmZXI7IH0KKyAgICBQaXhlbEJ1ZmZlciBwaXhlbEJ1ZmZlcigpIGNv
bnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEltYWdlRGF0YShQaXhlbEJ1ZmZlciYmKTsK
LQotICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gZGF0YVNpemUo
Y29uc3QgSW50U2l6ZSYpOworICAgIGV4cGxpY2l0IEltYWdlRGF0YShjb25zdCBJbnRTaXplJiwg
UmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYsIFByZWRlZmluZWRDb2xvclNwYWNlKTsKIAot
ICAgIFBpeGVsQnVmZmVyIG1fcGl4ZWxCdWZmZXI7CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAg
UmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IG1fZGF0YTsKKyAgICBQcmVkZWZpbmVkQ29sb3JT
cGFjZSBtX2NvbG9yU3BhY2U7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgSW1hZ2VEYXRhJik7CitXRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBJbWFnZURh
dGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURhdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
YXRhLmlkbAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURh
dGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTAgKzMyLDExIEBACiAgICAgRXhw
b3NlZD0oV2luZG93LFdvcmtlciksCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBp
bnRlcmZhY2UgSW1hZ2VEYXRhIHsKLSAgICBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIHN3LCB1
bnNpZ25lZCBsb25nIHNoKTsKLSAgICBjb25zdHJ1Y3RvcihVaW50OENsYW1wZWRBcnJheSBkYXRh
LCB1bnNpZ25lZCBsb25nIHN3LCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIHNoKTsKKyAgICBjb25z
dHJ1Y3Rvcih1bnNpZ25lZCBsb25nIHN3LCB1bnNpZ25lZCBsb25nIHNoLCBvcHRpb25hbCBJbWFn
ZURhdGFTZXR0aW5ncyBzZXR0aW5ncyk7CisgICAgY29uc3RydWN0b3IoVWludDhDbGFtcGVkQXJy
YXkgZGF0YSwgdW5zaWduZWQgbG9uZyBzdywgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBzaCwgb3B0
aW9uYWwgSW1hZ2VEYXRhU2V0dGluZ3Mgc2V0dGluZ3MpOwogCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgaGVpZ2h0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVaW50OENsYW1wZWRBcnJheSBk
YXRhOworICAgIFtFbmFibGVkQnlTZXR0aW5nPUNhbnZhc0NvbG9yU3BhY2VdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlOwogfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByZWRlZmlu
ZWRDb2xvclNwYWNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RydWN0IEltYWdlRGF0YVNldHRpbmdzIHsKKyAgICBPcHRpb25hbDxQcmVk
ZWZpbmVkQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9jYW52YXMuaHRtbCNpbWFnZWRhdGFzZXR0aW5n
cworZGljdGlvbmFyeSBJbWFnZURhdGFTZXR0aW5ncyB7CisgICAgW0VuYWJsZWRCeVNldHRpbmc9
Q2FudmFzQ29sb3JTcGFjZV0gUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFjZTsKK307Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCShyZXZpc2lvbiAyNzc1
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMyw3ICsyMTMsMTEgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8T2Zmc2NyZWVu
UmVuZGVyaW5nQwogICAgICAgICAgICAgcmV0dXJuIHsgeyBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEPiB7ICZkb3duY2FzdDxPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ+KCptX2NvbnRleHQpIH0gfSB9OwogICAgICAgICB9CiAKLSAgICAgICAgbV9jb250
ZXh0ID0gbWFrZVVuaXF1ZTxPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCp0aGlz
KTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUudm0oKSk7
CisgICAgICAgIGF1dG8gc2V0dGluZ3MgPSBjb252ZXJ0PElETERpY3Rpb25hcnk8Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEU2V0dGluZ3M+PihzdGF0ZSwgIWFyZ3VtZW50cy5pc0VtcHR5KCkgPyBh
cmd1bWVudHNbMF0uZ2V0KCkgOiBKU0M6OmpzVW5kZWZpbmVkKCkpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0p
OworCisgICAgICAgIG1fY29udGV4dCA9IG1ha2VVbmlxdWU8T2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEPigqdGhpcywgV1RGTW92ZShzZXR0aW5ncykpOwogICAgICAgICBpZiAoIW1f
Y29udGV4dCkKICAgICAgICAgICAgIHJldHVybiB7IHsgV1RGOjpudWxsb3B0IH0gfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsCShy
ZXZpc2lvbiAyNzc1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFn
ZURhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDkgKzI2LDkgQEAKIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2NhbnZhcy5odG1sI2NhbnZhc2ltYWdlZGF0YQogaW50
ZXJmYWNlIG1peGluIENhbnZhc0ltYWdlRGF0YSB7CiAgICAgLy8gcGl4ZWwgbWFuaXB1bGF0aW9u
Ci0gICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShbRW5mb3JjZVJhbmdlXSBsb25nIHN3LCBb
RW5mb3JjZVJhbmdlXSBsb25nIHNoKTsKKyAgICBJbWFnZURhdGEgY3JlYXRlSW1hZ2VEYXRhKFtF
bmZvcmNlUmFuZ2VdIGxvbmcgc3csIFtFbmZvcmNlUmFuZ2VdIGxvbmcgc2gsIG9wdGlvbmFsIElt
YWdlRGF0YVNldHRpbmdzIHNldHRpbmdzKTsKICAgICBJbWFnZURhdGEgY3JlYXRlSW1hZ2VEYXRh
KEltYWdlRGF0YSBpbWFnZWRhdGEpOwotICAgIEltYWdlRGF0YSBnZXRJbWFnZURhdGEoW0VuZm9y
Y2VSYW5nZV0gbG9uZyBzeCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBzeSwgW0VuZm9yY2VSYW5nZV0g
bG9uZyBzdywgW0VuZm9yY2VSYW5nZV0gbG9uZyBzaCk7CisgICAgSW1hZ2VEYXRhIGdldEltYWdl
RGF0YShbRW5mb3JjZVJhbmdlXSBsb25nIHN4LCBbRW5mb3JjZVJhbmdlXSBsb25nIHN5LCBbRW5m
b3JjZVJhbmdlXSBsb25nIHN3LCBbRW5mb3JjZVJhbmdlXSBsb25nIHNoLCBvcHRpb25hbCBJbWFn
ZURhdGFTZXR0aW5ncyBzZXR0aW5ncyk7CiAgICAgdW5kZWZpbmVkIHB1dEltYWdlRGF0YShJbWFn
ZURhdGEgaW1hZ2VkYXRhLCBbRW5mb3JjZVJhbmdlXSBsb25nIGR4LCBbRW5mb3JjZVJhbmdlXSBs
b25nIGR5KTsKICAgICB1bmRlZmluZWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSBpbWFnZWRhdGEs
IFtFbmZvcmNlUmFuZ2VdIGxvbmcgZHgsIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZHksIFtFbmZvcmNl
UmFuZ2VdIGxvbmcgZGlydHlYLCBbRW5mb3JjZVJhbmdlXSBsb25nIGRpcnR5WSwgW0VuZm9yY2VS
YW5nZV0gbG9uZyBkaXJ0eVdpZHRoLCBbRW5mb3JjZVJhbmdlXSBsb25nIGRpcnR5SGVpZ2h0KTsK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc5LDggKzc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRAogfQogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRChDYW52YXNCYXNlJiBjYW52YXMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdz
JiYgc2V0dGluZ3MsIGJvb2wgdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUpCi0gICAgOiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKGNhbnZhcywgdXNlc0NTU0NvbXBhdGliaWxpdHlQ
YXJzZU1vZGUpCi0gICAgLCBtX3NldHRpbmdzIHsgV1RGTW92ZShzZXR0aW5ncykgfQorICAgIDog
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZShjYW52YXMsIFdURk1vdmUoc2V0dGluZ3MpLCB1
c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZSkKIHsKIH0KIApAQCAtMjQ2LDE1ICsyNDUsNCBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJCiAgICAgZHJhd1RleHRV
bmNoZWNrZWQodGV4dFJ1biwgeCwgeSwgZmlsbCwgbWF4V2lkdGgpOwogfQogCi1QaXhlbEZvcm1h
dCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnBpeGVsRm9ybWF0KCkgY29uc3QKLXsKLSAgICAv
LyBGSVhNRTogVGFrZSBtX3NldHRpbmdzLmFscGhhIGludG8gYWNjb3VudCBoZXJlIGFuZCBhZGQg
UGl4ZWxGb3JtYXQ6OkJHUlg4LgotICAgIHJldHVybiBQaXhlbEZvcm1hdDo6QkdSQTg7Ci19Ci0K
LURlc3RpbmF0aW9uQ29sb3JTcGFjZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNvbG9yU3Bh
Y2UoKSBjb25zdAotewotICAgIHJldHVybiB0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZShtX3NldHRp
bmdzLmNvbG9yU3BhY2UpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5o
IgotI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAKQEAgLTQzLDggKzQy
LDYgQEAgcHVibGljOgogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcygpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKCkpOyB9CiAKLSAg
ICBjb25zdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyYgZ2V0Q29udGV4dEF0dHJp
YnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzOyB9Ci0KICAgICB2b2lkIGRyYXdGb2N1
c0lmTmVlZGVkKEVsZW1lbnQmKTsKICAgICB2b2lkIGRyYXdGb2N1c0lmTmVlZGVkKFBhdGgyRCYs
IEVsZW1lbnQmKTsKIApAQCAtNjEsOCArNTgsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpczJk
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGNvbnN0IEZvbnRQcm94eSogZm9u
dFByb3h5KCkgZmluYWw7Ci0gICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCBmaW5h
bDsKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IGZpbmFsOwog
CiAgICAgdm9pZCBzZXRGb250V2l0aG91dFVwZGF0aW5nU3R5bGUoY29uc3QgU3RyaW5nJik7CiAK
QEAgLTcxLDggKzY2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdGb2N1c0lmTmVlZGVkSW50
ZXJuYWwoY29uc3QgUGF0aCYsIEVsZW1lbnQmKTsKIAogICAgIFRleHREaXJlY3Rpb24gdG9UZXh0
RGlyZWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkRpcmVjdGlvbiwgY29uc3Qg
UmVuZGVyU3R5bGUqKiBjb21wdXRlZFN0eWxlID0gbnVsbHB0cikgY29uc3Q7Ci0KLSAgICBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBtX3NldHRpbmdzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJldmlzaW9uIDI3NzUy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsMTAgKzIyNCwxMSBAQCBzdGF0aWMgVGV4
dEJhc2VsaW5lIGZyb21DYW52YXNUZXh0QmFzZWxpCiAgICAgcmV0dXJuIFRvcFRleHRCYXNlbGlu
ZTsKIH0KIAotQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZShDYW52YXNCYXNlJiBjYW52YXMsIGJvb2wgdXNlc0NTU0NvbXBhdGliaWxpdHlQ
YXJzZU1vZGUpCitDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlKENhbnZhc0Jhc2UmIGNhbnZhcywgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
U2V0dGluZ3MmJiBzZXR0aW5ncywgYm9vbCB1c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZSkK
ICAgICA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQoY2FudmFzKQogICAgICwgbV9zdGF0ZVN0YWNr
KDEpCiAgICAgLCBtX3VzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlKHVzZXNDU1NDb21wYXRp
YmlsaXR5UGFyc2VNb2RlKQorICAgICwgbV9zZXR0aW5ncyhXVEZNb3ZlKHNldHRpbmdzKSkKIHsK
IH0KIApAQCAtMjE1MSwzOSArMjE1Miw1MCBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6Om5lZWRzCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgUmVmUHRyPEltYWdl
RGF0YT4gY3JlYXRlRW1wdHlJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3N0YXRpYyB2
b2lkIGluaXRpYWxpemVFbXB0eUltYWdlRGF0YShjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSkK
IHsKLSAgICBhdXRvIGRhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShzaXplKTsKLSAgICBpZiAoZGF0
YSkKLSAgICAgICAgZGF0YS0+ZGF0YSgpLnplcm9GaWxsKCk7Ci0gICAgcmV0dXJuIGRhdGE7Cisg
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBpbml0aWFsaXppbmcgdGhlIEltYWdlRGF0YSB3
aGVuIHNldHRpbmdzLmFscGhhIGlzIGZhbHNlLCByZXF1aXJpbmcKKyAgICAvLyBldmVyeSA0dGgg
Ynl0ZSB0byBiZSAweEZGLgorCisgICAgaW1hZ2VEYXRhLmRhdGEoKS56ZXJvRmlsbCgpOwogfQog
Ci1SZWZQdHI8SW1hZ2VEYXRhPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJ
bWFnZURhdGEoSW1hZ2VEYXRhJiBpbWFnZURhdGEpIGNvbnN0CitFeGNlcHRpb25PcjxSZWY8SW1h
Z2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlSW1hZ2VEYXRhKElt
YWdlRGF0YSYgaW1hZ2VEYXRhKSBjb25zdAogewotICAgIHJldHVybiBjcmVhdGVFbXB0eUltYWdl
RGF0YShpbWFnZURhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIG5ld0ltYWdlRGF0YSA9IEltYWdlRGF0
YTo6Y3JlYXRlVW5pbml0aWFsaXplZChpbWFnZURhdGEud2lkdGgoKSwgaW1hZ2VEYXRhLmhlaWdo
dCgpLCBpbWFnZURhdGEuY29sb3JTcGFjZSgpKTsKKyAgICBpZiAobmV3SW1hZ2VEYXRhLmhhc0V4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbmV3SW1hZ2VEYXRhLnJlbGVhc2VFeGNlcHRpb24o
KTsKKworICAgIGluaXRpYWxpemVFbXB0eUltYWdlRGF0YShuZXdJbWFnZURhdGEucmV0dXJuVmFs
dWUoKSk7CisKKyAgICByZXR1cm4gbmV3SW1hZ2VEYXRhOwogfQogCi1FeGNlcHRpb25PcjxSZWZQ
dHI8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlSW1hZ2VE
YXRhKGludCBzdywgaW50IHNoKSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShpbnQgc3csIGludCBz
aCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKSBjb25zdAogewogICAgIGlm
ICghc3cgfHwgIXNoKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3Ig
fTsKIAotICAgIEludFNpemUgc2l6ZSB7IHN0ZDo6YWJzKHN3KSwgc3RkOjphYnMoc2gpIH07Ci0g
ICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKHNpemUpOworICAgIGF1dG8gaW1hZ2VEYXRh
ID0gSW1hZ2VEYXRhOjpjcmVhdGVVbmluaXRpYWxpemVkKHN0ZDo6YWJzKHN3KSwgc3RkOjphYnMo
c2gpLCBtX3NldHRpbmdzLmNvbG9yU3BhY2UsIHNldHRpbmdzKTsKKyAgICBpZiAoaW1hZ2VEYXRh
Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2VFeGNlcHRp
b24oKTsKKworICAgIGluaXRpYWxpemVFbXB0eUltYWdlRGF0YShpbWFnZURhdGEucmV0dXJuVmFs
dWUoKSk7CisKKyAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8
SW1hZ2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhKGlu
dCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCkgY29uc3QKK0V4Y2VwdGlvbk9yPFJlZjxJbWFn
ZURhdGE+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURhdGEoaW50IHN4
LCBpbnQgc3ksIGludCBzdywgaW50IHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0
dGluZ3MpIGNvbnN0CiB7CisgICAgaWYgKCFzdyB8fCAhc2gpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbmRleFNpemVFcnJvciB9OworCiAgICAgaWYgKCFjYW52YXNCYXNlKCkub3JpZ2lu
Q2xlYW4oKSkgewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xl
TWVzc2FnZShNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRh
IGZyb20gY2FudmFzIGJlY2F1c2UgdGhlIGNhbnZhcyBoYXMgYmVlbiB0YWludGVkIGJ5IGNyb3Nz
LW9yaWdpbiBkYXRhLiIpKTsKICAgICAgICAgY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IgfTsKICAgICB9CiAKLSAgICBpZiAoIXN3IHx8ICFzaCkKLSAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07Ci0KICAgICBpZiAoc3cgPCAw
KSB7CiAgICAgICAgIHN4ICs9IHN3OwogICAgICAgICBzdyA9IC1zdzsKQEAgLTIxOTYsMTAgKzIy
MDgsMTkgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbgogICAgIElu
dFJlY3QgaW1hZ2VEYXRhUmVjdCB7IHN4LCBzeSwgc3csIHNoIH07CiAKICAgICBJbWFnZUJ1ZmZl
ciogYnVmZmVyID0gY2FudmFzQmFzZSgpLmJ1ZmZlcigpOwotICAgIGlmICghYnVmZmVyKQotICAg
ICAgICByZXR1cm4gY3JlYXRlRW1wdHlJbWFnZURhdGEoaW1hZ2VEYXRhUmVjdC5zaXplKCkpOwor
ICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpj
cmVhdGVVbmluaXRpYWxpemVkKGltYWdlRGF0YVJlY3Qud2lkdGgoKSwgaW1hZ2VEYXRhUmVjdC5o
ZWlnaHQoKSwgbV9zZXR0aW5ncy5jb2xvclNwYWNlLCBzZXR0aW5ncyk7CisgICAgICAgIGlmIChp
bWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gaW1hZ2VEYXRhLnJl
bGVhc2VFeGNlcHRpb24oKTsKKworICAgICAgICBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEoaW1h
Z2VEYXRhLnJldHVyblZhbHVlKCkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGltYWdlRGF0
YTsKKyAgICB9CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgYXV0byBjb21wdXRlZENvbG9yU3BhY2UgPSBJbWFn
ZURhdGE6OmNvbXB1dGVDb2xvclNwYWNlKHNldHRpbmdzLCBtX3NldHRpbmdzLmNvbG9yU3BhY2Up
OworCisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIHRvRGVzdGluYXRpb25Db2xv
clNwYWNlKGNvbXB1dGVkQ29sb3JTcGFjZSkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVm
ZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIGltYWdlRGF0YVJlY3QpOwogICAgIGlmICghcGl4
ZWxCdWZmZXIpIHsKICAgICAgICAgY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLApAQCAtMjYxMSw0ICsyNjMyLDE1IEBAIEZsb2F0UG9pbnQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZToKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCitQaXhlbEZvcm1hdCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpwaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IFRha2UgbV9zZXR0aW5ncy5hbHBoYSBpbnRvIGFjY291bnQgaGVyZSBhbmQgYWRk
IFBpeGVsRm9ybWF0OjpCR1JYOC4KKyAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJHUkE4OworfQor
CitEZXN0aW5hdGlvbkNvbG9yU3BhY2UgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y29s
b3JTcGFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvRGVzdGluYXRpb25Db2xvclNwYWNlKG1f
c2V0dGluZ3MuY29sb3JTcGFjZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmgJKHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNhbnZhc0xpbmVKb2luLmgiCiAjaW5jbHVkZSAi
Q2FudmFzUGF0aC5oIgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNs
dWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkNhbnZh
c1N0eWxlLmgiCiAjaW5jbHVkZSAiQ2FudmFzVGV4dEFsaWduLmgiCiAjaW5jbHVkZSAiQ2FudmFz
VGV4dEJhc2VsaW5lLmgiCkBAIC00Miw2ICs0Myw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhU2V0dGluZ3MuaCIKICNpbmNsdWRlICJJbWFnZVNtb290
aGluZ1F1YWxpdHkuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXll
ci5oIgpAQCAtNzgsMTEgKzgwLDEzIEBAIHVzaW5nIENhbnZhc0ltYWdlU291cmNlID0gVmFyaWFu
dDxSZWZQdHIKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UgOiBwdWJsaWMgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIENhbnZhc1BhdGggewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSk7CiBwcm90ZWN0ZWQ6Ci0g
ICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZShDYW52YXNCYXNlJiwgYm9vbCB1c2VzQ1NT
Q29tcGF0aWJpbGl0eVBhcnNlTW9kZSk7CisgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZShDYW52YXNCYXNlJiwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MmJiwgYm9vbCB1
c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZSk7CiAKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKCk7CiAKKyAgICBjb25zdCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRTZXR0aW5ncyYgZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVy
biBtX3NldHRpbmdzOyB9CisKICAgICBmbG9hdCBsaW5lV2lkdGgoKSBjb25zdCB7IHJldHVybiBz
dGF0ZSgpLmxpbmVXaWR0aDsgfQogICAgIHZvaWQgc2V0TGluZVdpZHRoKGZsb2F0KTsKIApAQCAt
MTg4LDkgKzE5Miw5IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8Q2FudmFzR3JhZGll
bnQ+PiBjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBm
bG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxKTsKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8Q2Fu
dmFzUGF0dGVybj4+IGNyZWF0ZVBhdHRlcm4oQ2FudmFzSW1hZ2VTb3VyY2UmJiwgY29uc3QgU3Ry
aW5nJiByZXBldGl0aW9uKTsKIAotICAgIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZUltYWdlRGF0
YShJbWFnZURhdGEmKSBjb25zdDsKLSAgICBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4g
Y3JlYXRlSW1hZ2VEYXRhKGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3Q7Ci0gICAgRXhjZXB0
aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IGdldEltYWdlRGF0YShpbnQgc3gsIGludCBzeSwgaW50
IHN3LCBpbnQgc2gpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVh
dGVJbWFnZURhdGEoSW1hZ2VEYXRhJikgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPEltYWdl
RGF0YT4+IGNyZWF0ZUltYWdlRGF0YShpbnQgd2lkdGgsIGludCBoZWlnaHQsIE9wdGlvbmFsPElt
YWdlRGF0YVNldHRpbmdzPikgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+
IGdldEltYWdlRGF0YShpbnQgc3gsIGludCBzeSwgaW50IHN3LCBpbnQgc2gsIE9wdGlvbmFsPElt
YWdlRGF0YVNldHRpbmdzPikgY29uc3Q7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRh
JiwgaW50IGR4LCBpbnQgZHkpOwogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSYsIGlu
dCBkeCwgaW50IGR5LCBpbnQgZGlydHlYLCBpbnQgZGlydHlZLCBpbnQgZGlydHlXaWR0aCwgaW50
IGRpcnR5SGVpZ2h0KTsKIApAQCAtMzI4LDYgKzMzMiw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0VudGlyZUJhY2tpbmdTdG9yZURpcnR5KCkgY29uc3Q7CiAgICAgRmxvYXRSZWN0IGJhY2tpbmdT
dG9yZUJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdCB7IHsgfSwgRmxvYXRTaXplIHsg
Y2FudmFzQmFzZSgpLnNpemUoKSB9IH07IH0KIAorICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
KCkgY29uc3QgZmluYWw7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBj
b25zdCBmaW5hbDsKKwogICAgIHZvaWQgdW53aW5kU3RhdGVTdGFjaygpOwogICAgIHZvaWQgcmVh
bGl6ZVNhdmVzTG9vcCgpOwogCkBAIC0zOTUsNiArNDAyLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGU7CiAgICAgYm9vbCBtX3VzZXNEaXNwbGF5
TGlzdERyYXdpbmcgeyBmYWxzZSB9OwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPERpc3Bs
YXlMaXN0OjpEcmF3aW5nQ29udGV4dD4gbV9yZWNvcmRpbmdDb250ZXh0OworICAgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRFNldHRpbmdzIG1fc2V0dGluZ3M7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9u
IDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoT2Zmc2NyZWVu
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKTsKIAotT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoQ2FudmFzQmFzZSYgY2Fu
dmFzKQotICAgIDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZShjYW52YXMsIGZhbHNlKQor
T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpPZmZzY3JlZW5DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQoQ2FudmFzQmFzZSYgY2FudmFzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRT
ZXR0aW5ncyYmIHNldHRpbmdzKQorICAgIDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZShj
YW52YXMsIFdURk1vdmUoc2V0dGluZ3MpLCBmYWxzZSkKIHsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmgJKHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE9mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBmaW5hbCA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE9mZnNjcmVlbkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRCk7CiBwdWJsaWM6Ci0gICAgT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKENhbnZhc0Jhc2UmKTsKKyAgICBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQoQ2FudmFzQmFzZSYsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzJiYp
OwogICAgIHZpcnR1YWwgfk9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCgpOwogCiAg
ICAgT2Zmc2NyZWVuQ2FudmFzJiBjYW52YXMoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxPZmZz
Y3JlZW5DYW52YXM+KGNhbnZhc0Jhc2UoKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9u
IDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhaW50UmVuZGVyaW5nQ29u
dGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQ+CiB9CiAKIFBhaW50UmVuZGVyaW5nQ29udGV4dDJE
OjpQYWludFJlbmRlcmluZ0NvbnRleHQyRChDYW52YXNCYXNlJiBjYW52YXMpCi0gICAgOiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKGNhbnZhcywgZmFsc2UpCisgICAgOiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlKGNhbnZhcywgeyB9LCBmYWxzZSkKIHsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNw
cAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVm
aW5lZENvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw0ICs0NSwyMyBAQCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yCiAgICAgcmV0dXJuIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKIH0KIAorT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+
IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Up
Cit7CisgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQjsK
KyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgY2Fz
ZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6CisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElT
UExBWV9QMykKKyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAg
ICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6OkRpc3BsYXlQMzsKKyNlbmRpZgorICAg
IH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xv
clNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVm
aW5lZENvbG9yU3BhY2UuaAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDYg
KzQwLDcgQEAgZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiB9OwogCiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoUHJlZGVmaW5lZENvbG9yU3Bh
Y2UpOworT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlKTsKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3NTI1KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyOCw2ICs0MjgsMTIgQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvYwogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGlu
Z1N3aXp6bGVUeXBlOjpJbWFnZURhdGEgfX07CiB9CiAKK09wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NB
cmd1bWVudChJbWFnZURhdGFTZXR0aW5ncyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4K
KyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQoSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGFyZ3VtZW50KQogewogICAgIHJldHVybiB7eyB2
YWx1ZUluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhhcmd1bWVudCkpLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19OwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAkocmV2aXNp
b24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
SFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNs
dWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJJbWFnZURhdGFTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgpJbmRleDogU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5o
CShyZXZpc2lvbiAyNzc1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBAIGNsYXNz
IFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s7CiBjbGFzcyBXZWJHTFVuaWZvcm1Mb2NhdGlvbjsKIGNs
YXNzIFdlYkdMVmVydGV4QXJyYXlPYmplY3Q7CiBzdHJ1Y3QgRE9NTWF0cml4MkRJbml0Oworc3Ry
dWN0IEltYWdlRGF0YVNldHRpbmdzOwogZW51bSBjbGFzcyBSZWNvcmRpbmdTd2l6emxlVHlwZSA6
IGludDsKIGVudW0gY2xhc3MgQ2FudmFzRGlyZWN0aW9uOwogZW51bSBjbGFzcyBDYW52YXNGaWxs
UnVsZTsKQEAgLTE1MCw2ICsxNTEsNyBAQCBlbnVtIEltYWdlU21vb3RoaW5nUXVhbGl0eTsKICAg
ICBtYWNybyhIVE1MSW1hZ2VFbGVtZW50KikgXAogICAgIG1hY3JvKEltYWdlQml0bWFwKikgXAog
ICAgIG1hY3JvKEltYWdlRGF0YSopIFwKKyAgICBtYWNybyhJbWFnZURhdGFTZXR0aW5ncyYpIFwK
ICAgICBtYWNybyhJbWFnZVNtb290aGluZ1F1YWxpdHkpIFwKICAgICBtYWNybyhPcHRpb25hbDxm
bG9hdD4mKSBcCiAgICAgbWFjcm8oUGF0aDJEKikgXApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCShyZXZp
c2lvbiAyNzc1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDkgQEAgVmVjdG9y
PHVpbnQ4X3Q+IEltYWdlQnVmZmVyQmFja2VuZDo6dG9CRwogCiBPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZv
cm1hdCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIHZvaWQq
IGRhdGEpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBub24gOC1iaXQg
cGl4ZWwgZm9ybWF0cy4KKyAgICBBU1NFUlQoZGVzdGluYXRpb25Gb3JtYXQucGl4ZWxGb3JtYXQg
PT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGRlc3RpbmF0aW9uRm9ybWF0LnBpeGVsRm9ybWF0ID09
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisKICAgICBhdXRvIHNvdXJjZVJlY3RTY2FsZWQgPSB0b0Jh
Y2tlbmRDb29yZGluYXRlcyhzb3VyY2VSZWN0KTsKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQ
aXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGRlc3RpbmF0aW9uRm9ybWF0LCBzb3VyY2VSZWN0U2NhbGVk
LnNpemUoKSk7CkBAIC0xMzQsMjMgKzEzNywxNSBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1h
Z2VCdWZmZXJCYWNrZW5kCiAgICAgaWYgKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkgIT0gc291cmNl
UmVjdFNjYWxlZC5zaXplKCkpCiAgICAgICAgIHBpeGVsQnVmZmVyLT5kYXRhKCkuemVyb0ZpbGwo
KTsKIAotICAgIHVuc2lnbmVkIHNvdXJjZUJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsKLSAg
ICBjb25zdCB1aW50OF90KiBzb3VyY2VSb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
ZGF0YSkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2VCeXRlc1BlclJvdyArIHNvdXJj
ZVJlY3RDbGlwcGVkLngoKSAqIDQ7Ci0KLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbkJ5dGVzUGVy
Um93ID0gNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKTsKLSAgICB1aW50OF90KiBkZXN0aW5h
dGlvblJvd3MgPSBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmRhdGEoKSArIGRlc3RpbmF0aW9uUmVjdC55
KCkgKiBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7Ci0K
LSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBzb3VyY2VGb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IgfTsKLQogICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7Ci0g
ICAgc291cmNlLmZvcm1hdCA9IHNvdXJjZUZvcm1hdDsKLSAgICBzb3VyY2UuYnl0ZXNQZXJSb3cg
PSBzb3VyY2VCeXRlc1BlclJvdzsKLSAgICBzb3VyY2Uucm93cyA9IHNvdXJjZVJvd3M7CisgICAg
c291cmNlLmZvcm1hdCA9IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwg
cGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH07CisgICAgc291cmNlLmJ5dGVzUGVyUm93ID0g
Ynl0ZXNQZXJSb3coKTsKKyAgICBzb3VyY2Uucm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsg
c291cmNlUmVjdENsaXBwZWQueCgpICogNDsKICAgICAKICAgICBQaXhlbEJ1ZmZlckNvbnZlcnNp
b25WaWV3IGRlc3RpbmF0aW9uOwogICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IGRlc3RpbmF0aW9u
Rm9ybWF0OwotICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gZGVzdGluYXRpb25CeXRlc1Bl
clJvdzsKLSAgICBkZXN0aW5hdGlvbi5yb3dzID0gZGVzdGluYXRpb25Sb3dzOworICAgIGRlc3Rp
bmF0aW9uLmJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKTsKKyAgICBk
ZXN0aW5hdGlvbi5yb3dzID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5kYXRhKCkgKyBkZXN0aW5hdGlv
blJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgp
ICogNDsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0
aW5hdGlvblJlY3Quc2l6ZSgpKTsKIApAQCAtMTU5LDE0ICsxNTQsMTQgQEAgT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFja2VuZAogCiB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6
cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHNvdXJjZVBpeGVsQnVmZmVyLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb25Qb2ludCwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCB2b2lkKiBkYXRh
KQogewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igbm9uLVJHQkE4IHBpeGVsIGZvcm1h
dHMuCi0gICAgQVNTRVJUKHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgpLnBpeGVsRm9ybWF0ID09
IFBpeGVsRm9ybWF0OjpSR0JBOCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBub24g
OC1iaXQgcGl4ZWwgZm9ybWF0cy4KKyAgICBBU1NFUlQoc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0
KCkucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IHNvdXJjZVBpeGVsQnVmZmVy
LmZvcm1hdCgpLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBhdXRv
IHNvdXJjZVJlY3RTY2FsZWQgPSB0b0JhY2tlbmRDb29yZGluYXRlcyhzb3VyY2VSZWN0KTsKICAg
ICBhdXRvIGRlc3RpbmF0aW9uUG9pbnRTY2FsZWQgPSB0b0JhY2tlbmRDb29yZGluYXRlcyhkZXN0
aW5hdGlvblBvaW50KTsKIAotICAgIEludFJlY3Qgc291cmNlUmVjdENsaXBwZWQgPSBpbnRlcnNl
Y3Rpb24oeyBJbnRQb2ludDo6emVybygpLCBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkgfSwgc291
cmNlUmVjdFNjYWxlZCk7Ci0gICAgSW50UmVjdCBkZXN0aW5hdGlvblJlY3QgPSBzb3VyY2VSZWN0
Q2xpcHBlZDsKKyAgICBhdXRvIHNvdXJjZVJlY3RDbGlwcGVkID0gaW50ZXJzZWN0aW9uKHsgSW50
UG9pbnQ6Onplcm8oKSwgc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpIH0sIHNvdXJjZVJlY3RTY2Fs
ZWQpOworICAgIGF1dG8gZGVzdGluYXRpb25SZWN0ID0gc291cmNlUmVjdENsaXBwZWQ7CiAgICAg
ZGVzdGluYXRpb25SZWN0Lm1vdmVCeShkZXN0aW5hdGlvblBvaW50U2NhbGVkKTsKIAogICAgIGlm
IChzb3VyY2VSZWN0U2NhbGVkLngoKSA8IDApCkBAIC0xNzgsMjQgKzE3MywxNSBAQCB2b2lkIElt
YWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoCiAgICAgZGVzdGluYXRpb25SZWN0Lmlu
dGVyc2VjdChiYWNrZW5kUmVjdCgpKTsKICAgICBzb3VyY2VSZWN0Q2xpcHBlZC5zZXRTaXplKGRl
c3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCi0gICAgdW5zaWduZWQgc291cmNlQnl0ZXNQZXJSb3cg
PSA0ICogc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRoKCk7Ci0gICAgY29uc3QgdWludDhf
dCogc291cmNlUm93cyA9IHNvdXJjZVBpeGVsQnVmZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VS
ZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2VCeXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngo
KSAqIDQ7Ci0KLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJS
b3coKTsKLSAgICB1aW50OF90KiBkZXN0aW5hdGlvblJvd3MgPSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbkJ5dGVzUGVy
Um93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7Ci0KLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBz
b3VyY2VGb3JtYXQgPSBzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKTsKLSAgICBQaXhlbEJ1ZmZl
ckZvcm1hdCBkZXN0aW5hdGlvbkZvcm1hdCB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVs
Rm9ybWF0KCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OwotCiAgICAgQ29uc3RQaXhl
bEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0gc291cmNl
Rm9ybWF0OwotICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IHNvdXJjZUJ5dGVzUGVyUm93OwotICAg
IHNvdXJjZS5yb3dzID0gc291cmNlUm93czsKLSAgICAKKyAgICBzb3VyY2UuZm9ybWF0ID0gc291
cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCk7CisgICAgc291cmNlLmJ5dGVzUGVyUm93ID0gNCAqIHNv
dXJjZVBpeGVsQnVmZmVyLnNpemUoKS53aWR0aCgpOworICAgIHNvdXJjZS5yb3dzID0gc291cmNl
UGl4ZWxCdWZmZXIuZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJj
ZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7CisKICAgICBQaXhlbEJ1
ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9
IGRlc3RpbmF0aW9uRm9ybWF0OwotICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gZGVzdGlu
YXRpb25CeXRlc1BlclJvdzsKLSAgICBkZXN0aW5hdGlvbi5yb3dzID0gZGVzdGluYXRpb25Sb3dz
OworICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IHsgZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgcGl4
ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH07CisgICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cg
PSBieXRlc1BlclJvdygpOworICAgIGRlc3RpbmF0aW9uLnJvd3MgPSByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRl
c1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0OwogCiAgICAgY29udmVydEltYWdlUGl4
ZWxzKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNw
cAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2NiwyMiBAQCBPcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyCiAgICAgcmV0dXJuIHsgeyBmb3JtYXQs
IHNpemUsIHBpeGVsQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9IH07CiB9CiAKK09wdGlvbmFsPFBp
eGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0
JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxKU0M6OkFycmF5QnVmZmVyPiYmIGFy
cmF5QnVmZmVyKQoreworICAgIC8vIE5PVEU6IE9ubHkgOC1iaXQgZm9ybWF0cyBhcmUgY3VycmVu
dGx5IHN1cHBvcnRlZC4KKyAgICBBU1NFUlQoZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9y
bWF0OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KworICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7
CisgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIGlmIChidWZmZXJTaXplLnVuc2FmZUdldCgpICE9IGFycmF5QnVmZmVy
LT5ieXRlTGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBw
aXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVm
ZmVyKSwgMCwgYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSk7CisgICAgaWYgKCFwaXhlbEFycmF5KQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXpl
LCBwaXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OworfQorCiBQaXhlbEJ1ZmZlcjo6UGl4
ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYg
c2l6ZSwgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYgZGF0YSkKICAgICA6IG1fZm9ybWF0
IHsgZm9ybWF0IH0KICAgICAsIG1fc2l6ZSB7IHNpemUgfQpAQCAtNzQsNiArOTAsMTQgQEAgUGl4
ZWxCdWZmZXI6OlBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZgogICAgIFJFTEVBU0VfQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKG1fc2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQo
KSA8PSBtX2RhdGEtPmxlbmd0aCgpKTsKIH0KIAorUGl4ZWxCdWZmZXI6OlBpeGVsQnVmZmVyKGNv
bnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUsIEpTQzo6
VWludDhDbGFtcGVkQXJyYXkmIGRhdGEpCisgICAgOiBtX2Zvcm1hdCB7IGZvcm1hdCB9CisgICAg
LCBtX3NpemUgeyBzaXplIH0KKyAgICAsIG1fZGF0YSB7IGRhdGEgfQoreworICAgIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKG1fc2l6ZS5hcmVhKCkgKiA0KS51bnNh
ZmVHZXQoKSA8PSBtX2RhdGEtPmxlbmd0aCgpKTsKK30KKwogUGl4ZWxCdWZmZXI6On5QaXhlbEJ1
ZmZlcigpID0gZGVmYXVsdDsKIAogUGl4ZWxCdWZmZXIgUGl4ZWxCdWZmZXI6OmRlZXBDbG9uZSgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVs
QnVmZmVyLmgJKHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BpeGVsQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDEwIEBAIGNs
YXNzIFBpeGVsQnVmZmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQaXhlbEJ1ZmZlcik7
CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVy
PiB0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0cnlDcmVhdGUo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJiwgUmVmPEpTQzo6QXJyYXlC
dWZmZXI+JiYpOwogCiAgICAgUGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBj
b25zdCBJbnRTaXplJiwgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYpOworICAgIFBpeGVs
QnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYsIEpTQzo6VWlu
dDhDbGFtcGVkQXJyYXkmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGl4ZWxCdWZmZXIoKTsKIAog
ICAgIFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYpID0gZGVmYXVsdDsKQEAgLTUzLDYgKzU1LDgg
QEAgcHVibGljOgogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Np
emU7IH0KICAgICBKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5JiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmdldCgpOyB9CiAKKyAgICBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJiB0YWtl
RGF0YSgpIHsgcmV0dXJuIFdURk1vdmUobV9kYXRhKTsgfQorCiAgICAgUGl4ZWxCdWZmZXIgZGVl
cENsb25lKCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3
NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29u
dmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgdm9p
ZCBjb252ZXJ0SW1hZ2VQaXhlbHNBY2NlbGVyYXRlCiAKICAgICAgICAgdkltYWdlX0Vycm9yIGNv
bnZlcnRlckNyZWF0ZUVycm9yID0ga3ZJbWFnZU5vRXJyb3I7CiAgICAgICAgIGF1dG8gY29udmVy
dGVyID0gYWRvcHRDRih2SW1hZ2VDb252ZXJ0ZXJfQ3JlYXRlV2l0aENHSW1hZ2VGb3JtYXQoJnNv
dXJjZUNHSW1hZ2VGb3JtYXQsICZkZXN0aW5hdGlvbkNHSW1hZ2VGb3JtYXQsIG51bGxwdHIsIGt2
SW1hZ2VOb0ZsYWdzLCAmY29udmVydGVyQ3JlYXRlRXJyb3IpKTsKLSAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ3JlYXRlRXJyb3IsIGNvbnZlcnRlckNyZWF0ZUVy
cm9yICE9IGt2SW1hZ2VOb0Vycm9yLCAidkltYWdlQ29udmVydGVyIGNyZWF0aW9uIGZhaWxlZCB3
aXRoIGVycm9yOiAlemQiLCBjb252ZXJ0ZXJDcmVhdGVFcnJvcik7CisgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0VfVU5VU0VEKGNvbnZlcnRlckNyZWF0ZUVycm9yLCBjb252ZXJ0ZXJDcmVhdGVF
cnJvciA9PSBrdkltYWdlTm9FcnJvciwgInZJbWFnZUNvbnZlcnRlciBjcmVhdGlvbiBmYWlsZWQg
d2l0aCBlcnJvcjogJXpkIiwgY29udmVydGVyQ3JlYXRlRXJyb3IpOwogCiAgICAgICAgIHZJbWFn
ZV9FcnJvciBjb252ZXJ0ZXJDb252ZXJ0RXJyb3IgPSB2SW1hZ2VDb252ZXJ0X0FueVRvQW55KGNv
bnZlcnRlci5nZXQoKSwgJnNvdXJjZVZJbWFnZUJ1ZmZlciwgJmRlc3RpbmF0aW9uVkltYWdlQnVm
ZmVyLCBudWxscHRyLCBrdkltYWdlTm9GbGFncyk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0VfVU5VU0VEKGNvbnZlcnRlckNvbnZlcnRFcnJvciwgY29udmVydGVyQ29udmVydEVycm9yID09
IGt2SW1hZ2VOb0Vycm9yLCAidkltYWdlQ29udmVydF9BbnlUb0FueSBmYWlsZWQgY29udmVyc2lv
biB3aXRoIGVycm9yOiAlemQiLCBjb252ZXJ0ZXJDb252ZXJ0RXJyb3IpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzM5LDcgKzUz
MzksNyBAQCB2b2lkIEludGVybmFsczo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkCiAgICAgaWYg
KCFyZ2JhKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0byBpbWFnZURhdGEgPSBJbWFn
ZURhdGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksIHZpZGVvU2V0dGluZ3Mud2lkdGgo
KSwgdmlkZW9TZXR0aW5ncy5oZWlnaHQoKSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURh
dGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksIHZpZGVvU2V0dGluZ3Mud2lkdGgoKSwg
dmlkZW9TZXR0aW5ncy5oZWlnaHQoKSwgeyB7IFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCIH0g
fSk7CiAgICAgaWYgKCFpbWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIG1fbmV4dFRy
YWNrRnJhbWVQcm9taXNlLT5yZXNvbHZlKGltYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7
CiAgICAgZWxzZQpAQCAtNjIxMSw3ICs2MjExLDcgQEAgdm9pZCBJbnRlcm5hbHM6OmxvYWRBcnR3
b3JrSW1hZ2UoU3RyaW5nJgogICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZSA9IG1ha2VVbmlxdWU8
QXJ0d29ya0ltYWdlUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSk7CiAgICAgbV9hcnR3b3JrTG9h
ZGVyID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VMb2FkZXI+KCpjb250ZXh0RG9jdW1lbnQoKSwg
dXJsLCBbdGhpc10oSW1hZ2UqIGltYWdlKSB7CiAgICAgICAgIGlmIChpbWFnZSkgewotICAgICAg
ICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZSh1bnNpZ25lZChpbWFnZS0+
d2lkdGgoKSksIHVuc2lnbmVkKGltYWdlLT5oZWlnaHQoKSkpOworICAgICAgICAgICAgYXV0byBp
bWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW1hZ2Ut
PndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW1hZ2UtPmhlaWdodCgpKSwgeyB7IFBy
ZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCIH0gfSk7CiAgICAgICAgICAgICBpZiAoIWltYWdlRGF0
YS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBtX2FydHdvcmtJbWFnZVByb21pc2Ut
PnJlc29sdmUoaW1hZ2VEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKICAgICAgICAgICAgIGVs
c2UKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzUyNSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA1LTE0ICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcvYWNj
ZXNzaW5nL3NldHRpbmcgbm9uLXNSR0IgSW1hZ2VEYXRhIHZpYSBjYW52YXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg0MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoK
KyAgICAgICAgUmVtb3ZlIHdpZGUtZ2FtdXQtY2FudmFzIG5vdyB0aGF0IHRoZXkgc2hvdWxkIHBh
c3MuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1w
My1JbWFnZURhdGEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9j
YW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbDogQWRkZWQuCisgICAg
ICAgIEFkZCBuZXcgdGVzdCBleGVyY2lzaW5nIGdldEltYWdlRGF0YSBhbmQgcHV0SW1hZ2VEYXRh
IHdpdGggbm9uLXNSR0IgY2FudmFzZXMKKyAgICAgICAgYW5kIG5vbi1zUkdCIEltYWdlRGF0YS4K
KyAKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtaW1hZ2VEYXRhLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgVXBkYXRlIHJlc3VsdHMgZm9yIHVwZGF0ZWQgZXJyb3IgbWVzc2FnZXMsIHdoaWNo
IGFyZSBhIGJpdCB3b3JzZSBkdWUgYWRkaXRpb25hbAorICAgICAgICBhbWJpZ3VpdHkgaW4gc2ln
bmF0dXJlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgTWFyayBuZXcgdGVzdCBhcyBmYWlsaW5nIG9uIGdsaWIgZHVlIHRvIGxhY2sgb2YgZGlz
cGxheS1wMyBzdXBwb3J0LgorCiAyMDIxLTA1LTE0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBhIG1lZGlhIGVsZW1lbnQgd2l0aCBhIGRh
dGEgdXJsIGFuZCAiY3Jvc3NvcmlnaW49J2Fub255bW91cyciIGRvZXNuJ3QgbG9hZApJbmRleDog
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyNzc1MjUpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0zOTk1LDkgKzM5OTUsNiBAQCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy1pbWFnZXMtdG8tdGhlLWNhbnZhcy9p
bWFnZS1vcmllbnRhdGlvbi9kcmF3SW1hZ2UtZnJvbS1lbGVtZW50LXN3YXAtd2lkdGgtaGVpZ2h0
LnRlbnRhdGl2ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy1pbWFnZXMtdG8tdGhlLWNh
bnZhcy9pbWFnZS1vcmllbnRhdGlvbi9kcmF3SW1hZ2UtZnJvbS1lbGVtZW50LnRlbnRhdGl2ZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgU29tZXRpbWVzIHByaW50cyB3ZWlyZCBvdXRw
dXQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGVzdHMuCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMgWyBGYWlsdXJl
IFBhc3MgXQotCiAjIENTUyBNYXNvbnJ5IExheW91dCBub3Qgc3VwcG9ydGVkLgogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbWFzb25yeS50ZW50YXRpdmUgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi8yMDIxMTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZCBbIFNraXAgXQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3Bh
Y2UtZGlzcGxheS1wMy1JbWFnZURhdGEtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdl
RGF0YS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTkgQEAKK1Rlc3Qg
dGhhdCBwaXhlbCBhY2Nlc3MgZnVuY3Rpb25zIHdvcmsgd2l0aCBub24tU1JHQiBjb2xvciBzcGFj
ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGltYWdlRGF0YUNyZWF0
ZWRGcm9tRGlzcGxheVAzQ2FudmFzLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGlt
YWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdC
LmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAz
Q2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VEaXNwbGF5UDMuY29sb3JTcGFjZSBpcyAiZGlzcGxh
eS1wMyIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzLmNvbG9yU3BhY2UgaXMg
InNyZ2IiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhc092ZXJyaWRpbmdDb2xv
clNwYWNlU1JHQi5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJv
bVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZURpc3BsYXlQMy5jb2xvclNwYWNlIGlzICJk
aXNwbGF5LXAzIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9y
LmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRh
Q29uc3RydWN0b3JTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIGlzICJzcmdiIgor
UEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9y
U3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBpbWFnZURh
dGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlci5jb2xvclNwYWNl
IGlzICJzcmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9y
UGFzc2luZ0J1ZmZlclNldHRpbmdDb2xvclNwYWNlVG9TUkdCLmNvbG9yU3BhY2UgaXMgInNyZ2Ii
CitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVm
ZmVyU2V0dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAz
IgorCitUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBjb2xvcihkaXNwbGF5LXAzIDAg
MSAwKSBkcmF3biBpbnRvIGl0CisKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVk
IGNvbG9yIHNwYWNlLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRp
c3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRp
c3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAy
NTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVz
dCBnZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZh
cyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1Mg
ZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBk
YXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0
YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQs
IG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEg
MCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BB
U1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRh
LmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBkaXNw
bGF5LXAzIGNhbnZhcyB3aXRoIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGludG8gaXQKKworVGVz
dCBnZXRJbWFnZURhdGEgd2l0aCBubyBzcGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgZGlzcGxh
eS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpCitQ
QVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlz
IDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3Ngor
UEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Igc3Bl
Y2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAx
IDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRh
dGEuZGF0YVswXSBpcyAzCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRh
WzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0
aCBkaXNwbGF5LXAzIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhh
cyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlz
ICJkaXNwbGF5LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsx
XSBpcyAyNTEKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAy
NTUKKworVGVzdGluZyBhIHNyZ2IgY2FudmFzIHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkg
ZHJhd24gaW50byBpdAorCitUZXN0IGdldEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xv
ciBzcGFjZSwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAg
MSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBk
YXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0
YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdp
dGggc3JnYiBzcGVjaWZpZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlz
cGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3Jn
YiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFT
UyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldElt
YWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52
YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNv
bG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1Mg
ZGF0YS5kYXRhWzFdIGlzIDI1MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5k
YXRhWzNdIGlzIDI1NQorCitUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBjb2xvcihzcmdiLXAz
IDAgMSAwKSBkcmF3biBpbnRvIGl0CisKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lm
aWVkIGNvbG9yIHNwYWNlLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2Ig
MCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNT
IGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5k
YXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEg
d2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihz
cmdiIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgor
UEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRh
dGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VE
YXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBo
YXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBp
cyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRhdGFb
MV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10gaXMg
MjU1CisKKworVGVzdGluZyBhIGRpc3BsYXktcDMgY2FudmFzIHdpdGggZGlzcGxheS1wMyBJbWFn
ZURhdGEgZHJhd24gaW50byBpdAorCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BB
U1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRh
LmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitQQVNTIGRhdGEuY29sb3JT
cGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5k
YXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10g
aXMgMjU1CisKK1Rlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIHNyZ2IgSW1hZ2VEYXRh
IGRyYXduIGludG8gaXQKKworUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRh
dGEuZGF0YVswXSBpcyAzCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRh
WzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorUEFTUyBkYXRhLmNvbG9yU3BhY2Ug
aXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRh
WzFdIGlzIDI1MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlz
IDI1NQorCitUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBkaXNwbGF5LXAzIEltYWdlRGF0YSBk
cmF3biBpbnRvIGl0CisKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRh
LmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsy
XSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlz
ICJkaXNwbGF5LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsx
XSBpcyAyNTEKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAy
NTUKKworVGVzdGluZyBhIHNyZ2IgY2FudmFzIHdpdGggc3JnYiBJbWFnZURhdGEgZHJhd24gaW50
byBpdAorCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBd
IGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAor
UEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxh
eS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUx
CitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFn
ZURhdGEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
Y29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFn
ZURhdGEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5MCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGVzdCB0aGF0IHBpeGVsIGFjY2VzcyBmdW5jdGlvbnMgd29yayB3aXRoIG5vbi1TUkdCIGNv
bG9yIHNwYWNlcy4iKTsKKworbGV0IGNhbnZhc0Rpc3BsYXlQMyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOworbGV0IGNvbnRleHREaXNwbGF5UDMgPSBjYW52YXNEaXNwbGF5UDMu
Z2V0Q29udGV4dCgiMmQiLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKKworbGV0IGNh
bnZhc1NSR0IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKK2xldCBjb250ZXh0
U1JHQiA9IGNhbnZhc1NSR0IuZ2V0Q29udGV4dCgiMmQiLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9
KTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXMgPSBjb250ZXh0
RGlzcGxheVAzLmNyZWF0ZUltYWdlRGF0YSg1MCwgNTApOworc2hvdWxkQmUoImltYWdlRGF0YUNy
ZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCk7CisK
K2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9y
U3BhY2VTUkdCID0gY29udGV4dERpc3BsYXlQMy5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNv
bG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbURpc3Bs
YXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImAp
OworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdD
b2xvclNwYWNlRGlzcGxheVAzID0gY29udGV4dERpc3BsYXlQMy5jcmVhdGVJbWFnZURhdGEoNTAs
IDUwLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFD
cmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxheVAzLmNv
bG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9t
U1JHQkNhbnZhcyA9IGNvbnRleHRTUkdCLmNyZWF0ZUltYWdlRGF0YSg1MCwgNTApOworc2hvdWxk
QmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhcy5jb2xvclNwYWNlIiwgYCJzcmdiImAp
OworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JT
cGFjZVNSR0IgPSBjb250ZXh0U1JHQi5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3Bh
Y2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNP
dmVycmlkaW5nQ29sb3JTcGFjZVNSR0IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3Qg
aW1hZ2VEYXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VEaXNwbGF5
UDMgPSBjb250ZXh0U1JHQi5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJk
aXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNP
dmVycmlkaW5nQ29sb3JTcGFjZURpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImAp
OworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yID0gbmV3
IEltYWdlRGF0YSg1MCwgNTAsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImlt
YWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3IuY29sb3JTcGFjZSIsIGAic3Jn
YiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclNl
dHRpbmdDb2xvclNwYWNlVG9TUkdCID0gbmV3IEltYWdlRGF0YSg1MCwgNTAsIHsgY29sb3JTcGFj
ZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29u
c3RydWN0b3JTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOwor
Citjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0Nv
bG9yU3BhY2VUb0Rpc3BsYXlQMyA9IG5ldyBJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6
ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0
YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJk
aXNwbGF5LXAzImApOworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0
cnVjdG9yUGFzc2luZ0J1ZmZlciA9IG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5
KDQwMCksIDEwLCAxMCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiaW1hZ2VE
YXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXIuY29sb3JTcGFj
ZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25z
dHJ1Y3RvclBhc3NpbmdCdWZmZXJTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQiA9IG5ldyBJbWFnZURh
dGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQwMCksIDEwLCAxMCwgeyBjb2xvclNwYWNlOiAic3Jn
YiIgfSk7CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3Rv
clBhc3NpbmdCdWZmZXJTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdi
ImApOworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFz
c2luZ0J1ZmZlclNldHRpbmdDb2xvclNwYWNlVG9EaXNwbGF5UDMgPSBuZXcgSW1hZ2VEYXRhKG5l
dyBVaW50OENsYW1wZWRBcnJheSg0MDApLCAxMCwgMTAsIHsgY29sb3JTcGFjZTogImRpc3BsYXkt
cDMiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0
b3JQYXNzaW5nQnVmZmVyU2V0dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIiwg
YCJkaXNwbGF5LXAzImApOworCit2YXIgZGF0YSA9IHsgfTsKKworLy8gTk9URToKKy8vIGNvbG9y
KHNyZ2IgMCAxIDApIGNvbnZlcnRlZCB0byBkaXNwbGF5LXAzIGlzIGNvbG9yKGRpc3BsYXktcDMg
MC40NTg0IDAuOTg1MjYgMC4yOTgyOSkgb3IgWzExNywgMjUxLCA3NiwgMjU1XSBpbiBieXRlIGZv
cm0uCisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0
aCBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisK
K2NvbnRleHREaXNwbGF5UDMuZmlsbFN0eWxlID0gImNvbG9yKGRpc3BsYXktcDMgMCAxIDApIjsK
K2NvbnRleHREaXNwbGF5UDMuZmlsbFJlY3QoMCwgMCwgNTAsIDUwKTsKKworLy8gTm8gc3BlY2lm
aWVkIGNvbG9yIHNwYWNlIHdpbGwgZGVmYXVsdCB0byB0aGUgY2FudmFzJyBjb2xvciBzcGFjZSwg
aW4gdGhpcyBjYXNlLCBkaXNwbGF5LXAzCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBu
byBzcGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBo
YXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4
dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSk7CitzaG91bGRCZSgiZGF0YS5jb2xv
clNwYWNlIiwgYCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJd
IiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0
IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFz
IChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworLy8g
Tk9URTogY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2Ygc1JH
Qiwgc28gaXQgY2xpcHBlZCB0byAyNTUuCitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFn
ZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0
YS5jb2xvclNwYWNlIiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJd
IiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0
IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMg
Y2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIp
OworZGF0YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29s
b3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAi
ZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgi
ZGF0YS5kYXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7Citz
aG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVz
dGluZyBhIGRpc3BsYXktcDMgY2FudmFzIHdpdGggY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW50
byBpdCIpOworZGVidWcoIiIpOworCitjb250ZXh0RGlzcGxheVAzLmZpbGxTdHlsZSA9ICJjb2xv
cihzcmdiIDAgMSAwKSI7Citjb250ZXh0RGlzcGxheVAzLmZpbGxSZWN0KDAsIDAsIDUwLCA1MCk7
CisKKy8vIE5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSB3aWxsIGRlZmF1bHQgdG8gdGhlIGNhbnZh
cycgY29sb3Igc3BhY2UsIGluIHRoaXMgY2FzZSwgZGlzcGxheS1wMworZGVidWcoIlRlc3QgZ2V0
SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBhIGRpc3BsYXktcDMg
Y2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0
YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpOworc2hvdWxkQmUo
ImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVsw
XSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgi
ZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOwor
CitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNw
bGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCki
KTsKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNv
bG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2Ii
YCkKKy8vIE5PVEU6IFRoaXMgMyBpcyBvZGQsIGJ1dCBkdWUgdG8gbGFjayBvZiBwcmVjaXNpb24g
aW4gOC1iaXQgcm91bmQtdHJpcHBpbmcuCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjMiKTsK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJd
IiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0
IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMg
Y2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0
YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFj
ZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxh
eS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91
bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGlu
ZyBhIHNyZ2IgY2FudmFzIHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW50byBp
dCIpOworZGVidWcoIiIpOworCitjb250ZXh0U1JHQi5maWxsU3R5bGUgPSAiY29sb3IoZGlzcGxh
eS1wMyAwIDEgMCkiOworY29udGV4dFNSR0IuZmlsbFJlY3QoMCwgMCwgNTAsIDUwKTsKKworLy8g
Tm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlIHdpbGwgZGVmYXVsdCB0byB0aGUgY2FudmFzJyBjb2xv
ciBzcGFjZSwgaW4gdGhpcyBjYXNlLCBzcmdiCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0
aCBubyBzcGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMg
Y29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dFNS
R0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIs
IGAic3JnYiJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0
YS5kYXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91
bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEg
d2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihk
aXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJ
bWFnZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgi
ZGF0YS5jb2xvclNwYWNlIiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRh
WzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJU
ZXN0IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2Fu
dmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOwor
ZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6
ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXkt
cDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzFdIiwgIjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxk
QmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3Rpbmcg
YSBzcmdiIGNhbnZhcyB3aXRoIGNvbG9yKHNyZ2ItcDMgMCAxIDApIGRyYXduIGludG8gaXQiKTsK
K2RlYnVnKCIiKTsKKworY29udGV4dFNSR0IuZmlsbFN0eWxlID0gImNvbG9yKHNyZ2IgMCAxIDAp
IjsKK2NvbnRleHRTUkdCLmZpbGxSZWN0KDAsIDAsIDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmll
ZCBjb2xvciBzcGFjZSB3aWxsIGRlZmF1bHQgdG8gdGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGlu
IHRoaXMgY2FzZSwgc3JnYgorZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lm
aWVkIGNvbG9yIHNwYWNlLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2Ig
MCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgw
LCAwLCAxLCAxKTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsz
XSIsICIyNTUiKTsKKworZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZp
ZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24g
aW4gaXQpIik7CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsg
Y29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3Jn
YiJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRh
WzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgi
ZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBk
aXNwbGF5LXAzIHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihz
cmdiIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURh
dGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgi
ZGF0YS5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBd
IiwgIjExNyIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTEiKTsKK3Nob3VsZEJlKCJk
YXRhLmRhdGFbMl0iLCAiNzYiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisK
KworZGVidWcoIiIpOworCisKK2NvbnN0IGltYWdlRGF0YURpc3BsYXlQM1RvUHV0ID0gbmV3IElt
YWdlRGF0YSgxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK2ltYWdlRGF0YURp
c3BsYXlQM1RvUHV0LmRhdGFbMF0gPSAwOworaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQuZGF0YVsx
XSA9IDI1NTsKK2ltYWdlRGF0YURpc3BsYXlQM1RvUHV0LmRhdGFbMl0gPSAwOworaW1hZ2VEYXRh
RGlzcGxheVAzVG9QdXQuZGF0YVszXSA9IDI1NTsKKworY29uc3QgaW1hZ2VEYXRhU1JHQlRvUHV0
ID0gbmV3IEltYWdlRGF0YSgxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK2ltYWdlRGF0
YVNSR0JUb1B1dC5kYXRhWzBdID0gMDsKK2ltYWdlRGF0YVNSR0JUb1B1dC5kYXRhWzFdID0gMjU1
OworaW1hZ2VEYXRhU1JHQlRvUHV0LmRhdGFbMl0gPSAwOworaW1hZ2VEYXRhU1JHQlRvUHV0LmRh
dGFbM10gPSAyNTU7CisKKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAz
IGNhbnZhcyB3aXRoIGRpc3BsYXktcDMgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQiKTsKK2RlYnVn
KCIiKTsKKworY29udGV4dERpc3BsYXlQMy5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhRGlzcGxheVAz
VG9QdXQsIDAsIDApOworCitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwg
MCwgMSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNw
YWNlIiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RhdGEgPSBjb250ZXh0RGlzcGxh
eVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9
KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIs
ICIyNTUiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZh
cyB3aXRoIHNyZ2IgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29u
dGV4dERpc3BsYXlQMy5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhU1JHQlRvUHV0LCAwLCAwKTsKKwor
ZGF0YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JT
cGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQor
Ly8gTk9URTogVGhpcyAzIGlzIG9kZCwgYnV0IGR1ZSB0byBsYWNrIG9mIHByZWNpc2lvbiBpbiA4
LWJpdCByb3VuZC10cmlwcGluZy4KK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMyIpOworc2hv
dWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAi
MCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGF0YSA9IGNvbnRleHRE
aXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXkt
cDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hv
dWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAi
MjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIHNyZ2IgY2Fu
dmFzIHdpdGggZGlzcGxheS1wMyBJbWFnZURhdGEgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIp
OworCitjb250ZXh0U1JHQi5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQsIDAs
IDApOworCitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29s
b3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJg
KQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFd
IiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0
YS5kYXRhWzNdIiwgIjI1NSIpOworCitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAs
IDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEu
Y29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIx
MTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBzcmdiIEltYWdlRGF0
YSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHRTUkdCLnB1dEltYWdlRGF0
YShpbWFnZURhdGFTUkdCVG9QdXQsIDAsIDApOworCitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1h
Z2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRh
dGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7
CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsy
XSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkYXRhID0gY29u
dGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXkt
cDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hv
dWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAi
MjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbWFn
ZURhdGEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc1MjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9jYW52YXMtaW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTQsMjAgKzE0LDIwIEBAIFBBU1MgbmV3IEltYWdlRGF0YSgtMjAsIDIwKSB0aHJldyBleGNlcHQK
IFBBU1MgbmV3IEltYWdlRGF0YSgyMCwgLTIwKSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjog
Q2Fubm90IGFsbG9jYXRlIGEgYnVmZmVyIG9mIHRoaXMgc2l6ZS4KIFBBU1MgbmV3IEltYWdlRGF0
YShudWxsLCAyMCkgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5kZXggaXMg
bm90IGluIHRoZSBhbGxvd2VkIHJhbmdlLi4KIFBBU1MgbmV3IEltYWdlRGF0YSgzMjc2OCwgMzI3
NjgpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBDYW5ub3QgYWxsb2NhdGUgYSBidWZmZXIg
b2YgdGhpcyBzaXplLgotUEFTUyBuZXcgSW1hZ2VEYXRhKG51bGwsIDIwLCAyMCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNv
bnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNT
IG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0
IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgorUEFTUyBuZXcgSW1hZ2VEYXRh
KG51bGwsIDIwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BB
U1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEsIDIwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KIFBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEsIDApIHRocmV3
IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dl
ZCByYW5nZS4uCi1QQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwgMCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNv
bnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNT
IG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3Qg
YmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFnZURhdGEo
aW1hZ2VEYXRhLCAxMCwgNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAo
J2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ug
b2YgVWludDhDbGFtcGVkQXJyYXkuCitQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwg
MCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IEltYWdl
RGF0YShpbWFnZURhdGEsIDAsIDIwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgorUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMTAsIDUpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRh
dGEsIDEwLCA1KSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IHNoIHZhbHVlIGlzIG5v
dCBlcXVhbCB0byBoZWlnaHQuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIC0x
MCwgNSkgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEgbXVs
dGlwbGUgb2Ygc3cuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIDEwLCAtMTAp
IHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogc2ggdmFsdWUgaXMgbm90IGVxdWFsIHRv
IGhlaWdodC4KIFBBU1MgbmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoWzEsMiwz
LDQsNSw2LDcsOF0pLDUzNjg3MDkxMywyKTsgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9y
OiBMZW5ndGggaXMgbm90IGEgbXVsdGlwbGUgb2Ygc3cuCi1QQVNTIG5ldyBJbWFnZURhdGEoe30s
MiwyKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0
aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFt
cGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFnZURhdGEodW5kZWZpbmVkLDIsMik7IHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25z
dHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBu
ZXcgSW1hZ2VEYXRhKCJub25lIiwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1
bWVudCAxICgnZGF0YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBp
bnN0YW5jZSBvZiBVaW50OENsYW1wZWRBcnJheS4KLVBBU1MgbmV3IEltYWdlRGF0YSgwLDIsMik7
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIElt
YWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFy
cmF5LgorUEFTUyBuZXcgSW1hZ2VEYXRhKHt9LDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEodW5kZWZpbmVkLDIsMik7IHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoIm5v
bmUiLDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5l
dyBJbWFnZURhdGEoMCwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgogUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCAzMjc2OCwgMzI3NjgpIHRocmV3
IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3
LgogUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCBJbmZpbml0eSwgSW5maW5pdHkp
IHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxl
IG9mIHN3LgogUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCBOYU4sIE5hTikgdGhy
ZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEgbXVsdGlwbGUgb2Yg
c3cuCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzUyOSkK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAyMS0wNS0xNCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5v
bi1zUkdCIEltYWdlRGF0YSB2aWEgY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgVXBkYXRlIHJlc3VsdCB0byBwYXNzaW5nLgorCiAyMDIxLTA1LTE0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBvdXRwdXQgZWxlbWVudCBkb2Vz
bid0IHJlYWN0IHByb3Blcmx5IHRvIG5vZGUgdHJlZSBtdXRhdGlvbnMKSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93
aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5wMy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRv
LnAzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3NTI1KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQt
Y2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMiw1ICsyLDUgQEAKIHRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBhbmQg
dWludDggZnJvbSBkaXNwbGF5IHAzIHVpbnQ4IGNhbnZhcwogQWN0dWFsIG91dHB1dDoKIAotRkFJ
TCB0ZXN0IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgYW5kIHVpbnQ4IGZyb20gZGlzcGxh
eSBwMyB1aW50OCBjYW52YXMgYXNzZXJ0X2FwcHJveF9lcXVhbHM6IGV4cGVjdGVkIDYyICsvLSAy
IGJ1dCBnb3QgNTAKK1BBU1MgdGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIGFuZCB1
aW50OCBmcm9tIGRpc3BsYXkgcDMgdWludDggY2FudmFzCiAKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI3NzUyNSkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAt
MjM1OCw2ICsyMzU4LDcgQEAgZmFzdC9yZXBsYWNlZC9wZGYtYXMtZW1iZWQtd2l0aC1uby1taW1l
LQogd2Via2l0Lm9yZy9iLzIyNDExMiBtZWRpYS92aWRlby1hcy1pbWctb3V0cHV0LXB0cy5odG1s
IFsgVGltZW91dCBQYXNzIF0KIAogd2Via2l0Lm9yZy9iLzIyNTQyMyBmYXN0L2NhbnZhcy9jYW52
YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJr
aXQub3JnL2IvMjI1NDIzIGZhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAz
LUltYWdlRGF0YS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI1NDIzIGZhc3QvY2Fu
dmFzL2NhbnZhcy1jb21wb3NpdGUtdGV4dC1hbHBoYS5odG1sIFsgRmFpbHVyZSBdCiAKICMgRmFp
bGluZyBhZnRlciByMjc3MDczLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428728</attachid>
            <date>2021-05-15 09:48:41 -0700</date>
            <delta_ts>2021-05-15 11:22:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225841-20210515094840.patch</filename>
            <type>text/plain</type>
            <size>90171</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBACisyMDIxLTA1LTE0ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY3JlYXRp
bmcvYWNjZXNzaW5nL3NldHRpbmcgbm9uLXNSR0IgSW1hZ2VEYXRhIHZpYSBjYW52YXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg0MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2Fu
dmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS5odG1sCisKKyAgICAg
ICAgW1dJUF0KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnR5cGVkQXJyYXlFbGVtZW50U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
U2VyaWFsaXplcjo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6
OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OmdldEpTVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlRGF0
YVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpjb21wdXRlQ29sb3JTcGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpwaXhlbEJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmRhdGFTaXplKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6ZGVlcENsb25lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEYXRhOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6d2lkdGgg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpoZWlnaHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGF0YTo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURh
dGE6OnBpeGVsQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0ltYWdlRGF0
YS5pZGw6CisgICAgICAgICogaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBodG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC9P
ZmZzY3JlZW5DYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpn
ZXRDb250ZXh0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnBp
eGVsRm9ybWF0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6Y29sb3JTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVFbXB0eUltYWdlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OnBpeGVsRm9ybWF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRW1wdHlJbWFnZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldENvbnRleHRBdHRyaWJ1dGVzIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
aW50UmVuZGVyaW5nQ29udGV4dDJEOjpQYWludFJlbmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dG9QcmVkZWZpbmVkQ29sb3JTcGFjZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvUHJlZGVm
aW5lZENvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjpQaXhl
bEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFnZSk6CisK
IDIwMjEtMDUtMTQgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBQaXhlbEJ1ZmZlckZvcm1hdCB0byBzcGVjaWZ5IEltYWdlQnVmZmVyOjpnZXRQaXhlbERhdGEg
ZGVzdGluYXRpb24gZm9ybWF0IGFsbG93aW5nIGZvciBtb3JlIGNvbnRyb2wgb3ZlciBkYXRhIGNv
bnZlcnNpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNzc1MjUpCisrKyBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAyNCw2ICsx
MDI0LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBodG1sL0ltYWdlQml0
bWFwLmlkbAogICAgIGh0bWwvSW1hZ2VCaXRtYXBPcHRpb25zLmlkbAogICAgIGh0bWwvSW1hZ2VE
YXRhLmlkbAorICAgIGh0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsCiAgICAgaHRtbC9NZWRpYUNv
bnRyb2xsZXIuaWRsCiAgICAgaHRtbC9NZWRpYUVuY3J5cHRlZEV2ZW50LmlkbAogICAgIGh0bWwv
TWVkaWFFcnJvci5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTAzNiw2ICsx
MDM2LDcgQEAgJChQUk9KRUNUX0RJUikvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAogJChQUk9K
RUNUX0RJUikvaHRtbC9JbWFnZUJpdG1hcC5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvSW1hZ2VC
aXRtYXBPcHRpb25zLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9JbWFnZURhdGEuaWRsCiskKFBS
T0pFQ1RfRElSKS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbAogJChQUk9KRUNUX0RJUikvaHRt
bC9NZWRpYUNvbnRyb2xsZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL01lZGlhRW5jcnlwdGVk
RXZlbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL01lZGlhRXJyb3IuaWRsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNp
b24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTExODAsNiArMTE4MCw4IEBAICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWIKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZURhdGEu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdl
RGF0YS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0lt
YWdlRGF0YVNldHRpbmdzLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNJbWFnZURhdGFTZXR0aW5ncy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdlU21vb3RoaW5nUXVhbGl0eS5jcHAKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VTbW9vdGhpbmdRdWFs
aXR5LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW5u
ZXJIVE1MLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAy
Nzc1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC04OTcsNiArODk3LDcgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvSW1hZ2VCaXRtYXAuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSW1hZ2VCaXRt
YXBPcHRpb25zLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0ltYWdlRGF0YS5pZGwgXAorICAg
ICQoV2ViQ29yZSkvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwgXAogICAgICQoV2ViQ29yZSkv
aHRtbC9NZWRpYUNvbnRyb2xsZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFFbmNy
eXB0ZWRFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9NZWRpYUVycm9yLmlkbCBcCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMyMTAsNiArMzIxMCw3IEBAIEpTSW1hZ2VCaXRt
YXBPcHRpb25zLmNwcAogSlNJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCiBKU0ltYWdl
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmNwcAogSlNJbWFnZURhdGEuY3BwCitKU0lt
YWdlRGF0YVNldHRpbmdzLmNwcAogSlNJbWFnZVNtb290aGluZ1F1YWxpdHkuY3BwCiBKU0lucHV0
RXZlbnQuY3BwCiBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDEwMCw2ICs0MTAwLDcgQEAKIAkJQkM5
NkRCNDMwRjNBODgwRTAwNTczQ0IzIC8qIFJlbmRlckJveE1vZGVsT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk2REI0MjBGM0E4ODBFMDA1
NzNDQjMgLyogUmVuZGVyQm94TW9kZWxPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzk3RTIzQTEwOTE0NDk1MDAxMEQzNjEgLyogSFRN
TEFsbENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDOTdFMjM4MTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1MQWxsQ29sbGVjdGlvbi5oICov
OyB9OwogCQlCQzk3RTQxMzEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5N0U0MTEx
MDkxNTRGQTAwMTBEMzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uaCAqLzsgfTsKKwkJQkNBMDg4
RjUyNjRFMUMwODAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EwODhGMjI2NEUxQkY5MDAzRTJBNkMg
LyogSW1hZ2VEYXRhU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCQ0ExNjlBMzBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVD
YXB0aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNBMTY5QTEwQkZENTVCNDAwMTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQuaCAqLzsgfTsKIAkJQkNBMjU3MTUxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRp
b25DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNBMjU3MTQxMjkzQzAxMDAwN0EyNjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oICovOyB9
OwogCQlCQ0EyQjA2MTEwNTA0NzYwMDA0M0JEMUMgLyogVXNlclNjcmlwdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMkIwNjAxMDUwNDc1RjAwNDNC
RDFDIC8qIFVzZXJTY3JpcHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTQzMzQsNiArMTQzMzUsOCBAQAogCQlCQzlBNjE0MjE0Njg1OUQ5MDA2
MDU3RkQgLyogRXZlbnROYW1lcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFdmVudE5hbWVzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzlBNjE0NTE0Njg1OUQ5MDA2MDU3RkQgLyogbWFrZV9ldmVudF9m
YWN0b3J5LnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9IG1ha2VfZXZlbnRfZmFjdG9yeS5wbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5QTYxNDYxNDY4NTlEOTAwNjA1N0ZEIC8qIG1ha2Vf
bmFtZXMucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gbWFrZV9uYW1lcy5wbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkNBMDg4RjIyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRp
bmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGF0YVNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDQTA4OEY0MjY0RTFCRjkwMDNFMkE2QyAvKiBJbWFnZURhdGFTZXR0
aW5ncy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gSW1hZ2VEYXRhU2V0dGluZ3MuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0ExNjlBMDBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVDYXB0aW9u
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1M
VGFibGVDYXB0aW9uRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QTE2OUExMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxUYWJsZUNhcHRpb25FbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQTI1NzE0MTI5M0MwMTAwMDdBMjYz
RCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmVydGljYWxQb3NpdGlvbkNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMzk0MCw2ICsyMzk0Myw4IEBACiAJCQkJQTc3OTc5MTMwRDZCOUQwQzAwMzg1MUI5IC8q
IEltYWdlRGF0YS5jcHAgKi8sCiAJCQkJQTc3OTc5MTQwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdl
RGF0YS5oICovLAogCQkJCUE3Nzk3OTE1MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaWRs
ICovLAorCQkJCUJDQTA4OEYyMjY0RTFCRjkwMDNFMkE2QyAvKiBJbWFnZURhdGFTZXR0aW5ncy5o
ICovLAorCQkJCUJDQTA4OEY0MjY0RTFCRjkwMDNFMkE2QyAvKiBJbWFnZURhdGFTZXR0aW5ncy5p
ZGwgKi8sCiAJCQkJOTcyMDVBQjExMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuY3Bw
ICovLAogCQkJCTk3MjA1QUIyMTIzOTI5MTAwMEIxNzM4MCAvKiBJbWFnZURvY3VtZW50LmggKi8s
CiAJCQkJRjU1QjNEOEQxMjUxRjEyRDAwM0VGMjY5IC8qIEltYWdlSW5wdXRUeXBlLmNwcCAqLywK
QEAgLTMyOTE5LDYgKzMyOTI0LDcgQEAKIAkJCQlCMkExMEQ5MTBCMzgxOEJEMDAwOTlBQTQgLyog
SW1hZ2VCdWZmZXJQaXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNFMjFERDIxODM0NDRBMDBF
NjZGNTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3
OTc5MUEwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QkNBMDg4RjUyNjRFMUMwODAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRDE5RkVBODFGNTczOTcyMDAwQzQyRkIgLyogSW1hZ2VEZWNvZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRDE5RkVBRTFGNTc0QjZEMDAwQzQyRkIgLyogSW1hZ2VEZWNvZGVy
QVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTU1Qjg3RUQxQ0FBRjBBQjAwMzQ5NDI1IC8q
IEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkocmV2aXNpb24g
Mjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE0MSwzMCArMzE0MSwyNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8g
YXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIp
LCAwLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAgaWYgKCFhcnJheSkgewot
ICAgICAgICAgICAgZmFpbCgpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLSAgICAg
ICAgfQotCiAgICAgICAgIEludFNpemUgbG9naWNhbFNpemUgPSBJbnRTaXplKGxvZ2ljYWxXaWR0
aCwgbG9naWNhbEhlaWdodCk7CiAgICAgICAgIEludFNpemUgaW1hZ2VEYXRhU2l6ZSA9IGxvZ2lj
YWxTaXplOwogICAgICAgICBpbWFnZURhdGFTaXplLnNjYWxlKHJlc29sdXRpb25TY2FsZSk7CiAK
LSAgICAgICAgLy8gRklYTUU6IENyZWF0aW5nIHRoaXMgSW1hZ2VEYXRhIGlzIG5vdCBuZWNlc3Nh
cnkuIFdlIHNob3VsZCBza2lwIHJpZ2h0IHRvIGNyZWF0aW5nIGEgUGl4ZWxCdWZmZXIgZGlyZWN0
bHkuCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoaW1hZ2VEYXRh
U2l6ZSwgYXJyYXkucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgIGlmICghaW1hZ2VEYXRhKSB7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3Qp
LCBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNj
YWxlKTsKKyAgICAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSk7Ci0gICAgICAgIGlmICgh
YnVmZmVyKSB7CisgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1
ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgaW1hZ2VEYXRhU2l6ZSwgYXJyYXlCdWZmZXIucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKICAgICAgICAgICAgIGZh
aWwoKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBidWZmZXItPnB1dFBpeGVsQnVmZmVyKGltYWdlRGF0YS0+cGl4ZWxCdWZmZXIoKSwgeyBJbnRQ
b2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSB9KTsKKyAgICAgICAgYnVmZmVyLT5wdXRQaXhlbEJ1
ZmZlcihXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNp
emUgfSk7CiAKICAgICAgICAgYXV0byBiaXRtYXAgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlKEltYWdl
Qml0bWFwQmFja2luZyhXVEZNb3ZlKGJ1ZmZlciksIE9wdGlvblNldDxTZXJpYWxpemF0aW9uU3Rh
dGU+Ojpmcm9tUmF3KHNlcmlhbGl6YXRpb25TdGF0ZSkpKTsKICAgICAgICAgcmV0dXJuIGdldEpT
VmFsdWUoYml0bWFwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAJKHJldmlzaW9u
IDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNoZWNrZWQ8
dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBJbWFnZURhdGE6OmRhdGFTaXplKGNvbnN0IEludFNp
emUmIHNpemUpCitzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNvbXB1
dGVEYXRhU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIENoZWNrZWQ8dW5zaWduZWQs
IFJlY29yZE92ZXJmbG93PiBjaGVja2VkRGF0YVNpemUgPSA0OwogICAgIGNoZWNrZWREYXRhU2l6
ZSAqPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZS53aWR0aCgpKTsKQEAgLTQzLDkgKzQzLDE4
IEBAIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBJbWFnZUQKICAgICByZXR1cm4g
Y2hlY2tlZERhdGFTaXplOwogfQogCitQcmVkZWZpbmVkQ29sb3JTcGFjZSBJbWFnZURhdGE6OmNv
bXB1dGVDb2xvclNwYWNlKE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncywgUHJl
ZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UpCit7CisgICAgaWYgKHNldHRpbmdz
ICYmIHNldHRpbmdzLT5jb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gKnNldHRpbmdzLT5jb2xv
clNwYWNlOworICAgIHJldHVybiBkZWZhdWx0Q29sb3JTcGFjZTsKK30KKwogUmVmPEltYWdlRGF0
YT4gSW1hZ2VEYXRhOjpjcmVhdGUoUGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlcikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoV1RGTW92ZShwaXhlbEJ1ZmZlcikpKTsKKyAg
ICBhdXRvIGNvbG9yU3BhY2UgPSB0b1ByZWRlZmluZWRDb2xvclNwYWNlKHBpeGVsQnVmZmVyLmZv
cm1hdCgpLmNvbG9yU3BhY2UpOworICAgIFJFTEVBU0VfQVNTRVJUKGNvbG9yU3BhY2UpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShwaXhlbEJ1ZmZlci5zaXplKCksIHBpeGVs
QnVmZmVyLnRha2VEYXRhKCksICpjb2xvclNwYWNlKSk7CiB9CiAKIFJlZlB0cjxJbWFnZURhdGE+
IEltYWdlRGF0YTo6Y3JlYXRlKE9wdGlvbmFsPFBpeGVsQnVmZmVyPiYmIHBpeGVsQnVmZmVyKQpA
QCAtNTcsNDMgKzY2LDYzIEBAIFJlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKE9w
dGkKIAogUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKIHsKLSAgICBhdXRvIGRhdGFTaXplID0gSW1hZ2VEYXRhOjpkYXRhU2l6ZShzaXplKTsK
KyAgICBhdXRvIGRhdGFTaXplID0gY29tcHV0ZURhdGFTaXplKHNpemUpOwogICAgIGlmIChkYXRh
U2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8g
Ynl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0
YVNpemUudW5zYWZlR2V0KCkpOwogICAgIGlmICghYnl0ZUFycmF5KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VO
b25OdWxsKCkgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplLCBi
eXRlQXJyYXkucmVsZWFzZU5vbk51bGwoKSwgUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0IpKTsK
IH0KIAotUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSkKK1JlZlB0cjxJbWFnZURh
dGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxVaW50OENsYW1w
ZWRBcnJheT4mJiBieXRlQXJyYXksIFByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7
Ci0gICAgYXV0byBkYXRhU2l6ZSA9IEltYWdlRGF0YTo6ZGF0YVNpemUoc2l6ZSk7Ci0gICAgaWYg
KGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBkYXRhU2l6ZS51bnNhZmVHZXQoKSA+IGJ5dGVB
cnJheS0+bGVuZ3RoKCkpCisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXpl
KTsKKyAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplLnVuc2FmZUdl
dCgpICE9IGJ5dGVBcnJheS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCIH0sIHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSB9KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSwgY29sb3JT
cGFjZSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVh
dGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoKQorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+
IEltYWdlRGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCByb3dzLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xvclNwYWNlLCBPcHRp
b25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCit7CisgICAgSW50U2l6ZSBzaXplKHJv
d3MsIHBpeGVsc1BlclJvdyk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShz
aXplKTsKKyAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgIkNhbm5vdCBhbGxvY2F0ZSBhIGJ1ZmZlciBvZiB0aGlz
IHNpemUiX3MgfTsKKworICAgIGF1dG8gYnl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YVNpemUudW5zYWZlR2V0KCkpOworICAgIGlmICghYnl0
ZUFycmF5KSB7CisgICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgbmVlZCB0byBiZSBhICJyZWFs
IiBvdXQgb2YgbWVtb3J5IGVycm9yIHdpdGggc2V0T3V0T2ZNZW1vcnlFcnJvciBjYWxsZWQgb24g
aXQ/CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiT3V0IG9mIG1lbW9y
eSJfcyB9OworICAgIH0KKworICAgIGF1dG8gY29sb3JTcGFjZSA9IGNvbXB1dGVDb2xvclNwYWNl
KHNldHRpbmdzLCBkZWZhdWx0Q29sb3JTcGFjZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW1hZ2VEYXRhKHNpemUsIGJ5dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpLCBjb2xvclNwYWNlKSk7
Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZSh1bnNp
Z25lZCBzdywgdW5zaWduZWQgc2gsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5n
cykKIHsKICAgICBpZiAoIXN3IHx8ICFzaCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
ZGV4U2l6ZUVycm9yIH07CisKICAgICBJbnRTaXplIHNpemUoc3csIHNoKTsKLSAgICBhdXRvIGRh
dGFTaXplID0gSW1hZ2VEYXRhOjpkYXRhU2l6ZShzaXplKTsKKyAgICBhdXRvIGRhdGFTaXplID0g
Y29tcHV0ZURhdGFTaXplKHNpemUpOwogICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiQ2Fubm90IGFsbG9jYXRl
IGEgYnVmZmVyIG9mIHRoaXMgc2l6ZSJfcyB9OworCiAgICAgYXV0byBieXRlQXJyYXkgPSBVaW50
OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChkYXRhU2l6ZS51bnNhZmVHZXQo
KSk7CiAgICAgaWYgKCFieXRlQXJyYXkpIHsKICAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBu
ZWVkIHRvIGJlIGEgInJlYWwiIG91dCBvZiBtZW1vcnkgZXJyb3Igd2l0aCBzZXRPdXRPZk1lbW9y
eUVycm9yIGNhbGxlZCBvbiBpdD8KICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJy
b3IsICJPdXQgb2YgbWVtb3J5Il9zIH07CiAgICAgfQogICAgIGJ5dGVBcnJheS0+emVyb0ZpbGwo
KTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSkp
OworCisgICAgYXV0byBjb2xvclNwYWNlID0gY29tcHV0ZUNvbG9yU3BhY2Uoc2V0dGluZ3MpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplLCBieXRlQXJyYXkucmVsZWFz
ZU5vbk51bGwoKSwgY29sb3JTcGFjZSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRh
Pj4gSW1hZ2VEYXRhOjpjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwg
dW5zaWduZWQgc3csIE9wdGlvbmFsPHVuc2lnbmVkPiBzaCkKK0V4Y2VwdGlvbk9yPFJlZjxJbWFn
ZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFy
cmF5LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBPcHRpb25hbDxJbWFnZURh
dGFTZXR0aW5ncz4gc2V0dGluZ3MpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYnl0ZUFycmF5
LT5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggJSA0KQpAQCAtMTA3LDIyICsx
MzYsMjggQEAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6YwogICAgIGlm
IChzaCAmJiBzaC52YWx1ZSgpICE9IGhlaWdodCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEluZGV4U2l6ZUVycm9yLCAic2ggdmFsdWUgaXMgbm90IGVxdWFsIHRvIGhlaWdodCJfcyB9Owog
Ci0gICAgYXV0byByZXN1bHQgPSBjcmVhdGUoSW50U2l6ZShzdywgaGVpZ2h0KSwgV1RGTW92ZShi
eXRlQXJyYXkpKTsKLSAgICBpZiAoIXJlc3VsdCkKKyAgICBJbnRTaXplIHNpemUoc3csIGhlaWdo
dCk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXplKTsKKyAgICBpZiAo
ZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplLnVuc2FmZUdldCgpICE9IGJ5dGVB
cnJheS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yIH07
Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworCisgICAgYXV0byBjb2xvclNw
YWNlID0gY29tcHV0ZUNvbG9yU3BhY2Uoc2V0dGluZ3MpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEltYWdlRGF0YShzaXplLCBXVEZNb3ZlKGJ5dGVBcnJheSksIGNvbG9yU3BhY2UpKTsKIH0K
IAotSW1hZ2VEYXRhOjpJbWFnZURhdGEoUGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlcikKLSAgICA6
IG1fcGl4ZWxCdWZmZXIoV1RGTW92ZShwaXhlbEJ1ZmZlcikpCitJbWFnZURhdGE6OkltYWdlRGF0
YShjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJiBkYXRh
LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorICAgIDogbV9zaXplKHNpemUpCisg
ICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKKyAgICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNl
KQogewogfQogCiBJbWFnZURhdGE6On5JbWFnZURhdGEoKSA9IGRlZmF1bHQ7CiAKLVJlZjxJbWFn
ZURhdGE+IEltYWdlRGF0YTo6ZGVlcENsb25lKCkgY29uc3QKK1BpeGVsQnVmZmVyIEltYWdlRGF0
YTo6cGl4ZWxCdWZmZXIoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
RGF0YShtX3BpeGVsQnVmZmVyLmRlZXBDbG9uZSgpKSk7CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIHRvRGVzdGluYXRpb25Db2xvclNwYWNlKG1fY29sb3JTcGFjZSkgfTsKKyAg
ICByZXR1cm4geyBmb3JtYXQsIG1fc2l6ZSwgbV9kYXRhLmdldCgpIH07CiB9CiAKIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRh
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCShyZXZpc2lvbiAyNzc1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSwx
MiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUg
IkltYWdlRGF0YVNldHRpbmdzLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBp
eGVsQnVmZmVyLmgiCisjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsMjkgKzQzLDMyIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEltYWdlRGF0YT4gY3JlYXRlKFBpeGVs
QnVmZmVyJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBj
cmVhdGUoT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIFJl
ZjxVaW50OENsYW1wZWRBcnJheT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNy
ZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNp
Z25lZD4gc2gpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBj
cmVhdGUoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
SW1hZ2VEYXRhPj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCByb3dzLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xvclNwYWNlLCBPcHRp
b25hbDxJbWFnZURhdGFTZXR0aW5ncz4gPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVkIHN3
LCB1bnNpZ25lZCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZShSZWY8VWlu
dDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNpZ25lZD4gc2gsIE9w
dGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPik7CisKICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VE
YXRhKCk7CiAKLSAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9waXhl
bEJ1ZmZlci5zaXplKCk7IH0KLSAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3BpeGVs
QnVmZmVyLnNpemUoKS53aWR0aCgpOyB9Ci0gICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGl4ZWxCdWZmZXIuc2l6ZSgpLmhlaWdodCgpOyB9CisgICAgc3RhdGljIFByZWRlZmluZWRD
b2xvclNwYWNlIGNvbXB1dGVDb2xvclNwYWNlKE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiwg
UHJlZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UgPSBQcmVkZWZpbmVkQ29sb3JT
cGFjZTo6U1JHQik7CiAKLSAgICBVaW50OENsYW1wZWRBcnJheSYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGl4ZWxCdWZmZXIuZGF0YSgpOyB9CisgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCi0gICAgUmVmPEltYWdlRGF0YT4gZGVlcENsb25lKCkg
Y29uc3Q7CisgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7IH0K
KyAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9CisgICAg
VWludDhDbGFtcGVkQXJyYXkmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0K
KyAgICBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xvclNwYWNlOyB9CiAKLSAgICBjb25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX3BpeGVsQnVmZmVyOyB9CisgICAgUGl4ZWxCdWZmZXIgcGl4ZWxCdWZmZXIo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBJbWFnZURhdGEoUGl4ZWxCdWZmZXIm
Jik7Ci0KLSAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGRhdGFT
aXplKGNvbnN0IEludFNpemUmKTsKKyAgICBleHBsaWNpdCBJbWFnZURhdGEoY29uc3QgSW50U2l6
ZSYsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmLCBQcmVkZWZpbmVkQ29sb3JTcGFjZSk7
CiAKLSAgICBQaXhlbEJ1ZmZlciBtX3BpeGVsQnVmZmVyOworICAgIEludFNpemUgbV9zaXplOwor
ICAgIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBtX2RhdGE7CisgICAgUHJlZGVmaW5lZENv
bG9yU3BhY2UgbV9jb2xvclNwYWNlOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEltYWdlRGF0YSYpOworV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgSW1h
Z2VEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5pZGwJKHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEYXRhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEwICszMiwxMSBAQAogICAg
IEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUK
IF0gaW50ZXJmYWNlIEltYWdlRGF0YSB7Ci0gICAgY29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBz
dywgdW5zaWduZWQgbG9uZyBzaCk7Ci0gICAgY29uc3RydWN0b3IoVWludDhDbGFtcGVkQXJyYXkg
ZGF0YSwgdW5zaWduZWQgbG9uZyBzdywgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBzaCk7CisgICAg
Y29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBzdywgdW5zaWduZWQgbG9uZyBzaCwgb3B0aW9uYWwg
SW1hZ2VEYXRhU2V0dGluZ3Mgc2V0dGluZ3MpOworICAgIGNvbnN0cnVjdG9yKFVpbnQ4Q2xhbXBl
ZEFycmF5IGRhdGEsIHVuc2lnbmVkIGxvbmcgc3csIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgc2gs
IG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIHNldHRpbmdzKTsKIAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIGhlaWdodDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVWludDhDbGFtcGVkQXJy
YXkgZGF0YTsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1DYW52YXNDb2xvclNwYWNlXSByZWFkb25s
eSBhdHRyaWJ1dGUgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFjZTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcmVk
ZWZpbmVkQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBJbWFnZURhdGFTZXR0aW5ncyB7CisgICAgT3B0aW9uYWw8
UHJlZGVmaW5lZENvbG9yU3BhY2U+IGNvbG9yU3BhY2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY2FudmFzLmh0bWwjaW1hZ2VkYXRhc2V0
dGluZ3MKK2RpY3Rpb25hcnkgSW1hZ2VEYXRhU2V0dGluZ3MgeworICAgIFtFbmFibGVkQnlTZXR0
aW5nPUNhbnZhc0NvbG9yU3BhY2VdIFByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2U7Cit9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAkocmV2aXNpb24g
Mjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDExIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPE9mZnNj
cmVlblJlbmRlcmluZ0MKICAgICAgICAgICAgIHJldHVybiB7IHsgUmVmUHRyPE9mZnNjcmVlbkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRD4geyAmZG93bmNhc3Q8T2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEPigqbV9jb250ZXh0KSB9IH0gfTsKICAgICAgICAgfQogCi0gICAgICAgIG1f
Y29udGV4dCA9IG1ha2VVbmlxdWU8T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPigq
dGhpcyk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZt
KCkpOworICAgICAgICBhdXRvIHNldHRpbmdzID0gY29udmVydDxJRExEaWN0aW9uYXJ5PENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzPj4oc3RhdGUsICFhcmd1bWVudHMuaXNFbXB0eSgp
ID8gYXJndW1lbnRzWzBdLmdldCgpIDogSlNDOjpqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKKworICAgICAgICBtX2NvbnRleHQgPSBtYWtlVW5pcXVlPE9mZnNjcmVlbkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRD4oKnRoaXMsIFdURk1vdmUoc2V0dGluZ3MpKTsKICAgICAgICAgaWYg
KCFtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4geyB7IFdURjo6bnVsbG9wdCB9IH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0ltYWdlRGF0YS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlk
bAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
SW1hZ2VEYXRhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw5ICsyNiw5IEBACiAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9jYW52YXMuaHRtbCNjYW52YXNpbWFnZWRhdGEK
IGludGVyZmFjZSBtaXhpbiBDYW52YXNJbWFnZURhdGEgewogICAgIC8vIHBpeGVsIG1hbmlwdWxh
dGlvbgotICAgIEltYWdlRGF0YSBjcmVhdGVJbWFnZURhdGEoW0VuZm9yY2VSYW5nZV0gbG9uZyBz
dywgW0VuZm9yY2VSYW5nZV0gbG9uZyBzaCk7CisgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0
YShbRW5mb3JjZVJhbmdlXSBsb25nIHN3LCBbRW5mb3JjZVJhbmdlXSBsb25nIHNoLCBvcHRpb25h
bCBJbWFnZURhdGFTZXR0aW5ncyBzZXR0aW5ncyk7CiAgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdl
RGF0YShJbWFnZURhdGEgaW1hZ2VkYXRhKTsKLSAgICBJbWFnZURhdGEgZ2V0SW1hZ2VEYXRhKFtF
bmZvcmNlUmFuZ2VdIGxvbmcgc3gsIFtFbmZvcmNlUmFuZ2VdIGxvbmcgc3ksIFtFbmZvcmNlUmFu
Z2VdIGxvbmcgc3csIFtFbmZvcmNlUmFuZ2VdIGxvbmcgc2gpOworICAgIEltYWdlRGF0YSBnZXRJ
bWFnZURhdGEoW0VuZm9yY2VSYW5nZV0gbG9uZyBzeCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBzeSwg
W0VuZm9yY2VSYW5nZV0gbG9uZyBzdywgW0VuZm9yY2VSYW5nZV0gbG9uZyBzaCwgb3B0aW9uYWwg
SW1hZ2VEYXRhU2V0dGluZ3Mgc2V0dGluZ3MpOwogICAgIHVuZGVmaW5lZCBwdXRJbWFnZURhdGEo
SW1hZ2VEYXRhIGltYWdlZGF0YSwgW0VuZm9yY2VSYW5nZV0gbG9uZyBkeCwgW0VuZm9yY2VSYW5n
ZV0gbG9uZyBkeSk7CiAgICAgdW5kZWZpbmVkIHB1dEltYWdlRGF0YShJbWFnZURhdGEgaW1hZ2Vk
YXRhLCBbRW5mb3JjZVJhbmdlXSBsb25nIGR4LCBbRW5mb3JjZVJhbmdlXSBsb25nIGR5LCBbRW5m
b3JjZVJhbmdlXSBsb25nIGRpcnR5WCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBkaXJ0eVksIFtFbmZv
cmNlUmFuZ2VdIGxvbmcgZGlydHlXaWR0aCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBkaXJ0eUhlaWdo
dCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAyNzc1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OSw4ICs3OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQoQ2FudmFzQmFzZSYgY2FudmFzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTZXR0
aW5ncyYmIHNldHRpbmdzLCBib29sIHVzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlKQotICAg
IDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZShjYW52YXMsIHVzZXNDU1NDb21wYXRpYmls
aXR5UGFyc2VNb2RlKQotICAgICwgbV9zZXR0aW5ncyB7IFdURk1vdmUoc2V0dGluZ3MpIH0KKyAg
ICA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UoY2FudmFzLCBXVEZNb3ZlKHNldHRpbmdz
KSwgdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUpCiB7CiB9CiAKQEAgLTI0NiwxNSArMjQ1
LDQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SQogICAgIGRyYXdU
ZXh0VW5jaGVja2VkKHRleHRSdW4sIHgsIHksIGZpbGwsIG1heFdpZHRoKTsKIH0KIAotUGl4ZWxG
b3JtYXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwaXhlbEZvcm1hdCgpIGNvbnN0Ci17Ci0g
ICAgLy8gRklYTUU6IFRha2UgbV9zZXR0aW5ncy5hbHBoYSBpbnRvIGFjY291bnQgaGVyZSBhbmQg
YWRkIFBpeGVsRm9ybWF0OjpCR1JYOC4KLSAgICByZXR1cm4gUGl4ZWxGb3JtYXQ6OkJHUkE4Owot
fQotCi1EZXN0aW5hdGlvbkNvbG9yU3BhY2UgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb2xv
clNwYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UobV9z
ZXR0aW5ncy5jb2xvclNwYWNlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmgJKHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuaCIKLSNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogCkBAIC00Myw4
ICs0Miw2IEBAIHB1YmxpYzoKIAogICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMoKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSgpKTsgfQog
Ci0gICAgY29uc3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MmIGdldENvbnRleHRB
dHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQotCiAgICAgdm9pZCBkcmF3
Rm9jdXNJZk5lZWRlZChFbGVtZW50Jik7CiAgICAgdm9pZCBkcmF3Rm9jdXNJZk5lZWRlZChQYXRo
MkQmLCBFbGVtZW50Jik7CiAKQEAgLTYxLDggKzU4LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
aXMyZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBjb25zdCBGb250UHJveHkq
IGZvbnRQcm94eSgpIGZpbmFsOwotICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3Qg
ZmluYWw7Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCBmaW5h
bDsKIAogICAgIHZvaWQgc2V0Rm9udFdpdGhvdXRVcGRhdGluZ1N0eWxlKGNvbnN0IFN0cmluZyYp
OwogCkBAIC03MSw4ICs2Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3Rm9jdXNJZk5lZWRl
ZEludGVybmFsKGNvbnN0IFBhdGgmLCBFbGVtZW50Jik7CiAKICAgICBUZXh0RGlyZWN0aW9uIHRv
VGV4dERpcmVjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpEaXJlY3Rpb24sIGNv
bnN0IFJlbmRlclN0eWxlKiogY29tcHV0ZWRTdHlsZSA9IG51bGxwdHIpIGNvbnN0OwotCi0gICAg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MgbV9zZXR0aW5nczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCShyZXZpc2lvbiAy
Nzc1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDEwICsyMjQsMTEgQEAgc3RhdGlj
IFRleHRCYXNlbGluZSBmcm9tQ2FudmFzVGV4dEJhc2VsaQogICAgIHJldHVybiBUb3BUZXh0QmFz
ZWxpbmU7CiB9CiAKLUNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UoQ2FudmFzQmFzZSYgY2FudmFzLCBib29sIHVzZXNDU1NDb21wYXRpYmls
aXR5UGFyc2VNb2RlKQorQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZShDYW52YXNCYXNlJiBjYW52YXMsIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRFNldHRpbmdzJiYgc2V0dGluZ3MsIGJvb2wgdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1v
ZGUpCiAgICAgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0KGNhbnZhcykKICAgICAsIG1fc3RhdGVT
dGFjaygxKQogICAgICwgbV91c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZSh1c2VzQ1NTQ29t
cGF0aWJpbGl0eVBhcnNlTW9kZSkKKyAgICAsIG1fc2V0dGluZ3MoV1RGTW92ZShzZXR0aW5ncykp
CiB7CiB9CiAKQEAgLTIxNTEsMzkgKzIxNTIsNTAgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpuZWVkcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIFJlZlB0cjxJ
bWFnZURhdGE+IGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGNvbnN0IEludFNpemUmIHNpemUpCitzdGF0
aWMgdm9pZCBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEoY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURh
dGEpCiB7Ci0gICAgYXV0byBkYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoc2l6ZSk7Ci0gICAgaWYg
KGRhdGEpCi0gICAgICAgIGRhdGEtPmRhdGEoKS56ZXJvRmlsbCgpOwotICAgIHJldHVybiBkYXRh
OworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgaW5pdGlhbGl6aW5nIHRoZSBJbWFnZURh
dGEgd2hlbiBzZXR0aW5ncy5hbHBoYSBpcyBmYWxzZSwgcmVxdWlyaW5nCisgICAgLy8gZXZlcnkg
NHRoIGJ5dGUgdG8gYmUgMHhGRi4KKworICAgIGltYWdlRGF0YS5kYXRhKCkuemVyb0ZpbGwoKTsK
IH0KIAotUmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3Jl
YXRlSW1hZ2VEYXRhKEltYWdlRGF0YSYgaW1hZ2VEYXRhKSBjb25zdAorRXhjZXB0aW9uT3I8UmVm
PEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0
YShJbWFnZURhdGEmIGltYWdlRGF0YSkgY29uc3QKIHsKLSAgICByZXR1cm4gY3JlYXRlRW1wdHlJ
bWFnZURhdGEoaW1hZ2VEYXRhLnNpemUoKSk7CisgICAgYXV0byBuZXdJbWFnZURhdGEgPSBJbWFn
ZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoaW1hZ2VEYXRhLndpZHRoKCksIGltYWdlRGF0YS5o
ZWlnaHQoKSwgaW1hZ2VEYXRhLmNvbG9yU3BhY2UoKSk7CisgICAgaWYgKG5ld0ltYWdlRGF0YS5o
YXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG5ld0ltYWdlRGF0YS5yZWxlYXNlRXhjZXB0
aW9uKCk7CisKKyAgICBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEobmV3SW1hZ2VEYXRhLnJldHVy
blZhbHVlKCkpOworCisgICAgcmV0dXJuIG5ld0ltYWdlRGF0YTsKIH0KIAotRXhjZXB0aW9uT3I8
UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUlt
YWdlRGF0YShpbnQgc3csIGludCBzaCkgY29uc3QKK0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+
PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEoaW50IHN3LCBp
bnQgc2gsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncykgY29uc3QKIHsKICAg
ICBpZiAoIXN3IHx8ICFzaCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVy
cm9yIH07CiAKLSAgICBJbnRTaXplIHNpemUgeyBzdGQ6OmFicyhzdyksIHN0ZDo6YWJzKHNoKSB9
OwotICAgIHJldHVybiBjcmVhdGVFbXB0eUltYWdlRGF0YShzaXplKTsKKyAgICBhdXRvIGltYWdl
RGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZChzdGQ6OmFicyhzdyksIHN0ZDo6
YWJzKHNoKSwgbV9zZXR0aW5ncy5jb2xvclNwYWNlLCBzZXR0aW5ncyk7CisgICAgaWYgKGltYWdl
RGF0YS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGltYWdlRGF0YS5yZWxlYXNlRXhj
ZXB0aW9uKCk7CisKKyAgICBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEoaW1hZ2VEYXRhLnJldHVy
blZhbHVlKCkpOworCisgICAgcmV0dXJuIGltYWdlRGF0YTsKIH0KIAotRXhjZXB0aW9uT3I8UmVm
UHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0
YShpbnQgc3gsIGludCBzeSwgaW50IHN3LCBpbnQgc2gpIGNvbnN0CitFeGNlcHRpb25PcjxSZWY8
SW1hZ2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhKGlu
dCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+
IHNldHRpbmdzKSBjb25zdAogeworICAgIGlmICghc3cgfHwgIXNoKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKwogICAgIGlmICghY2FudmFzQmFzZSgpLm9y
aWdpbkNsZWFuKCkpIHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29u
c29sZU1lc3NhZ2UoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIlVuYWJsZSB0byBnZXQgaW1hZ2Ug
ZGF0YSBmcm9tIGNhbnZhcyBiZWNhdXNlIHRoZSBjYW52YXMgaGFzIGJlZW4gdGFpbnRlZCBieSBj
cm9zcy1vcmlnaW4gZGF0YS4iKSk7CiAgICAgICAgIGNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBTZWN1cml0eUVycm9yIH07CiAgICAgfQogCi0gICAgaWYgKCFzdyB8fCAhc2gpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwotCiAgICAgaWYgKHN3
IDwgMCkgewogICAgICAgICBzeCArPSBzdzsKICAgICAgICAgc3cgPSAtc3c7CkBAIC0yMTk2LDEw
ICsyMjA4LDE5IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBDYW52YXNSZW4KICAg
ICBJbnRSZWN0IGltYWdlRGF0YVJlY3QgeyBzeCwgc3ksIHN3LCBzaCB9OwogCiAgICAgSW1hZ2VC
dWZmZXIqIGJ1ZmZlciA9IGNhbnZhc0Jhc2UoKS5idWZmZXIoKTsKLSAgICBpZiAoIWJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0YVJlY3Quc2l6ZSgp
KTsKKyAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICBhdXRvIGltYWdlRGF0YSA9IEltYWdlRGF0
YTo6Y3JlYXRlVW5pbml0aWFsaXplZChpbWFnZURhdGFSZWN0LndpZHRoKCksIGltYWdlRGF0YVJl
Y3QuaGVpZ2h0KCksIG1fc2V0dGluZ3MuY29sb3JTcGFjZSwgc2V0dGluZ3MpOworICAgICAgICBp
ZiAoaW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGltYWdlRGF0
YS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAgICAgaW5pdGlhbGl6ZUVtcHR5SW1hZ2VEYXRh
KGltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBpbWFn
ZURhdGE7CisgICAgfQogCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIGF1dG8gY29tcHV0ZWRDb2xvclNwYWNlID0g
SW1hZ2VEYXRhOjpjb21wdXRlQ29sb3JTcGFjZShzZXR0aW5ncywgbV9zZXR0aW5ncy5jb2xvclNw
YWNlKTsKKworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCB0b0Rlc3RpbmF0aW9u
Q29sb3JTcGFjZShjb21wdXRlZENvbG9yU3BhY2UpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IGJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCBpbWFnZURhdGFSZWN0KTsKICAgICBpZiAo
IXBpeGVsQnVmZmVyKSB7CiAgICAgICAgIGNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwKQEAgLTI2MTEsNCArMjYzMiwxNSBAQCBGbG9hdFBvaW50IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAorUGl4ZWxGb3Jt
YXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6cGl4ZWxGb3JtYXQoKSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBUYWtlIG1fc2V0dGluZ3MuYWxwaGEgaW50byBhY2NvdW50IGhlcmUgYW5k
IGFkZCBQaXhlbEZvcm1hdDo6QkdSWDguCisgICAgcmV0dXJuIFBpeGVsRm9ybWF0OjpCR1JBODsK
K30KKworRGVzdGluYXRpb25Db2xvclNwYWNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
OmNvbG9yU3BhY2UoKSBjb25zdAoreworICAgIHJldHVybiB0b0Rlc3RpbmF0aW9uQ29sb3JTcGFj
ZShtX3NldHRpbmdzLmNvbG9yU3BhY2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5oCShyZXZpc2lvbiAyNzc1MjUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDYW52YXNMaW5lSm9pbi5oIgogI2luY2x1
ZGUgIkNhbnZhc1BhdGguaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MuaCIKICNpbmNsdWRlICJD
YW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNhbnZhc1RleHRBbGlnbi5oIgogI2luY2x1ZGUgIkNh
bnZhc1RleHRCYXNlbGluZS5oIgpAQCAtNDIsNiArNDMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgorI2luY2x1ZGUgIkltYWdlRGF0YVNldHRpbmdzLmgiCiAjaW5jbHVkZSAiSW1hZ2VT
bW9vdGhpbmdRdWFsaXR5LmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKQEAgLTc4LDExICs4MCwxMyBAQCB1c2luZyBDYW52YXNJbWFnZVNvdXJjZSA9IFZh
cmlhbnQ8UmVmUHRyCiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlIDogcHVibGlj
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHB1YmxpYyBDYW52YXNQYXRoIHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UpOwogcHJvdGVjdGVk
OgotICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UoQ2FudmFzQmFzZSYsIGJvb2wgdXNl
c0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUpOworICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UoQ2FudmFzQmFzZSYsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdzJiYsIGJv
b2wgdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJzZU1vZGUpOwogCiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSgpOwogCisgICAgY29uc3QgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MmIGdldENvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXR0aW5nczsgfQorCiAgICAgZmxvYXQgbGluZVdpZHRoKCkgY29uc3QgeyByZXR1
cm4gc3RhdGUoKS5saW5lV2lkdGg7IH0KICAgICB2b2lkIHNldExpbmVXaWR0aChmbG9hdCk7CiAK
QEAgLTE4OCw5ICsxOTIsOSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmPENhbnZhc0dy
YWRpZW50Pj4gY3JlYXRlUmFkaWFsR3JhZGllbnQoZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCBy
MCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByMSk7CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRy
PENhbnZhc1BhdHRlcm4+PiBjcmVhdGVQYXR0ZXJuKENhbnZhc0ltYWdlU291cmNlJiYsIGNvbnN0
IFN0cmluZyYgcmVwZXRpdGlvbik7CiAKLSAgICBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVJbWFn
ZURhdGEoSW1hZ2VEYXRhJikgY29uc3Q7Ci0gICAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0
YT4+IGNyZWF0ZUltYWdlRGF0YShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0OwotICAgIEV4
Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBnZXRJbWFnZURhdGEoaW50IHN4LCBpbnQgc3ks
IGludCBzdywgaW50IHNoKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4g
Y3JlYXRlSW1hZ2VEYXRhKEltYWdlRGF0YSYpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFJlZjxJ
bWFnZURhdGE+PiBjcmVhdGVJbWFnZURhdGEoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBPcHRpb25h
bDxJbWFnZURhdGFTZXR0aW5ncz4pIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURh
dGE+PiBnZXRJbWFnZURhdGEoaW50IHN4LCBpbnQgc3ksIGludCBzdywgaW50IHNoLCBPcHRpb25h
bDxJbWFnZURhdGFTZXR0aW5ncz4pIGNvbnN0OwogICAgIHZvaWQgcHV0SW1hZ2VEYXRhKEltYWdl
RGF0YSYsIGludCBkeCwgaW50IGR5KTsKICAgICB2b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEm
LCBpbnQgZHgsIGludCBkeSwgaW50IGRpcnR5WCwgaW50IGRpcnR5WSwgaW50IGRpcnR5V2lkdGgs
IGludCBkaXJ0eUhlaWdodCk7CiAKQEAgLTMyOCw2ICszMzIsOSBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNFbnRpcmVCYWNraW5nU3RvcmVEaXJ0eSgpIGNvbnN0OwogICAgIEZsb2F0UmVjdCBiYWNr
aW5nU3RvcmVCb3VuZHMoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QgeyB7IH0sIEZsb2F0U2l6
ZSB7IGNhbnZhc0Jhc2UoKS5zaXplKCkgfSB9OyB9CiAKKyAgICBQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCgpIGNvbnN0IGZpbmFsOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KCkgY29uc3QgZmluYWw7CisKICAgICB2b2lkIHVud2luZFN0YXRlU3RhY2soKTsKICAgICB2b2lk
IHJlYWxpemVTYXZlc0xvb3AoKTsKIApAQCAtMzk1LDYgKzQwMiw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3VzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlOwogICAgIGJvb2wgbV91c2VzRGlz
cGxheUxpc3REcmF3aW5nIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxE
aXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ+IG1fcmVjb3JkaW5nQ29udGV4dDsKKyAgICBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyBtX3NldHRpbmdzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVu
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZp
c2lvbiAyNzc1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9mZnNj
cmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7CiAKLU9mZnNjcmVlbkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKENhbnZhc0Jhc2Um
IGNhbnZhcykKLSAgICA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UoY2FudmFzLCBmYWxz
ZSkKK09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6T2Zmc2NyZWVuQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEKENhbnZhc0Jhc2UmIGNhbnZhcywgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEU2V0dGluZ3MmJiBzZXR0aW5ncykKKyAgICA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UoY2FudmFzLCBXVEZNb3ZlKHNldHRpbmdzKSwgZmFsc2UpCiB7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oCShyZXZpc2lvbiAyNzc1MjUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBPZmZz
Y3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChPZmZzY3JlZW5D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOwogcHVibGljOgotICAgIE9mZnNjcmVlbkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRChDYW52YXNCYXNlJik7CisgICAgT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKENhbnZhc0Jhc2UmLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5n
cyYmKTsKICAgICB2aXJ0dWFsIH5PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoKTsK
IAogICAgIE9mZnNjcmVlbkNhbnZhcyYgY2FudmFzKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8
T2Zmc2NyZWVuQ2FudmFzPihjYW52YXNCYXNlKCkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9QYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZp
c2lvbiAyNzc1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYWludFJlbmRlcmlu
Z0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhaW50UmVuZGVyaW5nQ29udGV4dDJEPgogfQogCiBQYWludFJlbmRlcmluZ0NvbnRl
eHQyRDo6UGFpbnRSZW5kZXJpbmdDb250ZXh0MkQoQ2FudmFzQmFzZSYgY2FudmFzKQotICAgIDog
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZShjYW52YXMsIGZhbHNlKQorICAgIDogQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZShjYW52YXMsIHsgfSwgZmFsc2UpCiB7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFj
ZS5jcHAJKHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1By
ZWRlZmluZWRDb2xvclNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNCArNDUsMjMgQEAg
RGVzdGluYXRpb25Db2xvclNwYWNlIHRvRGVzdGluYXRpb25Db2xvcgogICAgIHJldHVybiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CiB9CiAKK09wdGlvbmFsPFByZWRlZmluZWRDb2xvclNw
YWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNw
YWNlKQoreworICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgeworICAgIGNhc2UgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCOgorICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNS
R0I7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQorICAg
IGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOgorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0RJU1BMQVlfUDMpCisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoK
KyAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNlOjpEaXNwbGF5UDM7CisjZW5kaWYK
KyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVk
Q29sb3JTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1By
ZWRlZmluZWRDb2xvclNwYWNlLmgJKHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0z
OSw2ICs0MCw3IEBAIGVudW0gY2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2UgewogfTsKIAogRGVz
dGluYXRpb25Db2xvclNwYWNlIHRvRGVzdGluYXRpb25Db2xvclNwYWNlKFByZWRlZmluZWRDb2xv
clNwYWNlKTsKK09wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xv
clNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHJldmlzaW9uIDI3NzUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MjgsNiArNDI4LDEyIEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2MKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNv
cmRpbmdTd2l6emxlVHlwZTo6SW1hZ2VEYXRhIH19OwogfQogCitPcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoSW1hZ2VEYXRhU2V0dGluZ3MmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQuCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwogT3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vz
c0FyZ3VtZW50KEltYWdlU21vb3RoaW5nUXVhbGl0eSBhcmd1bWVudCkKIHsKICAgICByZXR1cm4g
e3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQp
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAJKHJl
dmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDYW52YXNBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXIuaAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBj
bGFzcyBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOwogY2xhc3MgV2ViR0xVbmlmb3JtTG9jYXRpb247
CiBjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0Owogc3RydWN0IERPTU1hdHJpeDJESW5pdDsK
K3N0cnVjdCBJbWFnZURhdGFTZXR0aW5nczsKIGVudW0gY2xhc3MgUmVjb3JkaW5nU3dpenpsZVR5
cGUgOiBpbnQ7CiBlbnVtIGNsYXNzIENhbnZhc0RpcmVjdGlvbjsKIGVudW0gY2xhc3MgQ2FudmFz
RmlsbFJ1bGU7CkBAIC0xNTAsNiArMTUxLDcgQEAgZW51bSBJbWFnZVNtb290aGluZ1F1YWxpdHk7
CiAgICAgbWFjcm8oSFRNTEltYWdlRWxlbWVudCopIFwKICAgICBtYWNybyhJbWFnZUJpdG1hcCop
IFwKICAgICBtYWNybyhJbWFnZURhdGEqKSBcCisgICAgbWFjcm8oSW1hZ2VEYXRhU2V0dGluZ3Mm
KSBcCiAgICAgbWFjcm8oSW1hZ2VTbW9vdGhpbmdRdWFsaXR5KSBcCiAgICAgbWFjcm8oT3B0aW9u
YWw8ZmxvYXQ+JikgXAogICAgIG1hY3JvKFBhdGgyRCopIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAko
cmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw5IEBAIFZl
Y3Rvcjx1aW50OF90PiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQkcKIAogT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZm
ZXJGb3JtYXQmIGRlc3RpbmF0aW9uRm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCB2
b2lkKiBkYXRhKSBjb25zdAogeworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igbm9uIDgt
Yml0IHBpeGVsIGZvcm1hdHMuCisgICAgQVNTRVJUKGRlc3RpbmF0aW9uRm9ybWF0LnBpeGVsRm9y
bWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBkZXN0aW5hdGlvbkZvcm1hdC5waXhlbEZvcm1h
dCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworCiAgICAgYXV0byBzb3VyY2VSZWN0U2NhbGVkID0g
dG9CYWNrZW5kQ29vcmRpbmF0ZXMoc291cmNlUmVjdCk7CiAKICAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShkZXN0aW5hdGlvbkZvcm1hdCwgc291cmNlUmVjdFNj
YWxlZC5zaXplKCkpOwpAQCAtMTM0LDIzICsxMzcsMTUgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEltYWdlQnVmZmVyQmFja2VuZAogICAgIGlmIChkZXN0aW5hdGlvblJlY3Quc2l6ZSgpICE9IHNv
dXJjZVJlY3RTY2FsZWQuc2l6ZSgpKQogICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLnplcm9G
aWxsKCk7CiAKLSAgICB1bnNpZ25lZCBzb3VyY2VCeXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7
Ci0gICAgY29uc3QgdWludDhfdCogc291cmNlUm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlQnl0ZXNQZXJSb3cgKyBz
b3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OwotCi0gICAgdW5zaWduZWQgZGVzdGluYXRpb25CeXRl
c1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7Ci0gICAgdWludDhfdCogZGVz
dGluYXRpb25Sb3dzID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5kYXRhKCkgKyBkZXN0aW5hdGlvblJl
Y3QueSgpICogZGVzdGluYXRpb25CeXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0
OwotCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgc291cmNlRm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxGb3JtYXQoKSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCIH07Ci0KICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNl
OwotICAgIHNvdXJjZS5mb3JtYXQgPSBzb3VyY2VGb3JtYXQ7Ci0gICAgc291cmNlLmJ5dGVzUGVy
Um93ID0gc291cmNlQnl0ZXNQZXJSb3c7Ci0gICAgc291cmNlLnJvd3MgPSBzb3VyY2VSb3dzOwor
ICAgIHNvdXJjZS5mb3JtYXQgPSB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxp
ZWQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9OworICAgIHNvdXJjZS5ieXRlc1BlclJv
dyA9IGJ5dGVzUGVyUm93KCk7CisgICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJv
dyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7CiAgICAgCiAgICAgUGl4ZWxCdWZmZXJDb252
ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKICAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0aW5h
dGlvbkZvcm1hdDsKLSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGRlc3RpbmF0aW9uQnl0
ZXNQZXJSb3c7Ci0gICAgZGVzdGluYXRpb24ucm93cyA9IGRlc3RpbmF0aW9uUm93czsKKyAgICBk
ZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7Cisg
ICAgZGVzdGluYXRpb24ucm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVzdGlu
YXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0
LngoKSAqIDQ7CiAKICAgICBjb252ZXJ0SW1hZ2VQaXhlbHMoc291cmNlLCBkZXN0aW5hdGlvbiwg
ZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKQEAgLTE1OSwxNCArMTU0LDE0IEBAIE9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQKIAogdm9pZCBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBzb3VyY2VQaXhlbEJ1ZmZlciwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uUG9p
bnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgdm9pZCog
ZGF0YSkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG5vbi1SR0JBOCBwaXhlbCBm
b3JtYXRzLgotICAgIEFTU0VSVChzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKS5waXhlbEZvcm1h
dCA9PSBQaXhlbEZvcm1hdDo6UkdCQTgpOworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Ig
bm9uIDgtYml0IHBpeGVsIGZvcm1hdHMuCisgICAgQVNTRVJUKHNvdXJjZVBpeGVsQnVmZmVyLmZv
cm1hdCgpLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBzb3VyY2VQaXhlbEJ1
ZmZlci5mb3JtYXQoKS5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAg
YXV0byBzb3VyY2VSZWN0U2NhbGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoc291cmNlUmVjdCk7
CiAgICAgYXV0byBkZXN0aW5hdGlvblBvaW50U2NhbGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMo
ZGVzdGluYXRpb25Qb2ludCk7CiAKLSAgICBJbnRSZWN0IHNvdXJjZVJlY3RDbGlwcGVkID0gaW50
ZXJzZWN0aW9uKHsgSW50UG9pbnQ6Onplcm8oKSwgc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpIH0s
IHNvdXJjZVJlY3RTY2FsZWQpOwotICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0ID0gc291cmNl
UmVjdENsaXBwZWQ7CisgICAgYXV0byBzb3VyY2VSZWN0Q2xpcHBlZCA9IGludGVyc2VjdGlvbih7
IEludFBvaW50Ojp6ZXJvKCksIHNvdXJjZVBpeGVsQnVmZmVyLnNpemUoKSB9LCBzb3VyY2VSZWN0
U2NhbGVkKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uUmVjdCA9IHNvdXJjZVJlY3RDbGlwcGVkOwog
ICAgIGRlc3RpbmF0aW9uUmVjdC5tb3ZlQnkoZGVzdGluYXRpb25Qb2ludFNjYWxlZCk7CiAKICAg
ICBpZiAoc291cmNlUmVjdFNjYWxlZC54KCkgPCAwKQpAQCAtMTc4LDI0ICsxNzMsMTUgQEAgdm9p
ZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKAogICAgIGRlc3RpbmF0aW9uUmVj
dC5pbnRlcnNlY3QoYmFja2VuZFJlY3QoKSk7CiAgICAgc291cmNlUmVjdENsaXBwZWQuc2V0U2l6
ZShkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIAotICAgIHVuc2lnbmVkIHNvdXJjZUJ5dGVzUGVy
Um93ID0gNCAqIHNvdXJjZVBpeGVsQnVmZmVyLnNpemUoKS53aWR0aCgpOwotICAgIGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZVJvd3MgPSBzb3VyY2VQaXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291
cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlQnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBl
ZC54KCkgKiA0OwotCi0gICAgdW5zaWduZWQgZGVzdGluYXRpb25CeXRlc1BlclJvdyA9IGJ5dGVz
UGVyUm93KCk7Ci0gICAgdWludDhfdCogZGVzdGluYXRpb25Sb3dzID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oZGF0YSkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb25CeXRl
c1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0OwotCi0gICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgc291cmNlRm9ybWF0ID0gc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCk7Ci0gICAgUGl4ZWxC
dWZmZXJGb3JtYXQgZGVzdGluYXRpb25Gb3JtYXQgeyBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBw
aXhlbEZvcm1hdCgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKLQogICAgIENvbnN0
UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7Ci0gICAgc291cmNlLmZvcm1hdCA9IHNv
dXJjZUZvcm1hdDsKLSAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSBzb3VyY2VCeXRlc1BlclJvdzsK
LSAgICBzb3VyY2Uucm93cyA9IHNvdXJjZVJvd3M7Ci0gICAgCisgICAgc291cmNlLmZvcm1hdCA9
IHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgpOworICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IDQg
KiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKTsKKyAgICBzb3VyY2Uucm93cyA9IHNv
dXJjZVBpeGVsQnVmZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBz
b3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OworCiAgICAgUGl4
ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5mb3Jt
YXQgPSBkZXN0aW5hdGlvbkZvcm1hdDsKLSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGRl
c3RpbmF0aW9uQnl0ZXNQZXJSb3c7Ci0gICAgZGVzdGluYXRpb24ucm93cyA9IGRlc3RpbmF0aW9u
Um93czsKKyAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQs
IHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9OworICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVy
Um93ID0gYnl0ZXNQZXJSb3coKTsKKyAgICBkZXN0aW5hdGlvbi5yb3dzID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oZGF0YSkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24u
Ynl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNDsKIAogICAgIGNvbnZlcnRJbWFn
ZVBpeGVscyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5jcHAJKHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsMjIgQEAgT3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcgogICAgIHJldHVybiB7IHsgZm9y
bWF0LCBzaXplLCBwaXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQogCitPcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZv
cm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4m
JiBhcnJheUJ1ZmZlcikKK3sKKyAgICAvLyBOT1RFOiBPbmx5IDgtYml0IGZvcm1hdHMgYXJlIGN1
cnJlbnRseSBzdXBwb3J0ZWQuCisgICAgQVNTRVJUKGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhl
bEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JB
OCk7CisKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNp
emUpOworICAgIGlmIChidWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSAhPSBhcnJheUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1
dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJh
eUJ1ZmZlciksIDAsIGJ1ZmZlclNpemUudW5zYWZlR2V0KCkpOworICAgIGlmICghcGl4ZWxBcnJh
eSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4geyB7IGZvcm1hdCwg
c2l6ZSwgcGl4ZWxBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0gfTsKK30KKwogUGl4ZWxCdWZmZXI6
OlBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNp
emUmIHNpemUsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmIGRhdGEpCiAgICAgOiBtX2Zv
cm1hdCB7IGZvcm1hdCB9CiAgICAgLCBtX3NpemUgeyBzaXplIH0KQEAgLTc0LDYgKzkwLDE0IEBA
IFBpeGVsQnVmZmVyOjpQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmYKICAgICBSRUxFQVNFX0FT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKChtX3NpemUuYXJlYSgpICogNCkudW5zYWZl
R2V0KCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7CiB9CiAKK1BpeGVsQnVmZmVyOjpQaXhlbEJ1ZmZl
cihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCBK
U0M6OlVpbnQ4Q2xhbXBlZEFycmF5JiBkYXRhKQorICAgIDogbV9mb3JtYXQgeyBmb3JtYXQgfQor
ICAgICwgbV9zaXplIHsgc2l6ZSB9CisgICAgLCBtX2RhdGEgeyBkYXRhIH0KK3sKKyAgICBSRUxF
QVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKChtX3NpemUuYXJlYSgpICogNCku
dW5zYWZlR2V0KCkgPD0gbV9kYXRhLT5sZW5ndGgoKSk7Cit9CisKIFBpeGVsQnVmZmVyOjp+UGl4
ZWxCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKIFBpeGVsQnVmZmVyIFBpeGVsQnVmZmVyOjpkZWVwQ2xv
bmUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxC
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlci5oCShyZXZpc2lvbiAyNzc1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0MiwxMCBA
QCBjbGFzcyBQaXhlbEJ1ZmZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGl4ZWxCdWZm
ZXIpOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gdHJ5Q3Jl
YXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYsIFJlZjxKU0M6OkFy
cmF5QnVmZmVyPiYmKTsKIAogICAgIFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0
JiwgY29uc3QgSW50U2l6ZSYsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKKyAgICBQ
aXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBKU0M6
OlVpbnQ4Q2xhbXBlZEFycmF5Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBpeGVsQnVmZmVyKCk7
CiAKICAgICBQaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlciYmKSA9IGRlZmF1bHQ7CkBAIC01Myw2ICs1
NSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9CiAgICAgSlNDOjpVaW50OENsYW1wZWRBcnJheSYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5nZXQoKTsgfQogCisgICAgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYg
dGFrZURhdGEoKSB7IHJldHVybiBXVEZNb3ZlKG1fZGF0YSk7IH0KKwogICAgIFBpeGVsQnVmZmVy
IGRlZXBDbG9uZSgpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCShyZXZpc2lv
biAyNzc1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGlj
IHZvaWQgY29udmVydEltYWdlUGl4ZWxzQWNjZWxlcmF0ZQogCiAgICAgICAgIHZJbWFnZV9FcnJv
ciBjb252ZXJ0ZXJDcmVhdGVFcnJvciA9IGt2SW1hZ2VOb0Vycm9yOwogICAgICAgICBhdXRvIGNv
bnZlcnRlciA9IGFkb3B0Q0YodkltYWdlQ29udmVydGVyX0NyZWF0ZVdpdGhDR0ltYWdlRm9ybWF0
KCZzb3VyY2VDR0ltYWdlRm9ybWF0LCAmZGVzdGluYXRpb25DR0ltYWdlRm9ybWF0LCBudWxscHRy
LCBrdkltYWdlTm9GbGFncywgJmNvbnZlcnRlckNyZWF0ZUVycm9yKSk7Ci0gICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0VfVU5VU0VEKGNvbnZlcnRlckNyZWF0ZUVycm9yLCBjb252ZXJ0ZXJDcmVh
dGVFcnJvciAhPSBrdkltYWdlTm9FcnJvciwgInZJbWFnZUNvbnZlcnRlciBjcmVhdGlvbiBmYWls
ZWQgd2l0aCBlcnJvcjogJXpkIiwgY29udmVydGVyQ3JlYXRlRXJyb3IpOworICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFX1VOVVNFRChjb252ZXJ0ZXJDcmVhdGVFcnJvciwgY29udmVydGVyQ3Jl
YXRlRXJyb3IgPT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252ZXJ0ZXIgY3JlYXRpb24gZmFp
bGVkIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNyZWF0ZUVycm9yKTsKIAogICAgICAgICB2
SW1hZ2VfRXJyb3IgY29udmVydGVyQ29udmVydEVycm9yID0gdkltYWdlQ29udmVydF9BbnlUb0Fu
eShjb252ZXJ0ZXIuZ2V0KCksICZzb3VyY2VWSW1hZ2VCdWZmZXIsICZkZXN0aW5hdGlvblZJbWFn
ZUJ1ZmZlciwgbnVsbHB0ciwga3ZJbWFnZU5vRmxhZ3MpOwogICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFX1VOVVNFRChjb252ZXJ0ZXJDb252ZXJ0RXJyb3IsIGNvbnZlcnRlckNvbnZlcnRFcnJv
ciA9PSBrdkltYWdlTm9FcnJvciwgInZJbWFnZUNvbnZlcnRfQW55VG9BbnkgZmFpbGVkIGNvbnZl
cnNpb24gd2l0aCBlcnJvcjogJXpkIiwgY29udmVydGVyQ29udmVydEVycm9yKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDI3NzUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDY4LDcgKzQ2OCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnYK
ICAgICAvLyBDb2xvciBzcGFjZSBjb252ZXJzaW9uIGhhcHBlbnMgaW50ZXJuYWxseSB3aGVuIGRy
YXdpbmcgZnJvbSBvbmUgaW1hZ2UgYnVmZmVyIHRvIGFub3RoZXIKICAgICBjb252ZXJ0ZWRCdWZm
ZXItPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoaW5wdXRCdWZmZXIsIHJlY3QpOwogICAgIAot
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IG91dHB1dEFscGhhRm9ybWF0LCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIFBpeGVsQnVm
ZmVyRm9ybWF0IGZvcm1hdCB7IG91dHB1dEFscGhhRm9ybWF0LCBQaXhlbEZvcm1hdDo6UkdCQTgs
IHRhcmdldENvbG9yU3BhY2UgfTsKICAgICByZXR1cm4gY29udmVydGVkQnVmZmVyLT5nZXRQaXhl
bEJ1ZmZlcihmb3JtYXQsIHJlY3QpOwogfQogCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBGaWx0
ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bAogICAgICAgICAgICAgICAgIGNvcHlDb252
ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIHJlY3QpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9y
bWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX2ltYWdlQnVmZmVyUmVzdWx0LT5j
b2xvclNwYWNlKCkgfTsKICAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBt
X2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQoKSwg
bV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSk7CiAgICAgICAgICAgICBpZiAoIW1fdW5tdWx0
aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTEyLDcgKzUx
Miw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWwKICAgICAgICAg
ICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICAg
ICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGlucHV0U2l6ZSkp
OwogICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwot
ICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiB9OworICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdC
QTgsIG1faW1hZ2VCdWZmZXJSZXN1bHQtPmNvbG9yU3BhY2UoKSB9OwogICAgICAgICAgICAgbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBp
bnB1dFNpemUpOwogICAgICAgICAgICAgaWYgKCFtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0KQog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTUzOSw3ICs1MzksNyBAQCB2b2lkIEZpbHRlckVm
ZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1CiAgICAgICAgICAgICAgICAgY29weUNvbnZlcnRl
ZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihkZXN0aW5hdGlvbiwgKmNvbG9yU3BhY2UsIEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHJlY3QpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZv
cm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0
OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgICAgICAgICBQaXhl
bEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBs
aWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1faW1hZ2VCdWZmZXJSZXN1bHQtPmNvbG9yU3BhY2Uo
KSB9OwogICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVm
ZmVyUmVzdWx0LT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQoKSwgbV9hYnNvbHV0
ZVBhaW50UmVjdC5zaXplKCkgfSk7CiAgICAgICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2
b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1CiAgICAgICAgICAgICBJbnRT
aXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgICAgICAgICBB
U1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNpemUpKTsKICAgICAg
ICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICAgICAg
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlBy
ZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCIH07CisgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1faW1hZ2VC
dWZmZXJSZXN1bHQtPmNvbG9yU3BhY2UoKSB9OwogICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgaW5wdXRTaXplKTsK
ICAgICAgICAgICAgIGlmICghbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTkwLDcgKzU5MCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiYg
RmlsdGVyRWZmZWN0OjpjcmUKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50
UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5n
KHJlc3VsdFNpemUpKTsKICAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxl
KCkpOwotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1
bHRDb2xvclNwYWNlIH07CiAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVm
ZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCByZXN1bHRTaXplKTsKICAgICByZXR1cm4gbV91bm11bHRp
cGxpZWRJbWFnZVJlc3VsdDsKIH0KQEAgLTYwOSw3ICs2MDksNyBAQCBPcHRpb25hbDxQaXhlbEJ1
ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3JlCiAgICAgSW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1
dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHND
bGFtcGluZyhyZXN1bHRTaXplKSk7CiAgICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0
ZXJTY2FsZSgpKTsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9y
ZXN1bHRDb2xvclNwYWNlIH07CiAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAkocmV2aXNpb24gMjc3NTI1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzM5LDcgKzUzMzksNyBAQCB2b2lkIEludGVy
bmFsczo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkCiAgICAgaWYgKCFyZ2JhKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2Jh
LnJlbGVhc2VOb25OdWxsKCksIHZpZGVvU2V0dGluZ3Mud2lkdGgoKSwgdmlkZW9TZXR0aW5ncy5o
ZWlnaHQoKSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJl
bGVhc2VOb25OdWxsKCksIHZpZGVvU2V0dGluZ3Mud2lkdGgoKSwgdmlkZW9TZXR0aW5ncy5oZWln
aHQoKSwgeyB7IFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCIH0gfSk7CiAgICAgaWYgKCFpbWFn
ZURhdGEuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5y
ZXNvbHZlKGltYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgZWxzZQpAQCAtNjIx
MSw3ICs2MjExLDcgQEAgdm9pZCBJbnRlcm5hbHM6OmxvYWRBcnR3b3JrSW1hZ2UoU3RyaW5nJgog
ICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZSA9IG1ha2VVbmlxdWU8QXJ0d29ya0ltYWdlUHJvbWlz
ZT4oV1RGTW92ZShwcm9taXNlKSk7CiAgICAgbV9hcnR3b3JrTG9hZGVyID0gbWFrZVVuaXF1ZTxB
cnR3b3JrSW1hZ2VMb2FkZXI+KCpjb250ZXh0RG9jdW1lbnQoKSwgdXJsLCBbdGhpc10oSW1hZ2Uq
IGltYWdlKSB7CiAgICAgICAgIGlmIChpbWFnZSkgewotICAgICAgICAgICAgYXV0byBpbWFnZURh
dGEgPSBJbWFnZURhdGE6OmNyZWF0ZSh1bnNpZ25lZChpbWFnZS0+d2lkdGgoKSksIHVuc2lnbmVk
KGltYWdlLT5oZWlnaHQoKSkpOworICAgICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURh
dGE6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW1hZ2UtPndpZHRoKCkpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaW1hZ2UtPmhlaWdodCgpKSwgeyB7IFByZWRlZmluZWRDb2xvclNwYWNl
OjpTUkdCIH0gfSk7CiAgICAgICAgICAgICBpZiAoIWltYWdlRGF0YS5oYXNFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgICAgICBtX2FydHdvcmtJbWFnZVByb21pc2UtPnJlc29sdmUoaW1hZ2VEYXRh
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKICAgICAgICAgICAgIGVsc2UKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI3NzUyNSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI1IEBACisyMDIxLTA1LTE0ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcvYWNjZXNzaW5nL3NldHRpbmcgbm9u
LXNSR0IgSW1hZ2VEYXRhIHZpYSBjYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNTg0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgUmVtb3ZlIHdp
ZGUtZ2FtdXQtY2FudmFzIG5vdyB0aGF0IHRoZXkgc2hvdWxkIHBhc3MuCisKKyAgICAgICAgKiBm
YXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2Ut
ZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbDogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgdGVzdCBl
eGVyY2lzaW5nIGdldEltYWdlRGF0YSBhbmQgcHV0SW1hZ2VEYXRhIHdpdGggbm9uLXNSR0IgY2Fu
dmFzZXMKKyAgICAgICAgYW5kIG5vbi1zUkdCIEltYWdlRGF0YS4KKyAKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy9jYW52YXMtaW1hZ2VEYXRhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRlIHJl
c3VsdHMgZm9yIHVwZGF0ZWQgZXJyb3IgbWVzc2FnZXMsIHdoaWNoIGFyZSBhIGJpdCB3b3JzZSBk
dWUgYWRkaXRpb25hbAorICAgICAgICBhbWJpZ3VpdHkgaW4gc2lnbmF0dXJlcy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgTWFyayBuZXcgdGVz
dCBhcyBmYWlsaW5nIG9uIGdsaWIgZHVlIHRvIGxhY2sgb2YgZGlzcGxheS1wMyBzdXBwb3J0Lgor
CiAyMDIxLTA1LTE0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtHUFVQXSBhIG1lZGlhIGVsZW1lbnQgd2l0aCBhIGRhdGEgdXJsIGFuZCAiY3Jvc3Nv
cmlnaW49J2Fub255bW91cyciIGRvZXNuJ3QgbG9hZApJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShy
ZXZpc2lvbiAyNzc1MjUpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTk1LDkgKzM5OTUsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvZHJhd2luZy1pbWFnZXMtdG8tdGhlLWNhbnZhcy9pbWFnZS1vcmllbnRhdGlvbi9k
cmF3SW1hZ2UtZnJvbS1lbGVtZW50LXN3YXAtd2lkdGgtaGVpZ2h0LnRlbnRhdGl2ZS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvZHJhd2luZy1pbWFnZXMtdG8tdGhlLWNhbnZhcy9pbWFnZS1vcmllbnRh
dGlvbi9kcmF3SW1hZ2UtZnJvbS1lbGVtZW50LnRlbnRhdGl2ZS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiAKLSMgU29tZXRpbWVzIHByaW50cyB3ZWlyZCBvdXRwdXQgYXQgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgdGVzdHMuCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMgWyBGYWlsdXJlIFBhc3MgXQotCiAjIENTUyBN
YXNvbnJ5IExheW91dCBub3Qgc3VwcG9ydGVkLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvbWFzb25yeS50ZW50YXRpdmUgWyBTa2lwIF0KIHdlYmtpdC5vcmcv
Yi8yMDIxMTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3Vi
Z3JpZCBbIFNraXAgXQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9y
LXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFn
ZURhdGEtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTkgQEAKK1Rlc3QgdGhhdCBwaXhlbCBhY2Nlc3Mg
ZnVuY3Rpb25zIHdvcmsgd2l0aCBub24tU1JHQiBjb2xvciBzcGFjZXMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2Fu
dmFzLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9t
RGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdCLmNvbG9yU3BhY2UgaXMgInNy
Z2IiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0Nv
bG9yU3BhY2VEaXNwbGF5UDMuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgaW1hZ2VE
YXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGltYWdl
RGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlU1JHQi5jb2xvclNw
YWNlIGlzICJzcmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlk
aW5nQ29sb3JTcGFjZURpc3BsYXlQMy5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBp
bWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yLmNvbG9yU3BhY2UgaXMgInNy
Z2IiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JTZXR0aW5n
Q29sb3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFnZURhdGFDcmVh
dGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5j
b2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdl
RGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlci5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBp
bWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlclNldHRp
bmdDb2xvclNwYWNlVG9TUkdCLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGltYWdlRGF0YUNy
ZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyU2V0dGluZ0NvbG9yU3Bh
Y2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorCitUZXN0aW5nIGEgZGlz
cGxheS1wMyBjYW52YXMgd2l0aCBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbnRvIGl0
CisKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBh
IGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRy
YXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRh
dGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRh
WzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0
aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xv
cihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlz
ICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1
CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3Qg
Z2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgZGlzcGxheS1wMyBj
YW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpCitQ
QVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlz
IDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFT
UyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRo
IGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGludG8gaXQKKworVGVzdCBnZXRJbWFnZURhdGEgd2l0
aCBubyBzcGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZh
cyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFj
ZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRh
dGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10g
aXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIGRpc3Bs
YXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KQor
UEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAzCitQ
QVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0
YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIHNwZWNp
ZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAw
KSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFT
UyBkYXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTEKK1BBU1MgZGF0
YS5kYXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKworVGVzdGluZyBhIHNy
Z2IgY2FudmFzIHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW50byBpdAorCitU
ZXN0IGdldEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24gYSBzcmdi
IGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkK
K1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAor
UEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRh
dGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZpZWQs
IG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJh
d24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRh
WzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMg
MAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIGRpc3Bs
YXktcDMgc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3Bs
YXktcDMgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3Bs
YXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1
MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCitU
ZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBjb2xvcihzcmdiLXAzIDAgMSAwKSBkcmF3biBpbnRv
IGl0CisKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBv
biBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0
KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAw
CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1Mg
ZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmll
ZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBp
biBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0g
aXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQ
QVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1w
MyBzcGVjaWZpZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEg
MCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BB
U1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRh
dGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKKworVGVzdGluZyBh
IGRpc3BsYXktcDMgY2FudmFzIHdpdGggZGlzcGxheS1wMyBJbWFnZURhdGEgZHJhd24gaW50byBp
dAorCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlz
IDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFT
UyBkYXRhLmRhdGFbM10gaXMgMjU1CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1w
MyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFT
UyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3Rpbmcg
YSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIHNyZ2IgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQKKwor
UEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAzCitQ
QVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0
YS5kYXRhWzNdIGlzIDI1NQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQ
QVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1MQorUEFTUyBk
YXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCitUZXN0aW5nIGEg
c3JnYiBjYW52YXMgd2l0aCBkaXNwbGF5LXAzIEltYWdlRGF0YSBkcmF3biBpbnRvIGl0CisKK1BB
U1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFT
UyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEu
ZGF0YVszXSBpcyAyNTUKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFT
UyBkYXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTEKK1BBU1MgZGF0
YS5kYXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKworVGVzdGluZyBhIHNy
Z2IgY2FudmFzIHdpdGggc3JnYiBJbWFnZURhdGEgZHJhd24gaW50byBpdAorCitQQVNTIGRhdGEu
Y29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5k
YXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10g
aXMgMjU1CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5k
YXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsy
XSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxh
eS1wMy1JbWFnZURhdGEuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI5MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHBpeGVs
IGFjY2VzcyBmdW5jdGlvbnMgd29yayB3aXRoIG5vbi1TUkdCIGNvbG9yIHNwYWNlcy4iKTsKKwor
bGV0IGNhbnZhc0Rpc3BsYXlQMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwor
bGV0IGNvbnRleHREaXNwbGF5UDMgPSBjYW52YXNEaXNwbGF5UDMuZ2V0Q29udGV4dCgiMmQiLCB7
IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKKworbGV0IGNhbnZhc1NSR0IgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKK2xldCBjb250ZXh0U1JHQiA9IGNhbnZhc1NSR0Iu
Z2V0Q29udGV4dCgiMmQiLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKKworY29uc3QgaW1hZ2VE
YXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXMgPSBjb250ZXh0RGlzcGxheVAzLmNyZWF0ZUlt
YWdlRGF0YSg1MCwgNTApOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAz
Q2FudmFzLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNy
ZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdCID0gY29udGV4
dERpc3BsYXlQMy5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9
KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRp
bmdDb2xvclNwYWNlU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25zdCBpbWFnZURh
dGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxheVAz
ID0gY29udGV4dERpc3BsYXlQMy5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6
ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQ
M0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxheVAzLmNvbG9yU3BhY2UiLCBgImRpc3Bs
YXktcDMiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhcyA9IGNvbnRl
eHRTUkdCLmNyZWF0ZUltYWdlRGF0YSg1MCwgNTApOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0
ZWRGcm9tU1JHQkNhbnZhcy5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25zdCBpbWFnZURh
dGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZVNSR0IgPSBjb250ZXh0
U1JHQi5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3No
b3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFj
ZVNSR0IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZy
b21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VEaXNwbGF5UDMgPSBjb250ZXh0U1JHQi5j
cmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3No
b3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFj
ZURpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApOworCitjb25zdCBpbWFnZURh
dGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yID0gbmV3IEltYWdlRGF0YSg1MCwgNTAs
IHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9t
SW1hZ2VEYXRhQ29uc3RydWN0b3IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1h
Z2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclNldHRpbmdDb2xvclNwYWNlVG9T
UkdCID0gbmV3IEltYWdlRGF0YSg1MCwgNTAsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hv
dWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JTZXR0aW5nQ29s
b3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25zdCBpbWFnZURhdGFD
cmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQ
MyA9IG5ldyBJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsK
K3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGlu
Z0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApOworCitj
b25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZl
ciA9IG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQwMCksIDEwLCAxMCwgeyBj
b2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFn
ZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXIuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKwor
Y29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZm
ZXJTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQiA9IG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KDQwMCksIDEwLCAxMCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgi
aW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXJTZXR0
aW5nQ29sb3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25zdCBpbWFn
ZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlclNldHRpbmdD
b2xvclNwYWNlVG9EaXNwbGF5UDMgPSBuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJh
eSg0MDApLCAxMCwgMTAsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUo
ImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyU2V0
dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApOwor
Cit2YXIgZGF0YSA9IHsgfTsKKworLy8gTk9URToKKy8vIGNvbG9yKHNyZ2IgMCAxIDApIGNvbnZl
cnRlZCB0byBkaXNwbGF5LXAzIGlzIGNvbG9yKGRpc3BsYXktcDMgMC40NTg0IDAuOTg1MjYgMC4y
OTgyOSkgb3IgWzExNywgMjUxLCA3NiwgMjU1XSBpbiBieXRlIGZvcm0uCisKK2RlYnVnKCIiKTsK
K2RlYnVnKCJUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBjb2xvcihkaXNwbGF5LXAz
IDAgMSAwKSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHREaXNwbGF5UDMu
ZmlsbFN0eWxlID0gImNvbG9yKGRpc3BsYXktcDMgMCAxIDApIjsKK2NvbnRleHREaXNwbGF5UDMu
ZmlsbFJlY3QoMCwgMCwgNTAsIDUwKTsKKworLy8gTm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlIHdp
bGwgZGVmYXVsdCB0byB0aGUgY2FudmFzJyBjb2xvciBzcGFjZSwgaW4gdGhpcyBjYXNlLCBkaXNw
bGF5LXAzCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBubyBzcGVjaWZpZWQgY29sb3Ig
c3BhY2UsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1w
MyAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFn
ZURhdGEoMCwgMCwgMSwgMSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJkaXNwbGF5
LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRo
IHNyZ2Igc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9y
KGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworLy8gTk9URTogY29sb3IoZGlzcGxh
eS1wMyAwIDEgMCkgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2Ygc1JHQiwgc28gaXQgY2xpcHBlZCB0
byAyNTUuCitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwg
eyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJz
cmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRo
IGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFz
IGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHRE
aXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXkt
cDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hv
dWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1
NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRh
WzNdIiwgIjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIGRpc3BsYXktcDMg
Y2FudmFzIHdpdGggY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIp
OworCitjb250ZXh0RGlzcGxheVAzLmZpbGxTdHlsZSA9ICJjb2xvcihzcmdiIDAgMSAwKSI7Citj
b250ZXh0RGlzcGxheVAzLmZpbGxSZWN0KDAsIDAsIDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmll
ZCBjb2xvciBzcGFjZSB3aWxsIGRlZmF1bHQgdG8gdGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGlu
IHRoaXMgY2FzZSwgZGlzcGxheS1wMworZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8g
c3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFz
IGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHREaXNwbGF5
UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIs
IGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2
Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJ
bWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2Fu
dmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0
RGlzcGxheVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9
KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKKy8vIE5PVEU6IFRoaXMg
MyBpcyBvZGQsIGJ1dCBkdWUgdG8gbGFjayBvZiBwcmVjaXNpb24gaW4gOC1iaXQgcm91bmQtdHJp
cHBpbmcuCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjMiKTsKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRo
IGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFz
IGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHREaXNwbGF5
UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0p
Oworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUo
ImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7
CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNd
IiwgIjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIHNyZ2IgY2FudmFzIHdp
dGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIpOwor
Citjb250ZXh0U1JHQi5maWxsU3R5bGUgPSAiY29sb3IoZGlzcGxheS1wMyAwIDEgMCkiOworY29u
dGV4dFNSR0IuZmlsbFJlY3QoMCwgMCwgNTAsIDUwKTsKKworLy8gTm8gc3BlY2lmaWVkIGNvbG9y
IHNwYWNlIHdpbGwgZGVmYXVsdCB0byB0aGUgY2FudmFzJyBjb2xvciBzcGFjZSwgaW4gdGhpcyBj
YXNlLCBzcmdiCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBubyBzcGVjaWZpZWQgY29s
b3Igc3BhY2UsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAw
IDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAs
IDAsIDEsIDEpOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxk
QmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNd
IiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmll
ZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBk
cmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwgMCwgMSwg
MSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwg
YCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3
aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNv
bG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHRTUkdC
LmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsK
K3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJk
YXRhLmRhdGFbMF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIpOwor
c2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIs
ICIyNTUiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRo
IGNvbG9yKHNyZ2ItcDMgMCAxIDApIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29u
dGV4dFNSR0IuZmlsbFN0eWxlID0gImNvbG9yKHNyZ2IgMCAxIDApIjsKK2NvbnRleHRTUkdCLmZp
bGxSZWN0KDAsIDAsIDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSB3aWxs
IGRlZmF1bHQgdG8gdGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGluIHRoaXMgY2FzZSwgc3JnYgor
ZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBv
biBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0
KSIpOworZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKTsKK3Nob3Vs
ZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0i
LCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVi
dWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZpZWQsIG9uIGEgc3JnYiBjYW52
YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0g
Y29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogInNyZ2Ii
IH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxkQmUoImRh
dGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIpOworc2hv
dWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1
NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIHNwZWNpZmll
ZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBp
biBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBj
b2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwg
YCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjExNyIpOworc2hvdWxk
QmUoImRhdGEuZGF0YVsxXSIsICIyNTEiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiNzYi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKKworZGVidWcoIiIpOworCisK
K2NvbnN0IGltYWdlRGF0YURpc3BsYXlQM1RvUHV0ID0gbmV3IEltYWdlRGF0YSgxLCAxLCB7IGNv
bG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK2ltYWdlRGF0YURpc3BsYXlQM1RvUHV0LmRhdGFb
MF0gPSAwOworaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQuZGF0YVsxXSA9IDI1NTsKK2ltYWdlRGF0
YURpc3BsYXlQM1RvUHV0LmRhdGFbMl0gPSAwOworaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQuZGF0
YVszXSA9IDI1NTsKKworY29uc3QgaW1hZ2VEYXRhU1JHQlRvUHV0ID0gbmV3IEltYWdlRGF0YSgx
LCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK2ltYWdlRGF0YVNSR0JUb1B1dC5kYXRhWzBd
ID0gMDsKK2ltYWdlRGF0YVNSR0JUb1B1dC5kYXRhWzFdID0gMjU1OworaW1hZ2VEYXRhU1JHQlRv
UHV0LmRhdGFbMl0gPSAwOworaW1hZ2VEYXRhU1JHQlRvUHV0LmRhdGFbM10gPSAyNTU7CisKKwor
ZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIGRpc3Bs
YXktcDMgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dERp
c3BsYXlQMy5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQsIDAsIDApOworCitk
YXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNw
YWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJzcmdiImApCitz
aG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAi
MjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbM10iLCAiMjU1Iik7CisKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdlRGF0YSgw
LCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRh
LmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAi
MCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWco
IiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIHNyZ2IgSW1hZ2VE
YXRhIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dERpc3BsYXlQMy5wdXRJ
bWFnZURhdGEoaW1hZ2VEYXRhU1JHQlRvUHV0LCAwLCAwKTsKKworZGF0YSA9IGNvbnRleHREaXNw
bGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOwor
c2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorLy8gTk9URTogVGhpcyAzIGlz
IG9kZCwgYnV0IGR1ZSB0byBsYWNrIG9mIHByZWNpc2lvbiBpbiA4LWJpdCByb3VuZC10cmlwcGlu
Zy4KK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMyIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsx
XSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRh
dGEuZGF0YVszXSIsICIyNTUiKTsKKworZGF0YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VE
YXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUo
ImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVsw
XSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgi
ZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOwor
CitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIHNyZ2IgY2FudmFzIHdpdGggZGlzcGxheS1w
MyBJbWFnZURhdGEgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIpOworCitjb250ZXh0U1JHQi5w
dXRJbWFnZURhdGEoaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQsIDAsIDApOworCitkYXRhID0gY29u
dGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0p
Oworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxkQmUoImRhdGEu
ZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIpOworc2hvdWxk
QmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIp
OworCitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JT
cGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlz
cGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJk
YXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7Citz
aG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCisKK2RlYnVnKCIiKTsKK2RlYnVnKCJU
ZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBzcmdiIEltYWdlRGF0YSBkcmF3biBpbnRvIGl0Iik7
CitkZWJ1ZygiIik7CisKK2NvbnRleHRTUkdCLnB1dEltYWdlRGF0YShpbWFnZURhdGFTUkdCVG9Q
dXQsIDAsIDApOworCitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEs
IHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAi
c3JnYiJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRC
ZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VE
YXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUo
ImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVsw
XSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgi
ZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOwor
CitkZWJ1ZygiIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyNzc1MjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaW1h
Z2VEYXRhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQsMjAgKzE0LDIwIEBAIFBB
U1MgbmV3IEltYWdlRGF0YSgtMjAsIDIwKSB0aHJldyBleGNlcHQKIFBBU1MgbmV3IEltYWdlRGF0
YSgyMCwgLTIwKSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjogQ2Fubm90IGFsbG9jYXRlIGEg
YnVmZmVyIG9mIHRoaXMgc2l6ZS4KIFBBU1MgbmV3IEltYWdlRGF0YShudWxsLCAyMCkgdGhyZXcg
ZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5kZXggaXMgbm90IGluIHRoZSBhbGxvd2Vk
IHJhbmdlLi4KIFBBU1MgbmV3IEltYWdlRGF0YSgzMjc2OCwgMzI3NjgpIHRocmV3IGV4Y2VwdGlv
biBSYW5nZUVycm9yOiBDYW5ub3QgYWxsb2NhdGUgYSBidWZmZXIgb2YgdGhpcyBzaXplLgotUEFT
UyBuZXcgSW1hZ2VEYXRhKG51bGwsIDIwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
QXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUg
YW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFnZURhdGEoaW1h
Z2VEYXRhLCAyMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdk
YXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9m
IFVpbnQ4Q2xhbXBlZEFycmF5LgorUEFTUyBuZXcgSW1hZ2VEYXRhKG51bGwsIDIwLCAyMCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IEltYWdlRGF0YShp
bWFnZURhdGEsIDIwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
IFBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEsIDApIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNp
emVFcnJvcjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS4uCi1QQVNTIG5l
dyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
QXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUg
YW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFnZURhdGEoaW1h
Z2VEYXRhLCAwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2Rh
dGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2Yg
VWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAxMCwgNSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1h
Z2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJy
YXkuCitQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwgMCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEsIDAs
IDIwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgSW1h
Z2VEYXRhKGltYWdlRGF0YSwgMTAsIDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIDEwLCA1KSB0aHJldyBl
eGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IHNoIHZhbHVlIGlzIG5vdCBlcXVhbCB0byBoZWlnaHQu
CiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIC0xMCwgNSkgdGhyZXcgZXhjZXB0
aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEgbXVsdGlwbGUgb2Ygc3cuCiBQQVNT
IG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIDEwLCAtMTApIHRocmV3IGV4Y2VwdGlvbiBJ
bmRleFNpemVFcnJvcjogc2ggdmFsdWUgaXMgbm90IGVxdWFsIHRvIGhlaWdodC4KIFBBU1MgbmV3
IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoWzEsMiwzLDQsNSw2LDcsOF0pLDUzNjg3
MDkxMywyKTsgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEg
bXVsdGlwbGUgb2Ygc3cuCi1QQVNTIG5ldyBJbWFnZURhdGEoe30sMiwyKTsgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0
cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5l
dyBJbWFnZURhdGEodW5kZWZpbmVkLDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFy
Z3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFu
IGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKCJub25l
IiwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgnZGF0YScpIHRv
IHRoZSBJbWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBVaW50OENs
YW1wZWRBcnJheS4KLVBBU1MgbmV3IEltYWdlRGF0YSgwLDIsMik7IHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3Rv
ciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgorUEFTUyBuZXcgSW1h
Z2VEYXRhKHt9LDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQ
QVNTIG5ldyBJbWFnZURhdGEodW5kZWZpbmVkLDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoIm5vbmUiLDIsMik7IHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoMCwyLDIp
OyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBuZXcgSW1hZ2VE
YXRhKGltYWdlRGF0YS5kYXRhLCAzMjc2OCwgMzI3NjgpIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNp
emVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3LgogUEFTUyBuZXcgSW1hZ2VE
YXRhKGltYWdlRGF0YS5kYXRhLCBJbmZpbml0eSwgSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBJ
bmRleFNpemVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3LgogUEFTUyBuZXcg
SW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCBOYU4sIE5hTikgdGhyZXcgZXhjZXB0aW9uIEluZGV4
U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEgbXVsdGlwbGUgb2Ygc3cuCkluZGV4OiBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzUyOSkKKysrIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAy
MS0wNS0xNCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGNyZWF0aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0YSB2
aWEgY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjU4NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2Fu
dmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRl
IHJlc3VsdCB0byBwYXNzaW5nLgorCiAyMDIxLTA1LTE0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBvdXRwdXQgZWxlbWVudCBkb2Vzbid0IHJlYWN0IHByb3Blcmx5
IHRvIG5vZGUgdHJlZSBtdXRhdGlvbnMKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8y
ZC5jb2xvci5zcGFjZS5wMy50by5wMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjc3NTI1KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNw
YWNlLnAzLnRvLnAzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw1ICsyLDUgQEAK
IHRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBhbmQgdWludDggZnJvbSBkaXNwbGF5
IHAzIHVpbnQ4IGNhbnZhcwogQWN0dWFsIG91dHB1dDoKIAotRkFJTCB0ZXN0IGdldEltYWdlRGF0
YSB3aXRoIGRpc3BsYXktcDMgYW5kIHVpbnQ4IGZyb20gZGlzcGxheSBwMyB1aW50OCBjYW52YXMg
YXNzZXJ0X2FwcHJveF9lcXVhbHM6IGV4cGVjdGVkIDYyICsvLSAyIGJ1dCBnb3QgNTAKK1BBU1Mg
dGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIGFuZCB1aW50OCBmcm9tIGRpc3BsYXkg
cDMgdWludDggY2FudmFzCiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4
cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RF
eHBlY3RhdGlvbnMJKHJldmlzaW9uIDI3NzUyNSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2ds
aWIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjM1OCw2ICsyMzU4LDcgQEAg
ZmFzdC9yZXBsYWNlZC9wZGYtYXMtZW1iZWQtd2l0aC1uby1taW1lLQogd2Via2l0Lm9yZy9iLzIy
NDExMiBtZWRpYS92aWRlby1hcy1pbWctb3V0cHV0LXB0cy5odG1sIFsgVGltZW91dCBQYXNzIF0K
IAogd2Via2l0Lm9yZy9iLzIyNTQyMyBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlz
cGxheS1wMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjI1NDIzIGZh
c3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI1NDIzIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3Np
dGUtdGV4dC1hbHBoYS5odG1sIFsgRmFpbHVyZSBdCiAKICMgRmFpbGluZyBhZnRlciByMjc3MDcz
LgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3Jl
LWF1dG9pbmNyZW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LXR5
cGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3NTI1KQorKysgTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQtdHlwZXMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBAIFBBU1Mga2V5IGlzIDMKIFBB
U1MgcmVxdWVzdC5yZXN1bHQucHJpbWFyeUtleSBpcyBpbWFnZURhdGEucHJpbWFyeUtleQogUEFT
UyByZXF1ZXN0LnJlc3VsdC53aWR0aCBpcyBpbWFnZURhdGEud2lkdGgKIFBBU1MgcmVxdWVzdC5y
ZXN1bHQuaGVpZ2h0IGlzIGltYWdlRGF0YS5oZWlnaHQKK1BBU1MgcmVxdWVzdC5yZXN1bHQuY29s
b3JTcGFjZSBpcyBpbWFnZURhdGEuY29sb3JTcGFjZQogUEFTUyBrZXkgaXMgNAogUEFTUyByZXF1
ZXN0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIGZpbGVMaXN0LnByaW1hcnlLZXkKIFBBU1MgcmVxdWVz
dC5yZXN1bHQubGVuZ3RoIGlzIGZpbGVMaXN0Lmxlbmd0aApAQCAtNDAsNiArNDEsNyBAQCBQQVNT
IHJlcXVlc3QucmVzdWx0WzFdLnR5cGUgaXMgZmlsZS50eXBlCiBQQVNTIHJlcXVlc3QucmVzdWx0
WzJdLnByaW1hcnlLZXkgaXMgaW1hZ2VEYXRhLnByaW1hcnlLZXkKIFBBU1MgcmVxdWVzdC5yZXN1
bHRbMl0ud2lkdGggaXMgaW1hZ2VEYXRhLndpZHRoCiBQQVNTIHJlcXVlc3QucmVzdWx0WzJdLmhl
aWdodCBpcyBpbWFnZURhdGEuaGVpZ2h0CitQQVNTIHJlcXVlc3QucmVzdWx0WzJdLmNvbG9yU3Bh
Y2UgaXMgaW1hZ2VEYXRhLmNvbG9yU3BhY2UKIFBBU1MgcmVxdWVzdC5yZXN1bHRbM10ucHJpbWFy
eUtleSBpcyBmaWxlTGlzdC5wcmltYXJ5S2V5CiBQQVNTIHJlcXVlc3QucmVzdWx0WzNdLmxlbmd0
aCBpcyBmaWxlTGlzdC5sZW5ndGgKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428733</attachid>
            <date>2021-05-15 11:22:38 -0700</date>
            <delta_ts>2021-05-15 11:23:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225841-20210515112237.patch</filename>
            <type>text/plain</type>
            <size>84996</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAyMS0wNS0xNCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNyZWF0
aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0YSB2aWEgY2FudmFzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2Nh
bnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBhY2Nlc3Npbmcgbm9uLXNSR0IgKG9ubHkgRGlzcGxheVAzIGZv
ciBub3cgZHVlCisgICAgICAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uLCBidXQgdGhlIHN1cHBvcnQg
aXMgZ2VuZXJhbCkgcGl4ZWwgZGF0YSBpbgorICAgICAgICBIVE1MIGNhbnZhcy4KKworICAgICAg
ICBVcGRhdGVzIEltYWdlRGF0YSBjb25zdHJ1Y3RvcnMgYW5kIENhbnZhc0ltYWdlRGF0YSBvcGVy
YXRpb25zIHRvIAorICAgICAgICB0YWtlIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIGRpY3Rp
b25hcmllcywgd2hpY2ggY29udGFpbiBhbiAKKyAgICAgICAgb3B0aW9uYWwgY29sb3Igc3BhY2Ug
KG90aGVyd2lzZSBkZWZhdWx0aW5nIGJhY2sgdG8gc1JHQikuIAorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YVNl
dHRpbmdzLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsOiBB
ZGRlZC4KKyAgICAgICAgQWRkIG5ldyBJbWFnZURhdGFTZXR0aW5ncy5pZGwgYW5kIHJlbGF0ZWQg
ZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6
CisgICAgICAgIEZpeGVzIEZJWE1FIGFuZCB1c2VzIFBpeGVsQnVmZmVyIGRpcmVjdGx5IHJhdGhl
ciB0aGFuIGFsbG9jYXRpbmcKKyAgICAgICAgYW4gdW5uZWNlc3NhcnkgSW1hZ2VEYXRhLiBUaGlz
IHdhcyBkb25lIG5vdyBzaW5jZSB0aGUgcmVsZXZlbnQKKyAgICAgICAgSW1hZ2VEYXRhIGNvbnN0
cnVjdG9yIGhhcyBnb25lIGF3YXkuCisKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlRGF0YVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEYXRhOjpjb21wdXRlQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEYXRhOjpwaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURhdGE6OmRhdGFTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGF0YTo6ZGVlcENsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0ltYWdlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpzaXplIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGF0YTo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEYXRhOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6Y29sb3JTcGFjZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OnBpeGVsQnVmZmVyIGNvbnN0KTogRGVsZXRl
ZC4KKworICAgICAgICAtIFJld29ya2VkIEltYWdlRGF0YSB0byBubyBsb25nZXIgc3RvcmUgYSBQ
aXhlbEJ1ZmZlciwgd2hpY2ggaGFzCisgICAgICAgICAgZXh0cmFuZW91cyBpbmZvcm1hdGlvbiBp
biBpdCwgYnV0IHJhdGhlciB0byBzdG9yZSBqdXN0IHdoYXQgaXQKKyAgICAgICAgICBuZWVkcyBJ
bnRTaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4sIGFuZCBub3cgUHJlZGVmaW5lZENv
bG9yU3BhY2UuCisgICAgICAgIC0gVXBkYXRlcyBjcmVhdGUgZnVuY3Rpb25zIGZvciBuZXcgb3B0
aW9uYWwgSW1hZ2VEYXRhU2V0dGluZ3MuCisgICAgICAgIC0gQWRkcyBjcmVhdGVVbmluaXRpYWxp
emVkIHdoaWNoIGZvbGxvd3Mgc3BlYyBsYW5ndWFnZSBmb3IgSW1hZ2VEYXRhIGNyZWF0aW9uCisg
ICAgICAgICAgYW5kIGlzIHVzZWQgYnkgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHRvIGNyZWF0
ZSBJbWFnZURhdGEgb2JqZWN0cyBvZiB3aXRoCisgICAgICAgICAgdGhlIHJpZ2h0IGNvbG9yIHNw
YWNlcywgYWxsb3dpbmcgZm9yIGZhbGxiYWNrIHRvIHRoZSBjYW52YXMnIG93biBjb2xvciBzcGFj
ZQorICAgICAgICAgIHdoZW4gbm8gSW1hZ2VEYXRhU2V0dGluZ3MgY29sb3Igc3BhY2UgaXMgcHJv
dmlkZWQuIEl0IGlzIHVuaW5pdGlhbGl6ZWQgYW5kCisgICAgICAgICAgdGhlcmVmb3JlIHJlcXVp
cmVzIHRoZSBjbGllbnQgdG8gaW5pdGlhbGl6ZSB0aGUgZGF0YSB0byBhbGxvdyBmb3Igc3VwcG9y
dCBmb3IKKyAgICAgICAgICBubyBhbHBoYSBzdXBwb3J0IGluIHRoZSBmdXR1cmUsIHdoaWNoIHJl
cXVpcmVzIGEgbm9uLXplcm8gaW5pdGlhbGl6YXRpb24gcGF0dGVybi4KKworICAgICAgICAqIGh0
bWwvSW1hZ2VEYXRhLmlkbDoKKyAgICAgICAgQWRkIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdz
IHBhcmFtZXRlcnMgYW5kIHRoZSBuZXcgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsOgorICAgICAgICBBZGQgb3B0aW9uYWwg
SW1hZ2VEYXRhU2V0dGluZ3MgcGFyYW1ldGVycy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxp
emVFbXB0eUltYWdlRGF0YSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gaW5pdGlhbGl6ZSB0aGUg
SW1hZ2VEYXRhIGJ1ZmZlci4gUmlnaHQgbm93IGl0IGFsd2F5cyBjYWxscworICAgICAgICB6ZXJv
RmlsbCgpLCBidXQgaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIG5lZWQgdG8gZG8gbW9yZS4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVh
dGVJbWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgdG8gYWNjb3VudCBmb3IgdGhpcyBm
dW5jdGlvbiBiZWluZyBhYmxlIHRvIHRocm93IGFuIGV4Y2VwdGlvbiAod2hlbiAKKyAgICAgICAg
b3V0IG9mIG1lbW9yeSkgYW5kIHVzZSB0aGUgbmV3IGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlh
bGl6ZUVtcHR5SW1hZ2VEYXRhCisgICAgICAgIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciBz
cGFjZWQgSW1hZ2VEYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgZm9yIG5l
dyBvcHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBhbmQgdXNlIHRoZSBuZXcgY3JlYXRlVW5pbml0
aWFsaXplZAorICAgICAgICBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEgdG8gY3JlYXRlIGEgY29y
cmVjdGx5IGNvbG9yIHNwYWNlZCBJbWFnZURhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIE1v
dmVzIHBhcmFtZXRlciBjaGVja3MgdG8gdGhlIGJlZ2luaW5nIHRvIG1hdGNoIHRoZSBzcGVjLCBh
bmQgdXNlcyBuZXcgCisgICAgICAgIGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlhbGl6ZUVtcHR5
SW1hZ2VEYXRhIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciAKKyAgICAgICAgc3BhY2VkIElt
YWdlRGF0YS4gQWxzbywgdXNlIHRoZSBJbWFnZURhdGEncyBjb2xvciBzcGFjZSB3aGVuIGdldHRp
bmcKKyAgICAgICAgdGhlIHBpeGVsIGJ1ZmZlciB0byBhY3R1YWxseSByZXR1cm4gdGhlIHJpZ2h0
IGRhdGEhCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmluZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oOgorICAgICAgICBBZGQgY29udmVyc2lv
biBmdW5jdGlvbiBmcm9tIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0byBQcmVkZWZpbmVkQ29sb3JT
cGFjZS4KKyAgICAgICAgU2luY2UgRGVzdGluYXRpb25Db2xvclNwYWNlIGlzIGEgc3VwZXJzZXQg
b2YgUHJlZGVmaW5lZENvbG9yU3BhY2UsIHRoaXMgY2FuCisgICAgICAgIGZhaWwsIHNvIHRoaXMg
Y29udmVyc2lvbiByZXR1cm5zIGFuIE9wdGlvbmFsLgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyLmg6CisgICAgICAgIFN0dWIgb3V0IGluc3BlY3RvciBzdXBwb3J0IGZvciBJbWFnZURhdGFT
ZXR0aW5ncy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgVXNlIHRoZSBJbWFnZUJ1ZmZlcidzIGFjdHVhbCBjb2xvciBz
cGFjZSBhcyB0aGUgc291cmNlIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFuIGhhcmQg
Y29kaW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCisgICAg
ICAgIHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVtcG9yYXJ5
IHZhcmlhYmxlcy4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQ
aXhlbEJ1ZmZlcik6CisgICAgICAgIFVzZSB0aGUgSW1hZ2VCdWZmZXIncyBhY3R1YWwgY29sb3Ig
c3BhY2UgYXMgdGhlIGRlc3RpbmF0aW9uIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFu
IGhhcmQgY29kaW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9u
CisgICAgICAgIHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVt
cG9yYXJ5IHZhcmlhYmxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OlBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZm
ZXI6OnRha2VEYXRhKToKKyAgICAgICAgQWRkIGEgZmV3IGhlbHBlcnMgdG8gYWxsb3cgY3JlYXRp
b25nIHRvL2Zyb20gUGl4ZWxCdWZmZXIKKyAgICAgICAgYSBiaXQgZWFzaWVyLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgRml4IGlu
Y29ycmVjdCBhc3NlcnRpb24uIFdlIHdhbnQgdG8gYXNzZXJ0IHRoYXQgdGhlcmUgaXMgbm8gZXJy
b3IsIG5vdCB0aGF0CisgICAgICAgIHRoZXJlIGlzIG9uZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQpOgorICAgICAgICBTdG9wIGhhcmQgY29kaW5nIFNSR0IgZm9yIFBpeGVsQnVmZmVyIGNv
bG9yIHNwYWNlcyBhbmQgdXNlIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICBjb2xvciBzcGFjZSBm
b3IgdGhlIHRhc2suIFdlIHN0aWxsIGRvIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gdGhyb3VnaCBJ
bWFnZUJ1ZmZlcgorICAgICAgICBzbyB3ZSBzaG91bGQgY29tZSBiYWNrIGFuZCBzaW1wbGlmeSBj
b2RlIGhlcmUgdG8gbm90IGFsd2F5cyByZXF1aXJlIHRoYXQuCisKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnZpZGVvU2FtcGxl
QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFn
ZSk6CisgICAgICAgIFVwZGF0ZSB0byBzcGVjaWZ5IGEgY29sb3Igc3BhY2UgdG8gbWFpbnRhaW4g
ZXhpc3RpbmcgYmVoYXZpb3IuCisKIDIwMjEtMDUtMTUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgogCiAgICAgICAgIE1vdmUgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3Mg
ZG93biB0byBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlIHNvIGl0IGNhbiBiZSB1c2VkIHRo
ZXJlIChhbmQgdG8gc3VwcG9ydCBPZmZzY3JlZW5DYW52YXMpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjc3NTQzKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMTcsNiArMTAxNyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgaHRtbC9JbWFnZUJpdG1hcC5pZGwKICAgICBodG1sL0ltYWdlQml0bWFw
T3B0aW9ucy5pZGwKICAgICBodG1sL0ltYWdlRGF0YS5pZGwKKyAgICBodG1sL0ltYWdlRGF0YVNl
dHRpbmdzLmlkbAogICAgIGh0bWwvTWVkaWFDb250cm9sbGVyLmlkbAogICAgIGh0bWwvTWVkaWFF
bmNyeXB0ZWRFdmVudC5pZGwKICAgICBodG1sL01lZGlhRXJyb3IuaWRsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI3
NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMzYsNiArMTAzNiw3IEBAICQoUFJPSkVDVF9ESVIpL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvSW1hZ2VCaXRtYXAuaWRs
CiAkKFBST0pFQ1RfRElSKS9odG1sL0ltYWdlQml0bWFwT3B0aW9ucy5pZGwKICQoUFJPSkVDVF9E
SVIpL2h0bWwvSW1hZ2VEYXRhLmlkbAorJChQUk9KRUNUX0RJUikvaHRtbC9JbWFnZURhdGFTZXR0
aW5ncy5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbAogJChQUk9K
RUNUX0RJUikvaHRtbC9NZWRpYUVuY3J5cHRlZEV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvaHRt
bC9NZWRpYUVycm9yLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTgw
LDYgKzExODAsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTSW1hZ2VEYXRhLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZURhdGEuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZURhdGFTZXR0aW5ncy5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VEYXRhU2V0dGluZ3Mu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZVNt
b290aGluZ1F1YWxpdHkuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0ltYWdlU21vb3RoaW5nUXVhbGl0eS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0lubmVySFRNTC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjc3NTQzKQorKysgU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtODkwLDYgKzg5MCw3IEBAIEpTX0JJ
TkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9odG1sL0ltYWdlQml0bWFwLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9odG1sL0ltYWdlQml0bWFwT3B0aW9ucy5pZGwgXAogICAgICQoV2ViQ29y
ZSkvaHRtbC9JbWFnZURhdGEuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSW1hZ2VEYXRhU2V0
dGluZ3MuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9odG1sL01lZGlhRW5jcnlwdGVkRXZlbnQuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvTWVkaWFFcnJvci5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI3
NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0z
MjA3LDYgKzMyMDcsNyBAQCBKU0ltYWdlQml0bWFwT3B0aW9ucy5jcHAKIEpTSW1hZ2VCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0LmNwcAogSlNJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5n
cy5jcHAKIEpTSW1hZ2VEYXRhLmNwcAorSlNJbWFnZURhdGFTZXR0aW5ncy5jcHAKIEpTSW1hZ2VT
bW9vdGhpbmdRdWFsaXR5LmNwcAogSlNJbnB1dEV2ZW50LmNwcAogSlNJbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQwOTQsNiArNDA5NCw3IEBACiAJCUJDOTZEQjQzMEYzQTg4MEUwMDU3M0NCMyAvKiBSZW5k
ZXJCb3hNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM5NkRCNDIwRjNBODgwRTAwNTczQ0IzIC8qIFJlbmRlckJveE1vZGVsT2JqZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM5
N0UyM0ExMDkxNDQ5NTAwMTBEMzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTIzODEwOTE0NDk1MDAxMEQz
NjEgLyogSFRNTEFsbENvbGxlY3Rpb24uaCAqLzsgfTsKIAkJQkM5N0U0MTMxMDkxNTRGQTAwMTBE
MzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTdFNDExMTA5MTU0RkEwMDEwRDM2MSAvKiBKU0hUTUxBbGxD
b2xsZWN0aW9uLmggKi87IH07CisJCUJDQTA4OEY1MjY0RTFDMDgwMDNFMkE2QyAvKiBJbWFnZURh
dGFTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNBMDg4RjIyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNBMTY5QTMwQkZE
NTVCNDAwMTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTE2OUExMEJGRDU1QjQwMDE5Q0E3
NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmggKi87IH07CiAJCUJDQTI1NzE1MTI5M0Mw
MTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTI1NzE0MTI5M0MwMTAwMDdBMjYzRCAvKiBW
ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCAqLzsgfTsKIAkJQkNBMkIwNjExMDUwNDc2MDAwNDNCRDFD
IC8qIFVzZXJTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQTJCMDYwMTA1MDQ3NUYwMDQzQkQxQyAvKiBVc2VyU2NyaXB0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MzEzLDYgKzE0MzE0
LDggQEAKIAkJQkM5QTYxNDIxNDY4NTlEOTAwNjA1N0ZEIC8qIEV2ZW50TmFtZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RXZlbnROYW1lcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5QTYxNDUxNDY4
NTlEOTAwNjA1N0ZEIC8qIG1ha2VfZXZlbnRfZmFjdG9yeS5wbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSBt
YWtlX2V2ZW50X2ZhY3RvcnkucGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOUE2
MTQ2MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX25hbWVzLnBsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9IG1h
a2VfbmFtZXMucGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQTA4OEYyMjY0RTFC
RjkwMDNFMkE2QyAvKiBJbWFnZURhdGFTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURh
dGFTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0EwODhGNDI2NEUx
QkY5MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEltYWdlRGF0YVNldHRp
bmdzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMTY5QTAwQkZENTVCNDAw
MTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0ExNjlBMTBCRkQ1NUI0MDAxOUNBNzYgLyogSlNI
VE1MVGFibGVDYXB0aW9uRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQ0EyNTcxNDEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnRpY2FsUG9zaXRpb25DYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM5MjMsNiArMjM5MjYsOCBAQAogCQkJ
CUE3Nzk3OTEzMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuY3BwICovLAogCQkJCUE3Nzk3
OTE0MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCAqLywKIAkJCQlBNzc5NzkxNTBENkI5
RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmlkbCAqLywKKwkJCQlCQ0EwODhGMjI2NEUxQkY5MDAz
RTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaCAqLywKKwkJCQlCQ0EwODhGNDI2NEUxQkY5MDAz
RTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaWRsICovLAogCQkJCTk3MjA1QUIxMTIzOTI5MTAw
MEIxNzM4MCAvKiBJbWFnZURvY3VtZW50LmNwcCAqLywKIAkJCQk5NzIwNUFCMjEyMzkyOTEwMDBC
MTczODAgLyogSW1hZ2VEb2N1bWVudC5oICovLAogCQkJCUY1NUIzRDhEMTI1MUYxMkQwMDNFRjI2
OSAvKiBJbWFnZUlucHV0VHlwZS5jcHAgKi8sCkBAIC0zMjg4NCw2ICszMjg4OSw3IEBACiAJCQkJ
QjJBMTBEOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyUGlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0QzRTIxREQyMTgzNDQ0QTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0aWVz
Q0cuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFn
ZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDQTA4OEY1MjY0RTFDMDgwMDNFMkE2QyAvKiBJ
bWFnZURhdGFTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxOUZFQTgxRjU3Mzk3MjAw
MEM0MkZCIC8qIEltYWdlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxOUZFQUUxRjU3
NEI2RDAwMEM0MkZCIC8qIEltYWdlRGVjb2RlckFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
NDEsMzAgKzMxNDEsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7Ci0gICAgICAgIGlmICghYXJyYXkpIHsKLSAgICAgICAgICAgIGZhaWwoKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgIH0KLQogICAgICAgICBJbnRTaXplIGxvZ2lj
YWxTaXplID0gSW50U2l6ZShsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpOwogICAgICAgICBJ
bnRTaXplIGltYWdlRGF0YVNpemUgPSBsb2dpY2FsU2l6ZTsKICAgICAgICAgaW1hZ2VEYXRhU2l6
ZS5zY2FsZShyZXNvbHV0aW9uU2NhbGUpOwogCi0gICAgICAgIC8vIEZJWE1FOiBDcmVhdGluZyB0
aGlzIEltYWdlRGF0YSBpcyBub3QgbmVjZXNzYXJ5LiBXZSBzaG91bGQgc2tpcCByaWdodCB0byBj
cmVhdGluZyBhIFBpeGVsQnVmZmVyIGRpcmVjdGx5LgotICAgICAgICBhdXRvIGltYWdlRGF0YSA9
IEltYWdlRGF0YTo6Y3JlYXRlKGltYWdlRGF0YVNpemUsIGFycmF5LnJlbGVhc2VOb25OdWxsKCkp
OwotICAgICAgICBpZiAoIWltYWdlRGF0YSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdl
Qml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVj
U3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSk7CisgICAgICAgIGlmICghYnVmZmVyKSB7
CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2Jh
bE9iamVjdCksIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCByZXNv
bHV0aW9uU2NhbGUpOwotICAgICAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICBQaXhlbEJ1ZmZl
ckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGltYWdl
RGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBpZiAoIXBp
eGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgYnVmZmVyLT5wdXRQaXhlbEJ1ZmZlcihpbWFn
ZURhdGEtPnBpeGVsQnVmZmVyKCksIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7
CisgICAgICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCB7
IEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOwogCiAgICAgICAgIGF1dG8gYml0bWFw
ID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZShJbWFnZUJpdG1hcEJhY2tpbmcoV1RGTW92ZShidWZmZXIp
LCBPcHRpb25TZXQ8U2VyaWFsaXphdGlvblN0YXRlPjo6ZnJvbVJhdyhzZXJpYWxpemF0aW9uU3Rh
dGUpKSk7CiAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKGJpdG1hcCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGEuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1DaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gSW1h
Z2VEYXRhOjpkYXRhU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQorc3RhdGljIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBjb21wdXRlRGF0YVNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZERhdGFT
aXplID0gNDsKICAgICBjaGVja2VkRGF0YVNpemUgKj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNp
emUud2lkdGgoKSk7CkBAIC00Myw5ICs0MywxOCBAQCBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRP
dmVyZmxvdz4gSW1hZ2VECiAgICAgcmV0dXJuIGNoZWNrZWREYXRhU2l6ZTsKIH0KIAorUHJlZGVm
aW5lZENvbG9yU3BhY2UgSW1hZ2VEYXRhOjpjb21wdXRlQ29sb3JTcGFjZShPcHRpb25hbDxJbWFn
ZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MsIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xv
clNwYWNlKQoreworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+Y29sb3JTcGFjZSkKKyAg
ICAgICAgcmV0dXJuICpzZXR0aW5ncy0+Y29sb3JTcGFjZTsKKyAgICByZXR1cm4gZGVmYXVsdENv
bG9yU3BhY2U7Cit9CisKIFJlZjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKFBpeGVsQnVm
ZmVyJiYgcGl4ZWxCdWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRh
KFdURk1vdmUocGl4ZWxCdWZmZXIpKSk7CisgICAgYXV0byBjb2xvclNwYWNlID0gdG9QcmVkZWZp
bmVkQ29sb3JTcGFjZShwaXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNwYWNlKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChjb2xvclNwYWNlKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURh
dGEocGl4ZWxCdWZmZXIuc2l6ZSgpLCBwaXhlbEJ1ZmZlci50YWtlRGF0YSgpLCAqY29sb3JTcGFj
ZSkpOwogfQogCiBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShPcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlcikKQEAgLTU3LDQzICs2Niw2MyBAQCBSZWZQdHI8SW1h
Z2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShPcHRpCiAKIFJlZlB0cjxJbWFnZURhdGE+IEltYWdl
RGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgYXV0byBkYXRhU2l6ZSA9
IEltYWdlRGF0YTo6ZGF0YVNpemUoc2l6ZSk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVE
YXRhU2l6ZShzaXplKTsKICAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXplLnVuc2FmZUdldCgpKTsKICAgICBpZiAo
IWJ5dGVBcnJheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
IH0sIHNpemUsIGJ5dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0pKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZURhdGEoc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCksIFBy
ZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCKSk7CiB9CiAKLVJlZlB0cjxJbWFnZURhdGE+IEltYWdl
RGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxVaW50OENsYW1wZWRBcnJheT4m
JiBieXRlQXJyYXkpCitSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJ
bnRTaXplJiBzaXplLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5LCBQcmVkZWZp
bmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIGF1dG8gZGF0YVNpemUgPSBJbWFnZURh
dGE6OmRhdGFTaXplKHNpemUpOwotICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwg
ZGF0YVNpemUudW5zYWZlR2V0KCkgPiBieXRlQXJyYXktPmxlbmd0aCgpKQorICAgIGF1dG8gZGF0
YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJm
bG93ZWQoKSB8fCBkYXRhU2l6ZS51bnNhZmVHZXQoKSAhPSBieXRlQXJyYXktPmxlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
RGF0YSh7IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCBzaXplLCBXVEZNb3Zl
KGJ5dGVBcnJheSkgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXpl
LCBXVEZNb3ZlKGJ5dGVBcnJheSksIGNvbG9yU3BhY2UpKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVm
PEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCkK
K0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgcm93cywgdW5zaWduZWQgcGl4ZWxzUGVyUm93LCBQcmVkZWZpbmVkQ29sb3JT
cGFjZSBkZWZhdWx0Q29sb3JTcGFjZSwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRp
bmdzKQoreworICAgIEludFNpemUgc2l6ZShyb3dzLCBwaXhlbHNQZXJSb3cpOworICAgIGF1dG8g
ZGF0YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CisgICAgaWYgKGRhdGFTaXplLmhhc092
ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJDYW5u
b3QgYWxsb2NhdGUgYSBidWZmZXIgb2YgdGhpcyBzaXplIl9zIH07CisKKyAgICBhdXRvIGJ5dGVB
cnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXpl
LnVuc2FmZUdldCgpKTsKKyAgICBpZiAoIWJ5dGVBcnJheSkgeworICAgICAgICAvLyBGSVhNRTog
RG9lcyB0aGlzIG5lZWQgdG8gYmUgYSAicmVhbCIgb3V0IG9mIG1lbW9yeSBlcnJvciB3aXRoIHNl
dE91dE9mTWVtb3J5RXJyb3IgY2FsbGVkIG9uIGl0PworICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgUmFuZ2VFcnJvciwgIk91dCBvZiBtZW1vcnkiX3MgfTsKKyAgICB9CisKKyAgICBhdXRvIGNv
bG9yU3BhY2UgPSBjb21wdXRlQ29sb3JTcGFjZShzZXR0aW5ncywgZGVmYXVsdENvbG9yU3BhY2Up
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplLCBieXRlQXJyYXkucmVs
ZWFzZU5vbk51bGwoKSwgY29sb3JTcGFjZSkpOworfQorCitFeGNlcHRpb25PcjxSZWY8SW1hZ2VE
YXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoLCBPcHRpb25h
bDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCiB7CiAgICAgaWYgKCFzdyB8fCAhc2gpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworCiAgICAgSW50U2l6
ZSBzaXplKHN3LCBzaCk7Ci0gICAgYXV0byBkYXRhU2l6ZSA9IEltYWdlRGF0YTo6ZGF0YVNpemUo
c2l6ZSk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXplKTsKICAgICBp
ZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
UmFuZ2VFcnJvciwgIkNhbm5vdCBhbGxvY2F0ZSBhIGJ1ZmZlciBvZiB0aGlzIHNpemUiX3MgfTsK
KwogICAgIGF1dG8gYnl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQoZGF0YVNpemUudW5zYWZlR2V0KCkpOwogICAgIGlmICghYnl0ZUFycmF5KSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgbmVlZCB0byBiZSBhICJyZWFsIiBvdXQgb2YgbWVt
b3J5IGVycm9yIHdpdGggc2V0T3V0T2ZNZW1vcnlFcnJvciBjYWxsZWQgb24gaXQ/CiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiT3V0IG9mIG1lbW9yeSJfcyB9OwogICAg
IH0KICAgICBieXRlQXJyYXktPnplcm9GaWxsKCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW1hZ2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHNpemUsIGJ5
dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0pKTsKKworICAgIGF1dG8gY29sb3JTcGFjZSA9IGNv
bXB1dGVDb2xvclNwYWNlKHNldHRpbmdzKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFn
ZURhdGEoc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCksIGNvbG9yU3BhY2UpKTsKIH0K
IAotRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKFJlZjxVaW50
OENsYW1wZWRBcnJheT4mJiBieXRlQXJyYXksIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNpZ25l
ZD4gc2gpCitFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGUoUmVm
PFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwgdW5zaWduZWQgc3csIE9wdGlvbmFsPHVu
c2lnbmVkPiBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKQogewogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGJ5dGVBcnJheS0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgg
fHwgbGVuZ3RoICUgNCkKQEAgLTEwNywyMiArMTM2LDI4IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFn
ZURhdGE+PiBJbWFnZURhdGE6OmMKICAgICBpZiAoc2ggJiYgc2gudmFsdWUoKSAhPSBoZWlnaHQp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciwgInNoIHZhbHVlIGlz
IG5vdCBlcXVhbCB0byBoZWlnaHQiX3MgfTsKIAotICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlKElu
dFNpemUoc3csIGhlaWdodCksIFdURk1vdmUoYnl0ZUFycmF5KSk7Ci0gICAgaWYgKCFyZXN1bHQp
CisgICAgSW50U2l6ZSBzaXplKHN3LCBoZWlnaHQpOworICAgIGF1dG8gZGF0YVNpemUgPSBjb21w
dXRlRGF0YVNpemUoc2l6ZSk7CisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBk
YXRhU2l6ZS51bnNhZmVHZXQoKSAhPSBieXRlQXJyYXktPmxlbmd0aCgpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgUmFuZ2VFcnJvciB9OwotICAgIHJldHVybiByZXN1bHQucmVsZWFzZU5v
bk51bGwoKTsKKworICAgIGF1dG8gY29sb3JTcGFjZSA9IGNvbXB1dGVDb2xvclNwYWNlKHNldHRp
bmdzKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoc2l6ZSwgV1RGTW92ZShi
eXRlQXJyYXkpLCBjb2xvclNwYWNlKSk7CiB9CiAKLUltYWdlRGF0YTo6SW1hZ2VEYXRhKFBpeGVs
QnVmZmVyJiYgcGl4ZWxCdWZmZXIpCi0gICAgOiBtX3BpeGVsQnVmZmVyKFdURk1vdmUocGl4ZWxC
dWZmZXIpKQorSW1hZ2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVmPEpT
Qzo6VWludDhDbGFtcGVkQXJyYXk+JiYgZGF0YSwgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKKyAgICA6IG1fc2l6ZShzaXplKQorICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCisg
ICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKIHsKIH0KIAogSW1hZ2VEYXRhOjp+SW1hZ2VE
YXRhKCkgPSBkZWZhdWx0OwogCi1SZWY8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmRlZXBDbG9uZSgp
IGNvbnN0CitQaXhlbEJ1ZmZlciBJbWFnZURhdGE6OnBpeGVsQnVmZmVyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEobV9waXhlbEJ1ZmZlci5kZWVwQ2xvbmUo
KSkpOworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCB0b0Rlc3RpbmF0aW9uQ29s
b3JTcGFjZShtX2NvbG9yU3BhY2UpIH07CisgICAgcmV0dXJuIHsgZm9ybWF0LCBtX3NpemUsIG1f
ZGF0YS5nZXQoKSB9OwogfQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEu
aAkocmV2aXNpb24gMjc3NTQzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJJbWFnZURhdGFTZXR0aW5ncy5oIgorI2luY2x1
ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgorI2luY2x1ZGUgIlByZWRl
ZmluZWRDb2xvclNwYWNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhDbGFtcGVk
QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTM4LDI5ICs0MywzMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxJbWFnZURhdGE+IGNyZWF0ZShQaXhlbEJ1ZmZlciYmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKE9wdGlvbmFsPFBpeGVsQnVmZmVyPiYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNv
bnN0IEludFNpemUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0
YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRl
KHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYm
LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBSZWY8VWlu
dDhDbGFtcGVkQXJyYXk+JiYsIFByZWRlZmluZWRDb2xvclNwYWNlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgcm93cywgdW5zaWduZWQgcGl4ZWxzUGVyUm93LCBQcmVkZWZpbmVkQ29sb3JT
cGFjZSBkZWZhdWx0Q29sb3JTcGFjZSwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+ID0gV1RG
OjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPElt
YWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gsIE9wdGlvbmFsPEltYWdl
RGF0YVNldHRpbmdzPik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25lZCBz
dywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4pOwor
CiAgICAgV0VCQ09SRV9FWFBPUlQgfkltYWdlRGF0YSgpOwogCi0gICAgY29uc3QgSW50U2l6ZSYg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxCdWZmZXIuc2l6ZSgpOyB9Ci0gICAgaW50IHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKTsgfQotICAg
IGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsQnVmZmVyLnNpemUoKS5oZWlnaHQo
KTsgfQorICAgIHN0YXRpYyBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb21wdXRlQ29sb3JTcGFjZShP
cHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4sIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRD
b2xvclNwYWNlID0gUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0IpOwogCi0gICAgVWludDhDbGFt
cGVkQXJyYXkmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsQnVmZmVyLmRhdGEoKTsgfQor
ICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAotICAg
IFJlZjxJbWFnZURhdGE+IGRlZXBDbG9uZSgpIGNvbnN0OworICAgIGludCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOyB9CisgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZS5oZWlnaHQoKTsgfQorICAgIFVpbnQ4Q2xhbXBlZEFycmF5JiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29s
b3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQogCi0gICAgY29uc3QgUGl4
ZWxCdWZmZXImIHBpeGVsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEJ1ZmZlcjsgfQor
ICAgIFBpeGVsQnVmZmVyIHBpeGVsQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgSW1hZ2VEYXRhKFBpeGVsQnVmZmVyJiYpOwotCi0gICAgc3RhdGljIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBkYXRhU2l6ZShjb25zdCBJbnRTaXplJik7CisgICAgZXhw
bGljaXQgSW1hZ2VEYXRhKGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJh
eT4mJiwgUHJlZGVmaW5lZENvbG9yU3BhY2UpOwogCi0gICAgUGl4ZWxCdWZmZXIgbV9waXhlbEJ1
ZmZlcjsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJh
eT4gbV9kYXRhOworICAgIFByZWRlZmluZWRDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsKIH07CiAK
LVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJl
YW0mLCBjb25zdCBJbWFnZURhdGEmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEltYWdlRGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCShyZXZpc2lvbiAyNzc1NDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMiwxMCArMzIsMTEgQEAKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKICAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBJbWFnZURhdGEgewotICAg
IGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgc3csIHVuc2lnbmVkIGxvbmcgc2gpOwotICAgIGNv
bnN0cnVjdG9yKFVpbnQ4Q2xhbXBlZEFycmF5IGRhdGEsIHVuc2lnbmVkIGxvbmcgc3csIG9wdGlv
bmFsIHVuc2lnbmVkIGxvbmcgc2gpOworICAgIGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgc3cs
IHVuc2lnbmVkIGxvbmcgc2gsIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIHNldHRpbmdzKTsK
KyAgICBjb25zdHJ1Y3RvcihVaW50OENsYW1wZWRBcnJheSBkYXRhLCB1bnNpZ25lZCBsb25nIHN3
LCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIHNoLCBvcHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBz
ZXR0aW5ncyk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFVpbnQ4Q2xhbXBlZEFycmF5IGRhdGE7CisgICAgW0VuYWJsZWRCeVNldHRp
bmc9Q2FudmFzQ29sb3JTcGFjZV0gcmVhZG9ubHkgYXR0cmlidXRlIFByZWRlZmluZWRDb2xvclNw
YWNlIGNvbG9yU3BhY2U7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGFT
ZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0
dGluZ3MuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNl
dHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKKyNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSW1hZ2VE
YXRhU2V0dGluZ3MgeworICAgIE9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiBjb2xvclNw
YWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2NhbnZhcy5odG1sI2ltYWdlZGF0YXNldHRpbmdzCitkaWN0aW9uYXJ5IEltYWdlRGF0YVNl
dHRpbmdzIHsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1DYW52YXNDb2xvclNwYWNlXSBQcmVkZWZp
bmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc0ltYWdlRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkocmV2aXNpb24gMjc3NTQzKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiw5ICsyNiw5IEBACiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9jYW52YXMuaHRtbCNjYW52YXNpbWFnZWRhdGEKIGludGVyZmFjZSBtaXhpbiBDYW52YXNJbWFn
ZURhdGEgewogICAgIC8vIHBpeGVsIG1hbmlwdWxhdGlvbgotICAgIEltYWdlRGF0YSBjcmVhdGVJ
bWFnZURhdGEoW0VuZm9yY2VSYW5nZV0gbG9uZyBzdywgW0VuZm9yY2VSYW5nZV0gbG9uZyBzaCk7
CisgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShbRW5mb3JjZVJhbmdlXSBsb25nIHN3LCBb
RW5mb3JjZVJhbmdlXSBsb25nIHNoLCBvcHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBzZXR0aW5n
cyk7CiAgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShJbWFnZURhdGEgaW1hZ2VkYXRhKTsK
LSAgICBJbWFnZURhdGEgZ2V0SW1hZ2VEYXRhKFtFbmZvcmNlUmFuZ2VdIGxvbmcgc3gsIFtFbmZv
cmNlUmFuZ2VdIGxvbmcgc3ksIFtFbmZvcmNlUmFuZ2VdIGxvbmcgc3csIFtFbmZvcmNlUmFuZ2Vd
IGxvbmcgc2gpOworICAgIEltYWdlRGF0YSBnZXRJbWFnZURhdGEoW0VuZm9yY2VSYW5nZV0gbG9u
ZyBzeCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBzeSwgW0VuZm9yY2VSYW5nZV0gbG9uZyBzdywgW0Vu
Zm9yY2VSYW5nZV0gbG9uZyBzaCwgb3B0aW9uYWwgSW1hZ2VEYXRhU2V0dGluZ3Mgc2V0dGluZ3Mp
OwogICAgIHVuZGVmaW5lZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhIGltYWdlZGF0YSwgW0VuZm9y
Y2VSYW5nZV0gbG9uZyBkeCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBkeSk7CiAgICAgdW5kZWZpbmVk
IHB1dEltYWdlRGF0YShJbWFnZURhdGEgaW1hZ2VkYXRhLCBbRW5mb3JjZVJhbmdlXSBsb25nIGR4
LCBbRW5mb3JjZVJhbmdlXSBsb25nIGR5LCBbRW5mb3JjZVJhbmdlXSBsb25nIGRpcnR5WCwgW0Vu
Zm9yY2VSYW5nZV0gbG9uZyBkaXJ0eVksIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZGlydHlXaWR0aCwg
W0VuZm9yY2VSYW5nZV0gbG9uZyBkaXJ0eUhlaWdodCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUy
LDM5ICsyMTUyLDUwIEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bmVlZHMK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVF
bXB0eUltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQorc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZUVtcHR5SW1hZ2VEYXRhKGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhKQogewotICAgIGF1dG8g
ZGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKHNpemUpOwotICAgIGlmIChkYXRhKQotICAgICAgICBk
YXRhLT5kYXRhKCkuemVyb0ZpbGwoKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGluaXRpYWxpemluZyB0aGUgSW1hZ2VEYXRhIHdoZW4gc2V0dGluZ3Mu
YWxwaGEgaXMgZmFsc2UsIHJlcXVpcmluZworICAgIC8vIGV2ZXJ5IDR0aCBieXRlIHRvIGJlIDB4
RkYuCisKKyAgICBpbWFnZURhdGEuZGF0YSgpLnplcm9GaWxsKCk7CiB9CiAKLVJlZlB0cjxJbWFn
ZURhdGE+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShJbWFn
ZURhdGEmIGltYWdlRGF0YSkgY29uc3QKK0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEoSW1hZ2VEYXRhJiBpbWFn
ZURhdGEpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0
YS5zaXplKCkpOworICAgIGF1dG8gbmV3SW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGVVbmlu
aXRpYWxpemVkKGltYWdlRGF0YS53aWR0aCgpLCBpbWFnZURhdGEuaGVpZ2h0KCksIGltYWdlRGF0
YS5jb2xvclNwYWNlKCkpOworICAgIGlmIChuZXdJbWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBuZXdJbWFnZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgaW5p
dGlhbGl6ZUVtcHR5SW1hZ2VEYXRhKG5ld0ltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKworICAg
IHJldHVybiBuZXdJbWFnZURhdGE7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+
PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEoaW50IHN3LCBp
bnQgc2gpIGNvbnN0CitFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6Y3JlYXRlSW1hZ2VEYXRhKGludCBzdywgaW50IHNoLCBPcHRpb25hbDxJ
bWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpIGNvbnN0CiB7CiAgICAgaWYgKCFzdyB8fCAhc2gp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwogCi0gICAgSW50
U2l6ZSBzaXplIHsgc3RkOjphYnMoc3cpLCBzdGQ6OmFicyhzaCkgfTsKLSAgICByZXR1cm4gY3Jl
YXRlRW1wdHlJbWFnZURhdGEoc2l6ZSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RkOjphYnMoc3cpLCBzdGQ6OmFicyhzaCksIG1fc2V0dGlu
Z3MuY29sb3JTcGFjZSwgc2V0dGluZ3MpOworICAgIGlmIChpbWFnZURhdGEuaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBpbWFnZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAg
aW5pdGlhbGl6ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKworICAg
IHJldHVybiBpbWFnZURhdGE7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURhdGEoaW50IHN4LCBpbnQgc3ks
IGludCBzdywgaW50IHNoKSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0YShpbnQgc3gsIGludCBzeSwgaW50
IHN3LCBpbnQgc2gsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncykgY29uc3QK
IHsKKyAgICBpZiAoIXN3IHx8ICFzaCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4
U2l6ZUVycm9yIH07CisKICAgICBpZiAoIWNhbnZhc0Jhc2UoKS5vcmlnaW5DbGVhbigpKSB7CiAg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKE1BS0Vf
U1RBVElDX1NUUklOR19JTVBMKCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMg
YmVjYXVzZSB0aGUgY2FudmFzIGhhcyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRhdGEu
IikpOwogICAgICAgICBjYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJv
ciwgY29uc29sZU1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlF
cnJvciB9OwogICAgIH0KIAotICAgIGlmICghc3cgfHwgIXNoKQotICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKLQogICAgIGlmIChzdyA8IDApIHsKICAgICAgICAg
c3ggKz0gc3c7CiAgICAgICAgIHN3ID0gLXN3OwpAQCAtMjE5NywxMCArMjIwOCwxOSBAQCBFeGNl
cHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuCiAgICAgSW50UmVjdCBpbWFnZURh
dGFSZWN0IHsgc3gsIHN5LCBzdywgc2ggfTsKIAogICAgIEltYWdlQnVmZmVyKiBidWZmZXIgPSBj
YW52YXNCYXNlKCkuYnVmZmVyKCk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBj
cmVhdGVFbXB0eUltYWdlRGF0YShpbWFnZURhdGFSZWN0LnNpemUoKSk7CisgICAgaWYgKCFidWZm
ZXIpIHsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoaW1hZ2VEYXRhUmVjdC53aWR0aCgpLCBpbWFnZURhdGFSZWN0LmhlaWdodCgpLCBtX3Nl
dHRpbmdzLmNvbG9yU3BhY2UsIHNldHRpbmdzKTsKKyAgICAgICAgaWYgKGltYWdlRGF0YS5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBpbWFnZURhdGEucmVsZWFzZUV4Y2VwdGlv
bigpOworCisgICAgICAgIGluaXRpYWxpemVFbXB0eUltYWdlRGF0YShpbWFnZURhdGEucmV0dXJu
VmFsdWUoKSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gaW1hZ2VEYXRhOworICAgIH0KKwor
ICAgIGF1dG8gY29tcHV0ZWRDb2xvclNwYWNlID0gSW1hZ2VEYXRhOjpjb21wdXRlQ29sb3JTcGFj
ZShzZXR0aW5ncywgbV9zZXR0aW5ncy5jb2xvclNwYWNlKTsKIAotICAgIFBpeGVsQnVmZmVyRm9y
bWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhl
bEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoY29tcHV0
ZWRDb2xvclNwYWNlKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBidWZmZXItPmdldFBpeGVs
QnVmZmVyKGZvcm1hdCwgaW1hZ2VEYXRhUmVjdCk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewog
ICAgICAgICBjYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5oCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRl
ICJJbWFnZURhdGFTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkltYWdlU21vb3RoaW5nUXVhbGl0eS5o
IgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCkBAIC0xOTEs
OSArMTkyLDkgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxDYW52YXNHcmFkaWVudD4+
IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0
IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQ
YXR0ZXJuPj4gY3JlYXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSYmLCBjb25zdCBTdHJpbmcm
IHJlcGV0aXRpb24pOwogCi0gICAgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlSW1hZ2VEYXRhKElt
YWdlRGF0YSYpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBjcmVh
dGVJbWFnZURhdGEoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdDsKLSAgICBFeGNlcHRpb25P
cjxSZWZQdHI8SW1hZ2VEYXRhPj4gZ2V0SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQgc3cs
IGludCBzaCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZUlt
YWdlRGF0YShJbWFnZURhdGEmKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRh
Pj4gY3JlYXRlSW1hZ2VEYXRhKGludCB3aWR0aCwgaW50IGhlaWdodCwgT3B0aW9uYWw8SW1hZ2VE
YXRhU2V0dGluZ3M+KSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gZ2V0
SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1hZ2VE
YXRhU2V0dGluZ3M+KSBjb25zdDsKICAgICB2b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEmLCBp
bnQgZHgsIGludCBkeSk7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiwgaW50IGR4
LCBpbnQgZHksIGludCBkaXJ0eVgsIGludCBkaXJ0eVksIGludCBkaXJ0eVdpZHRoLCBpbnQgZGly
dHlIZWlnaHQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVk
Q29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
UHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDQgKzQ1LDIzIEBAIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29s
b3IKICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOwogfQogCitPcHRpb25h
bDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAg
ICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIFByZWRl
ZmluZWRDb2xvclNwYWNlOjpTUkdCOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFD
RV9MSU5FQVJfU1JHQikKKyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QjoKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNU
SU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVybiBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6
RGlzcGxheVAzOworI2VuZGlmCisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCShyZXZpc2lvbiAyNzc1NDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzksNiArNDAsNyBAQCBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xv
clNwYWNlIHsKIH07CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3JT
cGFjZShQcmVkZWZpbmVkQ29sb3JTcGFjZSk7CitPcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFj
ZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOwogCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCShy
ZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDYgKzQyOCwxMiBAQCBPcHRpb25hbDxJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jCiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JE
YXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlRGF0YSB9fTsKIH0KIAor
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YVNldHRpbmdzJikKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKIE9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZVNtb290aGluZ1F1YWxpdHkgYXJndW1l
bnQpCiB7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpTdHJpbmcgfX07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXIuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkltYWdl
RGF0YVNldHRpbmdzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazsKIGNsYXNzIFdl
YkdMVW5pZm9ybUxvY2F0aW9uOwogY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDsKIHN0cnVj
dCBET01NYXRyaXgyREluaXQ7CitzdHJ1Y3QgSW1hZ2VEYXRhU2V0dGluZ3M7CiBlbnVtIGNsYXNz
IFJlY29yZGluZ1N3aXp6bGVUeXBlIDogaW50OwogZW51bSBjbGFzcyBDYW52YXNEaXJlY3Rpb247
CiBlbnVtIGNsYXNzIENhbnZhc0ZpbGxSdWxlOwpAQCAtMTUwLDYgKzE1MSw3IEBAIGVudW0gSW1h
Z2VTbW9vdGhpbmdRdWFsaXR5OwogICAgIG1hY3JvKEhUTUxJbWFnZUVsZW1lbnQqKSBcCiAgICAg
bWFjcm8oSW1hZ2VCaXRtYXAqKSBcCiAgICAgbWFjcm8oSW1hZ2VEYXRhKikgXAorICAgIG1hY3Jv
KEltYWdlRGF0YVNldHRpbmdzJikgXAogICAgIG1hY3JvKEltYWdlU21vb3RoaW5nUXVhbGl0eSkg
XAogICAgIG1hY3JvKE9wdGlvbmFsPGZsb2F0PiYpIFwKICAgICBtYWNybyhQYXRoMkQqKSBcCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNiw2ICsxMTYsOSBAQCBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JH
CiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVm
ZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBkZXN0aW5hdGlvbkZvcm1hdCwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgdm9pZCogZGF0YSkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogQWRk
IHN1cHBvcnQgZm9yIG5vbiA4LWJpdCBwaXhlbCBmb3JtYXRzLgorICAgIEFTU0VSVChkZXN0aW5h
dGlvbkZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZGVzdGluYXRp
b25Gb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKwogICAgIGF1dG8g
c291cmNlUmVjdFNjYWxlZCA9IHRvQmFja2VuZENvb3JkaW5hdGVzKHNvdXJjZVJlY3QpOwogCiAg
ICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZGVzdGluYXRpb25G
b3JtYXQsIHNvdXJjZVJlY3RTY2FsZWQuc2l6ZSgpKTsKQEAgLTEzNCwyMyArMTM3LDE1IEBAIE9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQKICAgICBpZiAoZGVzdGluYXRp
b25SZWN0LnNpemUoKSAhPSBzb3VyY2VSZWN0U2NhbGVkLnNpemUoKSkKICAgICAgICAgcGl4ZWxC
dWZmZXItPmRhdGEoKS56ZXJvRmlsbCgpOwogCi0gICAgdW5zaWduZWQgc291cmNlQnl0ZXNQZXJS
b3cgPSBieXRlc1BlclJvdygpOwotICAgIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZVJvd3MgPSByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNv
dXJjZUJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNDsKLQotICAgIHVuc2ln
bmVkIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgPSA0ICogc291cmNlUmVjdFNjYWxlZC53aWR0aCgp
OwotICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uUm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0
YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgKyBkZXN0
aW5hdGlvblJlY3QueCgpICogNDsKLQotICAgIFBpeGVsQnVmZmVyRm9ybWF0IHNvdXJjZUZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OwotCiAgICAgQ29uc3RQaXhlbEJ1ZmZlckNv
bnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0gc291cmNlRm9ybWF0Owot
ICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IHNvdXJjZUJ5dGVzUGVyUm93OwotICAgIHNvdXJjZS5y
b3dzID0gc291cmNlUm93czsKKyAgICBzb3VyY2UuZm9ybWF0ID0geyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfTsKKyAg
ICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOworICAgIHNvdXJjZS5yb3dzID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkg
KiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OwogICAgIAog
ICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247CiAgICAgZGVzdGluYXRp
b24uZm9ybWF0ID0gZGVzdGluYXRpb25Gb3JtYXQ7Ci0gICAgZGVzdGluYXRpb24uYnl0ZXNQZXJS
b3cgPSBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OwotICAgIGRlc3RpbmF0aW9uLnJvd3MgPSBkZXN0
aW5hdGlvblJvd3M7CisgICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSA0ICogc291cmNlUmVj
dFNjYWxlZC53aWR0aCgpOworICAgIGRlc3RpbmF0aW9uLnJvd3MgPSBwaXhlbEJ1ZmZlci0+ZGF0
YSgpLmRhdGEoKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJv
dyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxzKHNv
dXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCkBAIC0xNTksMTQg
KzE1NCwxNCBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZmZXJCYWNrZW5kCiAKIHZv
aWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYg
c291cmNlUGl4ZWxCdWZmZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0aW5hdGlvblBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RpbmF0aW9u
QWxwaGFGb3JtYXQsIHZvaWQqIGRhdGEpCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZv
ciBub24tUkdCQTggcGl4ZWwgZm9ybWF0cy4KLSAgICBBU1NFUlQoc291cmNlUGl4ZWxCdWZmZXIu
Zm9ybWF0KCkucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4KTsKKyAgICAvLyBGSVhN
RTogQWRkIHN1cHBvcnQgZm9yIG5vbiA4LWJpdCBwaXhlbCBmb3JtYXRzLgorICAgIEFTU0VSVChz
b3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKS5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdC
QTggfHwgc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCkucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKIAogICAgIGF1dG8gc291cmNlUmVjdFNjYWxlZCA9IHRvQmFja2VuZENvb3Jk
aW5hdGVzKHNvdXJjZVJlY3QpOwogICAgIGF1dG8gZGVzdGluYXRpb25Qb2ludFNjYWxlZCA9IHRv
QmFja2VuZENvb3JkaW5hdGVzKGRlc3RpbmF0aW9uUG9pbnQpOwogCi0gICAgSW50UmVjdCBzb3Vy
Y2VSZWN0Q2xpcHBlZCA9IGludGVyc2VjdGlvbih7IEludFBvaW50Ojp6ZXJvKCksIHNvdXJjZVBp
eGVsQnVmZmVyLnNpemUoKSB9LCBzb3VyY2VSZWN0U2NhbGVkKTsKLSAgICBJbnRSZWN0IGRlc3Rp
bmF0aW9uUmVjdCA9IHNvdXJjZVJlY3RDbGlwcGVkOworICAgIGF1dG8gc291cmNlUmVjdENsaXBw
ZWQgPSBpbnRlcnNlY3Rpb24oeyBJbnRQb2ludDo6emVybygpLCBzb3VyY2VQaXhlbEJ1ZmZlci5z
aXplKCkgfSwgc291cmNlUmVjdFNjYWxlZCk7CisgICAgYXV0byBkZXN0aW5hdGlvblJlY3QgPSBz
b3VyY2VSZWN0Q2xpcHBlZDsKICAgICBkZXN0aW5hdGlvblJlY3QubW92ZUJ5KGRlc3RpbmF0aW9u
UG9pbnRTY2FsZWQpOwogCiAgICAgaWYgKHNvdXJjZVJlY3RTY2FsZWQueCgpIDwgMCkKQEAgLTE3
OCwyNCArMTczLDE1IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcigK
ICAgICBkZXN0aW5hdGlvblJlY3QuaW50ZXJzZWN0KGJhY2tlbmRSZWN0KCkpOwogICAgIHNvdXJj
ZVJlY3RDbGlwcGVkLnNldFNpemUoZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKLSAgICB1bnNp
Z25lZCBzb3VyY2VCeXRlc1BlclJvdyA9IDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lk
dGgoKTsKLSAgICBjb25zdCB1aW50OF90KiBzb3VyY2VSb3dzID0gc291cmNlUGl4ZWxCdWZmZXIu
ZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZUJ5dGVzUGVyUm93
ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNDsKLQotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9u
Qnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uUm93
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRpb25SZWN0Lnko
KSAqIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNDsKLQot
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IHNvdXJjZUZvcm1hdCA9IHNvdXJjZVBpeGVsQnVmZmVyLmZv
cm1hdCgpOwotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGRlc3RpbmF0aW9uRm9ybWF0IHsgZGVzdGlu
YXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCIH07Ci0KICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAg
IHNvdXJjZS5mb3JtYXQgPSBzb3VyY2VGb3JtYXQ7Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0g
c291cmNlQnl0ZXNQZXJSb3c7Ci0gICAgc291cmNlLnJvd3MgPSBzb3VyY2VSb3dzOwotICAgIAor
ICAgIHNvdXJjZS5mb3JtYXQgPSBzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKTsKKyAgICBzb3Vy
Y2UuYnl0ZXNQZXJSb3cgPSA0ICogc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRoKCk7Cisg
ICAgc291cmNlLnJvd3MgPSBzb3VyY2VQaXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291cmNl
UmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQu
eCgpICogNDsKKwogICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247Ci0g
ICAgZGVzdGluYXRpb24uZm9ybWF0ID0gZGVzdGluYXRpb25Gb3JtYXQ7Ci0gICAgZGVzdGluYXRp
b24uYnl0ZXNQZXJSb3cgPSBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OwotICAgIGRlc3RpbmF0aW9u
LnJvd3MgPSBkZXN0aW5hdGlvblJvd3M7CisgICAgZGVzdGluYXRpb24uZm9ybWF0ID0geyBkZXN0
aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfTsKKyAgICBk
ZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7CisgICAgZGVzdGluYXRpb24u
cm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRpb25SZWN0
LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7
CiAKICAgICBjb252ZXJ0SW1hZ2VQaXhlbHMoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRp
b25SZWN0LnNpemUoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDYgKzY2LDIyIEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3IK
ICAgICByZXR1cm4geyB7IGZvcm1hdCwgc2l6ZSwgcGl4ZWxBcnJheS5yZWxlYXNlTm9uTnVsbCgp
IH0gfTsKIH0KIAorT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVm
PEpTQzo6QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIpCit7CisgICAgLy8gTk9URTogT25seSA4
LWJpdCBmb3JtYXRzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLgorICAgIEFTU0VSVChmb3JtYXQu
cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC5waXhlbEZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworCisgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1
ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKKyAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2Vk
KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKGJ1ZmZlclNpemUudW5z
YWZlR2V0KCkgIT0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBidWZmZXJTaXplLnVuc2FmZUdldCgpKTsK
KyAgICBpZiAoIXBpeGVsQXJyYXkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9IH07
Cit9CisKIFBpeGVsQnVmZmVyOjpQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYg
Zm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4m
JiBkYXRhKQogICAgIDogbV9mb3JtYXQgeyBmb3JtYXQgfQogICAgICwgbV9zaXplIHsgc2l6ZSB9
CkBAIC03NCw2ICs5MCwxNCBAQCBQaXhlbEJ1ZmZlcjo6UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9zaXpl
LmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOwogfQogCitQaXhl
bEJ1ZmZlcjo6UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYgZGF0YSkKKyAgICA6IG1f
Zm9ybWF0IHsgZm9ybWF0IH0KKyAgICAsIG1fc2l6ZSB7IHNpemUgfQorICAgICwgbV9kYXRhIHsg
ZGF0YSB9Cit7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigo
bV9zaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworfQor
CiBQaXhlbEJ1ZmZlcjo6flBpeGVsQnVmZmVyKCkgPSBkZWZhdWx0OwogCiBQaXhlbEJ1ZmZlciBQ
aXhlbEJ1ZmZlcjo6ZGVlcENsb25lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkocmV2aXNpb24gMjc3NTQzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsOCArNDIsMTAgQEAgY2xhc3MgUGl4ZWxCdWZmZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFBpeGVsQnVmZmVyKTsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYsIGNvbnN0IEludFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IElu
dFNpemUmLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJik7CiAKICAgICBQaXhlbEJ1ZmZlcihjb25z
dCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50OENsYW1w
ZWRBcnJheT4mJik7CisgICAgUGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBj
b25zdCBJbnRTaXplJiwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5QaXhlbEJ1ZmZlcigpOwogCiAgICAgUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImJikgPSBk
ZWZhdWx0OwpAQCAtNTMsNiArNTUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIEpTQzo6VWludDhDbGFtcGVkQXJyYXkm
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAorICAgIFJlZjxKU0M6OlVp
bnQ4Q2xhbXBlZEFycmF5PiYmIHRha2VEYXRhKCkgeyByZXR1cm4gV1RGTW92ZShtX2RhdGEpOyB9
CisKICAgICBQaXhlbEJ1ZmZlciBkZWVwQ2xvbmUoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252
ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3NTQzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2
LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGUKIAog
ICAgICAgICB2SW1hZ2VfRXJyb3IgY29udmVydGVyQ3JlYXRlRXJyb3IgPSBrdkltYWdlTm9FcnJv
cjsKICAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBhZG9wdENGKHZJbWFnZUNvbnZlcnRlcl9DcmVh
dGVXaXRoQ0dJbWFnZUZvcm1hdCgmc291cmNlQ0dJbWFnZUZvcm1hdCwgJmRlc3RpbmF0aW9uQ0dJ
bWFnZUZvcm1hdCwgbnVsbHB0ciwga3ZJbWFnZU5vRmxhZ3MsICZjb252ZXJ0ZXJDcmVhdGVFcnJv
cikpOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChjb252ZXJ0ZXJDcmVhdGVF
cnJvciwgY29udmVydGVyQ3JlYXRlRXJyb3IgIT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252
ZXJ0ZXIgY3JlYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNyZWF0ZUVy
cm9yKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ3JlYXRl
RXJyb3IsIGNvbnZlcnRlckNyZWF0ZUVycm9yID09IGt2SW1hZ2VOb0Vycm9yLCAidkltYWdlQ29u
dmVydGVyIGNyZWF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiAlemQiLCBjb252ZXJ0ZXJDcmVhdGVF
cnJvcik7CiAKICAgICAgICAgdkltYWdlX0Vycm9yIGNvbnZlcnRlckNvbnZlcnRFcnJvciA9IHZJ
bWFnZUNvbnZlcnRfQW55VG9BbnkoY29udmVydGVyLmdldCgpLCAmc291cmNlVkltYWdlQnVmZmVy
LCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIG51bGxwdHIsIGt2SW1hZ2VOb0ZsYWdzKTsKICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ29udmVydEVycm9yLCBj
b252ZXJ0ZXJDb252ZXJ0RXJyb3IgPT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252ZXJ0X0Fu
eVRvQW55IGZhaWxlZCBjb252ZXJzaW9uIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNvbnZl
cnRFcnJvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
RmlsdGVyRWZmZWN0Ojpjb252CiAgICAgLy8gQ29sb3Igc3BhY2UgY29udmVyc2lvbiBoYXBwZW5z
IGludGVybmFsbHkgd2hlbiBkcmF3aW5nIGZyb20gb25lIGltYWdlIGJ1ZmZlciB0byBhbm90aGVy
CiAgICAgY29udmVydGVkQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGlucHV0QnVm
ZmVyLCByZWN0KTsKICAgICAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBvdXRwdXRB
bHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBvdXRwdXRBbHBoYUZvcm1hdCwg
UGl4ZWxGb3JtYXQ6OlJHQkE4LCB0YXJnZXRDb2xvclNwYWNlIH07CiAgICAgcmV0dXJuIGNvbnZl
cnRlZEJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCByZWN0KTsKIH0KIApAQCAtNTA0LDcg
KzUwNCw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWwKICAgICAg
ICAgICAgICAgICBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKGRlc3RpbmF0
aW9uLCAqY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCByZWN0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCIH07CisgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9p
bWFnZUJ1ZmZlclJlc3VsdC0+Y29sb3JTcGFjZSgpIH07CiAgICAgICAgICAgICBtX3VubXVsdGlw
bGllZEltYWdlUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlclJlc3VsdC0+Z2V0UGl4ZWxCdWZmZXIoZm9y
bWF0LCB7IEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0pOwogICAgICAg
ICAgICAgaWYgKCFtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZFJlc3VsCiAgICAgICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRS
ZWN0LnNpemUoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHND
bGFtcGluZyhpbnB1dFNpemUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRl
ci5maWx0ZXJTY2FsZSgpKTsKLSAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJH
QkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgICAgIFBpeGVsQnVm
ZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGll
ZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX2ltYWdlQnVmZmVyUmVzdWx0LT5jb2xvclNwYWNlKCkg
fTsKICAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6
dHJ5Q3JlYXRlKGZvcm1hdCwgaW5wdXRTaXplKTsKICAgICAgICAgICAgIGlmICghbV91bm11bHRp
cGxpZWRJbWFnZVJlc3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01MzksNyArNTM5
LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdQogICAgICAgICAg
ICAgICAgIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oZGVzdGluYXRpb24s
ICpjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCByZWN0
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9
OworICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX2ltYWdlQnVmZmVy
UmVzdWx0LT5jb2xvclNwYWNlKCkgfTsKICAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0ID0gbV9pbWFnZUJ1ZmZlclJlc3VsdC0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCB7IElu
dFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0pOwogICAgICAgICAgICAgaWYg
KCFtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC01NDcsNyArNTQ3LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVz
dQogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXpl
KCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmco
aW5wdXRTaXplKSk7CiAgICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVy
U2NhbGUoKSk7Ci0gICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3Jt
YXQ6OlJHQkE4LCBtX2ltYWdlQnVmZmVyUmVzdWx0LT5jb2xvclNwYWNlKCkgfTsKICAgICAgICAg
ICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShm
b3JtYXQsIGlucHV0U2l6ZSk7CiAgICAgICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU5MCw3ICs1OTAsNyBAQCBPcHRp
b25hbDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3JlCiAgICAgSW50U2l6ZSByZXN1bHRT
aXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVy
OjpzaXplTmVlZHNDbGFtcGluZyhyZXN1bHRTaXplKSk7CiAgICAgcmVzdWx0U2l6ZS5zY2FsZSht
X2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JB
OCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JTcGFjZSB9OwogICAgIG1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAg
ICAgcmV0dXJuIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CiB9CkBAIC02MDksNyArNjA5LDcg
QEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZQogICAgIEludFNpemUg
cmVzdWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFn
ZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVzdWx0U2l6ZSkpOwogICAgIHJlc3VsdFNpemUu
c2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9y
bWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JTcGFjZSB9OwogICAgIG1fcHJlbXVsdGlwbGll
ZEltYWdlUmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHJlc3VsdFNpemUp
OwogICAgIHJldHVybiBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdDsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMzMSw3ICs1
MzMxLDcgQEAgdm9pZCBJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZAogICAgIGlm
ICghcmdiYSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1h
Z2VEYXRhOjpjcmVhdGUocmdiYS5yZWxlYXNlTm9uTnVsbCgpLCB2aWRlb1NldHRpbmdzLndpZHRo
KCksIHZpZGVvU2V0dGluZ3MuaGVpZ2h0KCkpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VE
YXRhOjpjcmVhdGUocmdiYS5yZWxlYXNlTm9uTnVsbCgpLCB2aWRlb1NldHRpbmdzLndpZHRoKCks
IHZpZGVvU2V0dGluZ3MuaGVpZ2h0KCksIHsgeyBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQiB9
IH0pOwogICAgIGlmICghaW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICBtX25leHRU
cmFja0ZyYW1lUHJvbWlzZS0+cmVzb2x2ZShpbWFnZURhdGEucmVsZWFzZVJldHVyblZhbHVlKCkp
OwogICAgIGVsc2UKQEAgLTYyMDMsNyArNjIwMyw3IEBAIHZvaWQgSW50ZXJuYWxzOjpsb2FkQXJ0
d29ya0ltYWdlKFN0cmluZyYKICAgICBtX2FydHdvcmtJbWFnZVByb21pc2UgPSBtYWtlVW5pcXVl
PEFydHdvcmtJbWFnZVByb21pc2U+KFdURk1vdmUocHJvbWlzZSkpOwogICAgIG1fYXJ0d29ya0xv
YWRlciA9IG1ha2VVbmlxdWU8QXJ0d29ya0ltYWdlTG9hZGVyPigqY29udGV4dERvY3VtZW50KCks
IHVybCwgW3RoaXNdKEltYWdlKiBpbWFnZSkgewogICAgICAgICBpZiAoaW1hZ2UpIHsKLSAgICAg
ICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUodW5zaWduZWQoaW1hZ2Ut
PndpZHRoKCkpLCB1bnNpZ25lZChpbWFnZS0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIGF1dG8g
aW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdl
LT53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlLT5oZWlnaHQoKSksIHsgeyBQ
cmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQiB9IH0pOwogICAgICAgICAgICAgaWYgKCFpbWFnZURh
dGEuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNl
LT5yZXNvbHZlKGltYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgICAgICAgICBl
bHNlCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc1MjUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAyMS0wNS0xNCAgU2FtIFdlaW5pZyAg
PHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nL2Fj
Y2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0YSB2aWEgY2FudmFzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgIFJlbW92ZSB3aWRlLWdhbXV0LWNhbnZhcyBub3cgdGhhdCB0aGV5IHNob3VsZCBw
YXNzLgorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXkt
cDMtSW1hZ2VEYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMv
Y2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLmh0bWw6IEFkZGVkLgorICAg
ICAgICBBZGQgbmV3IHRlc3QgZXhlcmNpc2luZyBnZXRJbWFnZURhdGEgYW5kIHB1dEltYWdlRGF0
YSB3aXRoIG5vbi1zUkdCIGNhbnZhc2VzCisgICAgICAgIGFuZCBub24tc1JHQiBJbWFnZURhdGEu
CisgCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWltYWdlRGF0YS1leHBlY3RlZC50eHQ6
CisgICAgICAgIFVwZGF0ZSByZXN1bHRzIGZvciB1cGRhdGVkIGVycm9yIG1lc3NhZ2VzLCB3aGlj
aCBhcmUgYSBiaXQgd29yc2UgZHVlIGFkZGl0aW9uYWwKKyAgICAgICAgYW1iaWd1aXR5IGluIHNp
Z25hdHVyZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgIE1hcmsgbmV3IHRlc3QgYXMgZmFpbGluZyBvbiBnbGliIGR1ZSB0byBsYWNrIG9mIGRp
c3BsYXktcDMgc3VwcG9ydC4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9v
YmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LXR5cGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBk
YXRlIHJlc3VsdHMgZHVlIHRvIG5ldyBhdHRyaWJ1dGUgaW4gSW1hZ2VEYXRhIHRoYXQgaXMgYXV0
byBwcmludGVkLgorCiAyMDIxLTA1LTE0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBhIG1lZGlhIGVsZW1lbnQgd2l0aCBhIGRhdGEgdXJs
IGFuZCAiY3Jvc3NvcmlnaW49J2Fub255bW91cyciIGRvZXNuJ3QgbG9hZApJbmRleDogTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCShyZXZpc2lvbiAyNzc1MjUpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCSh3b3JraW5nIGNvcHkpCkBAIC0zOTk1LDkgKzM5OTUsNiBAQCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy1pbWFnZXMtdG8tdGhlLWNhbnZhcy9pbWFnZS1v
cmllbnRhdGlvbi9kcmF3SW1hZ2UtZnJvbS1lbGVtZW50LXN3YXAtd2lkdGgtaGVpZ2h0LnRlbnRh
dGl2ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy1pbWFnZXMtdG8tdGhlLWNhbnZhcy9p
bWFnZS1vcmllbnRhdGlvbi9kcmF3SW1hZ2UtZnJvbS1lbGVtZW50LnRlbnRhdGl2ZS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgU29tZXRpbWVzIHByaW50cyB3ZWlyZCBvdXRwdXQgYXQg
dGhlIGJlZ2lubmluZyBvZiB0aGUgdGVzdHMuCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMgWyBGYWlsdXJlIFBhc3Mg
XQotCiAjIENTUyBNYXNvbnJ5IExheW91dCBub3Qgc3VwcG9ydGVkLgogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbWFzb25yeS50ZW50YXRpdmUgWyBTa2lwIF0K
IHdlYmtpdC5vcmcvYi8yMDIxMTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWdyaWQvc3ViZ3JpZCBbIFNraXAgXQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlz
cGxheS1wMy1JbWFnZURhdGEtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTkgQEAKK1Rlc3QgdGhhdCBw
aXhlbCBhY2Nlc3MgZnVuY3Rpb25zIHdvcmsgd2l0aCBub24tU1JHQiBjb2xvciBzcGFjZXMuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9t
RGlzcGxheVAzQ2FudmFzLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGltYWdlRGF0
YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdCLmNvbG9y
U3BhY2UgaXMgInNyZ2IiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFz
T3ZlcnJpZGluZ0NvbG9yU3BhY2VEaXNwbGF5UDMuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIK
K1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzLmNvbG9yU3BhY2UgaXMgInNyZ2Ii
CitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNl
U1JHQi5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JD
YW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZURpc3BsYXlQMy5jb2xvclNwYWNlIGlzICJkaXNwbGF5
LXAzIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yLmNvbG9y
U3BhY2UgaXMgInNyZ2IiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3Ry
dWN0b3JTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBp
bWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VU
b0Rpc3BsYXlQMy5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBpbWFnZURhdGFDcmVh
dGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlci5jb2xvclNwYWNlIGlzICJz
cmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2lu
Z0J1ZmZlclNldHRpbmdDb2xvclNwYWNlVG9TUkdCLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNT
IGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyU2V0
dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorCitU
ZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBk
cmF3biBpbnRvIGl0CisKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9y
IHNwYWNlLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXkt
cDMgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXkt
cDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BB
U1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJ
bWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2Fu
dmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5j
b2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRh
dGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBp
cyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEg
ZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJh
d24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0
YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFb
Ml0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBkaXNwbGF5LXAz
IGNhbnZhcyB3aXRoIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGludG8gaXQKKworVGVzdCBnZXRJ
bWFnZURhdGEgd2l0aCBubyBzcGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgZGlzcGxheS1wMyBj
YW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRh
dGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDExNwor
UEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3NgorUEFTUyBk
YXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVk
LCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRy
YXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0
YVswXSBpcyAzCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlz
IDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNw
bGF5LXAzIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xv
cihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNw
bGF5LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAy
NTEKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKwor
VGVzdGluZyBhIHNyZ2IgY2FudmFzIHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24g
aW50byBpdAorCitUZXN0IGdldEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFj
ZSwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBk
cmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRh
dGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBp
cyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3Jn
YiBzcGVjaWZpZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1w
MyAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BB
U1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRh
LmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0
YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFz
IGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3Bh
Y2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5k
YXRhWzFdIGlzIDI1MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNd
IGlzIDI1NQorCitUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBjb2xvcihzcmdiLXAzIDAgMSAw
KSBkcmF3biBpbnRvIGl0CisKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNv
bG9yIHNwYWNlLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDAp
IGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEu
ZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJd
IGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBz
cmdiIHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAg
MSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBk
YXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0
YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdp
dGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29s
b3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlz
cGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMg
MjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisK
KworVGVzdGluZyBhIGRpc3BsYXktcDMgY2FudmFzIHdpdGggZGlzcGxheS1wMyBJbWFnZURhdGEg
ZHJhd24gaW50byBpdAorCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0
YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFb
Ml0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitQQVNTIGRhdGEuY29sb3JTcGFjZSBp
cyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFd
IGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1
CisKK1Rlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIHNyZ2IgSW1hZ2VEYXRhIGRyYXdu
IGludG8gaXQKKworUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0
YVswXSBpcyAzCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlz
IDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRp
c3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRhWzFdIGlz
IDI1MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQor
CitUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBkaXNwbGF5LXAzIEltYWdlRGF0YSBkcmF3biBp
bnRvIGl0CisKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFb
MF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAw
CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNw
bGF5LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAy
NTEKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKwor
VGVzdGluZyBhIHNyZ2IgY2FudmFzIHdpdGggc3JnYiBJbWFnZURhdGEgZHJhd24gaW50byBpdAor
CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAK
K1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBk
YXRhLmRhdGFbM10gaXMgMjU1CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIK
K1BBU1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNT
IGRhdGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3It
c3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVz
dCB0aGF0IHBpeGVsIGFjY2VzcyBmdW5jdGlvbnMgd29yayB3aXRoIG5vbi1TUkdCIGNvbG9yIHNw
YWNlcy4iKTsKKworbGV0IGNhbnZhc0Rpc3BsYXlQMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImNhbnZhcyIpOworbGV0IGNvbnRleHREaXNwbGF5UDMgPSBjYW52YXNEaXNwbGF5UDMuZ2V0Q29u
dGV4dCgiMmQiLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKKworbGV0IGNhbnZhc1NS
R0IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKK2xldCBjb250ZXh0U1JHQiA9
IGNhbnZhc1NSR0IuZ2V0Q29udGV4dCgiMmQiLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKKwor
Y29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXMgPSBjb250ZXh0RGlzcGxh
eVAzLmNyZWF0ZUltYWdlRGF0YSg1MCwgNTApOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRG
cm9tRGlzcGxheVAzQ2FudmFzLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCk7CisKK2NvbnN0
IGltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VT
UkdCID0gY29udGV4dERpc3BsYXlQMy5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3Bh
Y2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0Nh
bnZhc092ZXJyaWRpbmdDb2xvclNwYWNlU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitj
b25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNw
YWNlRGlzcGxheVAzID0gY29udGV4dERpc3BsYXlQMy5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7
IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVk
RnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxheVAzLmNvbG9yU3Bh
Y2UiLCBgImRpc3BsYXktcDMiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tU1JHQkNh
bnZhcyA9IGNvbnRleHRTUkdCLmNyZWF0ZUltYWdlRGF0YSg1MCwgNTApOworc2hvdWxkQmUoImlt
YWdlRGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhcy5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitj
b25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZVNS
R0IgPSBjb250ZXh0U1JHQi5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJz
cmdiIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlk
aW5nQ29sb3JTcGFjZVNSR0IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VE
YXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VEaXNwbGF5UDMgPSBj
b250ZXh0U1JHQi5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5
LXAzIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlk
aW5nQ29sb3JTcGFjZURpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApOworCitj
b25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yID0gbmV3IEltYWdl
RGF0YSg1MCwgNTAsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0
YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsK
KworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclNldHRpbmdD
b2xvclNwYWNlVG9TUkdCID0gbmV3IEltYWdlRGF0YSg1MCwgNTAsIHsgY29sb3JTcGFjZTogInNy
Z2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0
b3JTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25z
dCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3Bh
Y2VUb0Rpc3BsYXlQMyA9IG5ldyBJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJkaXNw
bGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0
cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5
LXAzImApOworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9y
UGFzc2luZ0J1ZmZlciA9IG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQwMCks
IDEwLCAxMCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3Jl
YXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXIuY29sb3JTcGFjZSIsIGAi
c3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3Rv
clBhc3NpbmdCdWZmZXJTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQiA9IG5ldyBJbWFnZURhdGEobmV3
IFVpbnQ4Q2xhbXBlZEFycmF5KDQwMCksIDEwLCAxMCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7
CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3Np
bmdCdWZmZXJTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOwor
Citjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1
ZmZlclNldHRpbmdDb2xvclNwYWNlVG9EaXNwbGF5UDMgPSBuZXcgSW1hZ2VEYXRhKG5ldyBVaW50
OENsYW1wZWRBcnJheSg0MDApLCAxMCwgMTAsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0p
Oworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNz
aW5nQnVmZmVyU2V0dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNw
bGF5LXAzImApOworCit2YXIgZGF0YSA9IHsgfTsKKworLy8gTk9URToKKy8vIGNvbG9yKHNyZ2Ig
MCAxIDApIGNvbnZlcnRlZCB0byBkaXNwbGF5LXAzIGlzIGNvbG9yKGRpc3BsYXktcDMgMC40NTg0
IDAuOTg1MjYgMC4yOTgyOSkgb3IgWzExNywgMjUxLCA3NiwgMjU1XSBpbiBieXRlIGZvcm0uCisK
K2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBjb2xv
cihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRl
eHREaXNwbGF5UDMuZmlsbFN0eWxlID0gImNvbG9yKGRpc3BsYXktcDMgMCAxIDApIjsKK2NvbnRl
eHREaXNwbGF5UDMuZmlsbFJlY3QoMCwgMCwgNTAsIDUwKTsKKworLy8gTm8gc3BlY2lmaWVkIGNv
bG9yIHNwYWNlIHdpbGwgZGVmYXVsdCB0byB0aGUgY2FudmFzJyBjb2xvciBzcGFjZSwgaW4gdGhp
cyBjYXNlLCBkaXNwbGF5LXAzCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBubyBzcGVj
aWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29s
b3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dERpc3Bs
YXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNl
IiwgYCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldElt
YWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52
YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworLy8gTk9URTog
Y29sb3IoZGlzcGxheS1wMyAwIDEgMCkgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2Ygc1JHQiwgc28g
aXQgY2xpcHBlZCB0byAyNTUuCitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEo
MCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xv
clNwYWNlIiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldElt
YWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFz
IChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0
YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFj
ZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxh
eS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRC
ZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBh
IGRpc3BsYXktcDMgY2FudmFzIHdpdGggY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW50byBpdCIp
OworZGVidWcoIiIpOworCitjb250ZXh0RGlzcGxheVAzLmZpbGxTdHlsZSA9ICJjb2xvcihzcmdi
IDAgMSAwKSI7Citjb250ZXh0RGlzcGxheVAzLmZpbGxSZWN0KDAsIDAsIDUwLCA1MCk7CisKKy8v
IE5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSB3aWxsIGRlZmF1bHQgdG8gdGhlIGNhbnZhcycgY29s
b3Igc3BhY2UsIGluIHRoaXMgY2FzZSwgZGlzcGxheS1wMworZGVidWcoIlRlc3QgZ2V0SW1hZ2VE
YXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBhIGRpc3BsYXktcDMgY2FudmFz
IChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNv
bnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpOworc2hvdWxkQmUoImRhdGEu
Y29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIx
MTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1
ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAz
IGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2Rh
dGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3Bh
Y2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKKy8v
IE5PVEU6IFRoaXMgMyBpcyBvZGQsIGJ1dCBkdWUgdG8gbGFjayBvZiBwcmVjaXNpb24gaW4gOC1i
aXQgcm91bmQtdHJpcHBpbmcuCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjMiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldElt
YWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFz
IChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNv
bnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRp
c3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJg
KQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
MV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgi
ZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIHNy
Z2IgY2FudmFzIHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW50byBpdCIpOwor
ZGVidWcoIiIpOworCitjb250ZXh0U1JHQi5maWxsU3R5bGUgPSAiY29sb3IoZGlzcGxheS1wMyAw
IDEgMCkiOworY29udGV4dFNSR0IuZmlsbFJlY3QoMCwgMCwgNTAsIDUwKTsKKworLy8gTm8gc3Bl
Y2lmaWVkIGNvbG9yIHNwYWNlIHdpbGwgZGVmYXVsdCB0byB0aGUgY2FudmFzJyBjb2xvciBzcGFj
ZSwgaW4gdGhpcyBjYXNlLCBzcmdiCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBubyBz
cGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Io
ZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dFNSR0IuZ2V0
SW1hZ2VEYXRhKDAsIDAsIDEsIDEpOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3Jn
YiJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRh
WzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgi
ZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBz
cmdiIHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5
LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURh
dGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5j
b2xvclNwYWNlIiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3No
b3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwg
IjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdl
dEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChj
YW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9
IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNw
bGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFd
IiwgIjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUoImRh
dGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBzcmdi
IGNhbnZhcyB3aXRoIGNvbG9yKHNyZ2ItcDMgMCAxIDApIGRyYXduIGludG8gaXQiKTsKK2RlYnVn
KCIiKTsKKworY29udGV4dFNSR0IuZmlsbFN0eWxlID0gImNvbG9yKHNyZ2IgMCAxIDApIjsKK2Nv
bnRleHRTUkdCLmZpbGxSZWN0KDAsIDAsIDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmllZCBjb2xv
ciBzcGFjZSB3aWxsIGRlZmF1bHQgdG8gdGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGluIHRoaXMg
Y2FzZSwgc3JnYgorZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNv
bG9yIHNwYWNlLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDAp
IGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAx
LCAxKTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJk
YXRhLmRhdGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3No
b3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIy
NTUiKTsKKworZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZpZWQsIG9u
IGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQp
Iik7CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JT
cGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQor
c2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwg
IjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5
LXAzIHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAg
MSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwg
MCwgMSwgMSwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0YS5j
b2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjEx
NyIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTEiKTsKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMl0iLCAiNzYiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKKworZGVi
dWcoIiIpOworCisKK2NvbnN0IGltYWdlRGF0YURpc3BsYXlQM1RvUHV0ID0gbmV3IEltYWdlRGF0
YSgxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK2ltYWdlRGF0YURpc3BsYXlQ
M1RvUHV0LmRhdGFbMF0gPSAwOworaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQuZGF0YVsxXSA9IDI1
NTsKK2ltYWdlRGF0YURpc3BsYXlQM1RvUHV0LmRhdGFbMl0gPSAwOworaW1hZ2VEYXRhRGlzcGxh
eVAzVG9QdXQuZGF0YVszXSA9IDI1NTsKKworY29uc3QgaW1hZ2VEYXRhU1JHQlRvUHV0ID0gbmV3
IEltYWdlRGF0YSgxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK2ltYWdlRGF0YVNSR0JU
b1B1dC5kYXRhWzBdID0gMDsKK2ltYWdlRGF0YVNSR0JUb1B1dC5kYXRhWzFdID0gMjU1OworaW1h
Z2VEYXRhU1JHQlRvUHV0LmRhdGFbMl0gPSAwOworaW1hZ2VEYXRhU1JHQlRvUHV0LmRhdGFbM10g
PSAyNTU7CisKKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZh
cyB3aXRoIGRpc3BsYXktcDMgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsK
KworY29udGV4dERpc3BsYXlQMy5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQs
IDAsIDApOworCitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwg
MSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwg
YCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdl
dEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3No
b3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUi
KTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRo
IHNyZ2IgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dERp
c3BsYXlQMy5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhU1JHQlRvUHV0LCAwLCAwKTsKKworZGF0YSA9
IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTog
InNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorLy8gTk9U
RTogVGhpcyAzIGlzIG9kZCwgYnV0IGR1ZSB0byBsYWNrIG9mIHByZWNpc2lvbiBpbiA4LWJpdCBy
b3VuZC10cmlwcGluZy4KK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMyIpOworc2hvdWxkQmUo
ImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOwor
c2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGF0YSA9IGNvbnRleHREaXNwbGF5
UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0p
Oworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUo
ImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7
CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNd
IiwgIjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIHNyZ2IgY2FudmFzIHdp
dGggZGlzcGxheS1wMyBJbWFnZURhdGEgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIpOworCitj
b250ZXh0U1JHQi5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQsIDAsIDApOwor
CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFj
ZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hv
dWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1
NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRh
WzNdIiwgIjI1NSIpOworCitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEs
IDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JT
cGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJd
IiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCisKK2RlYnVnKCIi
KTsKK2RlYnVnKCJUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBzcmdiIEltYWdlRGF0YSBkcmF3
biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHRTUkdCLnB1dEltYWdlRGF0YShpbWFn
ZURhdGFTUkdCVG9QdXQsIDAsIDApOworCitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRh
KDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29s
b3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91
bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIw
Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkYXRhID0gY29udGV4dFNS
R0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0p
Oworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUo
ImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7
CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNd
IiwgIjI1NSIpOworCitkZWJ1ZygiIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc1MjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtaW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQsMjAg
KzE0LDIwIEBAIFBBU1MgbmV3IEltYWdlRGF0YSgtMjAsIDIwKSB0aHJldyBleGNlcHQKIFBBU1Mg
bmV3IEltYWdlRGF0YSgyMCwgLTIwKSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjogQ2Fubm90
IGFsbG9jYXRlIGEgYnVmZmVyIG9mIHRoaXMgc2l6ZS4KIFBBU1MgbmV3IEltYWdlRGF0YShudWxs
LCAyMCkgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5kZXggaXMgbm90IGlu
IHRoZSBhbGxvd2VkIHJhbmdlLi4KIFBBU1MgbmV3IEltYWdlRGF0YSgzMjc2OCwgMzI3NjgpIHRo
cmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBDYW5ub3QgYWxsb2NhdGUgYSBidWZmZXIgb2YgdGhp
cyBzaXplLgotUEFTUyBuZXcgSW1hZ2VEYXRhKG51bGwsIDIwLCAyMCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVj
dG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJ
bWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFy
Z3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFu
IGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgorUEFTUyBuZXcgSW1hZ2VEYXRhKG51bGws
IDIwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3
IEltYWdlRGF0YShpbWFnZURhdGEsIDIwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KIFBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEsIDApIHRocmV3IGV4Y2Vw
dGlvbiBJbmRleFNpemVFcnJvcjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5n
ZS4uCi1QQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwgMCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVj
dG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJ
bWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJn
dW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4g
aW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VE
YXRhLCAxMCwgNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEn
KSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWlu
dDhDbGFtcGVkQXJyYXkuCitQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwgMCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IEltYWdlRGF0YShp
bWFnZURhdGEsIDAsIDIwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgor
UEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMTAsIDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIDEw
LCA1KSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IHNoIHZhbHVlIGlzIG5vdCBlcXVh
bCB0byBoZWlnaHQuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIC0xMCwgNSkg
dGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEgbXVsdGlwbGUg
b2Ygc3cuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIDEwLCAtMTApIHRocmV3
IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogc2ggdmFsdWUgaXMgbm90IGVxdWFsIHRvIGhlaWdo
dC4KIFBBU1MgbmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoWzEsMiwzLDQsNSw2
LDcsOF0pLDUzNjg3MDkxMywyKTsgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5n
dGggaXMgbm90IGEgbXVsdGlwbGUgb2Ygc3cuCi1QQVNTIG5ldyBJbWFnZURhdGEoe30sMiwyKTsg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1h
Z2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJy
YXkuCi1QQVNTIG5ldyBJbWFnZURhdGEodW5kZWZpbmVkLDIsMik7IHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3Rv
ciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1h
Z2VEYXRhKCJub25lIiwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAx
ICgnZGF0YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBpbnN0YW5j
ZSBvZiBVaW50OENsYW1wZWRBcnJheS4KLVBBU1MgbmV3IEltYWdlRGF0YSgwLDIsMik7IHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0
YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5Lgor
UEFTUyBuZXcgSW1hZ2VEYXRhKHt9LDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEodW5kZWZpbmVkLDIsMik7IHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoIm5vbmUiLDIs
Mik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFn
ZURhdGEoMCwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFT
UyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCAzMjc2OCwgMzI3NjgpIHRocmV3IGV4Y2Vw
dGlvbiBJbmRleFNpemVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3LgogUEFT
UyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCBJbmZpbml0eSwgSW5maW5pdHkpIHRocmV3
IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3
LgogUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCBOYU4sIE5hTikgdGhyZXcgZXhj
ZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEgbXVsdGlwbGUgb2Ygc3cuCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzU0MSkKKysrIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMS0wNS0xNCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdC
IEltYWdlRGF0YSB2aWEgY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU4NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dp
ZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgVXBkYXRlIHJlc3VsdCB0byBwYXNzaW5nLgorCiAyMDIxLTA1LTE0ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBvdXRwdXQgZWxlbWVudCBkb2Vzbid0IHJl
YWN0IHByb3Blcmx5IHRvIG5vZGUgdHJlZSBtdXRhdGlvbnMKSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdh
bXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5wMy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3NTI1KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFz
LzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
Miw1ICsyLDUgQEAKIHRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBhbmQgdWludDgg
ZnJvbSBkaXNwbGF5IHAzIHVpbnQ4IGNhbnZhcwogQWN0dWFsIG91dHB1dDoKIAotRkFJTCB0ZXN0
IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgYW5kIHVpbnQ4IGZyb20gZGlzcGxheSBwMyB1
aW50OCBjYW52YXMgYXNzZXJ0X2FwcHJveF9lcXVhbHM6IGV4cGVjdGVkIDYyICsvLSAyIGJ1dCBn
b3QgNTAKK1BBU1MgdGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIGFuZCB1aW50OCBm
cm9tIGRpc3BsYXkgcDMgdWludDggY2FudmFzCiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2dsaWIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI3NzUyNSkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjM1OCw2
ICsyMzU4LDcgQEAgZmFzdC9yZXBsYWNlZC9wZGYtYXMtZW1iZWQtd2l0aC1uby1taW1lLQogd2Vi
a2l0Lm9yZy9iLzIyNDExMiBtZWRpYS92aWRlby1hcy1pbWctb3V0cHV0LXB0cy5odG1sIFsgVGlt
ZW91dCBQYXNzIF0KIAogd2Via2l0Lm9yZy9iLzIyNTQyMyBmYXN0L2NhbnZhcy9jYW52YXMtY29s
b3Itc3BhY2UtZGlzcGxheS1wMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3Jn
L2IvMjI1NDIzIGZhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdl
RGF0YS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI1NDIzIGZhc3QvY2FudmFzL2Nh
bnZhcy1jb21wb3NpdGUtdGV4dC1hbHBoYS5odG1sIFsgRmFpbHVyZSBdCiAKICMgRmFpbGluZyBh
ZnRlciByMjc3MDczLgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1hdXRv
aW5jcmVtZW50LXR5cGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3NTI1KQorKysgTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQt
dHlwZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBAIFBBU1Mg
a2V5IGlzIDMKIFBBU1MgcmVxdWVzdC5yZXN1bHQucHJpbWFyeUtleSBpcyBpbWFnZURhdGEucHJp
bWFyeUtleQogUEFTUyByZXF1ZXN0LnJlc3VsdC53aWR0aCBpcyBpbWFnZURhdGEud2lkdGgKIFBB
U1MgcmVxdWVzdC5yZXN1bHQuaGVpZ2h0IGlzIGltYWdlRGF0YS5oZWlnaHQKK1BBU1MgcmVxdWVz
dC5yZXN1bHQuY29sb3JTcGFjZSBpcyBpbWFnZURhdGEuY29sb3JTcGFjZQogUEFTUyBrZXkgaXMg
NAogUEFTUyByZXF1ZXN0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIGZpbGVMaXN0LnByaW1hcnlLZXkK
IFBBU1MgcmVxdWVzdC5yZXN1bHQubGVuZ3RoIGlzIGZpbGVMaXN0Lmxlbmd0aApAQCAtNDAsNiAr
NDEsNyBAQCBQQVNTIHJlcXVlc3QucmVzdWx0WzFdLnR5cGUgaXMgZmlsZS50eXBlCiBQQVNTIHJl
cXVlc3QucmVzdWx0WzJdLnByaW1hcnlLZXkgaXMgaW1hZ2VEYXRhLnByaW1hcnlLZXkKIFBBU1Mg
cmVxdWVzdC5yZXN1bHRbMl0ud2lkdGggaXMgaW1hZ2VEYXRhLndpZHRoCiBQQVNTIHJlcXVlc3Qu
cmVzdWx0WzJdLmhlaWdodCBpcyBpbWFnZURhdGEuaGVpZ2h0CitQQVNTIHJlcXVlc3QucmVzdWx0
WzJdLmNvbG9yU3BhY2UgaXMgaW1hZ2VEYXRhLmNvbG9yU3BhY2UKIFBBU1MgcmVxdWVzdC5yZXN1
bHRbM10ucHJpbWFyeUtleSBpcyBmaWxlTGlzdC5wcmltYXJ5S2V5CiBQQVNTIHJlcXVlc3QucmVz
dWx0WzNdLmxlbmd0aCBpcyBmaWxlTGlzdC5sZW5ndGgKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428734</attachid>
            <date>2021-05-15 11:29:15 -0700</date>
            <delta_ts>2021-05-15 11:32:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225841-20210515112914.patch</filename>
            <type>text/plain</type>
            <size>84936</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAyMS0wNS0xNCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNyZWF0
aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0YSB2aWEgY2FudmFzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2Nh
bnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBhY2Nlc3Npbmcgbm9uLXNSR0IgKG9ubHkgRGlzcGxheVAzIGZv
ciBub3cgZHVlCisgICAgICAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uLCBidXQgdGhlIHN1cHBvcnQg
aXMgZ2VuZXJhbCkgcGl4ZWwgZGF0YSBpbgorICAgICAgICBIVE1MIGNhbnZhcy4KKworICAgICAg
ICBVcGRhdGVzIEltYWdlRGF0YSBjb25zdHJ1Y3RvcnMgYW5kIENhbnZhc0ltYWdlRGF0YSBvcGVy
YXRpb25zIHRvIAorICAgICAgICB0YWtlIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIGRpY3Rp
b25hcmllcywgd2hpY2ggY29udGFpbiBhbiAKKyAgICAgICAgb3B0aW9uYWwgY29sb3Igc3BhY2Ug
KG90aGVyd2lzZSBkZWZhdWx0aW5nIGJhY2sgdG8gc1JHQikuIAorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YVNl
dHRpbmdzLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsOiBB
ZGRlZC4KKyAgICAgICAgQWRkIG5ldyBJbWFnZURhdGFTZXR0aW5ncy5pZGwgYW5kIHJlbGF0ZWQg
ZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6
CisgICAgICAgIEZpeGVzIEZJWE1FIGFuZCB1c2VzIFBpeGVsQnVmZmVyIGRpcmVjdGx5IHJhdGhl
ciB0aGFuIGFsbG9jYXRpbmcKKyAgICAgICAgYW4gdW5uZWNlc3NhcnkgSW1hZ2VEYXRhLiBUaGlz
IHdhcyBkb25lIG5vdyBzaW5jZSB0aGUgcmVsZXZlbnQKKyAgICAgICAgSW1hZ2VEYXRhIGNvbnN0
cnVjdG9yIGhhcyBnb25lIGF3YXkuCisKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlRGF0YVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEYXRhOjpjb21wdXRlQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEYXRhOjpwaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURhdGE6OmRhdGFTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGF0YTo6ZGVlcENsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0ltYWdlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpzaXplIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGF0YTo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEYXRhOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6Y29sb3JTcGFjZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OnBpeGVsQnVmZmVyIGNvbnN0KTogRGVsZXRl
ZC4KKworICAgICAgICAtIFJld29ya2VkIEltYWdlRGF0YSB0byBubyBsb25nZXIgc3RvcmUgYSBQ
aXhlbEJ1ZmZlciwgd2hpY2ggaGFzCisgICAgICAgICAgZXh0cmFuZW91cyBpbmZvcm1hdGlvbiBp
biBpdCwgYnV0IHJhdGhlciB0byBzdG9yZSBqdXN0IHdoYXQgaXQKKyAgICAgICAgICBuZWVkcyBJ
bnRTaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4sIGFuZCBub3cgUHJlZGVmaW5lZENv
bG9yU3BhY2UuCisgICAgICAgIC0gVXBkYXRlcyBjcmVhdGUgZnVuY3Rpb25zIGZvciBuZXcgb3B0
aW9uYWwgSW1hZ2VEYXRhU2V0dGluZ3MuCisgICAgICAgIC0gQWRkcyBjcmVhdGVVbmluaXRpYWxp
emVkIHdoaWNoIGZvbGxvd3Mgc3BlYyBsYW5ndWFnZSBmb3IgSW1hZ2VEYXRhIGNyZWF0aW9uCisg
ICAgICAgICAgYW5kIGlzIHVzZWQgYnkgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHRvIGNyZWF0
ZSBJbWFnZURhdGEgb2JqZWN0cyBvZiB3aXRoCisgICAgICAgICAgdGhlIHJpZ2h0IGNvbG9yIHNw
YWNlcywgYWxsb3dpbmcgZm9yIGZhbGxiYWNrIHRvIHRoZSBjYW52YXMnIG93biBjb2xvciBzcGFj
ZQorICAgICAgICAgIHdoZW4gbm8gSW1hZ2VEYXRhU2V0dGluZ3MgY29sb3Igc3BhY2UgaXMgcHJv
dmlkZWQuIEl0IGlzIHVuaW5pdGlhbGl6ZWQgYW5kCisgICAgICAgICAgdGhlcmVmb3JlIHJlcXVp
cmVzIHRoZSBjbGllbnQgdG8gaW5pdGlhbGl6ZSB0aGUgZGF0YSB0byBhbGxvdyBmb3Igc3VwcG9y
dCBmb3IKKyAgICAgICAgICBubyBhbHBoYSBzdXBwb3J0IGluIHRoZSBmdXR1cmUsIHdoaWNoIHJl
cXVpcmVzIGEgbm9uLXplcm8gaW5pdGlhbGl6YXRpb24gcGF0dGVybi4KKworICAgICAgICAqIGh0
bWwvSW1hZ2VEYXRhLmlkbDoKKyAgICAgICAgQWRkIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdz
IHBhcmFtZXRlcnMgYW5kIHRoZSBuZXcgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsOgorICAgICAgICBBZGQgb3B0aW9uYWwg
SW1hZ2VEYXRhU2V0dGluZ3MgcGFyYW1ldGVycy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxp
emVFbXB0eUltYWdlRGF0YSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gaW5pdGlhbGl6ZSB0aGUg
SW1hZ2VEYXRhIGJ1ZmZlci4gUmlnaHQgbm93IGl0IGFsd2F5cyBjYWxscworICAgICAgICB6ZXJv
RmlsbCgpLCBidXQgaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIG5lZWQgdG8gZG8gbW9yZS4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVh
dGVJbWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgdG8gYWNjb3VudCBmb3IgdGhpcyBm
dW5jdGlvbiBiZWluZyBhYmxlIHRvIHRocm93IGFuIGV4Y2VwdGlvbiAod2hlbiAKKyAgICAgICAg
b3V0IG9mIG1lbW9yeSkgYW5kIHVzZSB0aGUgbmV3IGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlh
bGl6ZUVtcHR5SW1hZ2VEYXRhCisgICAgICAgIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciBz
cGFjZWQgSW1hZ2VEYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgZm9yIG5l
dyBvcHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBhbmQgdXNlIHRoZSBuZXcgY3JlYXRlVW5pbml0
aWFsaXplZAorICAgICAgICBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEgdG8gY3JlYXRlIGEgY29y
cmVjdGx5IGNvbG9yIHNwYWNlZCBJbWFnZURhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIE1v
dmVzIHBhcmFtZXRlciBjaGVja3MgdG8gdGhlIGJlZ2luaW5nIHRvIG1hdGNoIHRoZSBzcGVjLCBh
bmQgdXNlcyBuZXcgCisgICAgICAgIGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlhbGl6ZUVtcHR5
SW1hZ2VEYXRhIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciAKKyAgICAgICAgc3BhY2VkIElt
YWdlRGF0YS4gQWxzbywgdXNlIHRoZSBJbWFnZURhdGEncyBjb2xvciBzcGFjZSB3aGVuIGdldHRp
bmcKKyAgICAgICAgdGhlIHBpeGVsIGJ1ZmZlciB0byBhY3R1YWxseSByZXR1cm4gdGhlIHJpZ2h0
IGRhdGEhCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmluZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oOgorICAgICAgICBBZGQgY29udmVyc2lv
biBmdW5jdGlvbiBmcm9tIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0byBQcmVkZWZpbmVkQ29sb3JT
cGFjZS4KKyAgICAgICAgU2luY2UgRGVzdGluYXRpb25Db2xvclNwYWNlIGlzIGEgc3VwZXJzZXQg
b2YgUHJlZGVmaW5lZENvbG9yU3BhY2UsIHRoaXMgY2FuCisgICAgICAgIGZhaWwsIHNvIHRoaXMg
Y29udmVyc2lvbiByZXR1cm5zIGFuIE9wdGlvbmFsLgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyLmg6CisgICAgICAgIFN0dWIgb3V0IGluc3BlY3RvciBzdXBwb3J0IGZvciBJbWFnZURhdGFT
ZXR0aW5ncy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgVXNlIHRoZSBJbWFnZUJ1ZmZlcidzIGFjdHVhbCBjb2xvciBz
cGFjZSBhcyB0aGUgc291cmNlIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFuIGhhcmQg
Y29kaW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCisgICAg
ICAgIHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVtcG9yYXJ5
IHZhcmlhYmxlcy4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQ
aXhlbEJ1ZmZlcik6CisgICAgICAgIFVzZSB0aGUgSW1hZ2VCdWZmZXIncyBhY3R1YWwgY29sb3Ig
c3BhY2UgYXMgdGhlIGRlc3RpbmF0aW9uIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFu
IGhhcmQgY29kaW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9u
CisgICAgICAgIHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVt
cG9yYXJ5IHZhcmlhYmxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OlBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZm
ZXI6OnRha2VEYXRhKToKKyAgICAgICAgQWRkIGEgZmV3IGhlbHBlcnMgdG8gYWxsb3cgY3JlYXRp
b25nIHRvL2Zyb20gUGl4ZWxCdWZmZXIKKyAgICAgICAgYSBiaXQgZWFzaWVyLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgRml4IGlu
Y29ycmVjdCBhc3NlcnRpb24uIFdlIHdhbnQgdG8gYXNzZXJ0IHRoYXQgdGhlcmUgaXMgbm8gZXJy
b3IsIG5vdCB0aGF0CisgICAgICAgIHRoZXJlIGlzIG9uZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQpOgorICAgICAgICBTdG9wIGhhcmQgY29kaW5nIFNSR0IgZm9yIFBpeGVsQnVmZmVyIGNv
bG9yIHNwYWNlcyBhbmQgdXNlIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICBjb2xvciBzcGFjZSBm
b3IgdGhlIHRhc2suIFdlIHN0aWxsIGRvIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gdGhyb3VnaCBJ
bWFnZUJ1ZmZlcgorICAgICAgICBzbyB3ZSBzaG91bGQgY29tZSBiYWNrIGFuZCBzaW1wbGlmeSBj
b2RlIGhlcmUgdG8gbm90IGFsd2F5cyByZXF1aXJlIHRoYXQuCisKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnZpZGVvU2FtcGxl
QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFn
ZSk6CisgICAgICAgIFVwZGF0ZSB0byBzcGVjaWZ5IGEgY29sb3Igc3BhY2UgdG8gbWFpbnRhaW4g
ZXhpc3RpbmcgYmVoYXZpb3IuCisKIDIwMjEtMDUtMTUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgogCiAgICAgICAgIE1vdmUgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3Mg
ZG93biB0byBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlIHNvIGl0IGNhbiBiZSB1c2VkIHRo
ZXJlIChhbmQgdG8gc3VwcG9ydCBPZmZzY3JlZW5DYW52YXMpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjc3NTQzKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMTcsNiArMTAxNyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgaHRtbC9JbWFnZUJpdG1hcC5pZGwKICAgICBodG1sL0ltYWdlQml0bWFw
T3B0aW9ucy5pZGwKICAgICBodG1sL0ltYWdlRGF0YS5pZGwKKyAgICBodG1sL0ltYWdlRGF0YVNl
dHRpbmdzLmlkbAogICAgIGh0bWwvTWVkaWFDb250cm9sbGVyLmlkbAogICAgIGh0bWwvTWVkaWFF
bmNyeXB0ZWRFdmVudC5pZGwKICAgICBodG1sL01lZGlhRXJyb3IuaWRsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI3
NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMzYsNiArMTAzNiw3IEBAICQoUFJPSkVDVF9ESVIpL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvSW1hZ2VCaXRtYXAuaWRs
CiAkKFBST0pFQ1RfRElSKS9odG1sL0ltYWdlQml0bWFwT3B0aW9ucy5pZGwKICQoUFJPSkVDVF9E
SVIpL2h0bWwvSW1hZ2VEYXRhLmlkbAorJChQUk9KRUNUX0RJUikvaHRtbC9JbWFnZURhdGFTZXR0
aW5ncy5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbAogJChQUk9K
RUNUX0RJUikvaHRtbC9NZWRpYUVuY3J5cHRlZEV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvaHRt
bC9NZWRpYUVycm9yLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTgw
LDYgKzExODAsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTSW1hZ2VEYXRhLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZURhdGEuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZURhdGFTZXR0aW5ncy5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VEYXRhU2V0dGluZ3Mu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZVNt
b290aGluZ1F1YWxpdHkuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0ltYWdlU21vb3RoaW5nUXVhbGl0eS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0lubmVySFRNTC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjc3NTQzKQorKysgU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtODkwLDYgKzg5MCw3IEBAIEpTX0JJ
TkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9odG1sL0ltYWdlQml0bWFwLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9odG1sL0ltYWdlQml0bWFwT3B0aW9ucy5pZGwgXAogICAgICQoV2ViQ29y
ZSkvaHRtbC9JbWFnZURhdGEuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSW1hZ2VEYXRhU2V0
dGluZ3MuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9odG1sL01lZGlhRW5jcnlwdGVkRXZlbnQuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvTWVkaWFFcnJvci5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI3
NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0z
MjA3LDYgKzMyMDcsNyBAQCBKU0ltYWdlQml0bWFwT3B0aW9ucy5jcHAKIEpTSW1hZ2VCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0LmNwcAogSlNJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5n
cy5jcHAKIEpTSW1hZ2VEYXRhLmNwcAorSlNJbWFnZURhdGFTZXR0aW5ncy5jcHAKIEpTSW1hZ2VT
bW9vdGhpbmdRdWFsaXR5LmNwcAogSlNJbnB1dEV2ZW50LmNwcAogSlNJbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQwOTQsNiArNDA5NCw3IEBACiAJCUJDOTZEQjQzMEYzQTg4MEUwMDU3M0NCMyAvKiBSZW5k
ZXJCb3hNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM5NkRCNDIwRjNBODgwRTAwNTczQ0IzIC8qIFJlbmRlckJveE1vZGVsT2JqZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM5
N0UyM0ExMDkxNDQ5NTAwMTBEMzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTIzODEwOTE0NDk1MDAxMEQz
NjEgLyogSFRNTEFsbENvbGxlY3Rpb24uaCAqLzsgfTsKIAkJQkM5N0U0MTMxMDkxNTRGQTAwMTBE
MzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTdFNDExMTA5MTU0RkEwMDEwRDM2MSAvKiBKU0hUTUxBbGxD
b2xsZWN0aW9uLmggKi87IH07CisJCUJDQTA4OEY1MjY0RTFDMDgwMDNFMkE2QyAvKiBJbWFnZURh
dGFTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNBMDg4RjIyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNBMTY5QTMwQkZE
NTVCNDAwMTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTE2OUExMEJGRDU1QjQwMDE5Q0E3
NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmggKi87IH07CiAJCUJDQTI1NzE1MTI5M0Mw
MTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTI1NzE0MTI5M0MwMTAwMDdBMjYzRCAvKiBW
ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCAqLzsgfTsKIAkJQkNBMkIwNjExMDUwNDc2MDAwNDNCRDFD
IC8qIFVzZXJTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQTJCMDYwMTA1MDQ3NUYwMDQzQkQxQyAvKiBVc2VyU2NyaXB0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MzEzLDYgKzE0MzE0
LDggQEAKIAkJQkM5QTYxNDIxNDY4NTlEOTAwNjA1N0ZEIC8qIEV2ZW50TmFtZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RXZlbnROYW1lcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5QTYxNDUxNDY4
NTlEOTAwNjA1N0ZEIC8qIG1ha2VfZXZlbnRfZmFjdG9yeS5wbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSBt
YWtlX2V2ZW50X2ZhY3RvcnkucGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOUE2
MTQ2MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX25hbWVzLnBsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9IG1h
a2VfbmFtZXMucGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQTA4OEYyMjY0RTFC
RjkwMDNFMkE2QyAvKiBJbWFnZURhdGFTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURh
dGFTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0EwODhGNDI2NEUx
QkY5MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEltYWdlRGF0YVNldHRp
bmdzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMTY5QTAwQkZENTVCNDAw
MTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0ExNjlBMTBCRkQ1NUI0MDAxOUNBNzYgLyogSlNI
VE1MVGFibGVDYXB0aW9uRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQ0EyNTcxNDEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnRpY2FsUG9zaXRpb25DYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM5MjMsNiArMjM5MjYsOCBAQAogCQkJ
CUE3Nzk3OTEzMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuY3BwICovLAogCQkJCUE3Nzk3
OTE0MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCAqLywKIAkJCQlBNzc5NzkxNTBENkI5
RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmlkbCAqLywKKwkJCQlCQ0EwODhGMjI2NEUxQkY5MDAz
RTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaCAqLywKKwkJCQlCQ0EwODhGNDI2NEUxQkY5MDAz
RTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaWRsICovLAogCQkJCTk3MjA1QUIxMTIzOTI5MTAw
MEIxNzM4MCAvKiBJbWFnZURvY3VtZW50LmNwcCAqLywKIAkJCQk5NzIwNUFCMjEyMzkyOTEwMDBC
MTczODAgLyogSW1hZ2VEb2N1bWVudC5oICovLAogCQkJCUY1NUIzRDhEMTI1MUYxMkQwMDNFRjI2
OSAvKiBJbWFnZUlucHV0VHlwZS5jcHAgKi8sCkBAIC0zMjg4NCw2ICszMjg4OSw3IEBACiAJCQkJ
QjJBMTBEOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyUGlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0QzRTIxREQyMTgzNDQ0QTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0aWVz
Q0cuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFn
ZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDQTA4OEY1MjY0RTFDMDgwMDNFMkE2QyAvKiBJ
bWFnZURhdGFTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxOUZFQTgxRjU3Mzk3MjAw
MEM0MkZCIC8qIEltYWdlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxOUZFQUUxRjU3
NEI2RDAwMEM0MkZCIC8qIEltYWdlRGVjb2RlckFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
NDEsMzAgKzMxNDEsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7Ci0gICAgICAgIGlmICghYXJyYXkpIHsKLSAgICAgICAgICAgIGZhaWwoKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgIH0KLQogICAgICAgICBJbnRTaXplIGxvZ2lj
YWxTaXplID0gSW50U2l6ZShsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpOwogICAgICAgICBJ
bnRTaXplIGltYWdlRGF0YVNpemUgPSBsb2dpY2FsU2l6ZTsKICAgICAgICAgaW1hZ2VEYXRhU2l6
ZS5zY2FsZShyZXNvbHV0aW9uU2NhbGUpOwogCi0gICAgICAgIC8vIEZJWE1FOiBDcmVhdGluZyB0
aGlzIEltYWdlRGF0YSBpcyBub3QgbmVjZXNzYXJ5LiBXZSBzaG91bGQgc2tpcCByaWdodCB0byBj
cmVhdGluZyBhIFBpeGVsQnVmZmVyIGRpcmVjdGx5LgotICAgICAgICBhdXRvIGltYWdlRGF0YSA9
IEltYWdlRGF0YTo6Y3JlYXRlKGltYWdlRGF0YVNpemUsIGFycmF5LnJlbGVhc2VOb25OdWxsKCkp
OwotICAgICAgICBpZiAoIWltYWdlRGF0YSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdl
Qml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVj
U3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSk7CisgICAgICAgIGlmICghYnVmZmVyKSB7
CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2Jh
bE9iamVjdCksIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCByZXNv
bHV0aW9uU2NhbGUpOwotICAgICAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICBQaXhlbEJ1ZmZl
ckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGltYWdl
RGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBpZiAoIXBp
eGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgYnVmZmVyLT5wdXRQaXhlbEJ1ZmZlcihpbWFn
ZURhdGEtPnBpeGVsQnVmZmVyKCksIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7
CisgICAgICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCB7
IEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOwogCiAgICAgICAgIGF1dG8gYml0bWFw
ID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZShJbWFnZUJpdG1hcEJhY2tpbmcoV1RGTW92ZShidWZmZXIp
LCBPcHRpb25TZXQ8U2VyaWFsaXphdGlvblN0YXRlPjo6ZnJvbVJhdyhzZXJpYWxpemF0aW9uU3Rh
dGUpKSk7CiAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKGJpdG1hcCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGEuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1DaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gSW1h
Z2VEYXRhOjpkYXRhU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQorc3RhdGljIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBjb21wdXRlRGF0YVNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZERhdGFT
aXplID0gNDsKICAgICBjaGVja2VkRGF0YVNpemUgKj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNp
emUud2lkdGgoKSk7CkBAIC00Myw5ICs0MywxOCBAQCBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRP
dmVyZmxvdz4gSW1hZ2VECiAgICAgcmV0dXJuIGNoZWNrZWREYXRhU2l6ZTsKIH0KIAorUHJlZGVm
aW5lZENvbG9yU3BhY2UgSW1hZ2VEYXRhOjpjb21wdXRlQ29sb3JTcGFjZShPcHRpb25hbDxJbWFn
ZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MsIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xv
clNwYWNlKQoreworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+Y29sb3JTcGFjZSkKKyAg
ICAgICAgcmV0dXJuICpzZXR0aW5ncy0+Y29sb3JTcGFjZTsKKyAgICByZXR1cm4gZGVmYXVsdENv
bG9yU3BhY2U7Cit9CisKIFJlZjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKFBpeGVsQnVm
ZmVyJiYgcGl4ZWxCdWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRh
KFdURk1vdmUocGl4ZWxCdWZmZXIpKSk7CisgICAgYXV0byBjb2xvclNwYWNlID0gdG9QcmVkZWZp
bmVkQ29sb3JTcGFjZShwaXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNwYWNlKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChjb2xvclNwYWNlKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURh
dGEocGl4ZWxCdWZmZXIuc2l6ZSgpLCBwaXhlbEJ1ZmZlci50YWtlRGF0YSgpLCAqY29sb3JTcGFj
ZSkpOwogfQogCiBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShPcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlcikKQEAgLTU3LDQzICs2Niw2MyBAQCBSZWZQdHI8SW1h
Z2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShPcHRpCiAKIFJlZlB0cjxJbWFnZURhdGE+IEltYWdl
RGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgYXV0byBkYXRhU2l6ZSA9
IEltYWdlRGF0YTo6ZGF0YVNpemUoc2l6ZSk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVE
YXRhU2l6ZShzaXplKTsKICAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXplLnVuc2FmZUdldCgpKTsKICAgICBpZiAo
IWJ5dGVBcnJheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
IH0sIHNpemUsIGJ5dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0pKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZURhdGEoc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCksIFBy
ZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCKSk7CiB9CiAKLVJlZlB0cjxJbWFnZURhdGE+IEltYWdl
RGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxVaW50OENsYW1wZWRBcnJheT4m
JiBieXRlQXJyYXkpCitSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJ
bnRTaXplJiBzaXplLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5LCBQcmVkZWZp
bmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIGF1dG8gZGF0YVNpemUgPSBJbWFnZURh
dGE6OmRhdGFTaXplKHNpemUpOwotICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwg
ZGF0YVNpemUudW5zYWZlR2V0KCkgPiBieXRlQXJyYXktPmxlbmd0aCgpKQorICAgIGF1dG8gZGF0
YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJm
bG93ZWQoKSB8fCBkYXRhU2l6ZS51bnNhZmVHZXQoKSAhPSBieXRlQXJyYXktPmxlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
RGF0YSh7IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCBzaXplLCBXVEZNb3Zl
KGJ5dGVBcnJheSkgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXpl
LCBXVEZNb3ZlKGJ5dGVBcnJheSksIGNvbG9yU3BhY2UpKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVm
PEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCkK
K0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgcm93cywgdW5zaWduZWQgcGl4ZWxzUGVyUm93LCBQcmVkZWZpbmVkQ29sb3JT
cGFjZSBkZWZhdWx0Q29sb3JTcGFjZSwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRp
bmdzKQoreworICAgIEludFNpemUgc2l6ZShyb3dzLCBwaXhlbHNQZXJSb3cpOworICAgIGF1dG8g
ZGF0YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CisgICAgaWYgKGRhdGFTaXplLmhhc092
ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJDYW5u
b3QgYWxsb2NhdGUgYSBidWZmZXIgb2YgdGhpcyBzaXplIl9zIH07CisKKyAgICBhdXRvIGJ5dGVB
cnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXpl
LnVuc2FmZUdldCgpKTsKKyAgICBpZiAoIWJ5dGVBcnJheSkgeworICAgICAgICAvLyBGSVhNRTog
RG9lcyB0aGlzIG5lZWQgdG8gYmUgYSAicmVhbCIgb3V0IG9mIG1lbW9yeSBlcnJvciB3aXRoIHNl
dE91dE9mTWVtb3J5RXJyb3IgY2FsbGVkIG9uIGl0PworICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgUmFuZ2VFcnJvciwgIk91dCBvZiBtZW1vcnkiX3MgfTsKKyAgICB9CisKKyAgICBhdXRvIGNv
bG9yU3BhY2UgPSBjb21wdXRlQ29sb3JTcGFjZShzZXR0aW5ncywgZGVmYXVsdENvbG9yU3BhY2Up
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplLCBieXRlQXJyYXkucmVs
ZWFzZU5vbk51bGwoKSwgY29sb3JTcGFjZSkpOworfQorCitFeGNlcHRpb25PcjxSZWY8SW1hZ2VE
YXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoLCBPcHRpb25h
bDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCiB7CiAgICAgaWYgKCFzdyB8fCAhc2gpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworCiAgICAgSW50U2l6
ZSBzaXplKHN3LCBzaCk7Ci0gICAgYXV0byBkYXRhU2l6ZSA9IEltYWdlRGF0YTo6ZGF0YVNpemUo
c2l6ZSk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXplKTsKICAgICBp
ZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
UmFuZ2VFcnJvciwgIkNhbm5vdCBhbGxvY2F0ZSBhIGJ1ZmZlciBvZiB0aGlzIHNpemUiX3MgfTsK
KwogICAgIGF1dG8gYnl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQoZGF0YVNpemUudW5zYWZlR2V0KCkpOwogICAgIGlmICghYnl0ZUFycmF5KSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgbmVlZCB0byBiZSBhICJyZWFsIiBvdXQgb2YgbWVt
b3J5IGVycm9yIHdpdGggc2V0T3V0T2ZNZW1vcnlFcnJvciBjYWxsZWQgb24gaXQ/CiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiT3V0IG9mIG1lbW9yeSJfcyB9OwogICAg
IH0KICAgICBieXRlQXJyYXktPnplcm9GaWxsKCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW1hZ2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHNpemUsIGJ5
dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0pKTsKKworICAgIGF1dG8gY29sb3JTcGFjZSA9IGNv
bXB1dGVDb2xvclNwYWNlKHNldHRpbmdzKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFn
ZURhdGEoc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCksIGNvbG9yU3BhY2UpKTsKIH0K
IAotRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKFJlZjxVaW50
OENsYW1wZWRBcnJheT4mJiBieXRlQXJyYXksIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNpZ25l
ZD4gc2gpCitFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGUoUmVm
PFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwgdW5zaWduZWQgc3csIE9wdGlvbmFsPHVu
c2lnbmVkPiBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKQogewogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGJ5dGVBcnJheS0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgg
fHwgbGVuZ3RoICUgNCkKQEAgLTEwNywyMiArMTM2LDI4IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFn
ZURhdGE+PiBJbWFnZURhdGE6OmMKICAgICBpZiAoc2ggJiYgc2gudmFsdWUoKSAhPSBoZWlnaHQp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciwgInNoIHZhbHVlIGlz
IG5vdCBlcXVhbCB0byBoZWlnaHQiX3MgfTsKIAotICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlKElu
dFNpemUoc3csIGhlaWdodCksIFdURk1vdmUoYnl0ZUFycmF5KSk7Ci0gICAgaWYgKCFyZXN1bHQp
CisgICAgSW50U2l6ZSBzaXplKHN3LCBoZWlnaHQpOworICAgIGF1dG8gZGF0YVNpemUgPSBjb21w
dXRlRGF0YVNpemUoc2l6ZSk7CisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBk
YXRhU2l6ZS51bnNhZmVHZXQoKSAhPSBieXRlQXJyYXktPmxlbmd0aCgpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgUmFuZ2VFcnJvciB9OwotICAgIHJldHVybiByZXN1bHQucmVsZWFzZU5v
bk51bGwoKTsKKworICAgIGF1dG8gY29sb3JTcGFjZSA9IGNvbXB1dGVDb2xvclNwYWNlKHNldHRp
bmdzKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoc2l6ZSwgV1RGTW92ZShi
eXRlQXJyYXkpLCBjb2xvclNwYWNlKSk7CiB9CiAKLUltYWdlRGF0YTo6SW1hZ2VEYXRhKFBpeGVs
QnVmZmVyJiYgcGl4ZWxCdWZmZXIpCi0gICAgOiBtX3BpeGVsQnVmZmVyKFdURk1vdmUocGl4ZWxC
dWZmZXIpKQorSW1hZ2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVmPEpT
Qzo6VWludDhDbGFtcGVkQXJyYXk+JiYgZGF0YSwgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKKyAgICA6IG1fc2l6ZShzaXplKQorICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCisg
ICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKIHsKIH0KIAogSW1hZ2VEYXRhOjp+SW1hZ2VE
YXRhKCkgPSBkZWZhdWx0OwogCi1SZWY8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmRlZXBDbG9uZSgp
IGNvbnN0CitQaXhlbEJ1ZmZlciBJbWFnZURhdGE6OnBpeGVsQnVmZmVyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEobV9waXhlbEJ1ZmZlci5kZWVwQ2xvbmUo
KSkpOworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCB0b0Rlc3RpbmF0aW9uQ29s
b3JTcGFjZShtX2NvbG9yU3BhY2UpIH07CisgICAgcmV0dXJuIHsgZm9ybWF0LCBtX3NpemUsIG1f
ZGF0YS5nZXQoKSB9OwogfQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEu
aAkocmV2aXNpb24gMjc3NTQzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJJbWFnZURhdGFTZXR0aW5ncy5oIgorI2luY2x1
ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgorI2luY2x1ZGUgIlByZWRl
ZmluZWRDb2xvclNwYWNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhDbGFtcGVk
QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTM4LDI5ICs0MywzMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxJbWFnZURhdGE+IGNyZWF0ZShQaXhlbEJ1ZmZlciYmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKE9wdGlvbmFsPFBpeGVsQnVmZmVyPiYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNv
bnN0IEludFNpemUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0
YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRl
KHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYm
LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBSZWY8VWlu
dDhDbGFtcGVkQXJyYXk+JiYsIFByZWRlZmluZWRDb2xvclNwYWNlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgcm93cywgdW5zaWduZWQgcGl4ZWxzUGVyUm93LCBQcmVkZWZpbmVkQ29sb3JT
cGFjZSBkZWZhdWx0Q29sb3JTcGFjZSwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+ID0gV1RG
OjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPElt
YWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gsIE9wdGlvbmFsPEltYWdl
RGF0YVNldHRpbmdzPik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25lZCBz
dywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4pOwor
CiAgICAgV0VCQ09SRV9FWFBPUlQgfkltYWdlRGF0YSgpOwogCi0gICAgY29uc3QgSW50U2l6ZSYg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxCdWZmZXIuc2l6ZSgpOyB9Ci0gICAgaW50IHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKTsgfQotICAg
IGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsQnVmZmVyLnNpemUoKS5oZWlnaHQo
KTsgfQorICAgIHN0YXRpYyBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb21wdXRlQ29sb3JTcGFjZShP
cHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4sIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRD
b2xvclNwYWNlID0gUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0IpOwogCi0gICAgVWludDhDbGFt
cGVkQXJyYXkmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsQnVmZmVyLmRhdGEoKTsgfQor
ICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAotICAg
IFJlZjxJbWFnZURhdGE+IGRlZXBDbG9uZSgpIGNvbnN0OworICAgIGludCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOyB9CisgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZS5oZWlnaHQoKTsgfQorICAgIFVpbnQ4Q2xhbXBlZEFycmF5JiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29s
b3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQogCi0gICAgY29uc3QgUGl4
ZWxCdWZmZXImIHBpeGVsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEJ1ZmZlcjsgfQor
ICAgIFBpeGVsQnVmZmVyIHBpeGVsQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgSW1hZ2VEYXRhKFBpeGVsQnVmZmVyJiYpOwotCi0gICAgc3RhdGljIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBkYXRhU2l6ZShjb25zdCBJbnRTaXplJik7CisgICAgZXhw
bGljaXQgSW1hZ2VEYXRhKGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJh
eT4mJiwgUHJlZGVmaW5lZENvbG9yU3BhY2UpOwogCi0gICAgUGl4ZWxCdWZmZXIgbV9waXhlbEJ1
ZmZlcjsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJh
eT4gbV9kYXRhOworICAgIFByZWRlZmluZWRDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsKIH07CiAK
LVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJl
YW0mLCBjb25zdCBJbWFnZURhdGEmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEltYWdlRGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCShyZXZpc2lvbiAyNzc1NDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMiwxMCArMzIsMTEgQEAKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKICAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBJbWFnZURhdGEgewotICAg
IGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgc3csIHVuc2lnbmVkIGxvbmcgc2gpOwotICAgIGNv
bnN0cnVjdG9yKFVpbnQ4Q2xhbXBlZEFycmF5IGRhdGEsIHVuc2lnbmVkIGxvbmcgc3csIG9wdGlv
bmFsIHVuc2lnbmVkIGxvbmcgc2gpOworICAgIGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgc3cs
IHVuc2lnbmVkIGxvbmcgc2gsIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIHNldHRpbmdzKTsK
KyAgICBjb25zdHJ1Y3RvcihVaW50OENsYW1wZWRBcnJheSBkYXRhLCB1bnNpZ25lZCBsb25nIHN3
LCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIHNoLCBvcHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBz
ZXR0aW5ncyk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFVpbnQ4Q2xhbXBlZEFycmF5IGRhdGE7CisgICAgW0VuYWJsZWRCeVNldHRp
bmc9Q2FudmFzQ29sb3JTcGFjZV0gcmVhZG9ubHkgYXR0cmlidXRlIFByZWRlZmluZWRDb2xvclNw
YWNlIGNvbG9yU3BhY2U7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGFT
ZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0
dGluZ3MuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNl
dHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKKyNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSW1hZ2VE
YXRhU2V0dGluZ3MgeworICAgIE9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiBjb2xvclNw
YWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2NhbnZhcy5odG1sI2ltYWdlZGF0YXNldHRpbmdzCitkaWN0aW9uYXJ5IEltYWdlRGF0YVNl
dHRpbmdzIHsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1DYW52YXNDb2xvclNwYWNlXSBQcmVkZWZp
bmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc0ltYWdlRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkocmV2aXNpb24gMjc3NTQzKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiw5ICsyNiw5IEBACiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9jYW52YXMuaHRtbCNjYW52YXNpbWFnZWRhdGEKIGludGVyZmFjZSBtaXhpbiBDYW52YXNJbWFn
ZURhdGEgewogICAgIC8vIHBpeGVsIG1hbmlwdWxhdGlvbgotICAgIEltYWdlRGF0YSBjcmVhdGVJ
bWFnZURhdGEoW0VuZm9yY2VSYW5nZV0gbG9uZyBzdywgW0VuZm9yY2VSYW5nZV0gbG9uZyBzaCk7
CisgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShbRW5mb3JjZVJhbmdlXSBsb25nIHN3LCBb
RW5mb3JjZVJhbmdlXSBsb25nIHNoLCBvcHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBzZXR0aW5n
cyk7CiAgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShJbWFnZURhdGEgaW1hZ2VkYXRhKTsK
LSAgICBJbWFnZURhdGEgZ2V0SW1hZ2VEYXRhKFtFbmZvcmNlUmFuZ2VdIGxvbmcgc3gsIFtFbmZv
cmNlUmFuZ2VdIGxvbmcgc3ksIFtFbmZvcmNlUmFuZ2VdIGxvbmcgc3csIFtFbmZvcmNlUmFuZ2Vd
IGxvbmcgc2gpOworICAgIEltYWdlRGF0YSBnZXRJbWFnZURhdGEoW0VuZm9yY2VSYW5nZV0gbG9u
ZyBzeCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBzeSwgW0VuZm9yY2VSYW5nZV0gbG9uZyBzdywgW0Vu
Zm9yY2VSYW5nZV0gbG9uZyBzaCwgb3B0aW9uYWwgSW1hZ2VEYXRhU2V0dGluZ3Mgc2V0dGluZ3Mp
OwogICAgIHVuZGVmaW5lZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhIGltYWdlZGF0YSwgW0VuZm9y
Y2VSYW5nZV0gbG9uZyBkeCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBkeSk7CiAgICAgdW5kZWZpbmVk
IHB1dEltYWdlRGF0YShJbWFnZURhdGEgaW1hZ2VkYXRhLCBbRW5mb3JjZVJhbmdlXSBsb25nIGR4
LCBbRW5mb3JjZVJhbmdlXSBsb25nIGR5LCBbRW5mb3JjZVJhbmdlXSBsb25nIGRpcnR5WCwgW0Vu
Zm9yY2VSYW5nZV0gbG9uZyBkaXJ0eVksIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZGlydHlXaWR0aCwg
W0VuZm9yY2VSYW5nZV0gbG9uZyBkaXJ0eUhlaWdodCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUy
LDM5ICsyMTUyLDUwIEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bmVlZHMK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVF
bXB0eUltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQorc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZUVtcHR5SW1hZ2VEYXRhKGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhKQogewotICAgIGF1dG8g
ZGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKHNpemUpOwotICAgIGlmIChkYXRhKQotICAgICAgICBk
YXRhLT5kYXRhKCkuemVyb0ZpbGwoKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGluaXRpYWxpemluZyB0aGUgSW1hZ2VEYXRhIHdoZW4gc2V0dGluZ3Mu
YWxwaGEgaXMgZmFsc2UsIHJlcXVpcmluZworICAgIC8vIGV2ZXJ5IDR0aCBieXRlIHRvIGJlIDB4
RkYuCisKKyAgICBpbWFnZURhdGEuZGF0YSgpLnplcm9GaWxsKCk7CiB9CiAKLVJlZlB0cjxJbWFn
ZURhdGE+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShJbWFn
ZURhdGEmIGltYWdlRGF0YSkgY29uc3QKK0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEoSW1hZ2VEYXRhJiBpbWFn
ZURhdGEpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0
YS5zaXplKCkpOworICAgIGF1dG8gbmV3SW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGVVbmlu
aXRpYWxpemVkKGltYWdlRGF0YS53aWR0aCgpLCBpbWFnZURhdGEuaGVpZ2h0KCksIGltYWdlRGF0
YS5jb2xvclNwYWNlKCkpOworICAgIGlmIChuZXdJbWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBuZXdJbWFnZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgaW5p
dGlhbGl6ZUVtcHR5SW1hZ2VEYXRhKG5ld0ltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKworICAg
IHJldHVybiBuZXdJbWFnZURhdGE7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+
PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEoaW50IHN3LCBp
bnQgc2gpIGNvbnN0CitFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6Y3JlYXRlSW1hZ2VEYXRhKGludCBzdywgaW50IHNoLCBPcHRpb25hbDxJ
bWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpIGNvbnN0CiB7CiAgICAgaWYgKCFzdyB8fCAhc2gp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwogCi0gICAgSW50
U2l6ZSBzaXplIHsgc3RkOjphYnMoc3cpLCBzdGQ6OmFicyhzaCkgfTsKLSAgICByZXR1cm4gY3Jl
YXRlRW1wdHlJbWFnZURhdGEoc2l6ZSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RkOjphYnMoc3cpLCBzdGQ6OmFicyhzaCksIG1fc2V0dGlu
Z3MuY29sb3JTcGFjZSwgc2V0dGluZ3MpOworICAgIGlmIChpbWFnZURhdGEuaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBpbWFnZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAg
aW5pdGlhbGl6ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKworICAg
IHJldHVybiBpbWFnZURhdGE7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURhdGEoaW50IHN4LCBpbnQgc3ks
IGludCBzdywgaW50IHNoKSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0YShpbnQgc3gsIGludCBzeSwgaW50
IHN3LCBpbnQgc2gsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncykgY29uc3QK
IHsKKyAgICBpZiAoIXN3IHx8ICFzaCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4
U2l6ZUVycm9yIH07CisKICAgICBpZiAoIWNhbnZhc0Jhc2UoKS5vcmlnaW5DbGVhbigpKSB7CiAg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKE1BS0Vf
U1RBVElDX1NUUklOR19JTVBMKCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMg
YmVjYXVzZSB0aGUgY2FudmFzIGhhcyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRhdGEu
IikpOwogICAgICAgICBjYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJv
ciwgY29uc29sZU1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlF
cnJvciB9OwogICAgIH0KIAotICAgIGlmICghc3cgfHwgIXNoKQotICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKLQogICAgIGlmIChzdyA8IDApIHsKICAgICAgICAg
c3ggKz0gc3c7CiAgICAgICAgIHN3ID0gLXN3OwpAQCAtMjE5NywxMCArMjIwOCwxOSBAQCBFeGNl
cHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuCiAgICAgSW50UmVjdCBpbWFnZURh
dGFSZWN0IHsgc3gsIHN5LCBzdywgc2ggfTsKIAogICAgIEltYWdlQnVmZmVyKiBidWZmZXIgPSBj
YW52YXNCYXNlKCkuYnVmZmVyKCk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBj
cmVhdGVFbXB0eUltYWdlRGF0YShpbWFnZURhdGFSZWN0LnNpemUoKSk7CisgICAgaWYgKCFidWZm
ZXIpIHsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoaW1hZ2VEYXRhUmVjdC53aWR0aCgpLCBpbWFnZURhdGFSZWN0LmhlaWdodCgpLCBtX3Nl
dHRpbmdzLmNvbG9yU3BhY2UsIHNldHRpbmdzKTsKKyAgICAgICAgaWYgKGltYWdlRGF0YS5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBpbWFnZURhdGEucmVsZWFzZUV4Y2VwdGlv
bigpOworCisgICAgICAgIGluaXRpYWxpemVFbXB0eUltYWdlRGF0YShpbWFnZURhdGEucmV0dXJu
VmFsdWUoKSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gaW1hZ2VEYXRhOworICAgIH0KKwor
ICAgIGF1dG8gY29tcHV0ZWRDb2xvclNwYWNlID0gSW1hZ2VEYXRhOjpjb21wdXRlQ29sb3JTcGFj
ZShzZXR0aW5ncywgbV9zZXR0aW5ncy5jb2xvclNwYWNlKTsKIAotICAgIFBpeGVsQnVmZmVyRm9y
bWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhl
bEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoY29tcHV0
ZWRDb2xvclNwYWNlKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBidWZmZXItPmdldFBpeGVs
QnVmZmVyKGZvcm1hdCwgaW1hZ2VEYXRhUmVjdCk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewog
ICAgICAgICBjYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5oCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRl
ICJJbWFnZURhdGFTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkltYWdlU21vb3RoaW5nUXVhbGl0eS5o
IgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCkBAIC0xOTEs
OSArMTkyLDkgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxDYW52YXNHcmFkaWVudD4+
IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0
IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQ
YXR0ZXJuPj4gY3JlYXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSYmLCBjb25zdCBTdHJpbmcm
IHJlcGV0aXRpb24pOwogCi0gICAgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlSW1hZ2VEYXRhKElt
YWdlRGF0YSYpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBjcmVh
dGVJbWFnZURhdGEoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdDsKLSAgICBFeGNlcHRpb25P
cjxSZWZQdHI8SW1hZ2VEYXRhPj4gZ2V0SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQgc3cs
IGludCBzaCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZUlt
YWdlRGF0YShJbWFnZURhdGEmKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRh
Pj4gY3JlYXRlSW1hZ2VEYXRhKGludCB3aWR0aCwgaW50IGhlaWdodCwgT3B0aW9uYWw8SW1hZ2VE
YXRhU2V0dGluZ3M+KSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gZ2V0
SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1hZ2VE
YXRhU2V0dGluZ3M+KSBjb25zdDsKICAgICB2b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEmLCBp
bnQgZHgsIGludCBkeSk7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiwgaW50IGR4
LCBpbnQgZHksIGludCBkaXJ0eVgsIGludCBkaXJ0eVksIGludCBkaXJ0eVdpZHRoLCBpbnQgZGly
dHlIZWlnaHQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVk
Q29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
UHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDQgKzQ1LDIzIEBAIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29s
b3IKICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOwogfQogCitPcHRpb25h
bDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAg
ICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIFByZWRl
ZmluZWRDb2xvclNwYWNlOjpTUkdCOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFD
RV9MSU5FQVJfU1JHQikKKyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QjoKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNU
SU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVybiBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6
RGlzcGxheVAzOworI2VuZGlmCisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCShyZXZpc2lvbiAyNzc1NDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzksNiArNDAsNyBAQCBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xv
clNwYWNlIHsKIH07CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3JT
cGFjZShQcmVkZWZpbmVkQ29sb3JTcGFjZSk7CitPcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFj
ZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOwogCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCShy
ZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDYgKzQyOCwxMiBAQCBPcHRpb25hbDxJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jCiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JE
YXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlRGF0YSB9fTsKIH0KIAor
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YVNldHRpbmdzJikKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKIE9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZVNtb290aGluZ1F1YWxpdHkgYXJndW1l
bnQpCiB7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpTdHJpbmcgfX07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXIuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkltYWdl
RGF0YVNldHRpbmdzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazsKIGNsYXNzIFdl
YkdMVW5pZm9ybUxvY2F0aW9uOwogY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDsKIHN0cnVj
dCBET01NYXRyaXgyREluaXQ7CitzdHJ1Y3QgSW1hZ2VEYXRhU2V0dGluZ3M7CiBlbnVtIGNsYXNz
IFJlY29yZGluZ1N3aXp6bGVUeXBlIDogaW50OwogZW51bSBjbGFzcyBDYW52YXNEaXJlY3Rpb247
CiBlbnVtIGNsYXNzIENhbnZhc0ZpbGxSdWxlOwpAQCAtMTUwLDYgKzE1MSw3IEBAIGVudW0gSW1h
Z2VTbW9vdGhpbmdRdWFsaXR5OwogICAgIG1hY3JvKEhUTUxJbWFnZUVsZW1lbnQqKSBcCiAgICAg
bWFjcm8oSW1hZ2VCaXRtYXAqKSBcCiAgICAgbWFjcm8oSW1hZ2VEYXRhKikgXAorICAgIG1hY3Jv
KEltYWdlRGF0YVNldHRpbmdzJikgXAogICAgIG1hY3JvKEltYWdlU21vb3RoaW5nUXVhbGl0eSkg
XAogICAgIG1hY3JvKE9wdGlvbmFsPGZsb2F0PiYpIFwKICAgICBtYWNybyhQYXRoMkQqKSBcCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNiw2ICsxMTYsOSBAQCBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JH
CiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVm
ZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBkZXN0aW5hdGlvbkZvcm1hdCwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgdm9pZCogZGF0YSkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogQWRk
IHN1cHBvcnQgZm9yIG5vbiA4LWJpdCBwaXhlbCBmb3JtYXRzLgorICAgIEFTU0VSVChkZXN0aW5h
dGlvbkZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZGVzdGluYXRp
b25Gb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKwogICAgIGF1dG8g
c291cmNlUmVjdFNjYWxlZCA9IHRvQmFja2VuZENvb3JkaW5hdGVzKHNvdXJjZVJlY3QpOwogCiAg
ICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZGVzdGluYXRpb25G
b3JtYXQsIHNvdXJjZVJlY3RTY2FsZWQuc2l6ZSgpKTsKQEAgLTEzNCwyMyArMTM3LDE1IEBAIE9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQKICAgICBpZiAoZGVzdGluYXRp
b25SZWN0LnNpemUoKSAhPSBzb3VyY2VSZWN0U2NhbGVkLnNpemUoKSkKICAgICAgICAgcGl4ZWxC
dWZmZXItPmRhdGEoKS56ZXJvRmlsbCgpOwogCi0gICAgdW5zaWduZWQgc291cmNlQnl0ZXNQZXJS
b3cgPSBieXRlc1BlclJvdygpOwotICAgIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZVJvd3MgPSByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNv
dXJjZUJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNDsKLQotICAgIHVuc2ln
bmVkIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgPSA0ICogc291cmNlUmVjdFNjYWxlZC53aWR0aCgp
OwotICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uUm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0
YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgKyBkZXN0
aW5hdGlvblJlY3QueCgpICogNDsKLQotICAgIFBpeGVsQnVmZmVyRm9ybWF0IHNvdXJjZUZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OwotCiAgICAgQ29uc3RQaXhlbEJ1ZmZlckNv
bnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0gc291cmNlRm9ybWF0Owot
ICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IHNvdXJjZUJ5dGVzUGVyUm93OwotICAgIHNvdXJjZS5y
b3dzID0gc291cmNlUm93czsKKyAgICBzb3VyY2UuZm9ybWF0ID0geyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfTsKKyAg
ICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOworICAgIHNvdXJjZS5yb3dzID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkg
KiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OwogICAgIAog
ICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247CiAgICAgZGVzdGluYXRp
b24uZm9ybWF0ID0gZGVzdGluYXRpb25Gb3JtYXQ7Ci0gICAgZGVzdGluYXRpb24uYnl0ZXNQZXJS
b3cgPSBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OwotICAgIGRlc3RpbmF0aW9uLnJvd3MgPSBkZXN0
aW5hdGlvblJvd3M7CisgICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSA0ICogc291cmNlUmVj
dFNjYWxlZC53aWR0aCgpOworICAgIGRlc3RpbmF0aW9uLnJvd3MgPSBwaXhlbEJ1ZmZlci0+ZGF0
YSgpLmRhdGEoKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJv
dyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxzKHNv
dXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCkBAIC0xNTksMTQg
KzE1NCwxNCBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZmZXJCYWNrZW5kCiAKIHZv
aWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYg
c291cmNlUGl4ZWxCdWZmZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0aW5hdGlvblBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RpbmF0aW9u
QWxwaGFGb3JtYXQsIHZvaWQqIGRhdGEpCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZv
ciBub24tUkdCQTggcGl4ZWwgZm9ybWF0cy4KLSAgICBBU1NFUlQoc291cmNlUGl4ZWxCdWZmZXIu
Zm9ybWF0KCkucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4KTsKKyAgICAvLyBGSVhN
RTogQWRkIHN1cHBvcnQgZm9yIG5vbiA4LWJpdCBwaXhlbCBmb3JtYXRzLgorICAgIEFTU0VSVChz
b3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKS5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdC
QTggfHwgc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCkucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKIAogICAgIGF1dG8gc291cmNlUmVjdFNjYWxlZCA9IHRvQmFja2VuZENvb3Jk
aW5hdGVzKHNvdXJjZVJlY3QpOwogICAgIGF1dG8gZGVzdGluYXRpb25Qb2ludFNjYWxlZCA9IHRv
QmFja2VuZENvb3JkaW5hdGVzKGRlc3RpbmF0aW9uUG9pbnQpOwogCi0gICAgSW50UmVjdCBzb3Vy
Y2VSZWN0Q2xpcHBlZCA9IGludGVyc2VjdGlvbih7IEludFBvaW50Ojp6ZXJvKCksIHNvdXJjZVBp
eGVsQnVmZmVyLnNpemUoKSB9LCBzb3VyY2VSZWN0U2NhbGVkKTsKLSAgICBJbnRSZWN0IGRlc3Rp
bmF0aW9uUmVjdCA9IHNvdXJjZVJlY3RDbGlwcGVkOworICAgIGF1dG8gc291cmNlUmVjdENsaXBw
ZWQgPSBpbnRlcnNlY3Rpb24oeyBJbnRQb2ludDo6emVybygpLCBzb3VyY2VQaXhlbEJ1ZmZlci5z
aXplKCkgfSwgc291cmNlUmVjdFNjYWxlZCk7CisgICAgYXV0byBkZXN0aW5hdGlvblJlY3QgPSBz
b3VyY2VSZWN0Q2xpcHBlZDsKICAgICBkZXN0aW5hdGlvblJlY3QubW92ZUJ5KGRlc3RpbmF0aW9u
UG9pbnRTY2FsZWQpOwogCiAgICAgaWYgKHNvdXJjZVJlY3RTY2FsZWQueCgpIDwgMCkKQEAgLTE3
OCwyNCArMTczLDE1IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcigK
ICAgICBkZXN0aW5hdGlvblJlY3QuaW50ZXJzZWN0KGJhY2tlbmRSZWN0KCkpOwogICAgIHNvdXJj
ZVJlY3RDbGlwcGVkLnNldFNpemUoZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKLSAgICB1bnNp
Z25lZCBzb3VyY2VCeXRlc1BlclJvdyA9IDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lk
dGgoKTsKLSAgICBjb25zdCB1aW50OF90KiBzb3VyY2VSb3dzID0gc291cmNlUGl4ZWxCdWZmZXIu
ZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZUJ5dGVzUGVyUm93
ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNDsKLQotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9u
Qnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uUm93
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRpb25SZWN0Lnko
KSAqIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNDsKLQot
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IHNvdXJjZUZvcm1hdCA9IHNvdXJjZVBpeGVsQnVmZmVyLmZv
cm1hdCgpOwotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGRlc3RpbmF0aW9uRm9ybWF0IHsgZGVzdGlu
YXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCIH07Ci0KICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAg
IHNvdXJjZS5mb3JtYXQgPSBzb3VyY2VGb3JtYXQ7Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0g
c291cmNlQnl0ZXNQZXJSb3c7Ci0gICAgc291cmNlLnJvd3MgPSBzb3VyY2VSb3dzOwotICAgIAor
ICAgIHNvdXJjZS5mb3JtYXQgPSBzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKTsKKyAgICBzb3Vy
Y2UuYnl0ZXNQZXJSb3cgPSA0ICogc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRoKCk7Cisg
ICAgc291cmNlLnJvd3MgPSBzb3VyY2VQaXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291cmNl
UmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQu
eCgpICogNDsKKwogICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247Ci0g
ICAgZGVzdGluYXRpb24uZm9ybWF0ID0gZGVzdGluYXRpb25Gb3JtYXQ7Ci0gICAgZGVzdGluYXRp
b24uYnl0ZXNQZXJSb3cgPSBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OwotICAgIGRlc3RpbmF0aW9u
LnJvd3MgPSBkZXN0aW5hdGlvblJvd3M7CisgICAgZGVzdGluYXRpb24uZm9ybWF0ID0geyBkZXN0
aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfTsKKyAgICBk
ZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7CisgICAgZGVzdGluYXRpb24u
cm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRpb25SZWN0
LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7
CiAKICAgICBjb252ZXJ0SW1hZ2VQaXhlbHMoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRp
b25SZWN0LnNpemUoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDYgKzY2LDIyIEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3IK
ICAgICByZXR1cm4geyB7IGZvcm1hdCwgc2l6ZSwgcGl4ZWxBcnJheS5yZWxlYXNlTm9uTnVsbCgp
IH0gfTsKIH0KIAorT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVm
PEpTQzo6QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIpCit7CisgICAgLy8gTk9URTogT25seSA4
LWJpdCBmb3JtYXRzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLgorICAgIEFTU0VSVChmb3JtYXQu
cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC5waXhlbEZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworCisgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1
ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKKyAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2Vk
KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKGJ1ZmZlclNpemUudW5z
YWZlR2V0KCkgIT0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBidWZmZXJTaXplLnVuc2FmZUdldCgpKTsK
KyAgICBpZiAoIXBpeGVsQXJyYXkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9IH07
Cit9CisKIFBpeGVsQnVmZmVyOjpQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYg
Zm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4m
JiBkYXRhKQogICAgIDogbV9mb3JtYXQgeyBmb3JtYXQgfQogICAgICwgbV9zaXplIHsgc2l6ZSB9
CkBAIC03NCw2ICs5MCwxNCBAQCBQaXhlbEJ1ZmZlcjo6UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9zaXpl
LmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOwogfQogCitQaXhl
bEJ1ZmZlcjo6UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYgZGF0YSkKKyAgICA6IG1f
Zm9ybWF0IHsgZm9ybWF0IH0KKyAgICAsIG1fc2l6ZSB7IHNpemUgfQorICAgICwgbV9kYXRhIHsg
ZGF0YSB9Cit7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigo
bV9zaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworfQor
CiBQaXhlbEJ1ZmZlcjo6flBpeGVsQnVmZmVyKCkgPSBkZWZhdWx0OwogCiBQaXhlbEJ1ZmZlciBQ
aXhlbEJ1ZmZlcjo6ZGVlcENsb25lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkocmV2aXNpb24gMjc3NTQzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsOCArNDIsMTAgQEAgY2xhc3MgUGl4ZWxCdWZmZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFBpeGVsQnVmZmVyKTsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYsIGNvbnN0IEludFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IElu
dFNpemUmLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJik7CiAKICAgICBQaXhlbEJ1ZmZlcihjb25z
dCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50OENsYW1w
ZWRBcnJheT4mJik7CisgICAgUGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBj
b25zdCBJbnRTaXplJiwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5QaXhlbEJ1ZmZlcigpOwogCiAgICAgUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImJikgPSBk
ZWZhdWx0OwpAQCAtNTMsNiArNTUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIEpTQzo6VWludDhDbGFtcGVkQXJyYXkm
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAorICAgIFJlZjxKU0M6OlVp
bnQ4Q2xhbXBlZEFycmF5PiYmIHRha2VEYXRhKCkgeyByZXR1cm4gV1RGTW92ZShtX2RhdGEpOyB9
CisKICAgICBQaXhlbEJ1ZmZlciBkZWVwQ2xvbmUoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252
ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3NTQzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2
LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGUKIAog
ICAgICAgICB2SW1hZ2VfRXJyb3IgY29udmVydGVyQ3JlYXRlRXJyb3IgPSBrdkltYWdlTm9FcnJv
cjsKICAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBhZG9wdENGKHZJbWFnZUNvbnZlcnRlcl9DcmVh
dGVXaXRoQ0dJbWFnZUZvcm1hdCgmc291cmNlQ0dJbWFnZUZvcm1hdCwgJmRlc3RpbmF0aW9uQ0dJ
bWFnZUZvcm1hdCwgbnVsbHB0ciwga3ZJbWFnZU5vRmxhZ3MsICZjb252ZXJ0ZXJDcmVhdGVFcnJv
cikpOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChjb252ZXJ0ZXJDcmVhdGVF
cnJvciwgY29udmVydGVyQ3JlYXRlRXJyb3IgIT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252
ZXJ0ZXIgY3JlYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNyZWF0ZUVy
cm9yKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ3JlYXRl
RXJyb3IsIGNvbnZlcnRlckNyZWF0ZUVycm9yID09IGt2SW1hZ2VOb0Vycm9yLCAidkltYWdlQ29u
dmVydGVyIGNyZWF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiAlemQiLCBjb252ZXJ0ZXJDcmVhdGVF
cnJvcik7CiAKICAgICAgICAgdkltYWdlX0Vycm9yIGNvbnZlcnRlckNvbnZlcnRFcnJvciA9IHZJ
bWFnZUNvbnZlcnRfQW55VG9BbnkoY29udmVydGVyLmdldCgpLCAmc291cmNlVkltYWdlQnVmZmVy
LCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIG51bGxwdHIsIGt2SW1hZ2VOb0ZsYWdzKTsKICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ29udmVydEVycm9yLCBj
b252ZXJ0ZXJDb252ZXJ0RXJyb3IgPT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252ZXJ0X0Fu
eVRvQW55IGZhaWxlZCBjb252ZXJzaW9uIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNvbnZl
cnRFcnJvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
RmlsdGVyRWZmZWN0Ojpjb252CiAgICAgLy8gQ29sb3Igc3BhY2UgY29udmVyc2lvbiBoYXBwZW5z
IGludGVybmFsbHkgd2hlbiBkcmF3aW5nIGZyb20gb25lIGltYWdlIGJ1ZmZlciB0byBhbm90aGVy
CiAgICAgY29udmVydGVkQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGlucHV0QnVm
ZmVyLCByZWN0KTsKICAgICAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBvdXRwdXRB
bHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBvdXRwdXRBbHBoYUZvcm1hdCwg
UGl4ZWxGb3JtYXQ6OlJHQkE4LCB0YXJnZXRDb2xvclNwYWNlIH07CiAgICAgcmV0dXJuIGNvbnZl
cnRlZEJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCByZWN0KTsKIH0KIApAQCAtNTA0LDcg
KzUwNCw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWwKICAgICAg
ICAgICAgICAgICBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKGRlc3RpbmF0
aW9uLCAqY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCByZWN0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCIH07CisgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9y
ZXN1bHRDb2xvclNwYWNlIH07CiAgICAgICAgICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0
ID0gbV9pbWFnZUJ1ZmZlclJlc3VsdC0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCB7IEludFBvaW50
KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0pOwogICAgICAgICAgICAgaWYgKCFtX3Vu
bXVsdGlwbGllZEltYWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3
ICs1MTIsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsCiAgICAg
ICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAg
ICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNp
emUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKLSAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVk
SW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgaW5wdXRTaXplKTsK
ICAgICAgICAgICAgIGlmICghbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCkKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlQ
cmVtdWx0aXBsaWVkUmVzdQogICAgICAgICAgICAgICAgIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZl
clRvRGVzdGluYXRpb24oZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkLCByZWN0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxG
b3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAgICAgIG1fcHJlbXVs
dGlwbGllZEltYWdlUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlclJlc3VsdC0+Z2V0UGl4ZWxCdWZmZXIo
Zm9ybWF0LCB7IEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0pOwogICAg
ICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCkKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVt
dWx0aXBsaWVkUmVzdQogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBh
aW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5l
ZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7CiAgICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3Jt
YXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICAgICAgUGl4ZWxC
dWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGll
ZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAgICAg
IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3Jt
YXQsIGlucHV0U2l6ZSk7CiAgICAgICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU5MCw3ICs1OTAsNyBAQCBPcHRpb25h
bDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3JlCiAgICAgSW50U2l6ZSByZXN1bHRTaXpl
KG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpz
aXplTmVlZHNDbGFtcGluZyhyZXN1bHRTaXplKSk7CiAgICAgcmVzdWx0U2l6ZS5zY2FsZShtX2Zp
bHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9y
bWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1h
dDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JTcGFjZSB9OwogICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAg
cmV0dXJuIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CiB9CkBAIC02MDksNyArNjA5LDcgQEAg
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZQogICAgIEludFNpemUgcmVz
dWx0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1
ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVzdWx0U2l6ZSkpOwogICAgIHJlc3VsdFNpemUuc2Nh
bGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0
IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJH
QkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JTcGFjZSB9OwogICAgIG1fcHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHJlc3VsdFNpemUpOwog
ICAgIHJldHVybiBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMzMSw3ICs1MzMx
LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZAogICAgIGlmICgh
cmdiYSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VE
YXRhOjpjcmVhdGUocmdiYS5yZWxlYXNlTm9uTnVsbCgpLCB2aWRlb1NldHRpbmdzLndpZHRoKCks
IHZpZGVvU2V0dGluZ3MuaGVpZ2h0KCkpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRh
OjpjcmVhdGUocmdiYS5yZWxlYXNlTm9uTnVsbCgpLCB2aWRlb1NldHRpbmdzLndpZHRoKCksIHZp
ZGVvU2V0dGluZ3MuaGVpZ2h0KCksIHsgeyBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQiB9IH0p
OwogICAgIGlmICghaW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICBtX25leHRUcmFj
a0ZyYW1lUHJvbWlzZS0+cmVzb2x2ZShpbWFnZURhdGEucmVsZWFzZVJldHVyblZhbHVlKCkpOwog
ICAgIGVsc2UKQEAgLTYyMDMsNyArNjIwMyw3IEBAIHZvaWQgSW50ZXJuYWxzOjpsb2FkQXJ0d29y
a0ltYWdlKFN0cmluZyYKICAgICBtX2FydHdvcmtJbWFnZVByb21pc2UgPSBtYWtlVW5pcXVlPEFy
dHdvcmtJbWFnZVByb21pc2U+KFdURk1vdmUocHJvbWlzZSkpOwogICAgIG1fYXJ0d29ya0xvYWRl
ciA9IG1ha2VVbmlxdWU8QXJ0d29ya0ltYWdlTG9hZGVyPigqY29udGV4dERvY3VtZW50KCksIHVy
bCwgW3RoaXNdKEltYWdlKiBpbWFnZSkgewogICAgICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAg
ICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUodW5zaWduZWQoaW1hZ2UtPndp
ZHRoKCkpLCB1bnNpZ25lZChpbWFnZS0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIGF1dG8gaW1h
Z2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlLT53
aWR0aCgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlLT5oZWlnaHQoKSksIHsgeyBQcmVk
ZWZpbmVkQ29sb3JTcGFjZTo6U1JHQiB9IH0pOwogICAgICAgICAgICAgaWYgKCFpbWFnZURhdGEu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlLT5y
ZXNvbHZlKGltYWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgICAgICAgICBlbHNl
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNzc1MjUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAyMS0wNS0xNCAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nL2FjY2Vz
c2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0YSB2aWEgY2FudmFzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgIFJlbW92ZSB3aWRlLWdhbXV0LWNhbnZhcyBub3cgdGhhdCB0aGV5IHNob3VsZCBwYXNz
LgorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMt
SW1hZ2VEYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2Fu
dmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLmh0bWw6IEFkZGVkLgorICAgICAg
ICBBZGQgbmV3IHRlc3QgZXhlcmNpc2luZyBnZXRJbWFnZURhdGEgYW5kIHB1dEltYWdlRGF0YSB3
aXRoIG5vbi1zUkdCIGNhbnZhc2VzCisgICAgICAgIGFuZCBub24tc1JHQiBJbWFnZURhdGEuCisg
CisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWltYWdlRGF0YS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgIFVwZGF0ZSByZXN1bHRzIGZvciB1cGRhdGVkIGVycm9yIG1lc3NhZ2VzLCB3aGljaCBh
cmUgYSBiaXQgd29yc2UgZHVlIGFkZGl0aW9uYWwKKyAgICAgICAgYW1iaWd1aXR5IGluIHNpZ25h
dHVyZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAg
ICAgIE1hcmsgbmV3IHRlc3QgYXMgZmFpbGluZyBvbiBnbGliIGR1ZSB0byBsYWNrIG9mIGRpc3Bs
YXktcDMgc3VwcG9ydC4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmpl
Y3RzdG9yZS1hdXRvaW5jcmVtZW50LXR5cGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRl
IHJlc3VsdHMgZHVlIHRvIG5ldyBhdHRyaWJ1dGUgaW4gSW1hZ2VEYXRhIHRoYXQgaXMgYXV0byBw
cmludGVkLgorCiAyMDIxLTA1LTE0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtHUFVQXSBhIG1lZGlhIGVsZW1lbnQgd2l0aCBhIGRhdGEgdXJsIGFu
ZCAiY3Jvc3NvcmlnaW49J2Fub255bW91cyciIGRvZXNuJ3QgbG9hZApJbmRleDogTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCShyZXZpc2lvbiAyNzc1MjUpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CSh3b3JraW5nIGNvcHkpCkBAIC0zOTk1LDkgKzM5OTUsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy1pbWFnZXMtdG8tdGhlLWNhbnZhcy9pbWFnZS1vcmll
bnRhdGlvbi9kcmF3SW1hZ2UtZnJvbS1lbGVtZW50LXN3YXAtd2lkdGgtaGVpZ2h0LnRlbnRhdGl2
ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy1pbWFnZXMtdG8tdGhlLWNhbnZhcy9pbWFn
ZS1vcmllbnRhdGlvbi9kcmF3SW1hZ2UtZnJvbS1lbGVtZW50LnRlbnRhdGl2ZS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiAKLSMgU29tZXRpbWVzIHByaW50cyB3ZWlyZCBvdXRwdXQgYXQgdGhl
IGJlZ2lubmluZyBvZiB0aGUgdGVzdHMuCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMgWyBGYWlsdXJlIFBhc3MgXQot
CiAjIENTUyBNYXNvbnJ5IExheW91dCBub3Qgc3VwcG9ydGVkLgogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbWFzb25yeS50ZW50YXRpdmUgWyBTa2lwIF0KIHdl
YmtpdC5vcmcvYi8yMDIxMTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZCBbIFNraXAgXQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxh
eS1wMy1JbWFnZURhdGEtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTkgQEAKK1Rlc3QgdGhhdCBwaXhl
bCBhY2Nlc3MgZnVuY3Rpb25zIHdvcmsgd2l0aCBub24tU1JHQiBjb2xvciBzcGFjZXMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tRGlz
cGxheVAzQ2FudmFzLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGltYWdlRGF0YUNy
ZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdCLmNvbG9yU3Bh
Y2UgaXMgInNyZ2IiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzT3Zl
cnJpZGluZ0NvbG9yU3BhY2VEaXNwbGF5UDMuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BB
U1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQ
QVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlU1JH
Qi5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52
YXNPdmVycmlkaW5nQ29sb3JTcGFjZURpc3BsYXlQMy5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAz
IgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yLmNvbG9yU3Bh
Y2UgaXMgInNyZ2IiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0
b3JTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFn
ZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VUb0Rp
c3BsYXlQMy5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBpbWFnZURhdGFDcmVhdGVk
RnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlci5jb2xvclNwYWNlIGlzICJzcmdi
IgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1
ZmZlclNldHRpbmdDb2xvclNwYWNlVG9TUkdCLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGlt
YWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyU2V0dGlu
Z0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorCitUZXN0
aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3
biBpbnRvIGl0CisKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNw
YWNlLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMg
MCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMi
CitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1Mg
ZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFn
ZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFz
IGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xv
clNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFb
MV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAy
NTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgZGlz
cGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24g
aW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5k
YXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0g
aXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBkaXNwbGF5LXAzIGNh
bnZhcyB3aXRoIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGludG8gaXQKKworVGVzdCBnZXRJbWFn
ZURhdGEgd2l0aCBubyBzcGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgZGlzcGxheS1wMyBjYW52
YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEu
Y29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFT
UyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRh
LmRhdGFbM10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBv
biBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXdu
IGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVsw
XSBpcyAzCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAK
K1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5
LXAzIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihz
cmdiIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5
LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTEK
K1BBU1MgZGF0YS5kYXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKworVGVz
dGluZyBhIHNyZ2IgY2FudmFzIHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW50
byBpdAorCitUZXN0IGdldEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwg
b24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3
biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFb
MF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAw
CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBz
cGVjaWZpZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAw
IDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1Mg
ZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRh
dGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3
aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNv
bG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2Ug
aXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRh
WzFdIGlzIDI1MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlz
IDI1NQorCitUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBjb2xvcihzcmdiLXAzIDAgMSAwKSBk
cmF3biBpbnRvIGl0CisKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9y
IHNwYWNlLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRy
YXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0
YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlz
IDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdi
IHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAw
KSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRh
LmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsy
XSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGgg
ZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Io
c3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxh
eS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUx
CitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKKwor
VGVzdGluZyBhIGRpc3BsYXktcDMgY2FudmFzIHdpdGggZGlzcGxheS1wMyBJbWFnZURhdGEgZHJh
d24gaW50byBpdAorCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5k
YXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0g
aXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAi
ZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlz
IDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisK
K1Rlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIHNyZ2IgSW1hZ2VEYXRhIGRyYXduIGlu
dG8gaXQKKworUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVsw
XSBpcyAzCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAK
K1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3Bs
YXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1
MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCitU
ZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBkaXNwbGF5LXAzIEltYWdlRGF0YSBkcmF3biBpbnRv
IGl0CisKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0g
aXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQ
QVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5
LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTEK
K1BBU1MgZGF0YS5kYXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKworVGVz
dGluZyBhIHNyZ2IgY2FudmFzIHdpdGggc3JnYiBJbWFnZURhdGEgZHJhd24gaW50byBpdAorCitQ
QVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BB
U1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRh
LmRhdGFbM10gaXMgMjU1CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BB
U1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRh
dGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3Bh
Y2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0
aGF0IHBpeGVsIGFjY2VzcyBmdW5jdGlvbnMgd29yayB3aXRoIG5vbi1TUkdCIGNvbG9yIHNwYWNl
cy4iKTsKKworbGV0IGNhbnZhc0Rpc3BsYXlQMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNh
bnZhcyIpOworbGV0IGNvbnRleHREaXNwbGF5UDMgPSBjYW52YXNEaXNwbGF5UDMuZ2V0Q29udGV4
dCgiMmQiLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKKworbGV0IGNhbnZhc1NSR0Ig
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKK2xldCBjb250ZXh0U1JHQiA9IGNh
bnZhc1NSR0IuZ2V0Q29udGV4dCgiMmQiLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKKworY29u
c3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXMgPSBjb250ZXh0RGlzcGxheVAz
LmNyZWF0ZUltYWdlRGF0YSg1MCwgNTApOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9t
RGlzcGxheVAzQ2FudmFzLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCk7CisKK2NvbnN0IGlt
YWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdC
ID0gY29udGV4dERpc3BsYXlQMy5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6
ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZh
c092ZXJyaWRpbmdDb2xvclNwYWNlU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25z
dCBpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNl
RGlzcGxheVAzID0gY29udGV4dERpc3BsYXlQMy5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNv
bG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJv
bURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxheVAzLmNvbG9yU3BhY2Ui
LCBgImRpc3BsYXktcDMiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZh
cyA9IGNvbnRleHRTUkdCLmNyZWF0ZUltYWdlRGF0YSg1MCwgNTApOworc2hvdWxkQmUoImltYWdl
RGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhcy5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25z
dCBpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZVNSR0Ig
PSBjb250ZXh0U1JHQi5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJzcmdi
IiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5n
Q29sb3JTcGFjZVNSR0IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRh
Q3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VEaXNwbGF5UDMgPSBjb250
ZXh0U1JHQi5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAz
IiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5n
Q29sb3JTcGFjZURpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApOworCitjb25z
dCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yID0gbmV3IEltYWdlRGF0
YSg1MCwgNTAsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNy
ZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKwor
Y29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclNldHRpbmdDb2xv
clNwYWNlVG9TUkdCID0gbmV3IEltYWdlRGF0YSg1MCwgNTAsIHsgY29sb3JTcGFjZTogInNyZ2Ii
IH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JT
ZXR0aW5nQ29sb3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25zdCBp
bWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VU
b0Rpc3BsYXlQMyA9IG5ldyBJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5
LXAzIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVj
dG9yU2V0dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAz
ImApOworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFz
c2luZ0J1ZmZlciA9IG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQwMCksIDEw
LCAxMCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRl
ZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXIuY29sb3JTcGFjZSIsIGAic3Jn
YiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBh
c3NpbmdCdWZmZXJTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQiA9IG5ldyBJbWFnZURhdGEobmV3IFVp
bnQ4Q2xhbXBlZEFycmF5KDQwMCksIDEwLCAxMCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7Citz
aG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdC
dWZmZXJTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitj
b25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZl
clNldHRpbmdDb2xvclNwYWNlVG9EaXNwbGF5UDMgPSBuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENs
YW1wZWRBcnJheSg0MDApLCAxMCwgMTAsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOwor
c2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5n
QnVmZmVyU2V0dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5
LXAzImApOworCit2YXIgZGF0YSA9IHsgfTsKKworLy8gTk9URToKKy8vIGNvbG9yKHNyZ2IgMCAx
IDApIGNvbnZlcnRlZCB0byBkaXNwbGF5LXAzIGlzIGNvbG9yKGRpc3BsYXktcDMgMC40NTg0IDAu
OTg1MjYgMC4yOTgyOSkgb3IgWzExNywgMjUxLCA3NiwgMjU1XSBpbiBieXRlIGZvcm0uCisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBjb2xvcihk
aXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHRE
aXNwbGF5UDMuZmlsbFN0eWxlID0gImNvbG9yKGRpc3BsYXktcDMgMCAxIDApIjsKK2NvbnRleHRE
aXNwbGF5UDMuZmlsbFJlY3QoMCwgMCwgNTAsIDUwKTsKKworLy8gTm8gc3BlY2lmaWVkIGNvbG9y
IHNwYWNlIHdpbGwgZGVmYXVsdCB0byB0aGUgY2FudmFzJyBjb2xvciBzcGFjZSwgaW4gdGhpcyBj
YXNlLCBkaXNwbGF5LXAzCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBubyBzcGVjaWZp
ZWQgY29sb3Igc3BhY2UsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Io
ZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dERpc3BsYXlQ
My5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwg
YCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdl
RGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMg
aGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworLy8gTk9URTogY29s
b3IoZGlzcGxheS1wMyAwIDEgMCkgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2Ygc1JHQiwgc28gaXQg
Y2xpcHBlZCB0byAyNTUuCitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwg
MCwgMSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNw
YWNlIiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdl
RGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChj
YW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9
IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTog
ImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1w
MyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRh
WzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgi
ZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIGRp
c3BsYXktcDMgY2FudmFzIHdpdGggY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW50byBpdCIpOwor
ZGVidWcoIiIpOworCitjb250ZXh0RGlzcGxheVAzLmZpbGxTdHlsZSA9ICJjb2xvcihzcmdiIDAg
MSAwKSI7Citjb250ZXh0RGlzcGxheVAzLmZpbGxSZWN0KDAsIDAsIDUwLCA1MCk7CisKKy8vIE5v
IHNwZWNpZmllZCBjb2xvciBzcGFjZSB3aWxsIGRlZmF1bHQgdG8gdGhlIGNhbnZhcycgY29sb3Ig
c3BhY2UsIGluIHRoaXMgY2FzZSwgZGlzcGxheS1wMworZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRh
IHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChj
YW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRl
eHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEpOworc2hvdWxkQmUoImRhdGEuY29s
b3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTci
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRh
WzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1Zygi
VGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNh
bnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEg
PSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6
ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKKy8vIE5P
VEU6IFRoaXMgMyBpcyBvZGQsIGJ1dCBkdWUgdG8gbGFjayBvZiBwcmVjaXNpb24gaW4gOC1iaXQg
cm91bmQtdHJpcHBpbmcuCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjMiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdl
RGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChj
YW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRl
eHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3Bs
YXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQor
c2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0i
LCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0
YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIHNyZ2Ig
Y2FudmFzIHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW50byBpdCIpOworZGVi
dWcoIiIpOworCitjb250ZXh0U1JHQi5maWxsU3R5bGUgPSAiY29sb3IoZGlzcGxheS1wMyAwIDEg
MCkiOworY29udGV4dFNSR0IuZmlsbFJlY3QoMCwgMCwgNTAsIDUwKTsKKworLy8gTm8gc3BlY2lm
aWVkIGNvbG9yIHNwYWNlIHdpbGwgZGVmYXVsdCB0byB0aGUgY2FudmFzJyBjb2xvciBzcGFjZSwg
aW4gdGhpcyBjYXNlLCBzcmdiCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBubyBzcGVj
aWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlz
cGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1h
Z2VEYXRhKDAsIDAsIDEsIDEpOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJg
KQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFd
IiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0
YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdi
IHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAz
IDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEo
MCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xv
clNwYWNlIiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldElt
YWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52
YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNv
bnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5
LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3No
b3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwg
IjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUoImRhdGEu
ZGF0YVszXSIsICIyNTUiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBzcmdiIGNh
bnZhcyB3aXRoIGNvbG9yKHNyZ2ItcDMgMCAxIDApIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIi
KTsKKworY29udGV4dFNSR0IuZmlsbFN0eWxlID0gImNvbG9yKHNyZ2IgMCAxIDApIjsKK2NvbnRl
eHRTUkdCLmZpbGxSZWN0KDAsIDAsIDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmllZCBjb2xvciBz
cGFjZSB3aWxsIGRlZmF1bHQgdG8gdGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGluIHRoaXMgY2Fz
ZSwgc3JnYgorZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9y
IHNwYWNlLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRy
YXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAx
KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUi
KTsKKworZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZpZWQsIG9uIGEg
c3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpIik7
CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFj
ZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hv
dWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1
NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRh
WzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAz
IHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAw
KSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwgMCwg
MSwgMSwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xv
clNwYWNlIiwgYCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjExNyIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTEiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
Ml0iLCAiNzYiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKKworZGVidWco
IiIpOworCisKK2NvbnN0IGltYWdlRGF0YURpc3BsYXlQM1RvUHV0ID0gbmV3IEltYWdlRGF0YSgx
LCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK2ltYWdlRGF0YURpc3BsYXlQM1Rv
UHV0LmRhdGFbMF0gPSAwOworaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQuZGF0YVsxXSA9IDI1NTsK
K2ltYWdlRGF0YURpc3BsYXlQM1RvUHV0LmRhdGFbMl0gPSAwOworaW1hZ2VEYXRhRGlzcGxheVAz
VG9QdXQuZGF0YVszXSA9IDI1NTsKKworY29uc3QgaW1hZ2VEYXRhU1JHQlRvUHV0ID0gbmV3IElt
YWdlRGF0YSgxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK2ltYWdlRGF0YVNSR0JUb1B1
dC5kYXRhWzBdID0gMDsKK2ltYWdlRGF0YVNSR0JUb1B1dC5kYXRhWzFdID0gMjU1OworaW1hZ2VE
YXRhU1JHQlRvUHV0LmRhdGFbMl0gPSAwOworaW1hZ2VEYXRhU1JHQlRvUHV0LmRhdGFbM10gPSAy
NTU7CisKKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3
aXRoIGRpc3BsYXktcDMgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKwor
Y29udGV4dERpc3BsYXlQMy5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQsIDAs
IDApOworCitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwg
eyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJz
cmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldElt
YWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3Vs
ZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsK
KworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIHNy
Z2IgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dERpc3Bs
YXlQMy5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhU1JHQlRvUHV0LCAwLCAwKTsKKworZGF0YSA9IGNv
bnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogInNy
Z2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorLy8gTk9URTog
VGhpcyAzIGlzIG9kZCwgYnV0IGR1ZSB0byBsYWNrIG9mIHByZWNpc2lvbiBpbiA4LWJpdCByb3Vu
ZC10cmlwcGluZy4KK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMyIpOworc2hvdWxkQmUoImRh
dGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hv
dWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGF0YSA9IGNvbnRleHREaXNwbGF5UDMu
Z2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOwor
c2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRh
dGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7Citz
aG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwg
IjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIHNyZ2IgY2FudmFzIHdpdGgg
ZGlzcGxheS1wMyBJbWFnZURhdGEgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIpOworCitjb250
ZXh0U1JHQi5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQsIDAsIDApOworCitk
YXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTog
InNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxk
QmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNd
IiwgIjI1NSIpOworCitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEs
IHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFj
ZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3No
b3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwg
Ijc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCisKK2RlYnVnKCIiKTsK
K2RlYnVnKCJUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBzcmdiIEltYWdlRGF0YSBkcmF3biBp
bnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHRTUkdCLnB1dEltYWdlRGF0YShpbWFnZURh
dGFTUkdCVG9QdXQsIDAsIDApOworCitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAs
IDAsIDEsIDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JT
cGFjZSIsIGAic3JnYiJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRC
ZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7
CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkYXRhID0gY29udGV4dFNSR0Iu
Z2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOwor
c2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRh
dGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7Citz
aG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwg
IjI1NSIpOworCitkZWJ1ZygiIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc1MjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtaW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQsMjAgKzE0
LDIwIEBAIFBBU1MgbmV3IEltYWdlRGF0YSgtMjAsIDIwKSB0aHJldyBleGNlcHQKIFBBU1MgbmV3
IEltYWdlRGF0YSgyMCwgLTIwKSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjogQ2Fubm90IGFs
bG9jYXRlIGEgYnVmZmVyIG9mIHRoaXMgc2l6ZS4KIFBBU1MgbmV3IEltYWdlRGF0YShudWxsLCAy
MCkgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5kZXggaXMgbm90IGluIHRo
ZSBhbGxvd2VkIHJhbmdlLi4KIFBBU1MgbmV3IEltYWdlRGF0YSgzMjc2OCwgMzI3NjgpIHRocmV3
IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBDYW5ub3QgYWxsb2NhdGUgYSBidWZmZXIgb2YgdGhpcyBz
aXplLgotUEFTUyBuZXcgSW1hZ2VEYXRhKG51bGwsIDIwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9y
IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFn
ZURhdGEoaW1hZ2VEYXRhLCAyMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3Vt
ZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGlu
c3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgorUEFTUyBuZXcgSW1hZ2VEYXRhKG51bGwsIDIw
LCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IElt
YWdlRGF0YShpbWFnZURhdGEsIDIwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KIFBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEsIDApIHRocmV3IGV4Y2VwdGlv
biBJbmRleFNpemVFcnJvcjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS4u
Ci1QQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9y
IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFn
ZURhdGEoaW1hZ2VEYXRhLCAwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1l
bnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5z
dGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRh
LCAxMCwgNSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0
byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhD
bGFtcGVkQXJyYXkuCitQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwgMCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IEltYWdlRGF0YShpbWFn
ZURhdGEsIDAsIDIwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFT
UyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMTAsIDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIDEwLCA1
KSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IHNoIHZhbHVlIGlzIG5vdCBlcXVhbCB0
byBoZWlnaHQuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIC0xMCwgNSkgdGhy
ZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEgbXVsdGlwbGUgb2Yg
c3cuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIDEwLCAtMTApIHRocmV3IGV4
Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogc2ggdmFsdWUgaXMgbm90IGVxdWFsIHRvIGhlaWdodC4K
IFBBU1MgbmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoWzEsMiwzLDQsNSw2LDcs
OF0pLDUzNjg3MDkxMywyKTsgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5ndGgg
aXMgbm90IGEgbXVsdGlwbGUgb2Ygc3cuCi1QQVNTIG5ldyBJbWFnZURhdGEoe30sMiwyKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VE
YXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXku
Ci1QQVNTIG5ldyBJbWFnZURhdGEodW5kZWZpbmVkLDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBt
dXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VE
YXRhKCJub25lIiwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgn
ZGF0YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBv
ZiBVaW50OENsYW1wZWRBcnJheS4KLVBBU1MgbmV3IEltYWdlRGF0YSgwLDIsMik7IHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBj
b25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgorUEFT
UyBuZXcgSW1hZ2VEYXRhKHt9LDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEodW5kZWZpbmVkLDIsMik7IHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoIm5vbmUiLDIsMik7
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURh
dGEoMCwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBu
ZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCAzMjc2OCwgMzI3NjgpIHRocmV3IGV4Y2VwdGlv
biBJbmRleFNpemVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3LgogUEFTUyBu
ZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCBJbmZpbml0eSwgSW5maW5pdHkpIHRocmV3IGV4
Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3Lgog
UEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCBOYU4sIE5hTikgdGhyZXcgZXhjZXB0
aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEgbXVsdGlwbGUgb2Ygc3cuCkluZGV4
OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzU0MSkKKysrIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAyMS0wNS0xNCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIElt
YWdlRGF0YSB2aWEgY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU4NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUt
Z2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgVXBkYXRlIHJlc3VsdCB0byBwYXNzaW5nLgorCiAyMDIxLTA1LTE0ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBvdXRwdXQgZWxlbWVudCBkb2Vzbid0IHJlYWN0
IHByb3Blcmx5IHRvIG5vZGUgdHJlZSBtdXRhdGlvbnMKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0
LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5wMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZh
cy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjc3NTI1KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJk
LmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw1
ICsyLDUgQEAKIHRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBhbmQgdWludDggZnJv
bSBkaXNwbGF5IHAzIHVpbnQ4IGNhbnZhcwogQWN0dWFsIG91dHB1dDoKIAotRkFJTCB0ZXN0IGdl
dEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgYW5kIHVpbnQ4IGZyb20gZGlzcGxheSBwMyB1aW50
OCBjYW52YXMgYXNzZXJ0X2FwcHJveF9lcXVhbHM6IGV4cGVjdGVkIDYyICsvLSAyIGJ1dCBnb3Qg
NTAKK1BBU1MgdGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIGFuZCB1aW50OCBmcm9t
IGRpc3BsYXkgcDMgdWludDggY2FudmFzCiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2ds
aWIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
bGliL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI3NzUyNSkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjM1OCw2ICsy
MzU4LDcgQEAgZmFzdC9yZXBsYWNlZC9wZGYtYXMtZW1iZWQtd2l0aC1uby1taW1lLQogd2Via2l0
Lm9yZy9iLzIyNDExMiBtZWRpYS92aWRlby1hcy1pbWctb3V0cHV0LXB0cy5odG1sIFsgVGltZW91
dCBQYXNzIF0KIAogd2Via2l0Lm9yZy9iLzIyNTQyMyBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3It
c3BhY2UtZGlzcGxheS1wMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MjI1NDIzIGZhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0
YS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjI1NDIzIGZhc3QvY2FudmFzL2NhbnZh
cy1jb21wb3NpdGUtdGV4dC1hbHBoYS5odG1sIFsgRmFpbHVyZSBdCiAKICMgRmFpbGluZyBhZnRl
ciByMjc3MDczLgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29i
amVjdHN0b3JlLWF1dG9pbmNyZW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1hdXRvaW5j
cmVtZW50LXR5cGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3NTI1KQorKysgTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQtdHlw
ZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBAIFBBU1Mga2V5
IGlzIDMKIFBBU1MgcmVxdWVzdC5yZXN1bHQucHJpbWFyeUtleSBpcyBpbWFnZURhdGEucHJpbWFy
eUtleQogUEFTUyByZXF1ZXN0LnJlc3VsdC53aWR0aCBpcyBpbWFnZURhdGEud2lkdGgKIFBBU1Mg
cmVxdWVzdC5yZXN1bHQuaGVpZ2h0IGlzIGltYWdlRGF0YS5oZWlnaHQKK1BBU1MgcmVxdWVzdC5y
ZXN1bHQuY29sb3JTcGFjZSBpcyBpbWFnZURhdGEuY29sb3JTcGFjZQogUEFTUyBrZXkgaXMgNAog
UEFTUyByZXF1ZXN0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIGZpbGVMaXN0LnByaW1hcnlLZXkKIFBB
U1MgcmVxdWVzdC5yZXN1bHQubGVuZ3RoIGlzIGZpbGVMaXN0Lmxlbmd0aApAQCAtNDAsNiArNDEs
NyBAQCBQQVNTIHJlcXVlc3QucmVzdWx0WzFdLnR5cGUgaXMgZmlsZS50eXBlCiBQQVNTIHJlcXVl
c3QucmVzdWx0WzJdLnByaW1hcnlLZXkgaXMgaW1hZ2VEYXRhLnByaW1hcnlLZXkKIFBBU1MgcmVx
dWVzdC5yZXN1bHRbMl0ud2lkdGggaXMgaW1hZ2VEYXRhLndpZHRoCiBQQVNTIHJlcXVlc3QucmVz
dWx0WzJdLmhlaWdodCBpcyBpbWFnZURhdGEuaGVpZ2h0CitQQVNTIHJlcXVlc3QucmVzdWx0WzJd
LmNvbG9yU3BhY2UgaXMgaW1hZ2VEYXRhLmNvbG9yU3BhY2UKIFBBU1MgcmVxdWVzdC5yZXN1bHRb
M10ucHJpbWFyeUtleSBpcyBmaWxlTGlzdC5wcmltYXJ5S2V5CiBQQVNTIHJlcXVlc3QucmVzdWx0
WzNdLmxlbmd0aCBpcyBmaWxlTGlzdC5sZW5ndGgKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428735</attachid>
            <date>2021-05-15 11:32:34 -0700</date>
            <delta_ts>2021-05-15 17:00:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225841-20210515113233.patch</filename>
            <type>text/plain</type>
            <size>85295</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAyMS0wNS0xNCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNyZWF0
aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0YSB2aWEgY2FudmFzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2Nh
bnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBhY2Nlc3Npbmcgbm9uLXNSR0IgKG9ubHkgRGlzcGxheVAzIGZv
ciBub3cgZHVlCisgICAgICAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uLCBidXQgdGhlIHN1cHBvcnQg
aXMgZ2VuZXJhbCkgcGl4ZWwgZGF0YSBpbgorICAgICAgICBIVE1MIGNhbnZhcy4KKworICAgICAg
ICBVcGRhdGVzIEltYWdlRGF0YSBjb25zdHJ1Y3RvcnMgYW5kIENhbnZhc0ltYWdlRGF0YSBvcGVy
YXRpb25zIHRvIAorICAgICAgICB0YWtlIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIGRpY3Rp
b25hcmllcywgd2hpY2ggY29udGFpbiBhbiAKKyAgICAgICAgb3B0aW9uYWwgY29sb3Igc3BhY2Ug
KG90aGVyd2lzZSBkZWZhdWx0aW5nIGJhY2sgdG8gc1JHQikuIAorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YVNl
dHRpbmdzLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsOiBB
ZGRlZC4KKyAgICAgICAgQWRkIG5ldyBJbWFnZURhdGFTZXR0aW5ncy5pZGwgYW5kIHJlbGF0ZWQg
ZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6
CisgICAgICAgIEZpeGVzIEZJWE1FIGFuZCB1c2VzIFBpeGVsQnVmZmVyIGRpcmVjdGx5IHJhdGhl
ciB0aGFuIGFsbG9jYXRpbmcKKyAgICAgICAgYW4gdW5uZWNlc3NhcnkgSW1hZ2VEYXRhLiBUaGlz
IHdhcyBkb25lIG5vdyBzaW5jZSB0aGUgcmVsZXZlbnQKKyAgICAgICAgSW1hZ2VEYXRhIGNvbnN0
cnVjdG9yIGhhcyBnb25lIGF3YXkuCisKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlRGF0YVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEYXRhOjpjb21wdXRlQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEYXRhOjpwaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURhdGE6OmRhdGFTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGF0YTo6ZGVlcENsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0ltYWdlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpzaXplIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGF0YTo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEYXRhOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6Y29sb3JTcGFjZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OnBpeGVsQnVmZmVyIGNvbnN0KTogRGVsZXRl
ZC4KKworICAgICAgICAtIFJld29ya2VkIEltYWdlRGF0YSB0byBubyBsb25nZXIgc3RvcmUgYSBQ
aXhlbEJ1ZmZlciwgd2hpY2ggaGFzCisgICAgICAgICAgZXh0cmFuZW91cyBpbmZvcm1hdGlvbiBp
biBpdCwgYnV0IHJhdGhlciB0byBzdG9yZSBqdXN0IHdoYXQgaXQKKyAgICAgICAgICBuZWVkcyBJ
bnRTaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4sIGFuZCBub3cgUHJlZGVmaW5lZENv
bG9yU3BhY2UuCisgICAgICAgIC0gVXBkYXRlcyBjcmVhdGUgZnVuY3Rpb25zIGZvciBuZXcgb3B0
aW9uYWwgSW1hZ2VEYXRhU2V0dGluZ3MuCisgICAgICAgIC0gQWRkcyBjcmVhdGVVbmluaXRpYWxp
emVkIHdoaWNoIGZvbGxvd3Mgc3BlYyBsYW5ndWFnZSBmb3IgSW1hZ2VEYXRhIGNyZWF0aW9uCisg
ICAgICAgICAgYW5kIGlzIHVzZWQgYnkgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHRvIGNyZWF0
ZSBJbWFnZURhdGEgb2JqZWN0cyBvZiB3aXRoCisgICAgICAgICAgdGhlIHJpZ2h0IGNvbG9yIHNw
YWNlcywgYWxsb3dpbmcgZm9yIGZhbGxiYWNrIHRvIHRoZSBjYW52YXMnIG93biBjb2xvciBzcGFj
ZQorICAgICAgICAgIHdoZW4gbm8gSW1hZ2VEYXRhU2V0dGluZ3MgY29sb3Igc3BhY2UgaXMgcHJv
dmlkZWQuIEl0IGlzIHVuaW5pdGlhbGl6ZWQgYW5kCisgICAgICAgICAgdGhlcmVmb3JlIHJlcXVp
cmVzIHRoZSBjbGllbnQgdG8gaW5pdGlhbGl6ZSB0aGUgZGF0YSB0byBhbGxvdyBmb3Igc3VwcG9y
dCBmb3IKKyAgICAgICAgICBubyBhbHBoYSBzdXBwb3J0IGluIHRoZSBmdXR1cmUsIHdoaWNoIHJl
cXVpcmVzIGEgbm9uLXplcm8gaW5pdGlhbGl6YXRpb24gcGF0dGVybi4KKworICAgICAgICAqIGh0
bWwvSW1hZ2VEYXRhLmlkbDoKKyAgICAgICAgQWRkIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdz
IHBhcmFtZXRlcnMgYW5kIHRoZSBuZXcgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsOgorICAgICAgICBBZGQgb3B0aW9uYWwg
SW1hZ2VEYXRhU2V0dGluZ3MgcGFyYW1ldGVycy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxp
emVFbXB0eUltYWdlRGF0YSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gaW5pdGlhbGl6ZSB0aGUg
SW1hZ2VEYXRhIGJ1ZmZlci4gUmlnaHQgbm93IGl0IGFsd2F5cyBjYWxscworICAgICAgICB6ZXJv
RmlsbCgpLCBidXQgaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIG5lZWQgdG8gZG8gbW9yZS4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVh
dGVJbWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgdG8gYWNjb3VudCBmb3IgdGhpcyBm
dW5jdGlvbiBiZWluZyBhYmxlIHRvIHRocm93IGFuIGV4Y2VwdGlvbiAod2hlbiAKKyAgICAgICAg
b3V0IG9mIG1lbW9yeSkgYW5kIHVzZSB0aGUgbmV3IGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlh
bGl6ZUVtcHR5SW1hZ2VEYXRhCisgICAgICAgIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciBz
cGFjZWQgSW1hZ2VEYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgZm9yIG5l
dyBvcHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBhbmQgdXNlIHRoZSBuZXcgY3JlYXRlVW5pbml0
aWFsaXplZAorICAgICAgICBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEgdG8gY3JlYXRlIGEgY29y
cmVjdGx5IGNvbG9yIHNwYWNlZCBJbWFnZURhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIE1v
dmVzIHBhcmFtZXRlciBjaGVja3MgdG8gdGhlIGJlZ2luaW5nIHRvIG1hdGNoIHRoZSBzcGVjLCBh
bmQgdXNlcyBuZXcgCisgICAgICAgIGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlhbGl6ZUVtcHR5
SW1hZ2VEYXRhIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciAKKyAgICAgICAgc3BhY2VkIElt
YWdlRGF0YS4gQWxzbywgdXNlIHRoZSBJbWFnZURhdGEncyBjb2xvciBzcGFjZSB3aGVuIGdldHRp
bmcKKyAgICAgICAgdGhlIHBpeGVsIGJ1ZmZlciB0byBhY3R1YWxseSByZXR1cm4gdGhlIHJpZ2h0
IGRhdGEhCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmluZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oOgorICAgICAgICBBZGQgY29udmVyc2lv
biBmdW5jdGlvbiBmcm9tIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0byBQcmVkZWZpbmVkQ29sb3JT
cGFjZS4KKyAgICAgICAgU2luY2UgRGVzdGluYXRpb25Db2xvclNwYWNlIGlzIGEgc3VwZXJzZXQg
b2YgUHJlZGVmaW5lZENvbG9yU3BhY2UsIHRoaXMgY2FuCisgICAgICAgIGZhaWwsIHNvIHRoaXMg
Y29udmVyc2lvbiByZXR1cm5zIGFuIE9wdGlvbmFsLgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyLmg6CisgICAgICAgIFN0dWIgb3V0IGluc3BlY3RvciBzdXBwb3J0IGZvciBJbWFnZURhdGFT
ZXR0aW5ncy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgVXNlIHRoZSBJbWFnZUJ1ZmZlcidzIGFjdHVhbCBjb2xvciBz
cGFjZSBhcyB0aGUgc291cmNlIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFuIGhhcmQg
Y29kaW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCisgICAg
ICAgIHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVtcG9yYXJ5
IHZhcmlhYmxlcy4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQ
aXhlbEJ1ZmZlcik6CisgICAgICAgIFVzZSB0aGUgSW1hZ2VCdWZmZXIncyBhY3R1YWwgY29sb3Ig
c3BhY2UgYXMgdGhlIGRlc3RpbmF0aW9uIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFu
IGhhcmQgY29kaW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9u
CisgICAgICAgIHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVt
cG9yYXJ5IHZhcmlhYmxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OlBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZm
ZXI6OnRha2VEYXRhKToKKyAgICAgICAgQWRkIGEgZmV3IGhlbHBlcnMgdG8gYWxsb3cgY3JlYXRp
b25nIHRvL2Zyb20gUGl4ZWxCdWZmZXIKKyAgICAgICAgYSBiaXQgZWFzaWVyLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgRml4IGlu
Y29ycmVjdCBhc3NlcnRpb24uIFdlIHdhbnQgdG8gYXNzZXJ0IHRoYXQgdGhlcmUgaXMgbm8gZXJy
b3IsIG5vdCB0aGF0CisgICAgICAgIHRoZXJlIGlzIG9uZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQpOgorICAgICAgICBTdG9wIGhhcmQgY29kaW5nIFNSR0IgZm9yIFBpeGVsQnVmZmVyIGNv
bG9yIHNwYWNlcyBhbmQgdXNlIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICBjb2xvciBzcGFjZSBm
b3IgdGhlIHRhc2suIFdlIHN0aWxsIGRvIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gdGhyb3VnaCBJ
bWFnZUJ1ZmZlcgorICAgICAgICBzbyB3ZSBzaG91bGQgY29tZSBiYWNrIGFuZCBzaW1wbGlmeSBj
b2RlIGhlcmUgdG8gbm90IGFsd2F5cyByZXF1aXJlIHRoYXQuCisKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnZpZGVvU2FtcGxl
QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFn
ZSk6CisgICAgICAgIFVwZGF0ZSB0byBzcGVjaWZ5IGEgY29sb3Igc3BhY2UgdG8gbWFpbnRhaW4g
ZXhpc3RpbmcgYmVoYXZpb3IuCisKIDIwMjEtMDUtMTUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgogCiAgICAgICAgIE1vdmUgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3Mg
ZG93biB0byBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlIHNvIGl0IGNhbiBiZSB1c2VkIHRo
ZXJlIChhbmQgdG8gc3VwcG9ydCBPZmZzY3JlZW5DYW52YXMpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjc3NTQzKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMTcsNiArMTAxNyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgaHRtbC9JbWFnZUJpdG1hcC5pZGwKICAgICBodG1sL0ltYWdlQml0bWFw
T3B0aW9ucy5pZGwKICAgICBodG1sL0ltYWdlRGF0YS5pZGwKKyAgICBodG1sL0ltYWdlRGF0YVNl
dHRpbmdzLmlkbAogICAgIGh0bWwvTWVkaWFDb250cm9sbGVyLmlkbAogICAgIGh0bWwvTWVkaWFF
bmNyeXB0ZWRFdmVudC5pZGwKICAgICBodG1sL01lZGlhRXJyb3IuaWRsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI3
NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMzYsNiArMTAzNiw3IEBAICQoUFJPSkVDVF9ESVIpL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvSW1hZ2VCaXRtYXAuaWRs
CiAkKFBST0pFQ1RfRElSKS9odG1sL0ltYWdlQml0bWFwT3B0aW9ucy5pZGwKICQoUFJPSkVDVF9E
SVIpL2h0bWwvSW1hZ2VEYXRhLmlkbAorJChQUk9KRUNUX0RJUikvaHRtbC9JbWFnZURhdGFTZXR0
aW5ncy5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbAogJChQUk9K
RUNUX0RJUikvaHRtbC9NZWRpYUVuY3J5cHRlZEV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvaHRt
bC9NZWRpYUVycm9yLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTgw
LDYgKzExODAsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dFNldHRpbmdzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTSW1hZ2VEYXRhLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZURhdGEuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZURhdGFTZXR0aW5ncy5jcHAKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VEYXRhU2V0dGluZ3Mu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZVNt
b290aGluZ1F1YWxpdHkuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0ltYWdlU21vb3RoaW5nUXVhbGl0eS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0lubmVySFRNTC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjc3NTQzKQorKysgU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtODkwLDYgKzg5MCw3IEBAIEpTX0JJ
TkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9odG1sL0ltYWdlQml0bWFwLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9odG1sL0ltYWdlQml0bWFwT3B0aW9ucy5pZGwgXAogICAgICQoV2ViQ29y
ZSkvaHRtbC9JbWFnZURhdGEuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvSW1hZ2VEYXRhU2V0
dGluZ3MuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvTWVkaWFDb250cm9sbGVyLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9odG1sL01lZGlhRW5jcnlwdGVkRXZlbnQuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2h0bWwvTWVkaWFFcnJvci5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI3
NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0z
MjA3LDYgKzMyMDcsNyBAQCBKU0ltYWdlQml0bWFwT3B0aW9ucy5jcHAKIEpTSW1hZ2VCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0LmNwcAogSlNJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5n
cy5jcHAKIEpTSW1hZ2VEYXRhLmNwcAorSlNJbWFnZURhdGFTZXR0aW5ncy5jcHAKIEpTSW1hZ2VT
bW9vdGhpbmdRdWFsaXR5LmNwcAogSlNJbnB1dEV2ZW50LmNwcAogSlNJbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQwOTQsNiArNDA5NCw3IEBACiAJCUJDOTZEQjQzMEYzQTg4MEUwMDU3M0NCMyAvKiBSZW5k
ZXJCb3hNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM5NkRCNDIwRjNBODgwRTAwNTczQ0IzIC8qIFJlbmRlckJveE1vZGVsT2JqZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM5
N0UyM0ExMDkxNDQ5NTAwMTBEMzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTIzODEwOTE0NDk1MDAxMEQz
NjEgLyogSFRNTEFsbENvbGxlY3Rpb24uaCAqLzsgfTsKIAkJQkM5N0U0MTMxMDkxNTRGQTAwMTBE
MzYxIC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTdFNDExMTA5MTU0RkEwMDEwRDM2MSAvKiBKU0hUTUxBbGxD
b2xsZWN0aW9uLmggKi87IH07CisJCUJDQTA4OEY1MjY0RTFDMDgwMDNFMkE2QyAvKiBJbWFnZURh
dGFTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNBMDg4RjIyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNBMTY5QTMwQkZE
NTVCNDAwMTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTE2OUExMEJGRDU1QjQwMDE5Q0E3
NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmggKi87IH07CiAJCUJDQTI1NzE1MTI5M0Mw
MTAwMDdBMjYzRCAvKiBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTI1NzE0MTI5M0MwMTAwMDdBMjYzRCAvKiBW
ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaCAqLzsgfTsKIAkJQkNBMkIwNjExMDUwNDc2MDAwNDNCRDFD
IC8qIFVzZXJTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQTJCMDYwMTA1MDQ3NUYwMDQzQkQxQyAvKiBVc2VyU2NyaXB0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0MzEzLDYgKzE0MzE0
LDggQEAKIAkJQkM5QTYxNDIxNDY4NTlEOTAwNjA1N0ZEIC8qIEV2ZW50TmFtZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RXZlbnROYW1lcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5QTYxNDUxNDY4
NTlEOTAwNjA1N0ZEIC8qIG1ha2VfZXZlbnRfZmFjdG9yeS5wbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSBt
YWtlX2V2ZW50X2ZhY3RvcnkucGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOUE2
MTQ2MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX25hbWVzLnBsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgcGF0aCA9IG1h
a2VfbmFtZXMucGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQTA4OEYyMjY0RTFC
RjkwMDNFMkE2QyAvKiBJbWFnZURhdGFTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURh
dGFTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0EwODhGNDI2NEUx
QkY5MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEltYWdlRGF0YVNldHRp
bmdzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMTY5QTAwQkZENTVCNDAw
MTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0ExNjlBMTBCRkQ1NUI0MDAxOUNBNzYgLyogSlNI
VE1MVGFibGVDYXB0aW9uRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQ0EyNTcxNDEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnRpY2FsUG9zaXRpb25DYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM5MjMsNiArMjM5MjYsOCBAQAogCQkJ
CUE3Nzk3OTEzMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuY3BwICovLAogCQkJCUE3Nzk3
OTE0MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCAqLywKIAkJCQlBNzc5NzkxNTBENkI5
RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmlkbCAqLywKKwkJCQlCQ0EwODhGMjI2NEUxQkY5MDAz
RTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaCAqLywKKwkJCQlCQ0EwODhGNDI2NEUxQkY5MDAz
RTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaWRsICovLAogCQkJCTk3MjA1QUIxMTIzOTI5MTAw
MEIxNzM4MCAvKiBJbWFnZURvY3VtZW50LmNwcCAqLywKIAkJCQk5NzIwNUFCMjEyMzkyOTEwMDBC
MTczODAgLyogSW1hZ2VEb2N1bWVudC5oICovLAogCQkJCUY1NUIzRDhEMTI1MUYxMkQwMDNFRjI2
OSAvKiBJbWFnZUlucHV0VHlwZS5jcHAgKi8sCkBAIC0zMjg4NCw2ICszMjg4OSw3IEBACiAJCQkJ
QjJBMTBEOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVyUGlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0QzRTIxREQyMTgzNDQ0QTAwRTY2RjU1IC8qIEltYWdlQnVmZmVyVXRpbGl0aWVz
Q0cuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFn
ZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDQTA4OEY1MjY0RTFDMDgwMDNFMkE2QyAvKiBJ
bWFnZURhdGFTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxOUZFQTgxRjU3Mzk3MjAw
MEM0MkZCIC8qIEltYWdlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxOUZFQUUxRjU3
NEI2RDAwMEM0MkZCIC8qIEltYWdlRGVjb2RlckFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
NDEsMzAgKzMxNDEsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7Ci0gICAgICAgIGlmICghYXJyYXkpIHsKLSAgICAgICAgICAgIGZhaWwoKTsKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgIH0KLQogICAgICAgICBJbnRTaXplIGxvZ2lj
YWxTaXplID0gSW50U2l6ZShsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpOwogICAgICAgICBJ
bnRTaXplIGltYWdlRGF0YVNpemUgPSBsb2dpY2FsU2l6ZTsKICAgICAgICAgaW1hZ2VEYXRhU2l6
ZS5zY2FsZShyZXNvbHV0aW9uU2NhbGUpOwogCi0gICAgICAgIC8vIEZJWE1FOiBDcmVhdGluZyB0
aGlzIEltYWdlRGF0YSBpcyBub3QgbmVjZXNzYXJ5LiBXZSBzaG91bGQgc2tpcCByaWdodCB0byBj
cmVhdGluZyBhIFBpeGVsQnVmZmVyIGRpcmVjdGx5LgotICAgICAgICBhdXRvIGltYWdlRGF0YSA9
IEltYWdlRGF0YTo6Y3JlYXRlKGltYWdlRGF0YVNpemUsIGFycmF5LnJlbGVhc2VOb25OdWxsKCkp
OwotICAgICAgICBpZiAoIWltYWdlRGF0YSkgeworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdl
Qml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVj
U3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSk7CisgICAgICAgIGlmICghYnVmZmVyKSB7
CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2Jh
bE9iamVjdCksIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCByZXNv
bHV0aW9uU2NhbGUpOwotICAgICAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICBQaXhlbEJ1ZmZl
ckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGltYWdl
RGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBpZiAoIXBp
eGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgYnVmZmVyLT5wdXRQaXhlbEJ1ZmZlcihpbWFn
ZURhdGEtPnBpeGVsQnVmZmVyKCksIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7
CisgICAgICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpLCB7
IEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOwogCiAgICAgICAgIGF1dG8gYml0bWFw
ID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZShJbWFnZUJpdG1hcEJhY2tpbmcoV1RGTW92ZShidWZmZXIp
LCBPcHRpb25TZXQ8U2VyaWFsaXphdGlvblN0YXRlPjo6ZnJvbVJhdyhzZXJpYWxpemF0aW9uU3Rh
dGUpKSk7CiAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKGJpdG1hcCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGEuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1DaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gSW1h
Z2VEYXRhOjpkYXRhU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQorc3RhdGljIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBjb21wdXRlRGF0YVNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICAgICBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZERhdGFT
aXplID0gNDsKICAgICBjaGVja2VkRGF0YVNpemUgKj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNp
emUud2lkdGgoKSk7CkBAIC00Myw5ICs0MywxOCBAQCBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRP
dmVyZmxvdz4gSW1hZ2VECiAgICAgcmV0dXJuIGNoZWNrZWREYXRhU2l6ZTsKIH0KIAorUHJlZGVm
aW5lZENvbG9yU3BhY2UgSW1hZ2VEYXRhOjpjb21wdXRlQ29sb3JTcGFjZShPcHRpb25hbDxJbWFn
ZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MsIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xv
clNwYWNlKQoreworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+Y29sb3JTcGFjZSkKKyAg
ICAgICAgcmV0dXJuICpzZXR0aW5ncy0+Y29sb3JTcGFjZTsKKyAgICByZXR1cm4gZGVmYXVsdENv
bG9yU3BhY2U7Cit9CisKIFJlZjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKFBpeGVsQnVm
ZmVyJiYgcGl4ZWxCdWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRh
KFdURk1vdmUocGl4ZWxCdWZmZXIpKSk7CisgICAgYXV0byBjb2xvclNwYWNlID0gdG9QcmVkZWZp
bmVkQ29sb3JTcGFjZShwaXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNwYWNlKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChjb2xvclNwYWNlKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURh
dGEocGl4ZWxCdWZmZXIuc2l6ZSgpLCBwaXhlbEJ1ZmZlci50YWtlRGF0YSgpLCAqY29sb3JTcGFj
ZSkpOwogfQogCiBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShPcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4mJiBwaXhlbEJ1ZmZlcikKQEAgLTU3LDQzICs2Niw2MyBAQCBSZWZQdHI8SW1h
Z2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShPcHRpCiAKIFJlZlB0cjxJbWFnZURhdGE+IEltYWdl
RGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgYXV0byBkYXRhU2l6ZSA9
IEltYWdlRGF0YTo6ZGF0YVNpemUoc2l6ZSk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVE
YXRhU2l6ZShzaXplKTsKICAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXplLnVuc2FmZUdldCgpKTsKICAgICBpZiAo
IWJ5dGVBcnJheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
IH0sIHNpemUsIGJ5dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0pKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZURhdGEoc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCksIFBy
ZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCKSk7CiB9CiAKLVJlZlB0cjxJbWFnZURhdGE+IEltYWdl
RGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxVaW50OENsYW1wZWRBcnJheT4m
JiBieXRlQXJyYXkpCitSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJ
bnRTaXplJiBzaXplLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5LCBQcmVkZWZp
bmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIGF1dG8gZGF0YVNpemUgPSBJbWFnZURh
dGE6OmRhdGFTaXplKHNpemUpOwotICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwg
ZGF0YVNpemUudW5zYWZlR2V0KCkgPiBieXRlQXJyYXktPmxlbmd0aCgpKQorICAgIGF1dG8gZGF0
YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJm
bG93ZWQoKSB8fCBkYXRhU2l6ZS51bnNhZmVHZXQoKSAhPSBieXRlQXJyYXktPmxlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
RGF0YSh7IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCBzaXplLCBXVEZNb3Zl
KGJ5dGVBcnJheSkgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXpl
LCBXVEZNb3ZlKGJ5dGVBcnJheSksIGNvbG9yU3BhY2UpKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVm
PEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCkK
K0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgcm93cywgdW5zaWduZWQgcGl4ZWxzUGVyUm93LCBQcmVkZWZpbmVkQ29sb3JT
cGFjZSBkZWZhdWx0Q29sb3JTcGFjZSwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRp
bmdzKQoreworICAgIEludFNpemUgc2l6ZShyb3dzLCBwaXhlbHNQZXJSb3cpOworICAgIGF1dG8g
ZGF0YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CisgICAgaWYgKGRhdGFTaXplLmhhc092
ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJDYW5u
b3QgYWxsb2NhdGUgYSBidWZmZXIgb2YgdGhpcyBzaXplIl9zIH07CisKKyAgICBhdXRvIGJ5dGVB
cnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXpl
LnVuc2FmZUdldCgpKTsKKyAgICBpZiAoIWJ5dGVBcnJheSkgeworICAgICAgICAvLyBGSVhNRTog
RG9lcyB0aGlzIG5lZWQgdG8gYmUgYSAicmVhbCIgb3V0IG9mIG1lbW9yeSBlcnJvciB3aXRoIHNl
dE91dE9mTWVtb3J5RXJyb3IgY2FsbGVkIG9uIGl0PworICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgUmFuZ2VFcnJvciwgIk91dCBvZiBtZW1vcnkiX3MgfTsKKyAgICB9CisKKyAgICBhdXRvIGNv
bG9yU3BhY2UgPSBjb21wdXRlQ29sb3JTcGFjZShzZXR0aW5ncywgZGVmYXVsdENvbG9yU3BhY2Up
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplLCBieXRlQXJyYXkucmVs
ZWFzZU5vbk51bGwoKSwgY29sb3JTcGFjZSkpOworfQorCitFeGNlcHRpb25PcjxSZWY8SW1hZ2VE
YXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoLCBPcHRpb25h
bDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCiB7CiAgICAgaWYgKCFzdyB8fCAhc2gpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworCiAgICAgSW50U2l6
ZSBzaXplKHN3LCBzaCk7Ci0gICAgYXV0byBkYXRhU2l6ZSA9IEltYWdlRGF0YTo6ZGF0YVNpemUo
c2l6ZSk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXplKTsKICAgICBp
ZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
UmFuZ2VFcnJvciwgIkNhbm5vdCBhbGxvY2F0ZSBhIGJ1ZmZlciBvZiB0aGlzIHNpemUiX3MgfTsK
KwogICAgIGF1dG8gYnl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQoZGF0YVNpemUudW5zYWZlR2V0KCkpOwogICAgIGlmICghYnl0ZUFycmF5KSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgbmVlZCB0byBiZSBhICJyZWFsIiBvdXQgb2YgbWVt
b3J5IGVycm9yIHdpdGggc2V0T3V0T2ZNZW1vcnlFcnJvciBjYWxsZWQgb24gaXQ/CiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiT3V0IG9mIG1lbW9yeSJfcyB9OwogICAg
IH0KICAgICBieXRlQXJyYXktPnplcm9GaWxsKCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW1hZ2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHNpemUsIGJ5
dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0pKTsKKworICAgIGF1dG8gY29sb3JTcGFjZSA9IGNv
bXB1dGVDb2xvclNwYWNlKHNldHRpbmdzKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFn
ZURhdGEoc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCksIGNvbG9yU3BhY2UpKTsKIH0K
IAotRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKFJlZjxVaW50
OENsYW1wZWRBcnJheT4mJiBieXRlQXJyYXksIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNpZ25l
ZD4gc2gpCitFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVhdGUoUmVm
PFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwgdW5zaWduZWQgc3csIE9wdGlvbmFsPHVu
c2lnbmVkPiBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzKQogewogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGJ5dGVBcnJheS0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgg
fHwgbGVuZ3RoICUgNCkKQEAgLTEwNywyMiArMTM2LDI4IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFn
ZURhdGE+PiBJbWFnZURhdGE6OmMKICAgICBpZiAoc2ggJiYgc2gudmFsdWUoKSAhPSBoZWlnaHQp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciwgInNoIHZhbHVlIGlz
IG5vdCBlcXVhbCB0byBoZWlnaHQiX3MgfTsKIAotICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlKElu
dFNpemUoc3csIGhlaWdodCksIFdURk1vdmUoYnl0ZUFycmF5KSk7Ci0gICAgaWYgKCFyZXN1bHQp
CisgICAgSW50U2l6ZSBzaXplKHN3LCBoZWlnaHQpOworICAgIGF1dG8gZGF0YVNpemUgPSBjb21w
dXRlRGF0YVNpemUoc2l6ZSk7CisgICAgaWYgKGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBk
YXRhU2l6ZS51bnNhZmVHZXQoKSAhPSBieXRlQXJyYXktPmxlbmd0aCgpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgUmFuZ2VFcnJvciB9OwotICAgIHJldHVybiByZXN1bHQucmVsZWFzZU5v
bk51bGwoKTsKKworICAgIGF1dG8gY29sb3JTcGFjZSA9IGNvbXB1dGVDb2xvclNwYWNlKHNldHRp
bmdzKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoc2l6ZSwgV1RGTW92ZShi
eXRlQXJyYXkpLCBjb2xvclNwYWNlKSk7CiB9CiAKLUltYWdlRGF0YTo6SW1hZ2VEYXRhKFBpeGVs
QnVmZmVyJiYgcGl4ZWxCdWZmZXIpCi0gICAgOiBtX3BpeGVsQnVmZmVyKFdURk1vdmUocGl4ZWxC
dWZmZXIpKQorSW1hZ2VEYXRhOjpJbWFnZURhdGEoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVmPEpT
Qzo6VWludDhDbGFtcGVkQXJyYXk+JiYgZGF0YSwgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKKyAgICA6IG1fc2l6ZShzaXplKQorICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCisg
ICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKIHsKIH0KIAogSW1hZ2VEYXRhOjp+SW1hZ2VE
YXRhKCkgPSBkZWZhdWx0OwogCi1SZWY8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmRlZXBDbG9uZSgp
IGNvbnN0CitQaXhlbEJ1ZmZlciBJbWFnZURhdGE6OnBpeGVsQnVmZmVyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEobV9waXhlbEJ1ZmZlci5kZWVwQ2xvbmUo
KSkpOworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCB0b0Rlc3RpbmF0aW9uQ29s
b3JTcGFjZShtX2NvbG9yU3BhY2UpIH07CisgICAgcmV0dXJuIHsgZm9ybWF0LCBtX3NpemUsIG1f
ZGF0YS5nZXQoKSB9OwogfQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBJbWFnZURhdGEmIGltYWdlRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEu
aAkocmV2aXNpb24gMjc3NTQzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJJbWFnZURhdGFTZXR0aW5ncy5oIgorI2luY2x1
ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlci5oIgorI2luY2x1ZGUgIlByZWRl
ZmluZWRDb2xvclNwYWNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhDbGFtcGVk
QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTM4LDI5ICs0MywzMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxJbWFnZURhdGE+IGNyZWF0ZShQaXhlbEJ1ZmZlciYmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKE9wdGlvbmFsPFBpeGVsQnVmZmVyPiYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNv
bnN0IEludFNpemUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0
YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRl
KHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYm
LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBSZWY8VWlu
dDhDbGFtcGVkQXJyYXk+JiYsIFByZWRlZmluZWRDb2xvclNwYWNlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZVVuaW5pdGlhbGl6
ZWQodW5zaWduZWQgcm93cywgdW5zaWduZWQgcGl4ZWxzUGVyUm93LCBQcmVkZWZpbmVkQ29sb3JT
cGFjZSBkZWZhdWx0Q29sb3JTcGFjZSwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+ID0gV1RG
OjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPElt
YWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gsIE9wdGlvbmFsPEltYWdl
RGF0YVNldHRpbmdzPik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25lZCBz
dywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4pOwor
CiAgICAgV0VCQ09SRV9FWFBPUlQgfkltYWdlRGF0YSgpOwogCi0gICAgY29uc3QgSW50U2l6ZSYg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxCdWZmZXIuc2l6ZSgpOyB9Ci0gICAgaW50IHdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKTsgfQotICAg
IGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsQnVmZmVyLnNpemUoKS5oZWlnaHQo
KTsgfQorICAgIHN0YXRpYyBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb21wdXRlQ29sb3JTcGFjZShP
cHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4sIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRD
b2xvclNwYWNlID0gUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0IpOwogCi0gICAgVWludDhDbGFt
cGVkQXJyYXkmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsQnVmZmVyLmRhdGEoKTsgfQor
ICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAotICAg
IFJlZjxJbWFnZURhdGE+IGRlZXBDbG9uZSgpIGNvbnN0OworICAgIGludCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZS53aWR0aCgpOyB9CisgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZS5oZWlnaHQoKTsgfQorICAgIFVpbnQ4Q2xhbXBlZEFycmF5JiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29s
b3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQogCi0gICAgY29uc3QgUGl4
ZWxCdWZmZXImIHBpeGVsQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEJ1ZmZlcjsgfQor
ICAgIFBpeGVsQnVmZmVyIHBpeGVsQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgSW1hZ2VEYXRhKFBpeGVsQnVmZmVyJiYpOwotCi0gICAgc3RhdGljIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBkYXRhU2l6ZShjb25zdCBJbnRTaXplJik7CisgICAgZXhw
bGljaXQgSW1hZ2VEYXRhKGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJh
eT4mJiwgUHJlZGVmaW5lZENvbG9yU3BhY2UpOwogCi0gICAgUGl4ZWxCdWZmZXIgbV9waXhlbEJ1
ZmZlcjsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJh
eT4gbV9kYXRhOworICAgIFByZWRlZmluZWRDb2xvclNwYWNlIG1fY29sb3JTcGFjZTsKIH07CiAK
LVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJl
YW0mLCBjb25zdCBJbWFnZURhdGEmKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEltYWdlRGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCShyZXZpc2lvbiAyNzc1NDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMiwxMCArMzIsMTEgQEAKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKICAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBJbWFnZURhdGEgewotICAg
IGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgc3csIHVuc2lnbmVkIGxvbmcgc2gpOwotICAgIGNv
bnN0cnVjdG9yKFVpbnQ4Q2xhbXBlZEFycmF5IGRhdGEsIHVuc2lnbmVkIGxvbmcgc3csIG9wdGlv
bmFsIHVuc2lnbmVkIGxvbmcgc2gpOworICAgIGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgc3cs
IHVuc2lnbmVkIGxvbmcgc2gsIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIHNldHRpbmdzKTsK
KyAgICBjb25zdHJ1Y3RvcihVaW50OENsYW1wZWRBcnJheSBkYXRhLCB1bnNpZ25lZCBsb25nIHN3
LCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIHNoLCBvcHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBz
ZXR0aW5ncyk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFVpbnQ4Q2xhbXBlZEFycmF5IGRhdGE7CisgICAgW0VuYWJsZWRCeVNldHRp
bmc9Q2FudmFzQ29sb3JTcGFjZV0gcmVhZG9ubHkgYXR0cmlidXRlIFByZWRlZmluZWRDb2xvclNw
YWNlIGNvbG9yU3BhY2U7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGFT
ZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0
dGluZ3MuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNl
dHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKKyNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSW1hZ2VE
YXRhU2V0dGluZ3MgeworICAgIE9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiBjb2xvclNw
YWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2NhbnZhcy5odG1sI2ltYWdlZGF0YXNldHRpbmdzCitkaWN0aW9uYXJ5IEltYWdlRGF0YVNl
dHRpbmdzIHsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1DYW52YXNDb2xvclNwYWNlXSBQcmVkZWZp
bmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc0ltYWdlRGF0YS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkocmV2aXNpb24gMjc3NTQzKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiw5ICsyNiw5IEBACiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9jYW52YXMuaHRtbCNjYW52YXNpbWFnZWRhdGEKIGludGVyZmFjZSBtaXhpbiBDYW52YXNJbWFn
ZURhdGEgewogICAgIC8vIHBpeGVsIG1hbmlwdWxhdGlvbgotICAgIEltYWdlRGF0YSBjcmVhdGVJ
bWFnZURhdGEoW0VuZm9yY2VSYW5nZV0gbG9uZyBzdywgW0VuZm9yY2VSYW5nZV0gbG9uZyBzaCk7
CisgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShbRW5mb3JjZVJhbmdlXSBsb25nIHN3LCBb
RW5mb3JjZVJhbmdlXSBsb25nIHNoLCBvcHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBzZXR0aW5n
cyk7CiAgICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShJbWFnZURhdGEgaW1hZ2VkYXRhKTsK
LSAgICBJbWFnZURhdGEgZ2V0SW1hZ2VEYXRhKFtFbmZvcmNlUmFuZ2VdIGxvbmcgc3gsIFtFbmZv
cmNlUmFuZ2VdIGxvbmcgc3ksIFtFbmZvcmNlUmFuZ2VdIGxvbmcgc3csIFtFbmZvcmNlUmFuZ2Vd
IGxvbmcgc2gpOworICAgIEltYWdlRGF0YSBnZXRJbWFnZURhdGEoW0VuZm9yY2VSYW5nZV0gbG9u
ZyBzeCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBzeSwgW0VuZm9yY2VSYW5nZV0gbG9uZyBzdywgW0Vu
Zm9yY2VSYW5nZV0gbG9uZyBzaCwgb3B0aW9uYWwgSW1hZ2VEYXRhU2V0dGluZ3Mgc2V0dGluZ3Mp
OwogICAgIHVuZGVmaW5lZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhIGltYWdlZGF0YSwgW0VuZm9y
Y2VSYW5nZV0gbG9uZyBkeCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBkeSk7CiAgICAgdW5kZWZpbmVk
IHB1dEltYWdlRGF0YShJbWFnZURhdGEgaW1hZ2VkYXRhLCBbRW5mb3JjZVJhbmdlXSBsb25nIGR4
LCBbRW5mb3JjZVJhbmdlXSBsb25nIGR5LCBbRW5mb3JjZVJhbmdlXSBsb25nIGRpcnR5WCwgW0Vu
Zm9yY2VSYW5nZV0gbG9uZyBkaXJ0eVksIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZGlydHlXaWR0aCwg
W0VuZm9yY2VSYW5nZV0gbG9uZyBkaXJ0eUhlaWdodCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUy
LDM5ICsyMTUyLDUwIEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6bmVlZHMK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGVF
bXB0eUltYWdlRGF0YShjb25zdCBJbnRTaXplJiBzaXplKQorc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZUVtcHR5SW1hZ2VEYXRhKGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRhKQogewotICAgIGF1dG8g
ZGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlKHNpemUpOwotICAgIGlmIChkYXRhKQotICAgICAgICBk
YXRhLT5kYXRhKCkuemVyb0ZpbGwoKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGluaXRpYWxpemluZyB0aGUgSW1hZ2VEYXRhIHdoZW4gc2V0dGluZ3Mu
YWxwaGEgaXMgZmFsc2UsIHJlcXVpcmluZworICAgIC8vIGV2ZXJ5IDR0aCBieXRlIHRvIGJlIDB4
RkYuCisKKyAgICBpbWFnZURhdGEuZGF0YSgpLnplcm9GaWxsKCk7CiB9CiAKLVJlZlB0cjxJbWFn
ZURhdGE+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShJbWFn
ZURhdGEmIGltYWdlRGF0YSkgY29uc3QKK0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEoSW1hZ2VEYXRhJiBpbWFn
ZURhdGEpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0
YS5zaXplKCkpOworICAgIGF1dG8gbmV3SW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGVVbmlu
aXRpYWxpemVkKGltYWdlRGF0YS53aWR0aCgpLCBpbWFnZURhdGEuaGVpZ2h0KCksIGltYWdlRGF0
YS5jb2xvclNwYWNlKCkpOworICAgIGlmIChuZXdJbWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBuZXdJbWFnZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgaW5p
dGlhbGl6ZUVtcHR5SW1hZ2VEYXRhKG5ld0ltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKworICAg
IHJldHVybiBuZXdJbWFnZURhdGE7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+
PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEoaW50IHN3LCBp
bnQgc2gpIGNvbnN0CitFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6Y3JlYXRlSW1hZ2VEYXRhKGludCBzdywgaW50IHNoLCBPcHRpb25hbDxJ
bWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpIGNvbnN0CiB7CiAgICAgaWYgKCFzdyB8fCAhc2gp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwogCi0gICAgSW50
U2l6ZSBzaXplIHsgc3RkOjphYnMoc3cpLCBzdGQ6OmFicyhzaCkgfTsKLSAgICByZXR1cm4gY3Jl
YXRlRW1wdHlJbWFnZURhdGEoc2l6ZSk7CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RkOjphYnMoc3cpLCBzdGQ6OmFicyhzaCksIG1fc2V0dGlu
Z3MuY29sb3JTcGFjZSwgc2V0dGluZ3MpOworICAgIGlmIChpbWFnZURhdGEuaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBpbWFnZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAg
aW5pdGlhbGl6ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKworICAg
IHJldHVybiBpbWFnZURhdGE7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURhdGEoaW50IHN4LCBpbnQgc3ks
IGludCBzdywgaW50IHNoKSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0YShpbnQgc3gsIGludCBzeSwgaW50
IHN3LCBpbnQgc2gsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncykgY29uc3QK
IHsKKyAgICBpZiAoIXN3IHx8ICFzaCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4
U2l6ZUVycm9yIH07CisKICAgICBpZiAoIWNhbnZhc0Jhc2UoKS5vcmlnaW5DbGVhbigpKSB7CiAg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKE1BS0Vf
U1RBVElDX1NUUklOR19JTVBMKCJVbmFibGUgdG8gZ2V0IGltYWdlIGRhdGEgZnJvbSBjYW52YXMg
YmVjYXVzZSB0aGUgY2FudmFzIGhhcyBiZWVuIHRhaW50ZWQgYnkgY3Jvc3Mtb3JpZ2luIGRhdGEu
IikpOwogICAgICAgICBjYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJv
ciwgY29uc29sZU1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlF
cnJvciB9OwogICAgIH0KIAotICAgIGlmICghc3cgfHwgIXNoKQotICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKLQogICAgIGlmIChzdyA8IDApIHsKICAgICAgICAg
c3ggKz0gc3c7CiAgICAgICAgIHN3ID0gLXN3OwpAQCAtMjE5NywxMCArMjIwOCwxOSBAQCBFeGNl
cHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuCiAgICAgSW50UmVjdCBpbWFnZURh
dGFSZWN0IHsgc3gsIHN5LCBzdywgc2ggfTsKIAogICAgIEltYWdlQnVmZmVyKiBidWZmZXIgPSBj
YW52YXNCYXNlKCkuYnVmZmVyKCk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBj
cmVhdGVFbXB0eUltYWdlRGF0YShpbWFnZURhdGFSZWN0LnNpemUoKSk7CisgICAgaWYgKCFidWZm
ZXIpIHsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoaW1hZ2VEYXRhUmVjdC53aWR0aCgpLCBpbWFnZURhdGFSZWN0LmhlaWdodCgpLCBtX3Nl
dHRpbmdzLmNvbG9yU3BhY2UsIHNldHRpbmdzKTsKKyAgICAgICAgaWYgKGltYWdlRGF0YS5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBpbWFnZURhdGEucmVsZWFzZUV4Y2VwdGlv
bigpOworCisgICAgICAgIGluaXRpYWxpemVFbXB0eUltYWdlRGF0YShpbWFnZURhdGEucmV0dXJu
VmFsdWUoKSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gaW1hZ2VEYXRhOworICAgIH0KKwor
ICAgIGF1dG8gY29tcHV0ZWRDb2xvclNwYWNlID0gSW1hZ2VEYXRhOjpjb21wdXRlQ29sb3JTcGFj
ZShzZXR0aW5ncywgbV9zZXR0aW5ncy5jb2xvclNwYWNlKTsKIAotICAgIFBpeGVsQnVmZmVyRm9y
bWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhl
bEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoY29tcHV0
ZWRDb2xvclNwYWNlKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBidWZmZXItPmdldFBpeGVs
QnVmZmVyKGZvcm1hdCwgaW1hZ2VEYXRhUmVjdCk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewog
ICAgICAgICBjYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5oCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRl
ICJJbWFnZURhdGFTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkltYWdlU21vb3RoaW5nUXVhbGl0eS5o
IgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCkBAIC0xOTEs
OSArMTkyLDkgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxDYW52YXNHcmFkaWVudD4+
IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZsb2F0
IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQ
YXR0ZXJuPj4gY3JlYXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSYmLCBjb25zdCBTdHJpbmcm
IHJlcGV0aXRpb24pOwogCi0gICAgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlSW1hZ2VEYXRhKElt
YWdlRGF0YSYpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBjcmVh
dGVJbWFnZURhdGEoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdDsKLSAgICBFeGNlcHRpb25P
cjxSZWZQdHI8SW1hZ2VEYXRhPj4gZ2V0SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQgc3cs
IGludCBzaCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZUlt
YWdlRGF0YShJbWFnZURhdGEmKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRh
Pj4gY3JlYXRlSW1hZ2VEYXRhKGludCB3aWR0aCwgaW50IGhlaWdodCwgT3B0aW9uYWw8SW1hZ2VE
YXRhU2V0dGluZ3M+KSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gZ2V0
SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1hZ2VE
YXRhU2V0dGluZ3M+KSBjb25zdDsKICAgICB2b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEmLCBp
bnQgZHgsIGludCBkeSk7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiwgaW50IGR4
LCBpbnQgZHksIGludCBkaXJ0eVgsIGludCBkaXJ0eVksIGludCBkaXJ0eVdpZHRoLCBpbnQgZGly
dHlIZWlnaHQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVk
Q29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
UHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDQgKzQ1LDIzIEBAIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29s
b3IKICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOwogfQogCitPcHRpb25h
bDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKKyAg
ICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgcmV0dXJuIFByZWRl
ZmluZWRDb2xvclNwYWNlOjpTUkdCOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFD
RV9MSU5FQVJfU1JHQikKKyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QjoKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNU
SU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVybiBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6
RGlzcGxheVAzOworI2VuZGlmCisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCShyZXZpc2lvbiAyNzc1NDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzksNiArNDAsNyBAQCBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xv
clNwYWNlIHsKIH07CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3JT
cGFjZShQcmVkZWZpbmVkQ29sb3JTcGFjZSk7CitPcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFj
ZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOwogCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCShy
ZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDYgKzQyOCwxMiBAQCBPcHRpb25hbDxJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jCiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JE
YXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlRGF0YSB9fTsKIH0KIAor
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YVNldHRpbmdzJikKK3sKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKIE9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZVNtb290aGluZ1F1YWxpdHkgYXJndW1l
bnQpCiB7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpTdHJpbmcgfX07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXIuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkltYWdl
RGF0YVNldHRpbmdzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazsKIGNsYXNzIFdl
YkdMVW5pZm9ybUxvY2F0aW9uOwogY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDsKIHN0cnVj
dCBET01NYXRyaXgyREluaXQ7CitzdHJ1Y3QgSW1hZ2VEYXRhU2V0dGluZ3M7CiBlbnVtIGNsYXNz
IFJlY29yZGluZ1N3aXp6bGVUeXBlIDogaW50OwogZW51bSBjbGFzcyBDYW52YXNEaXJlY3Rpb247
CiBlbnVtIGNsYXNzIENhbnZhc0ZpbGxSdWxlOwpAQCAtMTUwLDYgKzE1MSw3IEBAIGVudW0gSW1h
Z2VTbW9vdGhpbmdRdWFsaXR5OwogICAgIG1hY3JvKEhUTUxJbWFnZUVsZW1lbnQqKSBcCiAgICAg
bWFjcm8oSW1hZ2VCaXRtYXAqKSBcCiAgICAgbWFjcm8oSW1hZ2VEYXRhKikgXAorICAgIG1hY3Jv
KEltYWdlRGF0YVNldHRpbmdzJikgXAogICAgIG1hY3JvKEltYWdlU21vb3RoaW5nUXVhbGl0eSkg
XAogICAgIG1hY3JvKE9wdGlvbmFsPGZsb2F0PiYpIFwKICAgICBtYWNybyhQYXRoMkQqKSBcCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzU0MykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNiw2ICsxMTYsOSBAQCBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JH
CiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVm
ZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBkZXN0aW5hdGlvbkZvcm1hdCwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgdm9pZCogZGF0YSkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogQWRk
IHN1cHBvcnQgZm9yIG5vbiA4LWJpdCBwaXhlbCBmb3JtYXRzLgorICAgIEFTU0VSVChkZXN0aW5h
dGlvbkZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZGVzdGluYXRp
b25Gb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKwogICAgIGF1dG8g
c291cmNlUmVjdFNjYWxlZCA9IHRvQmFja2VuZENvb3JkaW5hdGVzKHNvdXJjZVJlY3QpOwogCiAg
ICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZGVzdGluYXRpb25G
b3JtYXQsIHNvdXJjZVJlY3RTY2FsZWQuc2l6ZSgpKTsKQEAgLTEzNCwyMyArMTM3LDE1IEBAIE9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQKICAgICBpZiAoZGVzdGluYXRp
b25SZWN0LnNpemUoKSAhPSBzb3VyY2VSZWN0U2NhbGVkLnNpemUoKSkKICAgICAgICAgcGl4ZWxC
dWZmZXItPmRhdGEoKS56ZXJvRmlsbCgpOwogCi0gICAgdW5zaWduZWQgc291cmNlQnl0ZXNQZXJS
b3cgPSBieXRlc1BlclJvdygpOwotICAgIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZVJvd3MgPSByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNv
dXJjZUJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNDsKLQotICAgIHVuc2ln
bmVkIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgPSA0ICogc291cmNlUmVjdFNjYWxlZC53aWR0aCgp
OwotICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uUm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0
YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgKyBkZXN0
aW5hdGlvblJlY3QueCgpICogNDsKLQotICAgIFBpeGVsQnVmZmVyRm9ybWF0IHNvdXJjZUZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OwotCiAgICAgQ29uc3RQaXhlbEJ1ZmZlckNv
bnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0gc291cmNlRm9ybWF0Owot
ICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IHNvdXJjZUJ5dGVzUGVyUm93OwotICAgIHNvdXJjZS5y
b3dzID0gc291cmNlUm93czsKKyAgICBzb3VyY2UuZm9ybWF0ID0geyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfTsKKyAg
ICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOworICAgIHNvdXJjZS5yb3dzID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkg
KiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OwogICAgIAog
ICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247CiAgICAgZGVzdGluYXRp
b24uZm9ybWF0ID0gZGVzdGluYXRpb25Gb3JtYXQ7Ci0gICAgZGVzdGluYXRpb24uYnl0ZXNQZXJS
b3cgPSBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OwotICAgIGRlc3RpbmF0aW9uLnJvd3MgPSBkZXN0
aW5hdGlvblJvd3M7CisgICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSA0ICogc291cmNlUmVj
dFNjYWxlZC53aWR0aCgpOworICAgIGRlc3RpbmF0aW9uLnJvd3MgPSBwaXhlbEJ1ZmZlci0+ZGF0
YSgpLmRhdGEoKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJv
dyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxzKHNv
dXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCkBAIC0xNTksMTQg
KzE1NCwxNCBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZmZXJCYWNrZW5kCiAKIHZv
aWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYg
c291cmNlUGl4ZWxCdWZmZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0aW5hdGlvblBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RpbmF0aW9u
QWxwaGFGb3JtYXQsIHZvaWQqIGRhdGEpCiB7Ci0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZv
ciBub24tUkdCQTggcGl4ZWwgZm9ybWF0cy4KLSAgICBBU1NFUlQoc291cmNlUGl4ZWxCdWZmZXIu
Zm9ybWF0KCkucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4KTsKKyAgICAvLyBGSVhN
RTogQWRkIHN1cHBvcnQgZm9yIG5vbiA4LWJpdCBwaXhlbCBmb3JtYXRzLgorICAgIEFTU0VSVChz
b3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKS5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdC
QTggfHwgc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCkucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKIAogICAgIGF1dG8gc291cmNlUmVjdFNjYWxlZCA9IHRvQmFja2VuZENvb3Jk
aW5hdGVzKHNvdXJjZVJlY3QpOwogICAgIGF1dG8gZGVzdGluYXRpb25Qb2ludFNjYWxlZCA9IHRv
QmFja2VuZENvb3JkaW5hdGVzKGRlc3RpbmF0aW9uUG9pbnQpOwogCi0gICAgSW50UmVjdCBzb3Vy
Y2VSZWN0Q2xpcHBlZCA9IGludGVyc2VjdGlvbih7IEludFBvaW50Ojp6ZXJvKCksIHNvdXJjZVBp
eGVsQnVmZmVyLnNpemUoKSB9LCBzb3VyY2VSZWN0U2NhbGVkKTsKLSAgICBJbnRSZWN0IGRlc3Rp
bmF0aW9uUmVjdCA9IHNvdXJjZVJlY3RDbGlwcGVkOworICAgIGF1dG8gc291cmNlUmVjdENsaXBw
ZWQgPSBpbnRlcnNlY3Rpb24oeyBJbnRQb2ludDo6emVybygpLCBzb3VyY2VQaXhlbEJ1ZmZlci5z
aXplKCkgfSwgc291cmNlUmVjdFNjYWxlZCk7CisgICAgYXV0byBkZXN0aW5hdGlvblJlY3QgPSBz
b3VyY2VSZWN0Q2xpcHBlZDsKICAgICBkZXN0aW5hdGlvblJlY3QubW92ZUJ5KGRlc3RpbmF0aW9u
UG9pbnRTY2FsZWQpOwogCiAgICAgaWYgKHNvdXJjZVJlY3RTY2FsZWQueCgpIDwgMCkKQEAgLTE3
OCwyNCArMTczLDE1IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcigK
ICAgICBkZXN0aW5hdGlvblJlY3QuaW50ZXJzZWN0KGJhY2tlbmRSZWN0KCkpOwogICAgIHNvdXJj
ZVJlY3RDbGlwcGVkLnNldFNpemUoZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKLSAgICB1bnNp
Z25lZCBzb3VyY2VCeXRlc1BlclJvdyA9IDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lk
dGgoKTsKLSAgICBjb25zdCB1aW50OF90KiBzb3VyY2VSb3dzID0gc291cmNlUGl4ZWxCdWZmZXIu
ZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZUJ5dGVzUGVyUm93
ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNDsKLQotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9u
Qnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uUm93
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRpb25SZWN0Lnko
KSAqIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNDsKLQot
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IHNvdXJjZUZvcm1hdCA9IHNvdXJjZVBpeGVsQnVmZmVyLmZv
cm1hdCgpOwotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGRlc3RpbmF0aW9uRm9ybWF0IHsgZGVzdGlu
YXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCIH07Ci0KICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAg
IHNvdXJjZS5mb3JtYXQgPSBzb3VyY2VGb3JtYXQ7Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0g
c291cmNlQnl0ZXNQZXJSb3c7Ci0gICAgc291cmNlLnJvd3MgPSBzb3VyY2VSb3dzOwotICAgIAor
ICAgIHNvdXJjZS5mb3JtYXQgPSBzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKTsKKyAgICBzb3Vy
Y2UuYnl0ZXNQZXJSb3cgPSA0ICogc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRoKCk7Cisg
ICAgc291cmNlLnJvd3MgPSBzb3VyY2VQaXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291cmNl
UmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQu
eCgpICogNDsKKwogICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247Ci0g
ICAgZGVzdGluYXRpb24uZm9ybWF0ID0gZGVzdGluYXRpb25Gb3JtYXQ7Ci0gICAgZGVzdGluYXRp
b24uYnl0ZXNQZXJSb3cgPSBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OwotICAgIGRlc3RpbmF0aW9u
LnJvd3MgPSBkZXN0aW5hdGlvblJvd3M7CisgICAgZGVzdGluYXRpb24uZm9ybWF0ID0geyBkZXN0
aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfTsKKyAgICBk
ZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7CisgICAgZGVzdGluYXRpb24u
cm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRpb25SZWN0
LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7
CiAKICAgICBjb252ZXJ0SW1hZ2VQaXhlbHMoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRp
b25SZWN0LnNpemUoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDYgKzY2LDIyIEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3IK
ICAgICByZXR1cm4geyB7IGZvcm1hdCwgc2l6ZSwgcGl4ZWxBcnJheS5yZWxlYXNlTm9uTnVsbCgp
IH0gfTsKIH0KIAorT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVm
PEpTQzo6QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIpCit7CisgICAgLy8gTk9URTogT25seSA4
LWJpdCBmb3JtYXRzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLgorICAgIEFTU0VSVChmb3JtYXQu
cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC5waXhlbEZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworCisgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1
ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKKyAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2Vk
KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKGJ1ZmZlclNpemUudW5z
YWZlR2V0KCkgIT0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICBhdXRvIHBpeGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBidWZmZXJTaXplLnVuc2FmZUdldCgpKTsK
KyAgICBpZiAoIXBpeGVsQXJyYXkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9IH07
Cit9CisKIFBpeGVsQnVmZmVyOjpQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYg
Zm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4m
JiBkYXRhKQogICAgIDogbV9mb3JtYXQgeyBmb3JtYXQgfQogICAgICwgbV9zaXplIHsgc2l6ZSB9
CkBAIC03NCw2ICs5MCwxNCBAQCBQaXhlbEJ1ZmZlcjo6UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9zaXpl
LmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOwogfQogCitQaXhl
bEJ1ZmZlcjo6UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYgZGF0YSkKKyAgICA6IG1f
Zm9ybWF0IHsgZm9ybWF0IH0KKyAgICAsIG1fc2l6ZSB7IHNpemUgfQorICAgICwgbV9kYXRhIHsg
ZGF0YSB9Cit7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigo
bV9zaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworfQor
CiBQaXhlbEJ1ZmZlcjo6flBpeGVsQnVmZmVyKCkgPSBkZWZhdWx0OwogCiBQaXhlbEJ1ZmZlciBQ
aXhlbEJ1ZmZlcjo6ZGVlcENsb25lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkocmV2aXNpb24gMjc3NTQzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsOCArNDIsMTAgQEAgY2xhc3MgUGl4ZWxCdWZmZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFBpeGVsQnVmZmVyKTsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYsIGNvbnN0IEludFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IElu
dFNpemUmLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJik7CiAKICAgICBQaXhlbEJ1ZmZlcihjb25z
dCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50OENsYW1w
ZWRBcnJheT4mJik7CisgICAgUGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBj
b25zdCBJbnRTaXplJiwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5QaXhlbEJ1ZmZlcigpOwogCiAgICAgUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImJikgPSBk
ZWZhdWx0OwpAQCAtNTMsNiArNTUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIEpTQzo6VWludDhDbGFtcGVkQXJyYXkm
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAorICAgIFJlZjxKU0M6OlVp
bnQ4Q2xhbXBlZEFycmF5PiYmIHRha2VEYXRhKCkgeyByZXR1cm4gV1RGTW92ZShtX2RhdGEpOyB9
CisKICAgICBQaXhlbEJ1ZmZlciBkZWVwQ2xvbmUoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252
ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3NTQzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2
LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGUKIAog
ICAgICAgICB2SW1hZ2VfRXJyb3IgY29udmVydGVyQ3JlYXRlRXJyb3IgPSBrdkltYWdlTm9FcnJv
cjsKICAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBhZG9wdENGKHZJbWFnZUNvbnZlcnRlcl9DcmVh
dGVXaXRoQ0dJbWFnZUZvcm1hdCgmc291cmNlQ0dJbWFnZUZvcm1hdCwgJmRlc3RpbmF0aW9uQ0dJ
bWFnZUZvcm1hdCwgbnVsbHB0ciwga3ZJbWFnZU5vRmxhZ3MsICZjb252ZXJ0ZXJDcmVhdGVFcnJv
cikpOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChjb252ZXJ0ZXJDcmVhdGVF
cnJvciwgY29udmVydGVyQ3JlYXRlRXJyb3IgIT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252
ZXJ0ZXIgY3JlYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNyZWF0ZUVy
cm9yKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ3JlYXRl
RXJyb3IsIGNvbnZlcnRlckNyZWF0ZUVycm9yID09IGt2SW1hZ2VOb0Vycm9yLCAidkltYWdlQ29u
dmVydGVyIGNyZWF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiAlemQiLCBjb252ZXJ0ZXJDcmVhdGVF
cnJvcik7CiAKICAgICAgICAgdkltYWdlX0Vycm9yIGNvbnZlcnRlckNvbnZlcnRFcnJvciA9IHZJ
bWFnZUNvbnZlcnRfQW55VG9BbnkoY29udmVydGVyLmdldCgpLCAmc291cmNlVkltYWdlQnVmZmVy
LCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIG51bGxwdHIsIGt2SW1hZ2VOb0ZsYWdzKTsKICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ29udmVydEVycm9yLCBj
b252ZXJ0ZXJDb252ZXJ0RXJyb3IgPT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252ZXJ0X0Fu
eVRvQW55IGZhaWxlZCBjb252ZXJzaW9uIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNvbnZl
cnRFcnJvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiAyNzc1NDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
RmlsdGVyRWZmZWN0Ojpjb252CiAgICAgLy8gQ29sb3Igc3BhY2UgY29udmVyc2lvbiBoYXBwZW5z
IGludGVybmFsbHkgd2hlbiBkcmF3aW5nIGZyb20gb25lIGltYWdlIGJ1ZmZlciB0byBhbm90aGVy
CiAgICAgY29udmVydGVkQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGlucHV0QnVm
ZmVyLCByZWN0KTsKICAgICAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBvdXRwdXRB
bHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBvdXRwdXRBbHBoYUZvcm1hdCwg
UGl4ZWxGb3JtYXQ6OlJHQkE4LCB0YXJnZXRDb2xvclNwYWNlIH07CiAgICAgcmV0dXJuIGNvbnZl
cnRlZEJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCByZWN0KTsKIH0KIApAQCAtNTA0LDcg
KzUwNCw5IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWwKICAgICAg
ICAgICAgICAgICBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKGRlc3RpbmF0
aW9uLCAqY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCByZWN0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCIH07CisKKyAgICAgICAgICAgIEFTU0VSVChtX2ltYWdlQnVmZmVyUmVzdWx0LT5jb2xv
clNwYWNlKCkgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIFBpeGVsQnVmZmVy
Rm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwg
UGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAgICAgIG1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRQaXhlbEJ1
ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSk7
CiAgICAgICAgICAgICBpZiAoIW1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTEyLDcgKzUxNCw5IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5
VW5tdWx0aXBsaWVkUmVzdWwKICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1
dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNp
emVOZWVkc0NsYW1waW5nKGlucHV0U2l6ZSkpOwogICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxl
KG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICAgICAg
CisgICAgICAgICAgICBBU1NFUlQobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmZvcm1hdCgp
LmNvbG9yU3BhY2UgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIFBpeGVsQnVm
ZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGll
ZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAgICAg
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgaW5wdXRTaXplKTsKICAgICAgICAgICAgIGlmICghbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01MzksNyArNTQzLDkgQEAgdm9pZCBGaWx0
ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdQogICAgICAgICAgICAgICAgIGNvcHlDb252
ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCByZWN0KTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworCisgICAgICAgICAg
ICBBU1NFUlQobV9pbWFnZUJ1ZmZlclJlc3VsdC0+Y29sb3JTcGFjZSgpID09IG1fcmVzdWx0Q29s
b3JTcGFjZSk7CisgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVz
dWx0Q29sb3JTcGFjZSB9OwogICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQg
PSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQo
KSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSk7CiAgICAgICAgICAgICBpZiAoIW1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU0Nyw3
ICs1NTMsOSBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1CiAgICAg
ICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAg
ICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNp
emUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKLSAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH07CisKKyAgICAgICAgICAgIEFTU0VSVChtX3VubXVsdGlwbGllZElt
YWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29sb3JTcGFjZSk7Cisg
ICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JTcGFj
ZSB9OwogICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZl
cjo6dHJ5Q3JlYXRlKGZvcm1hdCwgaW5wdXRTaXplKTsKICAgICAgICAgICAgIGlmICghbV9wcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTkwLDcg
KzU5OCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0OjpjcmUKICAgICBJ
bnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VS
VCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKICAgICByZXN1
bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIFBpeGVsQnVmZmVyRm9y
bWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhl
bEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07CiAgICAgbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBy
ZXN1bHRTaXplKTsKICAgICByZXR1cm4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdDsKIH0KQEAg
LTYwOSw3ICs2MTcsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3Jl
CiAgICAgSW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXN1bHRTaXplKSk7CiAg
ICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBQaXhlbEJ1
ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVk
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07CiAgICAg
bV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0Owog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjc3NTQz
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MzMxLDcgKzUzMzEsNyBAQCB2b2lkIEludGVybmFsczo6dmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkCiAgICAgaWYgKCFyZ2JhKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0byBp
bWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksIHZpZGVv
U2V0dGluZ3Mud2lkdGgoKSwgdmlkZW9TZXR0aW5ncy5oZWlnaHQoKSk7CisgICAgYXV0byBpbWFn
ZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksIHZpZGVvU2V0
dGluZ3Mud2lkdGgoKSwgdmlkZW9TZXR0aW5ncy5oZWlnaHQoKSwgeyB7IFByZWRlZmluZWRDb2xv
clNwYWNlOjpTUkdCIH0gfSk7CiAgICAgaWYgKCFpbWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5yZXNvbHZlKGltYWdlRGF0YS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSk7CiAgICAgZWxzZQpAQCAtNjIwMyw3ICs2MjAzLDcgQEAgdm9pZCBJbnRl
cm5hbHM6OmxvYWRBcnR3b3JrSW1hZ2UoU3RyaW5nJgogICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlz
ZSA9IG1ha2VVbmlxdWU8QXJ0d29ya0ltYWdlUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSk7CiAg
ICAgbV9hcnR3b3JrTG9hZGVyID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VMb2FkZXI+KCpjb250
ZXh0RG9jdW1lbnQoKSwgdXJsLCBbdGhpc10oSW1hZ2UqIGltYWdlKSB7CiAgICAgICAgIGlmIChp
bWFnZSkgewotICAgICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZSh1
bnNpZ25lZChpbWFnZS0+d2lkdGgoKSksIHVuc2lnbmVkKGltYWdlLT5oZWlnaHQoKSkpOworICAg
ICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaW1hZ2UtPndpZHRoKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW1hZ2UtPmhl
aWdodCgpKSwgeyB7IFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCIH0gfSk7CiAgICAgICAgICAg
ICBpZiAoIWltYWdlRGF0YS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBtX2FydHdv
cmtJbWFnZVByb21pc2UtPnJlc29sdmUoaW1hZ2VEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
ICAgICAgICAgICAgIGVsc2UKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzUyNSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA1LTE0
ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBm
b3IgY3JlYXRpbmcvYWNjZXNzaW5nL3NldHRpbmcgbm9uLXNSR0IgSW1hZ2VEYXRhIHZpYSBjYW52
YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg0
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgUmVtb3ZlIHdpZGUtZ2FtdXQtY2FudmFzIG5vdyB0aGF0
IHRoZXkgc2hvdWxkIHBhc3MuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3It
c3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRt
bDogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgdGVzdCBleGVyY2lzaW5nIGdldEltYWdlRGF0YSBh
bmQgcHV0SW1hZ2VEYXRhIHdpdGggbm9uLXNSR0IgY2FudmFzZXMKKyAgICAgICAgYW5kIG5vbi1z
UkdCIEltYWdlRGF0YS4KKyAKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtaW1hZ2VEYXRh
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRlIHJlc3VsdHMgZm9yIHVwZGF0ZWQgZXJyb3Ig
bWVzc2FnZXMsIHdoaWNoIGFyZSBhIGJpdCB3b3JzZSBkdWUgYWRkaXRpb25hbAorICAgICAgICBh
bWJpZ3VpdHkgaW4gc2lnbmF0dXJlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4
cGVjdGF0aW9uczoKKyAgICAgICAgTWFyayBuZXcgdGVzdCBhcyBmYWlsaW5nIG9uIGdsaWIgZHVl
IHRvIGxhY2sgb2YgZGlzcGxheS1wMyBzdXBwb3J0LgorCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICBVcGRhdGUgcmVzdWx0cyBkdWUgdG8gbmV3IGF0dHJpYnV0ZSBpbiBJbWFnZURh
dGEgdGhhdCBpcyBhdXRvIHByaW50ZWQuCisKIDIwMjEtMDUtMTQgIEVyaWMgQ2FybHNvbiAgPGVy
aWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBdIGEgbWVkaWEgZWxlbWVudCB3
aXRoIGEgZGF0YSB1cmwgYW5kICJjcm9zc29yaWdpbj0nYW5vbnltb3VzJyIgZG9lc24ndCBsb2Fk
CkluZGV4OiBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI3NzUyNSkKKysrIExheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTM5OTUsOSArMzk5NSw2IEBAIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW4KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9kcmF3aW5nLWltYWdlcy10by10aGUt
Y2FudmFzL2ltYWdlLW9yaWVudGF0aW9uL2RyYXdJbWFnZS1mcm9tLWVsZW1lbnQtc3dhcC13aWR0
aC1oZWlnaHQudGVudGF0aXZlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9kcmF3aW5nLWltYWdlcy10
by10aGUtY2FudmFzL2ltYWdlLW9yaWVudGF0aW9uL2RyYXdJbWFnZS1mcm9tLWVsZW1lbnQudGVu
dGF0aXZlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotIyBTb21ldGltZXMgcHJpbnRzIHdl
aXJkIG91dHB1dCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXN0cy4KLWltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcyBb
IEZhaWx1cmUgUGFzcyBdCi0KICMgQ1NTIE1hc29ucnkgTGF5b3V0IG5vdCBzdXBwb3J0ZWQuCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9tYXNvbnJ5LnRlbnRh
dGl2ZSBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzIwMjExNSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1j
b2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXkt
cDMtSW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1OSBA
QAorVGVzdCB0aGF0IHBpeGVsIGFjY2VzcyBmdW5jdGlvbnMgd29yayB3aXRoIG5vbi1TUkdCIGNv
bG9yIHNwYWNlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW1hZ2VE
YXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXMuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIK
K1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXNPdmVycmlkaW5nQ29sb3JT
cGFjZVNSR0IuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21E
aXNwbGF5UDNDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZURpc3BsYXlQMy5jb2xvclNwYWNlIGlz
ICJkaXNwbGF5LXAzIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXMuY29sb3JT
cGFjZSBpcyAic3JnYiIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJp
ZGluZ0NvbG9yU3BhY2VTUkdCLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGltYWdlRGF0YUNy
ZWF0ZWRGcm9tU1JHQkNhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxheVAzLmNvbG9yU3Bh
Y2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29u
c3RydWN0b3IuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21J
bWFnZURhdGFDb25zdHJ1Y3RvclNldHRpbmdDb2xvclNwYWNlVG9TUkdCLmNvbG9yU3BhY2UgaXMg
InNyZ2IiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JTZXR0
aW5nQ29sb3JTcGFjZVRvRGlzcGxheVAzLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNT
IGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyLmNv
bG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29u
c3RydWN0b3JQYXNzaW5nQnVmZmVyU2V0dGluZ0NvbG9yU3BhY2VUb1NSR0IuY29sb3JTcGFjZSBp
cyAic3JnYiIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBh
c3NpbmdCdWZmZXJTZXR0aW5nQ29sb3JTcGFjZVRvRGlzcGxheVAzLmNvbG9yU3BhY2UgaXMgImRp
c3BsYXktcDMiCisKK1Rlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIGNvbG9yKGRpc3Bs
YXktcDMgMCAxIDApIGRyYXduIGludG8gaXQKKworVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBubyBz
cGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMg
Y29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFj
ZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRh
WzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMg
MjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXkt
cDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0
KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAw
CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1Mg
ZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIHNw
ZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5
LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5
LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQ
QVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKworVGVzdGlu
ZyBhIGRpc3BsYXktcDMgY2FudmFzIHdpdGggY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW50byBp
dAorCitUZXN0IGdldEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24g
YSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBp
biBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBkYXRhLmRh
dGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTEKK1BBU1MgZGF0YS5kYXRhWzJd
IGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGgg
c3JnYiBzcGVjaWZpZWQsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Io
c3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIK
K1BBU1MgZGF0YS5kYXRhWzBdIGlzIDMKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBk
YXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldEltYWdl
RGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChj
YW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9y
U3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0
YS5kYXRhWzFdIGlzIDI1MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRh
WzNdIGlzIDI1NQorCitUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBjb2xvcihkaXNwbGF5LXAz
IDAgMSAwKSBkcmF3biBpbnRvIGl0CisKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lm
aWVkIGNvbG9yIHNwYWNlLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3Bs
YXktcDMgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2Ii
CitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1Mg
ZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFn
ZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBj
b2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNl
IGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMg
MjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rl
c3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgc3JnYiBjYW52
YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNT
IGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDEx
NworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3NgorUEFT
UyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRoIGNvbG9y
KHNyZ2ItcDMgMCAxIDApIGRyYXduIGludG8gaXQKKworVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBu
byBzcGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29s
b3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3Jn
YiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFT
UyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldElt
YWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFz
IGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMg
InNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUK
K1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBn
ZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAo
Y2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xv
clNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRh
dGEuZGF0YVsxXSBpcyAyNTEKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0
YVszXSBpcyAyNTUKKworCitUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBkaXNwbGF5
LXAzIEltYWdlRGF0YSBkcmF3biBpbnRvIGl0CisKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJz
cmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQ
QVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1BBU1MgZGF0
YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFT
UyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEu
ZGF0YVszXSBpcyAyNTUKKworVGVzdGluZyBhIGRpc3BsYXktcDMgY2FudmFzIHdpdGggc3JnYiBJ
bWFnZURhdGEgZHJhd24gaW50byBpdAorCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIK
K1BBU1MgZGF0YS5kYXRhWzBdIGlzIDMKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBk
YXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitQQVNTIGRhdGEuY29s
b3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFTUyBk
YXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRh
dGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRoIGRpc3BsYXktcDMgSW1h
Z2VEYXRhIGRyYXduIGludG8gaXQKKworUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQ
QVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0
YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorUEFTUyBkYXRhLmNvbG9y
U3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0
YS5kYXRhWzFdIGlzIDI1MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRh
WzNdIGlzIDI1NQorCitUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBzcmdiIEltYWdlRGF0YSBk
cmF3biBpbnRvIGl0CisKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRh
LmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsy
XSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlz
ICJkaXNwbGF5LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsx
XSBpcyAyNTEKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAy
NTUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5
LXAzLUltYWdlRGF0YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS5odG1sCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5
LXAzLUltYWdlRGF0YS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkwIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0IHRoYXQgcGl4ZWwgYWNjZXNzIGZ1bmN0aW9ucyB3b3JrIHdpdGggbm9u
LVNSR0IgY29sb3Igc3BhY2VzLiIpOworCitsZXQgY2FudmFzRGlzcGxheVAzID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiY2FudmFzIik7CitsZXQgY29udGV4dERpc3BsYXlQMyA9IGNhbnZhc0Rp
c3BsYXlQMy5nZXRDb250ZXh0KCIyZCIsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOwor
CitsZXQgY2FudmFzU1JHQiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworbGV0
IGNvbnRleHRTUkdCID0gY2FudmFzU1JHQi5nZXRDb250ZXh0KCIyZCIsIHsgY29sb3JTcGFjZTog
InNyZ2IiIH0pOworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhcyA9
IGNvbnRleHREaXNwbGF5UDMuY3JlYXRlSW1hZ2VEYXRhKDUwLCA1MCk7CitzaG91bGRCZSgiaW1h
Z2VEYXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXMuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1w
MyJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXNPdmVycmlk
aW5nQ29sb3JTcGFjZVNSR0IgPSBjb250ZXh0RGlzcGxheVAzLmNyZWF0ZUltYWdlRGF0YSg1MCwg
NTAsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRG
cm9tRGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdCLmNvbG9yU3BhY2UiLCBg
InNyZ2IiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzT3Zl
cnJpZGluZ0NvbG9yU3BhY2VEaXNwbGF5UDMgPSBjb250ZXh0RGlzcGxheVAzLmNyZWF0ZUltYWdl
RGF0YSg1MCwgNTAsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImlt
YWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VEaXNw
bGF5UDMuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3Jl
YXRlZEZyb21TUkdCQ2FudmFzID0gY29udGV4dFNSR0IuY3JlYXRlSW1hZ2VEYXRhKDUwLCA1MCk7
CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzLmNvbG9yU3BhY2UiLCBg
InNyZ2IiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhc092ZXJyaWRp
bmdDb2xvclNwYWNlU1JHQiA9IGNvbnRleHRTUkdCLmNyZWF0ZUltYWdlRGF0YSg1MCwgNTAsIHsg
Y29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tU1JH
QkNhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOwor
Citjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFj
ZURpc3BsYXlQMyA9IGNvbnRleHRTUkdCLmNyZWF0ZUltYWdlRGF0YSg1MCwgNTAsIHsgY29sb3JT
cGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tU1JH
QkNhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxheVAzLmNvbG9yU3BhY2UiLCBgImRpc3Bs
YXktcDMiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0
b3IgPSBuZXcgSW1hZ2VEYXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91
bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3Rvci5jb2xvclNwYWNl
IiwgYCJzcmdiImApOworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0
cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VUb1NSR0IgPSBuZXcgSW1hZ2VEYXRhKDUwLCA1MCwgeyBj
b2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFn
ZURhdGFDb25zdHJ1Y3RvclNldHRpbmdDb2xvclNwYWNlVG9TUkdCLmNvbG9yU3BhY2UiLCBgInNy
Z2IiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JT
ZXR0aW5nQ29sb3JTcGFjZVRvRGlzcGxheVAzID0gbmV3IEltYWdlRGF0YSg1MCwgNTAsIHsgY29s
b3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9t
SW1hZ2VEYXRhQ29uc3RydWN0b3JTZXR0aW5nQ29sb3JTcGFjZVRvRGlzcGxheVAzLmNvbG9yU3Bh
Y2UiLCBgImRpc3BsYXktcDMiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VE
YXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyID0gbmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFt
cGVkQXJyYXkoNDAwKSwgMTAsIDEwLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJl
KCJpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlci5j
b2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdl
RGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlclNldHRpbmdDb2xvclNwYWNlVG9TUkdCID0gbmV3
IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoNDAwKSwgMTAsIDEwLCB7IGNvbG9yU3Bh
Y2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNv
bnN0cnVjdG9yUGFzc2luZ0J1ZmZlclNldHRpbmdDb2xvclNwYWNlVG9TUkdCLmNvbG9yU3BhY2Ui
LCBgInNyZ2IiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3Ry
dWN0b3JQYXNzaW5nQnVmZmVyU2V0dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMyA9IG5ldyBJbWFn
ZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQwMCksIDEwLCAxMCwgeyBjb2xvclNwYWNlOiAi
ZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFD
b25zdHJ1Y3RvclBhc3NpbmdCdWZmZXJTZXR0aW5nQ29sb3JTcGFjZVRvRGlzcGxheVAzLmNvbG9y
U3BhY2UiLCBgImRpc3BsYXktcDMiYCk7CisKK3ZhciBkYXRhID0geyB9OworCisvLyBOT1RFOgor
Ly8gY29sb3Ioc3JnYiAwIDEgMCkgY29udmVydGVkIHRvIGRpc3BsYXktcDMgaXMgY29sb3IoZGlz
cGxheS1wMyAwLjQ1ODQgMC45ODUyNiAwLjI5ODI5KSBvciBbMTE3LCAyNTEsIDc2LCAyNTVdIGlu
IGJ5dGUgZm9ybS4KKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAzIGNh
bnZhcyB3aXRoIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGludG8gaXQiKTsKK2RlYnVn
KCIiKTsKKworY29udGV4dERpc3BsYXlQMy5maWxsU3R5bGUgPSAiY29sb3IoZGlzcGxheS1wMyAw
IDEgMCkiOworY29udGV4dERpc3BsYXlQMy5maWxsUmVjdCgwLCAwLCA1MCwgNTApOworCisvLyBO
byBzcGVjaWZpZWQgY29sb3Igc3BhY2Ugd2lsbCBkZWZhdWx0IHRvIHRoZSBjYW52YXMnIGNvbG9y
IHNwYWNlLCBpbiB0aGlzIGNhc2UsIGRpc3BsYXktcDMKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0
YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAo
Y2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEg
PSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKTsKK3Nob3VsZEJlKCJk
YXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0i
LCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVi
dWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZpZWQsIG9uIGEgZGlzcGxheS1w
MyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQp
Iik7CisvLyBOT1RFOiBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBpcyBvdXRzaWRlIHRoZSByYW5n
ZSBvZiBzUkdCLCBzbyBpdCBjbGlwcGVkIHRvIDI1NS4KK2RhdGEgPSBjb250ZXh0RGlzcGxheVAz
LmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3Vs
ZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0i
LCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVi
dWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgZGlz
cGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24g
aW4gaXQpIik7CitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwg
MSwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNw
YWNlIiwgYCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3No
b3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwg
IjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBjb2xvcihzcmdiIDAgMSAwKSBk
cmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHREaXNwbGF5UDMuZmlsbFN0eWxl
ID0gImNvbG9yKHNyZ2IgMCAxIDApIjsKK2NvbnRleHREaXNwbGF5UDMuZmlsbFJlY3QoMCwgMCwg
NTAsIDUwKTsKKworLy8gTm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlIHdpbGwgZGVmYXVsdCB0byB0
aGUgY2FudmFzJyBjb2xvciBzcGFjZSwgaW4gdGhpcyBjYXNlLCBkaXNwbGF5LXAzCitkZWJ1Zygi
VGVzdCBnZXRJbWFnZURhdGEgd2l0aCBubyBzcGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgZGlz
cGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQp
Iik7CitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSk7Citz
aG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0
YS5kYXRhWzBdIiwgIjExNyIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTEiKTsKK3No
b3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiNzYiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAi
MjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBv
biBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXdu
IGluIGl0KSIpOworZGF0YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEs
IDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIs
IGAic3JnYiJgKQorLy8gTk9URTogVGhpcyAzIGlzIG9kZCwgYnV0IGR1ZSB0byBsYWNrIG9mIHBy
ZWNpc2lvbiBpbiA4LWJpdCByb3VuZC10cmlwcGluZy4KK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0i
LCAiMyIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVi
dWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgZGlz
cGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQp
Iik7CitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBj
b2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwg
YCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjExNyIpOworc2hvdWxk
QmUoImRhdGEuZGF0YVsxXSIsICIyNTEiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiNzYi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCIiKTsKK2RlYnVn
KCJUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3
biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHRTUkdCLmZpbGxTdHlsZSA9ICJjb2xv
cihkaXNwbGF5LXAzIDAgMSAwKSI7Citjb250ZXh0U1JHQi5maWxsUmVjdCgwLCAwLCA1MCwgNTAp
OworCisvLyBObyBzcGVjaWZpZWQgY29sb3Igc3BhY2Ugd2lsbCBkZWZhdWx0IHRvIHRoZSBjYW52
YXMnIGNvbG9yIHNwYWNlLCBpbiB0aGlzIGNhc2UsIHNyZ2IKK2RlYnVnKCJUZXN0IGdldEltYWdl
RGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24gYSBzcmdiIGNhbnZhcyAoY2Fu
dmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBj
b250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSk7CitzaG91bGRCZSgiZGF0YS5jb2xv
clNwYWNlIiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldElt
YWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFz
IGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHRT
UkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3No
b3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
MF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJk
YXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKwor
ZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEg
c3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4g
aXQpIik7CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29s
b3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAi
ZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7
CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1Zygi
VGVzdGluZyBhIHNyZ2IgY2FudmFzIHdpdGggY29sb3Ioc3JnYi1wMyAwIDEgMCkgZHJhd24gaW50
byBpdCIpOworZGVidWcoIiIpOworCitjb250ZXh0U1JHQi5maWxsU3R5bGUgPSAiY29sb3Ioc3Jn
YiAwIDEgMCkiOworY29udGV4dFNSR0IuZmlsbFJlY3QoMCwgMCwgNTAsIDUwKTsKKworLy8gTm8g
c3BlY2lmaWVkIGNvbG9yIHNwYWNlIHdpbGwgZGVmYXVsdCB0byB0aGUgY2FudmFzJyBjb2xvciBz
cGFjZSwgaW4gdGhpcyBjYXNlLCBzcmdiCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBu
byBzcGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29s
b3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1h
Z2VEYXRhKDAsIDAsIDEsIDEpOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJg
KQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFd
IiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0
YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdi
IHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAw
KSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwgMCwg
MSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNl
IiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJlKCJk
YXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3No
b3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0
YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFz
IGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHRTUkdCLmdl
dEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3No
b3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIpOworc2hv
dWxkQmUoImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIy
NTUiKTsKKworCitkZWJ1ZygiIik7CisKKworY29uc3QgaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQg
PSBuZXcgSW1hZ2VEYXRhKDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworaW1h
Z2VEYXRhRGlzcGxheVAzVG9QdXQuZGF0YVswXSA9IDA7CitpbWFnZURhdGFEaXNwbGF5UDNUb1B1
dC5kYXRhWzFdID0gMjU1OworaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQuZGF0YVsyXSA9IDA7Citp
bWFnZURhdGFEaXNwbGF5UDNUb1B1dC5kYXRhWzNdID0gMjU1OworCitjb25zdCBpbWFnZURhdGFT
UkdCVG9QdXQgPSBuZXcgSW1hZ2VEYXRhKDEsIDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOwor
aW1hZ2VEYXRhU1JHQlRvUHV0LmRhdGFbMF0gPSAwOworaW1hZ2VEYXRhU1JHQlRvUHV0LmRhdGFb
MV0gPSAyNTU7CitpbWFnZURhdGFTUkdCVG9QdXQuZGF0YVsyXSA9IDA7CitpbWFnZURhdGFTUkdC
VG9QdXQuZGF0YVszXSA9IDI1NTsKKworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIGRp
c3BsYXktcDMgY2FudmFzIHdpdGggZGlzcGxheS1wMyBJbWFnZURhdGEgZHJhd24gaW50byBpdCIp
OworZGVidWcoIiIpOworCitjb250ZXh0RGlzcGxheVAzLnB1dEltYWdlRGF0YShpbWFnZURhdGFE
aXNwbGF5UDNUb1B1dCwgMCwgMCk7CisKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdl
RGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJkYXRh
LmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMCIpOwor
c2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0i
LCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGF0YSA9IGNvbnRl
eHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3Bs
YXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQor
c2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwg
IjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIGRpc3BsYXkt
cDMgY2FudmFzIHdpdGggc3JnYiBJbWFnZURhdGEgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIp
OworCitjb250ZXh0RGlzcGxheVAzLnB1dEltYWdlRGF0YShpbWFnZURhdGFTUkdCVG9QdXQsIDAs
IDApOworCitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwg
eyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJz
cmdiImApCisvLyBOT1RFOiBUaGlzIDMgaXMgb2RkLCBidXQgZHVlIHRvIGxhY2sgb2YgcHJlY2lz
aW9uIGluIDgtYml0IHJvdW5kLXRyaXBwaW5nLgorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIz
Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0
YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkYXRhID0g
Y29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAi
ZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAz
ImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjExNyIpOworc2hvdWxkQmUoImRhdGEuZGF0
YVsxXSIsICIyNTEiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiNzYiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0aW5nIGEg
c3JnYiBjYW52YXMgd2l0aCBkaXNwbGF5LXAzIEltYWdlRGF0YSBkcmF3biBpbnRvIGl0Iik7Citk
ZWJ1ZygiIik7CisKK2NvbnRleHRTUkdCLnB1dEltYWdlRGF0YShpbWFnZURhdGFEaXNwbGF5UDNU
b1B1dCwgMCwgMCk7CisKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwgMCwgMSwg
MSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwg
YCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFn
ZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRC
ZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRh
WzBdIiwgIjExNyIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTEiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMl0iLCAiNzYiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7
CisKKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRoIHNyZ2Ig
SW1hZ2VEYXRhIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dFNSR0IucHV0
SW1hZ2VEYXRhKGltYWdlRGF0YVNSR0JUb1B1dCwgMCwgMCk7CisKK2RhdGEgPSBjb250ZXh0U1JH
Qi5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91
bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBd
IiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0
YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2Rh
dGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAi
ZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAz
ImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjExNyIpOworc2hvdWxkQmUoImRhdGEuZGF0
YVsxXSIsICIyNTEiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiNzYiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCIiKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWltYWdlRGF0
YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLWltYWdlRGF0YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NzUyNSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xNCwyMCArMTQsMjAgQEAgUEFTUyBuZXcgSW1hZ2VEYXRhKC0yMCwgMjApIHRocmV3
IGV4Y2VwdAogUEFTUyBuZXcgSW1hZ2VEYXRhKDIwLCAtMjApIHRocmV3IGV4Y2VwdGlvbiBSYW5n
ZUVycm9yOiBDYW5ub3QgYWxsb2NhdGUgYSBidWZmZXIgb2YgdGhpcyBzaXplLgogUEFTUyBuZXcg
SW1hZ2VEYXRhKG51bGwsIDIwKSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IFRoZSBp
bmRleCBpcyBub3QgaW4gdGhlIGFsbG93ZWQgcmFuZ2UuLgogUEFTUyBuZXcgSW1hZ2VEYXRhKDMy
NzY4LCAzMjc2OCkgdGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IENhbm5vdCBhbGxvY2F0ZSBh
IGJ1ZmZlciBvZiB0aGlzIHNpemUuCi1QQVNTIG5ldyBJbWFnZURhdGEobnVsbCwgMjAsIDIwKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgnZGF0YScpIHRvIHRoZSBJbWFn
ZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBVaW50OENsYW1wZWRBcnJh
eS4KLVBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEsIDIwLCAyMCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVj
dG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCitQQVNTIG5ldyBJ
bWFnZURhdGEobnVsbCwgMjAsIDIwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgorUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMjAsIDIwKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwg
MCkgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5kZXggaXMgbm90IGluIHRo
ZSBhbGxvd2VkIHJhbmdlLi4KLVBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEsIDIwLCAwKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgnZGF0YScpIHRvIHRoZSBJbWFn
ZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBVaW50OENsYW1wZWRBcnJh
eS4KLVBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDIwKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBBcmd1bWVudCAxICgnZGF0YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0
b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBVaW50OENsYW1wZWRBcnJheS4KLVBBU1MgbmV3IElt
YWdlRGF0YShpbWFnZURhdGEsIDEwLCA1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1
bWVudCAxICgnZGF0YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBp
bnN0YW5jZSBvZiBVaW50OENsYW1wZWRBcnJheS4KK1BBU1MgbmV3IEltYWdlRGF0YShpbWFnZURh
dGEsIDIwLCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBu
ZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAxMCwgNSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgbmV3IEltYWdlRGF0YShpbWFn
ZURhdGEuZGF0YSwgMTAsIDUpIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogc2ggdmFs
dWUgaXMgbm90IGVxdWFsIHRvIGhlaWdodC4KIFBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEu
ZGF0YSwgLTEwLCA1KSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IExlbmd0aCBpcyBu
b3QgYSBtdWx0aXBsZSBvZiBzdy4KIFBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEuZGF0YSwg
MTAsIC0xMCkgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBzaCB2YWx1ZSBpcyBub3Qg
ZXF1YWwgdG8gaGVpZ2h0LgogUEFTUyBuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJh
eShbMSwyLDMsNCw1LDYsNyw4XSksNTM2ODcwOTEzLDIpOyB0aHJldyBleGNlcHRpb24gSW5kZXhT
aXplRXJyb3I6IExlbmd0aCBpcyBub3QgYSBtdWx0aXBsZSBvZiBzdy4KLVBBU1MgbmV3IEltYWdl
RGF0YSh7fSwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgnZGF0
YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBV
aW50OENsYW1wZWRBcnJheS4KLVBBU1MgbmV3IEltYWdlRGF0YSh1bmRlZmluZWQsMiwyKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VE
YXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXku
Ci1QQVNTIG5ldyBJbWFnZURhdGEoIm5vbmUiLDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0
IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRh
KDAsMiwyKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0
byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhD
bGFtcGVkQXJyYXkuCitQQVNTIG5ldyBJbWFnZURhdGEoe30sMiwyKTsgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IEltYWdlRGF0YSh1bmRlZmluZWQsMiwy
KTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IEltYWdl
RGF0YSgibm9uZSIsMiwyKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
K1BBU1MgbmV3IEltYWdlRGF0YSgwLDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIDMyNzY4LCAzMjc2
OCkgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEgbXVsdGlw
bGUgb2Ygc3cuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIEluZmluaXR5LCBJ
bmZpbml0eSkgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEg
bXVsdGlwbGUgb2Ygc3cuCiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIE5hTiwg
TmFOKSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IExlbmd0aCBpcyBub3QgYSBtdWx0
aXBsZSBvZiBzdy4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24g
Mjc3NTQxKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA1LTE0ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcvYWNjZXNzaW5nL3Nl
dHRpbmcgbm9uLXNSR0IgSW1hZ2VEYXRhIHZpYSBjYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTg0MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG8ucDMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICBVcGRhdGUgcmVzdWx0IHRvIHBhc3NpbmcuCisKIDIwMjEtMDUt
MTQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIG91dHB1dCBlbGVt
ZW50IGRvZXNuJ3QgcmVhY3QgcHJvcGVybHkgdG8gbm9kZSB0cmVlIG11dGF0aW9ucwpJbmRleDog
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9l
bGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3Bh
Y2UucDMudG8ucDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc1MjUpCisrKyBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lk
ZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMudG8ucDMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDUgKzIsNSBAQAogdGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5
LXAzIGFuZCB1aW50OCBmcm9tIGRpc3BsYXkgcDMgdWludDggY2FudmFzCiBBY3R1YWwgb3V0cHV0
OgogCi1GQUlMIHRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBhbmQgdWludDggZnJv
bSBkaXNwbGF5IHAzIHVpbnQ4IGNhbnZhcyBhc3NlcnRfYXBwcm94X2VxdWFsczogZXhwZWN0ZWQg
NjIgKy8tIDIgYnV0IGdvdCA1MAorUEFTUyB0ZXN0IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXkt
cDMgYW5kIHVpbnQ4IGZyb20gZGlzcGxheSBwMyB1aW50OCBjYW52YXMKIApJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjc3NTI1KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzU4LDYgKzIzNTgsNyBAQCBmYXN0L3JlcGxhY2VkL3BkZi1hcy1lbWJlZC13aXRo
LW5vLW1pbWUtCiB3ZWJraXQub3JnL2IvMjI0MTEyIG1lZGlhL3ZpZGVvLWFzLWltZy1vdXRwdXQt
cHRzLmh0bWwgWyBUaW1lb3V0IFBhc3MgXQogCiB3ZWJraXQub3JnL2IvMjI1NDIzIGZhc3QvY2Fu
dmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8yMjU0MjMgZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRp
c3BsYXktcDMtSW1hZ2VEYXRhLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMjU0MjMg
ZmFzdC9jYW52YXMvY2FudmFzLWNvbXBvc2l0ZS10ZXh0LWFscGhhLmh0bWwgWyBGYWlsdXJlIF0K
IAogIyBGYWlsaW5nIGFmdGVyIHIyNzcwNzMuCkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC10eXBlcy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29i
amVjdHN0b3JlLWF1dG9pbmNyZW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc1
MjUpCisrKyBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUt
YXV0b2luY3JlbWVudC10eXBlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAgUEFTUyBrZXkgaXMgMwogUEFTUyByZXF1ZXN0LnJlc3VsdC5wcmltYXJ5S2V5IGlz
IGltYWdlRGF0YS5wcmltYXJ5S2V5CiBQQVNTIHJlcXVlc3QucmVzdWx0LndpZHRoIGlzIGltYWdl
RGF0YS53aWR0aAogUEFTUyByZXF1ZXN0LnJlc3VsdC5oZWlnaHQgaXMgaW1hZ2VEYXRhLmhlaWdo
dAorUEFTUyByZXF1ZXN0LnJlc3VsdC5jb2xvclNwYWNlIGlzIGltYWdlRGF0YS5jb2xvclNwYWNl
CiBQQVNTIGtleSBpcyA0CiBQQVNTIHJlcXVlc3QucmVzdWx0LnByaW1hcnlLZXkgaXMgZmlsZUxp
c3QucHJpbWFyeUtleQogUEFTUyByZXF1ZXN0LnJlc3VsdC5sZW5ndGggaXMgZmlsZUxpc3QubGVu
Z3RoCkBAIC00MCw2ICs0MSw3IEBAIFBBU1MgcmVxdWVzdC5yZXN1bHRbMV0udHlwZSBpcyBmaWxl
LnR5cGUKIFBBU1MgcmVxdWVzdC5yZXN1bHRbMl0ucHJpbWFyeUtleSBpcyBpbWFnZURhdGEucHJp
bWFyeUtleQogUEFTUyByZXF1ZXN0LnJlc3VsdFsyXS53aWR0aCBpcyBpbWFnZURhdGEud2lkdGgK
IFBBU1MgcmVxdWVzdC5yZXN1bHRbMl0uaGVpZ2h0IGlzIGltYWdlRGF0YS5oZWlnaHQKK1BBU1Mg
cmVxdWVzdC5yZXN1bHRbMl0uY29sb3JTcGFjZSBpcyBpbWFnZURhdGEuY29sb3JTcGFjZQogUEFT
UyByZXF1ZXN0LnJlc3VsdFszXS5wcmltYXJ5S2V5IGlzIGZpbGVMaXN0LnByaW1hcnlLZXkKIFBB
U1MgcmVxdWVzdC5yZXN1bHRbM10ubGVuZ3RoIGlzIGZpbGVMaXN0Lmxlbmd0aAogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428751</attachid>
            <date>2021-05-15 17:00:49 -0700</date>
            <delta_ts>2021-05-15 19:37:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225841-20210515170048.patch</filename>
            <type>text/plain</type>
            <size>88424</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAyMS0wNS0xNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNyZWF0
aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0YSB2aWEgY2FudmFzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2Nh
bnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBhY2Nlc3Npbmcgbm9uLXNSR0IgKG9ubHkgRGlzcGxheVAzIGZv
ciBub3cgZHVlCisgICAgICAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uLCBidXQgdGhlIHN1cHBvcnQg
aXMgZ2VuZXJhbCkgcGl4ZWwgZGF0YSBpbgorICAgICAgICBIVE1MIGNhbnZhcy4KKworICAgICAg
ICBVcGRhdGVzIEltYWdlRGF0YSBjb25zdHJ1Y3RvcnMgYW5kIENhbnZhc0ltYWdlRGF0YSBvcGVy
YXRpb25zIHRvIAorICAgICAgICB0YWtlIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIGRpY3Rp
b25hcmllcywgd2hpY2ggY29udGFpbiBhbiAKKyAgICAgICAgb3B0aW9uYWwgY29sb3Igc3BhY2Ug
KG90aGVyd2lzZSBkZWZhdWx0aW5nIGJhY2sgdG8gc1JHQikuIAorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YVNl
dHRpbmdzLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsOiBB
ZGRlZC4KKyAgICAgICAgQWRkIG5ldyBJbWFnZURhdGFTZXR0aW5ncy5pZGwgYW5kIHJlbGF0ZWQg
ZmlsZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6
CisgICAgICAgIEZpeGVzIEZJWE1FIGFuZCB1c2VzIFBpeGVsQnVmZmVyIGRpcmVjdGx5IHJhdGhl
ciB0aGFuIGFsbG9jYXRpbmcKKyAgICAgICAgYW4gdW5uZWNlc3NhcnkgSW1hZ2VEYXRhLiBUaGlz
IHdhcyBkb25lIG5vdyBzaW5jZSB0aGUgcmVsZXZlbnQKKyAgICAgICAgSW1hZ2VEYXRhIGNvbnN0
cnVjdG9yIGhhcyBnb25lIGF3YXkuCisKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlRGF0YVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEYXRhOjpjb21wdXRlQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEYXRhOjpwaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURhdGE6OmRhdGFTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGF0YTo6ZGVlcENsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0ltYWdlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpzaXplIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGF0YTo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEYXRhOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6Y29sb3JTcGFjZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OnBpeGVsQnVmZmVyIGNvbnN0KTogRGVsZXRl
ZC4KKworICAgICAgICAtIFJld29ya2VkIEltYWdlRGF0YSB0byBubyBsb25nZXIgc3RvcmUgYSBQ
aXhlbEJ1ZmZlciwgd2hpY2ggaGFzCisgICAgICAgICAgZXh0cmFuZW91cyBpbmZvcm1hdGlvbiBp
biBpdCwgYnV0IHJhdGhlciB0byBzdG9yZSBqdXN0IHdoYXQgaXQKKyAgICAgICAgICBuZWVkcyBJ
bnRTaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4sIGFuZCBub3cgUHJlZGVmaW5lZENv
bG9yU3BhY2UuCisgICAgICAgIC0gVXBkYXRlcyBjcmVhdGUgZnVuY3Rpb25zIGZvciBuZXcgb3B0
aW9uYWwgSW1hZ2VEYXRhU2V0dGluZ3MuCisgICAgICAgIC0gQWRkcyBjcmVhdGVVbmluaXRpYWxp
emVkIHdoaWNoIGZvbGxvd3Mgc3BlYyBsYW5ndWFnZSBmb3IgSW1hZ2VEYXRhIGNyZWF0aW9uCisg
ICAgICAgICAgYW5kIGlzIHVzZWQgYnkgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHRvIGNyZWF0
ZSBJbWFnZURhdGEgb2JqZWN0cyBvZiB3aXRoCisgICAgICAgICAgdGhlIHJpZ2h0IGNvbG9yIHNw
YWNlcywgYWxsb3dpbmcgZm9yIGZhbGxiYWNrIHRvIHRoZSBjYW52YXMnIG93biBjb2xvciBzcGFj
ZQorICAgICAgICAgIHdoZW4gbm8gSW1hZ2VEYXRhU2V0dGluZ3MgY29sb3Igc3BhY2UgaXMgcHJv
dmlkZWQuIEl0IGlzIHVuaW5pdGlhbGl6ZWQgYW5kCisgICAgICAgICAgdGhlcmVmb3JlIHJlcXVp
cmVzIHRoZSBjbGllbnQgdG8gaW5pdGlhbGl6ZSB0aGUgZGF0YSB0byBhbGxvdyBmb3Igc3VwcG9y
dCBmb3IKKyAgICAgICAgICBubyBhbHBoYSBzdXBwb3J0IGluIHRoZSBmdXR1cmUsIHdoaWNoIHJl
cXVpcmVzIGEgbm9uLXplcm8gaW5pdGlhbGl6YXRpb24gcGF0dGVybi4KKworICAgICAgICAqIGh0
bWwvSW1hZ2VEYXRhLmlkbDoKKyAgICAgICAgQWRkIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdz
IHBhcmFtZXRlcnMgYW5kIHRoZSBuZXcgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsOgorICAgICAgICBBZGQgb3B0aW9uYWwg
SW1hZ2VEYXRhU2V0dGluZ3MgcGFyYW1ldGVycy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxp
emVFbXB0eUltYWdlRGF0YSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gaW5pdGlhbGl6ZSB0aGUg
SW1hZ2VEYXRhIGJ1ZmZlci4gUmlnaHQgbm93IGl0IGFsd2F5cyBjYWxscworICAgICAgICB6ZXJv
RmlsbCgpLCBidXQgaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIG5lZWQgdG8gZG8gbW9yZS4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVh
dGVJbWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgdG8gYWNjb3VudCBmb3IgdGhpcyBm
dW5jdGlvbiBiZWluZyBhYmxlIHRvIHRocm93IGFuIGV4Y2VwdGlvbiAod2hlbiAKKyAgICAgICAg
b3V0IG9mIG1lbW9yeSkgYW5kIHVzZSB0aGUgbmV3IGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlh
bGl6ZUVtcHR5SW1hZ2VEYXRhCisgICAgICAgIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciBz
cGFjZWQgSW1hZ2VEYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgZm9yIG5l
dyBvcHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBhbmQgdXNlIHRoZSBuZXcgY3JlYXRlVW5pbml0
aWFsaXplZAorICAgICAgICBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEgdG8gY3JlYXRlIGEgY29y
cmVjdGx5IGNvbG9yIHNwYWNlZCBJbWFnZURhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIE1v
dmVzIHBhcmFtZXRlciBjaGVja3MgdG8gdGhlIGJlZ2luaW5nIHRvIG1hdGNoIHRoZSBzcGVjLCBh
bmQgdXNlcyBuZXcgCisgICAgICAgIGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlhbGl6ZUVtcHR5
SW1hZ2VEYXRhIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciAKKyAgICAgICAgc3BhY2VkIElt
YWdlRGF0YS4gQWxzbywgdXNlIHRoZSBJbWFnZURhdGEncyBjb2xvciBzcGFjZSB3aGVuIGdldHRp
bmcKKyAgICAgICAgdGhlIHBpeGVsIGJ1ZmZlciB0byBhY3R1YWxseSByZXR1cm4gdGhlIHJpZ2h0
IGRhdGEhCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmluZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oOgorICAgICAgICBBZGQgY29udmVyc2lv
biBmdW5jdGlvbiBmcm9tIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0byBQcmVkZWZpbmVkQ29sb3JT
cGFjZS4KKyAgICAgICAgU2luY2UgRGVzdGluYXRpb25Db2xvclNwYWNlIGlzIGEgc3VwZXJzZXQg
b2YgUHJlZGVmaW5lZENvbG9yU3BhY2UsIHRoaXMgY2FuCisgICAgICAgIGZhaWwsIHNvIHRoaXMg
Y29udmVyc2lvbiByZXR1cm5zIGFuIE9wdGlvbmFsLgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyLmg6CisgICAgICAgIFN0dWIgb3V0IGluc3BlY3RvciBzdXBwb3J0IGZvciBJbWFnZURhdGFT
ZXR0aW5ncy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgVXNlIHRoZSBJbWFnZUJ1ZmZlcidzIGFjdHVhbCBjb2xvciBz
cGFjZSBhcyB0aGUgc291cmNlIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFuIGhhcmQg
Y29kaW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCisgICAg
ICAgIHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVtcG9yYXJ5
IHZhcmlhYmxlcy4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQ
aXhlbEJ1ZmZlcik6CisgICAgICAgIFVzZSB0aGUgSW1hZ2VCdWZmZXIncyBhY3R1YWwgY29sb3Ig
c3BhY2UgYXMgdGhlIGRlc3RpbmF0aW9uIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFu
IGhhcmQgY29kaW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9u
CisgICAgICAgIHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVt
cG9yYXJ5IHZhcmlhYmxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OlBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZm
ZXI6OnRha2VEYXRhKToKKyAgICAgICAgQWRkIGEgZmV3IGhlbHBlcnMgdG8gYWxsb3cgY3JlYXRp
b25nIHRvL2Zyb20gUGl4ZWxCdWZmZXIKKyAgICAgICAgYSBiaXQgZWFzaWVyLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgRml4IGlu
Y29ycmVjdCBhc3NlcnRpb24uIFdlIHdhbnQgdG8gYXNzZXJ0IHRoYXQgdGhlcmUgaXMgbm8gZXJy
b3IsIG5vdCB0aGF0CisgICAgICAgIHRoZXJlIGlzIG9uZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQpOgorICAgICAgICBTdG9wIGhhcmQgY29kaW5nIFNSR0IgZm9yIFBpeGVsQnVmZmVyIGNv
bG9yIHNwYWNlcyBhbmQgdXNlIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICBjb2xvciBzcGFjZSBm
b3IgdGhlIHRhc2suIFdlIHN0aWxsIGRvIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gdGhyb3VnaCBJ
bWFnZUJ1ZmZlcgorICAgICAgICBzbyB3ZSBzaG91bGQgY29tZSBiYWNrIGFuZCBzaW1wbGlmeSBj
b2RlIGhlcmUgdG8gbm90IGFsd2F5cyByZXF1aXJlIHRoYXQuCisKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnZpZGVvU2FtcGxl
QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFn
ZSk6CisgICAgICAgIFVwZGF0ZSB0byBzcGVjaWZ5IGEgY29sb3Igc3BhY2UgdG8gbWFpbnRhaW4g
ZXhpc3RpbmcgYmVoYXZpb3IuCisKIDIwMjEtMDUtMTUgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdIE1vdmUgdGFibGUgd3JhcHBlciBxdWlya3MgdG8gaXRz
IG93biBjbGFzcwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3NzU0NCkKKysr
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDE3LDYg
KzEwMTcsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGh0bWwvSW1hZ2VC
aXRtYXAuaWRsCiAgICAgaHRtbC9JbWFnZUJpdG1hcE9wdGlvbnMuaWRsCiAgICAgaHRtbC9JbWFn
ZURhdGEuaWRsCisgICAgaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwKICAgICBodG1sL01lZGlh
Q29udHJvbGxlci5pZGwKICAgICBodG1sL01lZGlhRW5jcnlwdGVkRXZlbnQuaWRsCiAgICAgaHRt
bC9NZWRpYUVycm9yLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDM2LDYg
KzEwMzYsNyBAQCAkKFBST0pFQ1RfRElSKS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCiAkKFBS
T0pFQ1RfRElSKS9odG1sL0ltYWdlQml0bWFwLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9JbWFn
ZUJpdG1hcE9wdGlvbnMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL0ltYWdlRGF0YS5pZGwKKyQo
UFJPSkVDVF9ESVIpL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsCiAkKFBST0pFQ1RfRElSKS9o
dG1sL01lZGlhQ29udHJvbGxlci5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvTWVkaWFFbmNyeXB0
ZWRFdmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvTWVkaWFFcnJvci5pZGwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CShyZXZp
c2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTE4MCw2ICsxMTgwLDggQEAgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdlRGF0
YS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1h
Z2VEYXRhLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
SW1hZ2VEYXRhU2V0dGluZ3MuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0ltYWdlRGF0YVNldHRpbmdzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZVNtb290aGluZ1F1
YWxpdHkuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJ
bm5lckhUTUwuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9u
IDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTg5MCw2ICs4OTAsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2Vi
Q29yZSkvaHRtbC9JbWFnZUJpdG1hcC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9JbWFnZUJp
dG1hcE9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSW1hZ2VEYXRhLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9odG1sL01lZGlhQ29udHJvbGxlci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9NZWRpYUVu
Y3J5cHRlZEV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL01lZGlhRXJyb3IuaWRsIFwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzIwNyw2ICszMjA3LDcgQEAgSlNJbWFnZUJp
dG1hcE9wdGlvbnMuY3BwCiBKU0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKIEpTSW1h
Z2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuY3BwCiBKU0ltYWdlRGF0YS5jcHAKK0pT
SW1hZ2VEYXRhU2V0dGluZ3MuY3BwCiBKU0ltYWdlU21vb3RoaW5nUXVhbGl0eS5jcHAKIEpTSW5w
dXRFdmVudC5jcHAKIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDk1LDYgKzQwOTUsNyBAQAogCQlC
Qzk2REI0MzBGM0E4ODBFMDA1NzNDQjMgLyogUmVuZGVyQm94TW9kZWxPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTZEQjQyMEYzQTg4MEUw
MDU3M0NCMyAvKiBSZW5kZXJCb3hNb2RlbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDOTdFMjNBMTA5MTQ0OTUwMDEwRDM2MSAvKiBI
VE1MQWxsQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM5N0UyMzgxMDkxNDQ5NTAwMTBEMzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmgg
Ki87IH07CiAJCUJDOTdFNDEzMTA5MTU0RkEwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xsZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTQx
MTEwOTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5oICovOyB9OworCQlCQ0Ew
ODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTA4OEYyMjY0RTFCRjkwMDNFMkE2
QyAvKiBJbWFnZURhdGFTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDQTE2OUEzMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJs
ZUNhcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0ExNjlBMTBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVDYXB0aW9uRWxl
bWVudC5oICovOyB9OwogCQlCQ0EyNTcxNTEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3Np
dGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0EyNTcxNDEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggKi87
IH07CiAJCUJDQTJCMDYxMTA1MDQ3NjAwMDQzQkQxQyAvKiBVc2VyU2NyaXB0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EyQjA2MDEwNTA0NzVGMDA0
M0JEMUMgLyogVXNlclNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0xNDMxNSw2ICsxNDMxNiw4IEBACiAJCUJDOUE2MTQyMTQ2ODU5RDkw
MDYwNTdGRCAvKiBFdmVudE5hbWVzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50TmFtZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDOUE2MTQ1MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX2V2ZW50
X2ZhY3RvcnkucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gbWFrZV9ldmVudF9mYWN0b3J5LnBsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzlBNjE0NjE0Njg1OUQ5MDA2MDU3RkQgLyogbWFr
ZV9uYW1lcy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSBtYWtlX25hbWVzLnBsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0EwODhGMjI2NEUxQkY5MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0
dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEYXRhU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkNBMDg4RjQyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNl
dHRpbmdzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBJbWFnZURhdGFTZXR0aW5ncy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDQTE2OUEwMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRp
b25FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hU
TUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkNBMTY5QTEwQkZENTVCNDAwMTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMjU3MTQxMjkzQzAxMDAwN0Ey
NjNEIC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIzOTI2LDYgKzIzOTI5LDggQEAKIAkJCQlBNzc5NzkxMzBENkI5RDBDMDAzODUxQjkg
LyogSW1hZ2VEYXRhLmNwcCAqLywKIAkJCQlBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1h
Z2VEYXRhLmggKi8sCiAJCQkJQTc3OTc5MTUwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5p
ZGwgKi8sCisJCQkJQkNBMDg4RjIyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdz
LmggKi8sCisJCQkJQkNBMDg4RjQyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdz
LmlkbCAqLywKIAkJCQk5NzIwNUFCMTEyMzkyOTEwMDBCMTczODAgLyogSW1hZ2VEb2N1bWVudC5j
cHAgKi8sCiAJCQkJOTcyMDVBQjIxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCAq
LywKIAkJCQlGNTVCM0Q4RDEyNTFGMTJEMDAzRUYyNjkgLyogSW1hZ2VJbnB1dFR5cGUuY3BwICov
LApAQCAtMzI4ODcsNiArMzI4OTIsNyBAQAogCQkJCUIyQTEwRDkxMEIzODE4QkQwMDA5OUFBNCAv
KiBJbWFnZUJ1ZmZlclBpcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0UyMUREMjE4MzQ0NEEw
MEU2NkY1NSAvKiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
Nzc5NzkxQTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQ0EwODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEMTlGRUE4MUY1NzM5NzIwMDBDNDJGQiAvKiBJbWFnZURlY29kZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEMTlGRUFFMUY1NzRCNkQwMDBDNDJGQiAvKiBJbWFnZURlY29k
ZXJBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTVCODdFRDFDQUFGMEFCMDAzNDk0MjUg
LyogSW1hZ2VEZWNvZGVyQ0cuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lv
biAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQxLDMwICszMTQxLDI0IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byBhcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZl
ciksIDAsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICBpZiAoIWFycmF5KSB7
Ci0gICAgICAgICAgICBmYWlsKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAg
ICAgICB9Ci0KICAgICAgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSA9IEludFNpemUobG9naWNhbFdp
ZHRoLCBsb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgSW50U2l6ZSBpbWFnZURhdGFTaXplID0gbG9n
aWNhbFNpemU7CiAgICAgICAgIGltYWdlRGF0YVNpemUuc2NhbGUocmVzb2x1dGlvblNjYWxlKTsK
IAotICAgICAgICAvLyBGSVhNRTogQ3JlYXRpbmcgdGhpcyBJbWFnZURhdGEgaXMgbm90IG5lY2Vz
c2FyeS4gV2Ugc2hvdWxkIHNraXAgcmlnaHQgdG8gY3JlYXRpbmcgYSBQaXhlbEJ1ZmZlciBkaXJl
Y3RseS4KLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZURh
dGFTaXplLCBhcnJheS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgaWYgKCFpbWFnZURhdGEp
IHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVj
dCksIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9u
U2NhbGUpOworICAgICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICAgICAgZmFpbCgpOwogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVm
ZmVyID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0RnJvbUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QpLCBsb2dpY2FsU2l6ZSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlKTsKLSAgICAgICAgaWYg
KCFidWZmZXIpIHsKKyAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVs
QnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBpbWFnZURhdGFTaXplLCBhcnJheUJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewogICAgICAgICAgICAg
ZmFpbCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIoaW1hZ2VEYXRhLT5waXhlbEJ1ZmZlcigpLCB7IElu
dFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOworICAgICAgICBidWZmZXItPnB1dFBpeGVs
QnVmZmVyKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgeyBJbnRQb2ludDo6emVybygpLCBsb2dpY2Fs
U2l6ZSB9KTsKIAogICAgICAgICBhdXRvIGJpdG1hcCA9IEltYWdlQml0bWFwOjpjcmVhdGUoSW1h
Z2VCaXRtYXBCYWNraW5nKFdURk1vdmUoYnVmZmVyKSwgT3B0aW9uU2V0PFNlcmlhbGl6YXRpb25T
dGF0ZT46OmZyb21SYXcoc2VyaWFsaXphdGlvblN0YXRlKSkpOwogICAgICAgICByZXR1cm4gZ2V0
SlNWYWx1ZShiaXRtYXApOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAkocmV2aXNp
b24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2hlY2tl
ZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IEltYWdlRGF0YTo6ZGF0YVNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKK3N0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY29t
cHV0ZURhdGFTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQ2hlY2tlZDx1bnNpZ25l
ZCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWREYXRhU2l6ZSA9IDQ7CiAgICAgY2hlY2tlZERhdGFT
aXplICo9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplLndpZHRoKCkpOwpAQCAtNDMsOSArNDMs
MTggQEAgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IEltYWdlRAogICAgIHJldHVy
biBjaGVja2VkRGF0YVNpemU7CiB9CiAKK1ByZWRlZmluZWRDb2xvclNwYWNlIEltYWdlRGF0YTo6
Y29tcHV0ZUNvbG9yU3BhY2UoT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdzLCBQ
cmVkZWZpbmVkQ29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSkKK3sKKyAgICBpZiAoc2V0dGlu
Z3MgJiYgc2V0dGluZ3MtPmNvbG9yU3BhY2UpCisgICAgICAgIHJldHVybiAqc2V0dGluZ3MtPmNv
bG9yU3BhY2U7CisgICAgcmV0dXJuIGRlZmF1bHRDb2xvclNwYWNlOworfQorCiBSZWY8SW1hZ2VE
YXRhPiBJbWFnZURhdGE6OmNyZWF0ZShQaXhlbEJ1ZmZlciYmIHBpeGVsQnVmZmVyKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShXVEZNb3ZlKHBpeGVsQnVmZmVyKSkpOwor
ICAgIGF1dG8gY29sb3JTcGFjZSA9IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UocGl4ZWxCdWZmZXIu
Zm9ybWF0KCkuY29sb3JTcGFjZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29sb3JTcGFjZSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHBpeGVsQnVmZmVyLnNpemUoKSwgcGl4
ZWxCdWZmZXIudGFrZURhdGEoKSwgKmNvbG9yU3BhY2UpKTsKIH0KIAogUmVmUHRyPEltYWdlRGF0
YT4gSW1hZ2VEYXRhOjpjcmVhdGUoT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiYgcGl4ZWxCdWZmZXIp
CkBAIC01Nyw0MyArNjYsNjMgQEAgUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUo
T3B0aQogCiBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzaXplKQogewotICAgIGF1dG8gZGF0YVNpemUgPSBJbWFnZURhdGE6OmRhdGFTaXplKHNpemUp
OworICAgIGF1dG8gZGF0YVNpemUgPSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CiAgICAgaWYgKGRh
dGFTaXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0
byBieXRlQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChk
YXRhU2l6ZS51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFieXRlQXJyYXkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YSh7IHsg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdC
QTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCBzaXplLCBieXRlQXJyYXkucmVsZWFz
ZU5vbk51bGwoKSB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUs
IGJ5dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpLCBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQikp
OwogfQogCi1SZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzaXplLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5KQorUmVmUHRyPEltYWdl
RGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgUmVmPFVpbnQ4Q2xh
bXBlZEFycmF5PiYmIGJ5dGVBcnJheSwgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFjZSkK
IHsKLSAgICBhdXRvIGRhdGFTaXplID0gSW1hZ2VEYXRhOjpkYXRhU2l6ZShzaXplKTsKLSAgICBp
ZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplLnVuc2FmZUdldCgpID4gYnl0
ZUFycmF5LT5sZW5ndGgoKSkKKyAgICBhdXRvIGRhdGFTaXplID0gY29tcHV0ZURhdGFTaXplKHNp
emUpOworICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgZGF0YVNpemUudW5zYWZl
R2V0KCkgIT0gYnl0ZUFycmF5LT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgV1RGTW92ZShieXRlQXJyYXkpIH0pKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoc2l6ZSwgV1RGTW92ZShieXRlQXJyYXkpLCBjb2xv
clNwYWNlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNy
ZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gpCitFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRh
Pj4gSW1hZ2VEYXRhOjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIHJvd3MsIHVuc2lnbmVk
IHBpeGVsc1BlclJvdywgUHJlZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UsIE9w
dGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncykKK3sKKyAgICBJbnRTaXplIHNpemUo
cm93cywgcGl4ZWxzUGVyUm93KTsKKyAgICBhdXRvIGRhdGFTaXplID0gY29tcHV0ZURhdGFTaXpl
KHNpemUpOworICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiQ2Fubm90IGFsbG9jYXRlIGEgYnVmZmVyIG9mIHRo
aXMgc2l6ZSJfcyB9OworCisgICAgYXV0byBieXRlQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChkYXRhU2l6ZS51bnNhZmVHZXQoKSk7CisgICAgaWYgKCFi
eXRlQXJyYXkpIHsKKyAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBuZWVkIHRvIGJlIGEgInJl
YWwiIG91dCBvZiBtZW1vcnkgZXJyb3Igd2l0aCBzZXRPdXRPZk1lbW9yeUVycm9yIGNhbGxlZCBv
biBpdD8KKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJPdXQgb2YgbWVt
b3J5Il9zIH07CisgICAgfQorCisgICAgYXV0byBjb2xvclNwYWNlID0gY29tcHV0ZUNvbG9yU3Bh
Y2Uoc2V0dGluZ3MsIGRlZmF1bHRDb2xvclNwYWNlKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJbWFnZURhdGEoc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCksIGNvbG9yU3BhY2Up
KTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKHVu
c2lnbmVkIHN3LCB1bnNpZ25lZCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRp
bmdzKQogewogICAgIGlmICghc3cgfHwgIXNoKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW5kZXhTaXplRXJyb3IgfTsKKwogICAgIEludFNpemUgc2l6ZShzdywgc2gpOwotICAgIGF1dG8g
ZGF0YVNpemUgPSBJbWFnZURhdGE6OmRhdGFTaXplKHNpemUpOworICAgIGF1dG8gZGF0YVNpemUg
PSBjb21wdXRlRGF0YVNpemUoc2l6ZSk7CiAgICAgaWYgKGRhdGFTaXplLmhhc092ZXJmbG93ZWQo
KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJDYW5ub3QgYWxsb2Nh
dGUgYSBidWZmZXIgb2YgdGhpcyBzaXplIl9zIH07CisKICAgICBhdXRvIGJ5dGVBcnJheSA9IFVp
bnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXplLnVuc2FmZUdl
dCgpKTsKICAgICBpZiAoIWJ5dGVBcnJheSkgewogICAgICAgICAvLyBGSVhNRTogRG9lcyB0aGlz
IG5lZWQgdG8gYmUgYSAicmVhbCIgb3V0IG9mIG1lbW9yeSBlcnJvciB3aXRoIHNldE91dE9mTWVt
b3J5RXJyb3IgY2FsbGVkIG9uIGl0PwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUmFuZ2VF
cnJvciwgIk91dCBvZiBtZW1vcnkiX3MgfTsKICAgICB9CiAgICAgYnl0ZUFycmF5LT56ZXJvRmls
bCgpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YSh7IHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCBzaXplLCBieXRlQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9
KSk7CisKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBjb21wdXRlQ29sb3JTcGFjZShzZXR0aW5ncyk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIGJ5dGVBcnJheS5yZWxl
YXNlTm9uTnVsbCgpLCBjb2xvclNwYWNlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxJbWFnZURh
dGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5
LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoKQorRXhjZXB0aW9uT3I8UmVmPElt
YWdlRGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiBieXRl
QXJyYXksIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNpZ25lZD4gc2gsIE9wdGlvbmFsPEltYWdl
RGF0YVNldHRpbmdzPiBzZXR0aW5ncykKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBieXRlQXJy
YXktPmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAlIDQpCkBAIC0xMDcsMjIg
KzEzNiwyOCBAQCBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjCiAgICAg
aWYgKHNoICYmIHNoLnZhbHVlKCkgIT0gaGVpZ2h0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW5kZXhTaXplRXJyb3IsICJzaCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaGVpZ2h0Il9zIH07
CiAKLSAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZShJbnRTaXplKHN3LCBoZWlnaHQpLCBXVEZNb3Zl
KGJ5dGVBcnJheSkpOwotICAgIGlmICghcmVzdWx0KQorICAgIEludFNpemUgc2l6ZShzdywgaGVp
Z2h0KTsKKyAgICBhdXRvIGRhdGFTaXplID0gY29tcHV0ZURhdGFTaXplKHNpemUpOworICAgIGlm
IChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgZGF0YVNpemUudW5zYWZlR2V0KCkgIT0gYnl0
ZUFycmF5LT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3Ig
fTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CisKKyAgICBhdXRvIGNvbG9y
U3BhY2UgPSBjb21wdXRlQ29sb3JTcGFjZShzZXR0aW5ncyk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW1hZ2VEYXRhKHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSwgY29sb3JTcGFjZSkpOwog
fQogCi1JbWFnZURhdGE6OkltYWdlRGF0YShQaXhlbEJ1ZmZlciYmIHBpeGVsQnVmZmVyKQotICAg
IDogbV9waXhlbEJ1ZmZlcihXVEZNb3ZlKHBpeGVsQnVmZmVyKSkKK0ltYWdlRGF0YTo6SW1hZ2VE
YXRhKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmIGRh
dGEsIFByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UpCisgICAgOiBtX3NpemUoc2l6ZSkK
KyAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQorICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpCiB7CiB9CiAKIEltYWdlRGF0YTo6fkltYWdlRGF0YSgpID0gZGVmYXVsdDsKIAotUmVmPElt
YWdlRGF0YT4gSW1hZ2VEYXRhOjpkZWVwQ2xvbmUoKSBjb25zdAorUGl4ZWxCdWZmZXIgSW1hZ2VE
YXRhOjpwaXhlbEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1h
Z2VEYXRhKG1fcGl4ZWxCdWZmZXIuZGVlcENsb25lKCkpKTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVs
Rm9ybWF0OjpSR0JBOCwgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UobV9jb2xvclNwYWNlKSB9Owor
ICAgIHJldHVybiB7IGZvcm1hdCwgbV9zaXplLCBtX2RhdGEuZ2V0KCkgfTsKIH0KIAogVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURh
dGEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5
LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVk
ZSAiSW1hZ2VEYXRhU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAi
UGl4ZWxCdWZmZXIuaCIKKyNpbmNsdWRlICJQcmVkZWZpbmVkQ29sb3JTcGFjZS5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCwyOSArNDMsMzIgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SW1hZ2VEYXRhPiBjcmVhdGUoUGl4
ZWxCdWZmZXImJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+
IGNyZWF0ZShPcHRpb25hbDxQaXhlbEJ1ZmZlcj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJiwg
UmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhj
ZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4g
Y3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWduZWQgc3csIE9wdGlvbmFsPHVu
c2lnbmVkPiBzaCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURhdGE+
IGNyZWF0ZShjb25zdCBJbnRTaXplJiwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCBQcmVkZWZp
bmVkQ29sb3JTcGFjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxJbWFnZURhdGE+PiBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIHJvd3MsIHVuc2lnbmVk
IHBpeGVsc1BlclJvdywgUHJlZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UsIE9w
dGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiA9IFdURjo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUodW5zaWduZWQg
c3csIHVuc2lnbmVkIHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4pOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKFJlZjxV
aW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWduZWQgc3csIE9wdGlvbmFsPHVuc2lnbmVkPiBzaCwg
T3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+KTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIH5JbWFn
ZURhdGEoKTsKIAotICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Bp
eGVsQnVmZmVyLnNpemUoKTsgfQotICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4
ZWxCdWZmZXIuc2l6ZSgpLndpZHRoKCk7IH0KLSAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9waXhlbEJ1ZmZlci5zaXplKCkuaGVpZ2h0KCk7IH0KKyAgICBzdGF0aWMgUHJlZGVmaW5l
ZENvbG9yU3BhY2UgY29tcHV0ZUNvbG9yU3BhY2UoT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+
LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSA9IFByZWRlZmluZWRDb2xv
clNwYWNlOjpTUkdCKTsKIAotICAgIFVpbnQ4Q2xhbXBlZEFycmF5JiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9waXhlbEJ1ZmZlci5kYXRhKCk7IH0KKyAgICBjb25zdCBJbnRTaXplJiBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKLSAgICBSZWY8SW1hZ2VEYXRhPiBkZWVwQ2xvbmUo
KSBjb25zdDsKKyAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsg
fQorICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KKyAg
ICBVaW50OENsYW1wZWRBcnJheSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsg
fQorICAgIFByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBt
X2NvbG9yU3BhY2U7IH0KIAotICAgIGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fcGl4ZWxCdWZmZXI7IH0KKyAgICBQaXhlbEJ1ZmZlciBwaXhlbEJ1ZmZl
cigpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEltYWdlRGF0YShQaXhlbEJ1ZmZl
ciYmKTsKLQotICAgIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gZGF0
YVNpemUoY29uc3QgSW50U2l6ZSYpOworICAgIGV4cGxpY2l0IEltYWdlRGF0YShjb25zdCBJbnRT
aXplJiwgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYsIFByZWRlZmluZWRDb2xvclNwYWNl
KTsKIAotICAgIFBpeGVsQnVmZmVyIG1fcGl4ZWxCdWZmZXI7CisgICAgSW50U2l6ZSBtX3NpemU7
CisgICAgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IG1fZGF0YTsKKyAgICBQcmVkZWZpbmVk
Q29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgSW1hZ2VEYXRhJik7CitX
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBJ
bWFnZURhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURhdGEuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmlkbAkocmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTAgKzMyLDExIEBACiAg
ICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZQogXSBpbnRlcmZhY2UgSW1hZ2VEYXRhIHsKLSAgICBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25n
IHN3LCB1bnNpZ25lZCBsb25nIHNoKTsKLSAgICBjb25zdHJ1Y3RvcihVaW50OENsYW1wZWRBcnJh
eSBkYXRhLCB1bnNpZ25lZCBsb25nIHN3LCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIHNoKTsKKyAg
ICBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIHN3LCB1bnNpZ25lZCBsb25nIHNoLCBvcHRpb25h
bCBJbWFnZURhdGFTZXR0aW5ncyBzZXR0aW5ncyk7CisgICAgY29uc3RydWN0b3IoVWludDhDbGFt
cGVkQXJyYXkgZGF0YSwgdW5zaWduZWQgbG9uZyBzdywgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBz
aCwgb3B0aW9uYWwgSW1hZ2VEYXRhU2V0dGluZ3Mgc2V0dGluZ3MpOwogCiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgaGVpZ2h0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVaW50OENsYW1wZWRB
cnJheSBkYXRhOworICAgIFtFbmFibGVkQnlTZXR0aW5nPUNhbnZhc0NvbG9yU3BhY2VdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlOwogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlBy
ZWRlZmluZWRDb2xvclNwYWNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEltYWdlRGF0YVNldHRpbmdzIHsKKyAgICBPcHRpb25h
bDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRs
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3Mu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9jYW52YXMuaHRtbCNpbWFnZWRhdGFz
ZXR0aW5ncworZGljdGlvbmFyeSBJbWFnZURhdGFTZXR0aW5ncyB7CisgICAgW0VuYWJsZWRCeVNl
dHRpbmc9Q2FudmFzQ29sb3JTcGFjZV0gUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFjZTsK
K307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0ltYWdlRGF0
YS5pZGwJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc0ltYWdlRGF0YS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOSArMjYsOSBAQAogLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY2FudmFzLmh0bWwjY2FudmFzaW1hZ2Vk
YXRhCiBpbnRlcmZhY2UgbWl4aW4gQ2FudmFzSW1hZ2VEYXRhIHsKICAgICAvLyBwaXhlbCBtYW5p
cHVsYXRpb24KLSAgICBJbWFnZURhdGEgY3JlYXRlSW1hZ2VEYXRhKFtFbmZvcmNlUmFuZ2VdIGxv
bmcgc3csIFtFbmZvcmNlUmFuZ2VdIGxvbmcgc2gpOworICAgIEltYWdlRGF0YSBjcmVhdGVJbWFn
ZURhdGEoW0VuZm9yY2VSYW5nZV0gbG9uZyBzdywgW0VuZm9yY2VSYW5nZV0gbG9uZyBzaCwgb3B0
aW9uYWwgSW1hZ2VEYXRhU2V0dGluZ3Mgc2V0dGluZ3MpOwogICAgIEltYWdlRGF0YSBjcmVhdGVJ
bWFnZURhdGEoSW1hZ2VEYXRhIGltYWdlZGF0YSk7Ci0gICAgSW1hZ2VEYXRhIGdldEltYWdlRGF0
YShbRW5mb3JjZVJhbmdlXSBsb25nIHN4LCBbRW5mb3JjZVJhbmdlXSBsb25nIHN5LCBbRW5mb3Jj
ZVJhbmdlXSBsb25nIHN3LCBbRW5mb3JjZVJhbmdlXSBsb25nIHNoKTsKKyAgICBJbWFnZURhdGEg
Z2V0SW1hZ2VEYXRhKFtFbmZvcmNlUmFuZ2VdIGxvbmcgc3gsIFtFbmZvcmNlUmFuZ2VdIGxvbmcg
c3ksIFtFbmZvcmNlUmFuZ2VdIGxvbmcgc3csIFtFbmZvcmNlUmFuZ2VdIGxvbmcgc2gsIG9wdGlv
bmFsIEltYWdlRGF0YVNldHRpbmdzIHNldHRpbmdzKTsKICAgICB1bmRlZmluZWQgcHV0SW1hZ2VE
YXRhKEltYWdlRGF0YSBpbWFnZWRhdGEsIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZHgsIFtFbmZvcmNl
UmFuZ2VdIGxvbmcgZHkpOwogICAgIHVuZGVmaW5lZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhIGlt
YWdlZGF0YSwgW0VuZm9yY2VSYW5nZV0gbG9uZyBkeCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBkeSwg
W0VuZm9yY2VSYW5nZV0gbG9uZyBkaXJ0eVgsIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZGlydHlZLCBb
RW5mb3JjZVJhbmdlXSBsb25nIGRpcnR5V2lkdGgsIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZGlydHlI
ZWlnaHQpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCShyZXZpc2lvbiAyNzc1NDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE1MiwzOSArMjE1Miw1MCBAQCBib29sIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6Om5lZWRzCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlRW1wdHlJbWFnZURhdGEoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVFbXB0eUltYWdlRGF0YShjb25zdCBJbWFn
ZURhdGEmIGltYWdlRGF0YSkKIHsKLSAgICBhdXRvIGRhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShz
aXplKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgZGF0YS0+ZGF0YSgpLnplcm9GaWxsKCk7Ci0g
ICAgcmV0dXJuIGRhdGE7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBpbml0aWFsaXpp
bmcgdGhlIEltYWdlRGF0YSB3aGVuIHNldHRpbmdzLmFscGhhIGlzIGZhbHNlLCByZXF1aXJpbmcK
KyAgICAvLyBldmVyeSA0dGggYnl0ZSB0byBiZSAweEZGLgorCisgICAgaW1hZ2VEYXRhLmRhdGEo
KS56ZXJvRmlsbCgpOwogfQogCi1SZWZQdHI8SW1hZ2VEYXRhPiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEoSW1hZ2VEYXRhJiBpbWFnZURhdGEpIGNvbnN0CitF
eGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
Y3JlYXRlSW1hZ2VEYXRhKEltYWdlRGF0YSYgaW1hZ2VEYXRhKSBjb25zdAogewotICAgIHJldHVy
biBjcmVhdGVFbXB0eUltYWdlRGF0YShpbWFnZURhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIG5ld0lt
YWdlRGF0YSA9IEltYWdlRGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZChpbWFnZURhdGEud2lkdGgo
KSwgaW1hZ2VEYXRhLmhlaWdodCgpLCBpbWFnZURhdGEuY29sb3JTcGFjZSgpKTsKKyAgICBpZiAo
bmV3SW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbmV3SW1hZ2VEYXRh
LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGluaXRpYWxpemVFbXB0eUltYWdlRGF0YShuZXdJ
bWFnZURhdGEucmV0dXJuVmFsdWUoKSk7CisKKyAgICByZXR1cm4gbmV3SW1hZ2VEYXRhOwogfQog
Ci1FeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6Y3JlYXRlSW1hZ2VEYXRhKGludCBzdywgaW50IHNoKSBjb25zdAorRXhjZXB0aW9uT3I8
UmVmPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdl
RGF0YShpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+IHNldHRpbmdz
KSBjb25zdAogewogICAgIGlmICghc3cgfHwgIXNoKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW5kZXhTaXplRXJyb3IgfTsKIAotICAgIEludFNpemUgc2l6ZSB7IHN0ZDo6YWJzKHN3KSwg
c3RkOjphYnMoc2gpIH07Ci0gICAgcmV0dXJuIGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKHNpemUpOwor
ICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGVVbmluaXRpYWxpemVkKHN0ZDo6
YWJzKHN3KSwgc3RkOjphYnMoc2gpLCBtX3NldHRpbmdzLmNvbG9yU3BhY2UsIHNldHRpbmdzKTsK
KyAgICBpZiAoaW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gaW1hZ2VE
YXRhLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGluaXRpYWxpemVFbXB0eUltYWdlRGF0YShp
bWFnZURhdGEucmV0dXJuVmFsdWUoKSk7CisKKyAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1F
eGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6Z2V0SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCkgY29uc3QKK0V4
Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpn
ZXRJbWFnZURhdGEoaW50IHN4LCBpbnQgc3ksIGludCBzdywgaW50IHNoLCBPcHRpb25hbDxJbWFn
ZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpIGNvbnN0CiB7CisgICAgaWYgKCFzdyB8fCAhc2gpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworCiAgICAgaWYgKCFj
YW52YXNCYXNlKCkub3JpZ2luQ2xlYW4oKSkgewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiVW5hYmxl
IHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2FudmFzIGJlY2F1c2UgdGhlIGNhbnZhcyBoYXMgYmVl
biB0YWludGVkIGJ5IGNyb3NzLW9yaWdpbiBkYXRhLiIpKTsKICAgICAgICAgY2FudmFzQmFzZSgp
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKICAgICB9CiAKLSAgICBpZiAo
IXN3IHx8ICFzaCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07
Ci0KICAgICBpZiAoc3cgPCAwKSB7CiAgICAgICAgIHN4ICs9IHN3OwogICAgICAgICBzdyA9IC1z
dzsKQEAgLTIxOTcsMTAgKzIyMDgsMTkgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+
IENhbnZhc1JlbgogICAgIEludFJlY3QgaW1hZ2VEYXRhUmVjdCB7IHN4LCBzeSwgc3csIHNoIH07
CiAKICAgICBJbWFnZUJ1ZmZlciogYnVmZmVyID0gY2FudmFzQmFzZSgpLmJ1ZmZlcigpOwotICAg
IGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gY3JlYXRlRW1wdHlJbWFnZURhdGEoaW1hZ2VE
YXRhUmVjdC5zaXplKCkpOworICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgIGF1dG8gaW1hZ2VE
YXRhID0gSW1hZ2VEYXRhOjpjcmVhdGVVbmluaXRpYWxpemVkKGltYWdlRGF0YVJlY3Qud2lkdGgo
KSwgaW1hZ2VEYXRhUmVjdC5oZWlnaHQoKSwgbV9zZXR0aW5ncy5jb2xvclNwYWNlLCBzZXR0aW5n
cyk7CisgICAgICAgIGlmIChpbWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICBy
ZXR1cm4gaW1hZ2VEYXRhLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgICAgICBpbml0aWFsaXpl
RW1wdHlJbWFnZURhdGEoaW1hZ2VEYXRhLnJldHVyblZhbHVlKCkpOworICAgICAgICAKKyAgICAg
ICAgcmV0dXJuIGltYWdlRGF0YTsKKyAgICB9CisKKyAgICBhdXRvIGNvbXB1dGVkQ29sb3JTcGFj
ZSA9IEltYWdlRGF0YTo6Y29tcHV0ZUNvbG9yU3BhY2Uoc2V0dGluZ3MsIG1fc2V0dGluZ3MuY29s
b3JTcGFjZSk7CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgs
IHRvRGVzdGluYXRpb25Db2xvclNwYWNlKGNvbXB1dGVkQ29sb3JTcGFjZSkgfTsKICAgICBhdXRv
IHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIGltYWdlRGF0YVJl
Y3QpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKICAgICAgICAgY2FudmFzQmFzZSgpLnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVu
ZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAkocmV2
aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJJbWFnZVNtb290aGluZ1F1YWxpdHkuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1MYXllci5oIgpAQCAtMTkxLDkgKzE5Miw5IEBAIHB1YmxpYzoKICAgICBF
eGNlcHRpb25PcjxSZWY8Q2FudmFzR3JhZGllbnQ+PiBjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9h
dCB4MCwgZmxvYXQgeTAsIGZsb2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxKTsK
ICAgICBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IGNyZWF0ZVBhdHRlcm4oQ2Fu
dmFzSW1hZ2VTb3VyY2UmJiwgY29uc3QgU3RyaW5nJiByZXBldGl0aW9uKTsKIAotICAgIFJlZlB0
cjxJbWFnZURhdGE+IGNyZWF0ZUltYWdlRGF0YShJbWFnZURhdGEmKSBjb25zdDsKLSAgICBFeGNl
cHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gY3JlYXRlSW1hZ2VEYXRhKGludCB3aWR0aCwgaW50
IGhlaWdodCkgY29uc3Q7Ci0gICAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IGdldElt
YWdlRGF0YShpbnQgc3gsIGludCBzeSwgaW50IHN3LCBpbnQgc2gpIGNvbnN0OworICAgIEV4Y2Vw
dGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGVJbWFnZURhdGEoSW1hZ2VEYXRhJikgY29uc3Q7
CisgICAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZUltYWdlRGF0YShpbnQgd2lk
dGgsIGludCBoZWlnaHQsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPikgY29uc3Q7CisgICAg
RXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGdldEltYWdlRGF0YShpbnQgc3gsIGludCBzeSwg
aW50IHN3LCBpbnQgc2gsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPikgY29uc3Q7CiAgICAg
dm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiwgaW50IGR4LCBpbnQgZHkpOwogICAgIHZvaWQg
cHV0SW1hZ2VEYXRhKEltYWdlRGF0YSYsIGludCBkeCwgaW50IGR5LCBpbnQgZGlydHlYLCBpbnQg
ZGlydHlZLCBpbnQgZGlydHlXaWR0aCwgaW50IGRpcnR5SGVpZ2h0KTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAko
cmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5l
ZENvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw0ICs0NSwyMyBAQCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yCiAgICAgcmV0dXJuIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjsKIH0KIAorT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IHRv
UHJlZGVmaW5lZENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCit7
CisgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CisgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0I6CisgICAgICAgIHJldHVybiBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQjsKKyNp
ZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgY2FzZSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6CisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExB
WV9QMykKKyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAgICAg
ICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6OkRpc3BsYXlQMzsKKyNlbmRpZgorICAgIH0K
KworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9
CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5l
ZENvbG9yU3BhY2UuaAkocmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDYgKzQw
LDcgQEAgZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiB9OwogCiBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoUHJlZGVmaW5lZENvbG9yU3BhY2Up
OworT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlKTsKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyOCw2ICs0MjgsMTIgQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
YwogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3
aXp6bGVUeXBlOjpJbWFnZURhdGEgfX07CiB9CiAKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1
bWVudChJbWFnZURhdGFTZXR0aW5ncyYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGFyZ3VtZW50KQogewogICAgIHJldHVybiB7eyB2YWx1
ZUluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhhcmd1bWVudCkpLCBSZWNv
cmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19OwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAkocmV2aXNpb24g
Mjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRN
TEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJJbWFnZURhdGFTZXR0aW5ncy5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckNhbnZhc0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oCShy
ZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFdl
YkdMVHJhbnNmb3JtRmVlZGJhY2s7CiBjbGFzcyBXZWJHTFVuaWZvcm1Mb2NhdGlvbjsKIGNsYXNz
IFdlYkdMVmVydGV4QXJyYXlPYmplY3Q7CiBzdHJ1Y3QgRE9NTWF0cml4MkRJbml0Oworc3RydWN0
IEltYWdlRGF0YVNldHRpbmdzOwogZW51bSBjbGFzcyBSZWNvcmRpbmdTd2l6emxlVHlwZSA6IGlu
dDsKIGVudW0gY2xhc3MgQ2FudmFzRGlyZWN0aW9uOwogZW51bSBjbGFzcyBDYW52YXNGaWxsUnVs
ZTsKQEAgLTE1MCw2ICsxNTEsNyBAQCBlbnVtIEltYWdlU21vb3RoaW5nUXVhbGl0eTsKICAgICBt
YWNybyhIVE1MSW1hZ2VFbGVtZW50KikgXAogICAgIG1hY3JvKEltYWdlQml0bWFwKikgXAogICAg
IG1hY3JvKEltYWdlRGF0YSopIFwKKyAgICBtYWNybyhJbWFnZURhdGFTZXR0aW5ncyYpIFwKICAg
ICBtYWNybyhJbWFnZVNtb290aGluZ1F1YWxpdHkpIFwKICAgICBtYWNybyhPcHRpb25hbDxmbG9h
dD4mKSBcCiAgICAgbWFjcm8oUGF0aDJEKikgXApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCShyZXZpc2lv
biAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDkgQEAgVmVjdG9yPHVp
bnQ4X3Q+IEltYWdlQnVmZmVyQmFja2VuZDo6dG9CRwogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
SW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIHZvaWQqIGRh
dGEpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBub24gOC1iaXQgcGl4
ZWwgZm9ybWF0cy4KKyAgICBBU1NFUlQoZGVzdGluYXRpb25Gb3JtYXQucGl4ZWxGb3JtYXQgPT0g
UGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGRlc3RpbmF0aW9uRm9ybWF0LnBpeGVsRm9ybWF0ID09IFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisKICAgICBhdXRvIHNvdXJjZVJlY3RTY2FsZWQgPSB0b0JhY2tl
bmRDb29yZGluYXRlcyhzb3VyY2VSZWN0KTsKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKGRlc3RpbmF0aW9uRm9ybWF0LCBzb3VyY2VSZWN0U2NhbGVkLnNp
emUoKSk7CkBAIC0xMzQsMjMgKzEzNywxNSBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VC
dWZmZXJCYWNrZW5kCiAgICAgaWYgKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkgIT0gc291cmNlUmVj
dFNjYWxlZC5zaXplKCkpCiAgICAgICAgIHBpeGVsQnVmZmVyLT5kYXRhKCkuemVyb0ZpbGwoKTsK
IAotICAgIHVuc2lnbmVkIHNvdXJjZUJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsKLSAgICBj
b25zdCB1aW50OF90KiBzb3VyY2VSb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0
YSkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2VCeXRlc1BlclJvdyArIHNvdXJjZVJl
Y3RDbGlwcGVkLngoKSAqIDQ7Ci0KLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93
ID0gNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKTsKLSAgICB1aW50OF90KiBkZXN0aW5hdGlv
blJvd3MgPSBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmRhdGEoKSArIGRlc3RpbmF0aW9uUmVjdC55KCkg
KiBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7Ci0KLSAg
ICBQaXhlbEJ1ZmZlckZvcm1hdCBzb3VyY2VGb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpQcmVtdWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IgfTsKLQogICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7Ci0gICAg
c291cmNlLmZvcm1hdCA9IHNvdXJjZUZvcm1hdDsKLSAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSBz
b3VyY2VCeXRlc1BlclJvdzsKLSAgICBzb3VyY2Uucm93cyA9IHNvdXJjZVJvd3M7CisgICAgc291
cmNlLmZvcm1hdCA9IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4
ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH07CisgICAgc291cmNlLmJ5dGVzUGVyUm93ID0gYnl0
ZXNQZXJSb3coKTsKKyAgICBzb3VyY2Uucm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291
cmNlUmVjdENsaXBwZWQueCgpICogNDsKICAgICAKICAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25W
aWV3IGRlc3RpbmF0aW9uOwogICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IGRlc3RpbmF0aW9uRm9y
bWF0OwotICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gZGVzdGluYXRpb25CeXRlc1BlclJv
dzsKLSAgICBkZXN0aW5hdGlvbi5yb3dzID0gZGVzdGluYXRpb25Sb3dzOworICAgIGRlc3RpbmF0
aW9uLmJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKTsKKyAgICBkZXN0
aW5hdGlvbi5yb3dzID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5kYXRhKCkgKyBkZXN0aW5hdGlvblJl
Y3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICog
NDsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5h
dGlvblJlY3Quc2l6ZSgpKTsKIApAQCAtMTU5LDE0ICsxNTQsMTQgQEAgT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IEltYWdlQnVmZmVyQmFja2VuZAogCiB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0
UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHNvdXJjZVBpeGVsQnVmZmVyLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb25Qb2ludCwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCB2b2lkKiBkYXRhKQog
ewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igbm9uLVJHQkE4IHBpeGVsIGZvcm1hdHMu
Ci0gICAgQVNTRVJUKHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgpLnBpeGVsRm9ybWF0ID09IFBp
eGVsRm9ybWF0OjpSR0JBOCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBub24gOC1i
aXQgcGl4ZWwgZm9ybWF0cy4KKyAgICBBU1NFUlQoc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCku
cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IHNvdXJjZVBpeGVsQnVmZmVyLmZv
cm1hdCgpLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBhdXRvIHNv
dXJjZVJlY3RTY2FsZWQgPSB0b0JhY2tlbmRDb29yZGluYXRlcyhzb3VyY2VSZWN0KTsKICAgICBh
dXRvIGRlc3RpbmF0aW9uUG9pbnRTY2FsZWQgPSB0b0JhY2tlbmRDb29yZGluYXRlcyhkZXN0aW5h
dGlvblBvaW50KTsKIAotICAgIEludFJlY3Qgc291cmNlUmVjdENsaXBwZWQgPSBpbnRlcnNlY3Rp
b24oeyBJbnRQb2ludDo6emVybygpLCBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkgfSwgc291cmNl
UmVjdFNjYWxlZCk7Ci0gICAgSW50UmVjdCBkZXN0aW5hdGlvblJlY3QgPSBzb3VyY2VSZWN0Q2xp
cHBlZDsKKyAgICBhdXRvIHNvdXJjZVJlY3RDbGlwcGVkID0gaW50ZXJzZWN0aW9uKHsgSW50UG9p
bnQ6Onplcm8oKSwgc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpIH0sIHNvdXJjZVJlY3RTY2FsZWQp
OworICAgIGF1dG8gZGVzdGluYXRpb25SZWN0ID0gc291cmNlUmVjdENsaXBwZWQ7CiAgICAgZGVz
dGluYXRpb25SZWN0Lm1vdmVCeShkZXN0aW5hdGlvblBvaW50U2NhbGVkKTsKIAogICAgIGlmIChz
b3VyY2VSZWN0U2NhbGVkLngoKSA8IDApCkBAIC0xNzgsMjQgKzE3MywxNSBAQCB2b2lkIEltYWdl
QnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoCiAgICAgZGVzdGluYXRpb25SZWN0LmludGVy
c2VjdChiYWNrZW5kUmVjdCgpKTsKICAgICBzb3VyY2VSZWN0Q2xpcHBlZC5zZXRTaXplKGRlc3Rp
bmF0aW9uUmVjdC5zaXplKCkpOwogCi0gICAgdW5zaWduZWQgc291cmNlQnl0ZXNQZXJSb3cgPSA0
ICogc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRoKCk7Ci0gICAgY29uc3QgdWludDhfdCog
c291cmNlUm93cyA9IHNvdXJjZVBpeGVsQnVmZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0
Q2xpcHBlZC55KCkgKiBzb3VyY2VCeXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAq
IDQ7Ci0KLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3co
KTsKLSAgICB1aW50OF90KiBkZXN0aW5hdGlvblJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93
ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7Ci0KLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBzb3Vy
Y2VGb3JtYXQgPSBzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKTsKLSAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBkZXN0aW5hdGlvbkZvcm1hdCB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9y
bWF0KCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OwotCiAgICAgQ29uc3RQaXhlbEJ1
ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0gc291cmNlRm9y
bWF0OwotICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IHNvdXJjZUJ5dGVzUGVyUm93OwotICAgIHNv
dXJjZS5yb3dzID0gc291cmNlUm93czsKLSAgICAKKyAgICBzb3VyY2UuZm9ybWF0ID0gc291cmNl
UGl4ZWxCdWZmZXIuZm9ybWF0KCk7CisgICAgc291cmNlLmJ5dGVzUGVyUm93ID0gNCAqIHNvdXJj
ZVBpeGVsQnVmZmVyLnNpemUoKS53aWR0aCgpOworICAgIHNvdXJjZS5yb3dzID0gc291cmNlUGl4
ZWxCdWZmZXIuZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5i
eXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7CisKICAgICBQaXhlbEJ1ZmZl
ckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IGRl
c3RpbmF0aW9uRm9ybWF0OwotICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gZGVzdGluYXRp
b25CeXRlc1BlclJvdzsKLSAgICBkZXN0aW5hdGlvbi5yb3dzID0gZGVzdGluYXRpb25Sb3dzOwor
ICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IHsgZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxG
b3JtYXQoKSwgY29sb3JTcGFjZSgpIH07CisgICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSBi
eXRlc1BlclJvdygpOworICAgIGRlc3RpbmF0aW9uLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1Bl
clJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxz
KHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAko
cmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2NiwyMiBAQCBPcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyCiAgICAgcmV0dXJuIHsgeyBmb3JtYXQsIHNp
emUsIHBpeGVsQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9IH07CiB9CiAKK09wdGlvbmFsPFBpeGVs
QnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBm
b3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxKU0M6OkFycmF5QnVmZmVyPiYmIGFycmF5
QnVmZmVyKQoreworICAgIC8vIE5PVEU6IE9ubHkgOC1iaXQgZm9ybWF0cyBhcmUgY3VycmVudGx5
IHN1cHBvcnRlZC4KKyAgICBBU1NFUlQoZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0
OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKwor
ICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7Cisg
ICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGlmIChidWZmZXJTaXplLnVuc2FmZUdldCgpICE9IGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBwaXhl
bEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVy
KSwgMCwgYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSk7CisgICAgaWYgKCFwaXhlbEFycmF5KQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBw
aXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OworfQorCiBQaXhlbEJ1ZmZlcjo6UGl4ZWxC
dWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYgZGF0YSkKICAgICA6IG1fZm9ybWF0IHsg
Zm9ybWF0IH0KICAgICAsIG1fc2l6ZSB7IHNpemUgfQpAQCAtNzQsNiArOTAsMTQgQEAgUGl4ZWxC
dWZmZXI6OlBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZgogICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKG1fc2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSA8
PSBtX2RhdGEtPmxlbmd0aCgpKTsKIH0KIAorUGl4ZWxCdWZmZXI6OlBpeGVsQnVmZmVyKGNvbnN0
IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUsIEpTQzo6VWlu
dDhDbGFtcGVkQXJyYXkmIGRhdGEpCisgICAgOiBtX2Zvcm1hdCB7IGZvcm1hdCB9CisgICAgLCBt
X3NpemUgeyBzaXplIH0KKyAgICAsIG1fZGF0YSB7IGRhdGEgfQoreworICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKG1fc2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVH
ZXQoKSA8PSBtX2RhdGEtPmxlbmd0aCgpKTsKK30KKwogUGl4ZWxCdWZmZXI6On5QaXhlbEJ1ZmZl
cigpID0gZGVmYXVsdDsKIAogUGl4ZWxCdWZmZXIgUGl4ZWxCdWZmZXI6OmRlZXBDbG9uZSgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyLmgJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDEwIEBAIGNsYXNz
IFBpeGVsQnVmZmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQaXhlbEJ1ZmZlcik7CiBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0
cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0cnlDcmVhdGUoY29u
c3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJiwgUmVmPEpTQzo6QXJyYXlCdWZm
ZXI+JiYpOwogCiAgICAgUGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25z
dCBJbnRTaXplJiwgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYpOworICAgIFBpeGVsQnVm
ZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYsIEpTQzo6VWludDhD
bGFtcGVkQXJyYXkmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGl4ZWxCdWZmZXIoKTsKIAogICAg
IFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYpID0gZGVmYXVsdDsKQEAgLTUzLDYgKzU1LDggQEAg
cHVibGljOgogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KICAgICBKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmdldCgpOyB9CiAKKyAgICBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJiB0YWtlRGF0
YSgpIHsgcmV0dXJuIFdURk1vdmUobV9kYXRhKTsgfQorCiAgICAgUGl4ZWxCdWZmZXIgZGVlcENs
b25lKCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3NzU0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVy
c2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgdm9pZCBj
b252ZXJ0SW1hZ2VQaXhlbHNBY2NlbGVyYXRlCiAKICAgICAgICAgdkltYWdlX0Vycm9yIGNvbnZl
cnRlckNyZWF0ZUVycm9yID0ga3ZJbWFnZU5vRXJyb3I7CiAgICAgICAgIGF1dG8gY29udmVydGVy
ID0gYWRvcHRDRih2SW1hZ2VDb252ZXJ0ZXJfQ3JlYXRlV2l0aENHSW1hZ2VGb3JtYXQoJnNvdXJj
ZUNHSW1hZ2VGb3JtYXQsICZkZXN0aW5hdGlvbkNHSW1hZ2VGb3JtYXQsIG51bGxwdHIsIGt2SW1h
Z2VOb0ZsYWdzLCAmY29udmVydGVyQ3JlYXRlRXJyb3IpKTsKLSAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ3JlYXRlRXJyb3IsIGNvbnZlcnRlckNyZWF0ZUVycm9y
ICE9IGt2SW1hZ2VOb0Vycm9yLCAidkltYWdlQ29udmVydGVyIGNyZWF0aW9uIGZhaWxlZCB3aXRo
IGVycm9yOiAlemQiLCBjb252ZXJ0ZXJDcmVhdGVFcnJvcik7CisgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0VfVU5VU0VEKGNvbnZlcnRlckNyZWF0ZUVycm9yLCBjb252ZXJ0ZXJDcmVhdGVFcnJv
ciA9PSBrdkltYWdlTm9FcnJvciwgInZJbWFnZUNvbnZlcnRlciBjcmVhdGlvbiBmYWlsZWQgd2l0
aCBlcnJvcjogJXpkIiwgY29udmVydGVyQ3JlYXRlRXJyb3IpOwogCiAgICAgICAgIHZJbWFnZV9F
cnJvciBjb252ZXJ0ZXJDb252ZXJ0RXJyb3IgPSB2SW1hZ2VDb252ZXJ0X0FueVRvQW55KGNvbnZl
cnRlci5nZXQoKSwgJnNvdXJjZVZJbWFnZUJ1ZmZlciwgJmRlc3RpbmF0aW9uVkltYWdlQnVmZmVy
LCBudWxscHRyLCBrdkltYWdlTm9GbGFncyk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Vf
VU5VU0VEKGNvbnZlcnRlckNvbnZlcnRFcnJvciwgY29udmVydGVyQ29udmVydEVycm9yID09IGt2
SW1hZ2VOb0Vycm9yLCAidkltYWdlQ29udmVydF9BbnlUb0FueSBmYWlsZWQgY29udmVyc2lvbiB3
aXRoIGVycm9yOiAlemQiLCBjb252ZXJ0ZXJDb252ZXJ0RXJyb3IpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmNwcAkocmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjgsNyAr
NDY4LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udgogICAgIC8v
IENvbG9yIHNwYWNlIGNvbnZlcnNpb24gaGFwcGVucyBpbnRlcm5hbGx5IHdoZW4gZHJhd2luZyBm
cm9tIG9uZSBpbWFnZSBidWZmZXIgdG8gYW5vdGhlcgogICAgIGNvbnZlcnRlZEJ1ZmZlci0+Y29u
dGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihpbnB1dEJ1ZmZlciwgcmVjdCk7CiAgICAgCi0gICAgUGl4
ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgb3V0cHV0QWxwaGFGb3JtYXQsIFBpeGVsRm9ybWF0OjpS
R0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgb3V0cHV0QWxwaGFGb3JtYXQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgdGFyZ2V0
Q29sb3JTcGFjZSB9OwogICAgIHJldHVybiBjb252ZXJ0ZWRCdWZmZXItPmdldFBpeGVsQnVmZmVy
KGZvcm1hdCwgcmVjdCk7CiB9CiAKQEAgLTUwNCw3ICs1MDQsOSBAQCB2b2lkIEZpbHRlckVmZmVj
dDo6Y29weVVubXVsdGlwbGllZFJlc3VsCiAgICAgICAgICAgICAgICAgY29weUNvbnZlcnRlZElt
YWdlQnVmZmVyVG9EZXN0aW5hdGlvbihkZXN0aW5hdGlvbiwgKmNvbG9yU3BhY2UsIEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgcmVjdCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9y
bWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1h
dDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworCisgICAgICAgICAgICBB
U1NFUlQobV9pbWFnZUJ1ZmZlclJlc3VsdC0+Y29sb3JTcGFjZSgpID09IG1fcmVzdWx0Q29sb3JT
cGFjZSk7CisgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1
bHRDb2xvclNwYWNlIH07CiAgICAgICAgICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0g
bV9pbWFnZUJ1ZmZlclJlc3VsdC0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCB7IEludFBvaW50KCks
IG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0pOwogICAgICAgICAgICAgaWYgKCFtX3VubXVs
dGlwbGllZEltYWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTUxMiw3ICs1
MTQsOSBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsCiAgICAgICAg
ICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAg
ICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNpemUp
KTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsK
LSAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29s
b3JTcGFjZSk7CisgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9y
ZXN1bHRDb2xvclNwYWNlIH07CiAgICAgICAgICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0
ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGlucHV0U2l6ZSk7CiAgICAgICAgICAg
ICBpZiAoIW1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNTM5LDcgKzU0Myw5IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGll
ZFJlc3UKICAgICAgICAgICAgICAgICBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0
aW9uKGRlc3RpbmF0aW9uLCAqY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZCwgcmVjdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfTsKKworICAgICAgICAgICAgQVNTRVJUKG1faW1hZ2VCdWZmZXJSZXN1
bHQtPmNvbG9yU3BhY2UoKSA9PSBtX3Jlc3VsdENvbG9yU3BhY2UpOworICAgICAgICAgICAgUGl4
ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlw
bGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAg
ICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlclJlc3VsdC0+Z2V0
UGl4ZWxCdWZmZXIoZm9ybWF0LCB7IEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6
ZSgpIH0pOwogICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCkKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC01NDcsNyArNTUzLDkgQEAgdm9pZCBGaWx0ZXJFZmZl
Y3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdQogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUo
bV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1
ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7CiAgICAgICAgICAgICBpbnB1dFNp
emUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgICAgICAgICBQaXhlbEJ1ZmZl
ckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworCisgICAg
ICAgICAgICBBU1NFUlQobV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC0+Zm9ybWF0KCkuY29sb3JT
cGFjZSA9PSBtX3Jlc3VsdENvbG9yU3BhY2UpOworICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxG
b3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAgICAgIG1fcHJlbXVs
dGlwbGllZEltYWdlUmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGlucHV0
U2l6ZSk7CiAgICAgICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KQogICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTU5MCw3ICs1OTgsNyBAQCBPcHRpb25hbDxQaXhlbEJ1
ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3JlCiAgICAgSW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1
dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHND
bGFtcGluZyhyZXN1bHRTaXplKSk7CiAgICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0
ZXJTY2FsZSgpKTsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgs
IG1fcmVzdWx0Q29sb3JTcGFjZSB9OwogICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQ
aXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CiB9CkBAIC02MDksNyArNjE3LDcgQEAgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZQogICAgIEludFNpemUgcmVzdWx0U2l6ZSht
X2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6
ZU5lZWRzQ2xhbXBpbmcocmVzdWx0U2l6ZSkpOwogICAgIHJlc3VsdFNpemUuc2NhbGUobV9maWx0
ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQg
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdC
QTgsIG1fcmVzdWx0Q29sb3JTcGFjZSB9OwogICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHJlc3VsdFNpemUpOwogICAgIHJldHVy
biBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMzMSw3ICs1MzMxLDcgQEAgdm9p
ZCBJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZAogICAgIGlmICghcmdiYSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVh
dGUocmdiYS5yZWxlYXNlTm9uTnVsbCgpLCB2aWRlb1NldHRpbmdzLndpZHRoKCksIHZpZGVvU2V0
dGluZ3MuaGVpZ2h0KCkpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUo
cmdiYS5yZWxlYXNlTm9uTnVsbCgpLCB2aWRlb1NldHRpbmdzLndpZHRoKCksIHZpZGVvU2V0dGlu
Z3MuaGVpZ2h0KCksIHsgeyBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQiB9IH0pOwogICAgIGlm
ICghaW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICBtX25leHRUcmFja0ZyYW1lUHJv
bWlzZS0+cmVzb2x2ZShpbWFnZURhdGEucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgIGVsc2UK
QEAgLTYyMDMsNyArNjIwMyw3IEBAIHZvaWQgSW50ZXJuYWxzOjpsb2FkQXJ0d29ya0ltYWdlKFN0
cmluZyYKICAgICBtX2FydHdvcmtJbWFnZVByb21pc2UgPSBtYWtlVW5pcXVlPEFydHdvcmtJbWFn
ZVByb21pc2U+KFdURk1vdmUocHJvbWlzZSkpOwogICAgIG1fYXJ0d29ya0xvYWRlciA9IG1ha2VV
bmlxdWU8QXJ0d29ya0ltYWdlTG9hZGVyPigqY29udGV4dERvY3VtZW50KCksIHVybCwgW3RoaXNd
KEltYWdlKiBpbWFnZSkgewogICAgICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgICAgIGF1dG8g
aW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUodW5zaWduZWQoaW1hZ2UtPndpZHRoKCkpLCB1
bnNpZ25lZChpbWFnZS0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0g
SW1hZ2VEYXRhOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlLT53aWR0aCgpKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlLT5oZWlnaHQoKSksIHsgeyBQcmVkZWZpbmVkQ29s
b3JTcGFjZTo6U1JHQiB9IH0pOwogICAgICAgICAgICAgaWYgKCFpbWFnZURhdGEuaGFzRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlLT5yZXNvbHZlKGlt
YWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgICAgICAgICBlbHNlCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc1NTIpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAor
MjAyMS0wNS0xNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIGNyZWF0aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0
YSB2aWEgY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjU4NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgdGVzdHMgZW5hYmxpbmcgdGhlIENhbnZhc0NvbG9yU3BhY2VF
bmFibGVkIHByZWZlcmVuY2UuCisKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5jcHA6CisgICAg
ICAgIChXZWJQcmVmZXJlbmNlczo6Y2FudmFzQ29sb3JTcGFjZUVuYWJsZSk6CisgICAgICAgICog
V2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisKIDIwMjEtMDUtMTQgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIGxlZ2FjeSAvIHByZWZpeGVkIFdl
YkF1ZGlvIGltcGxlbWVudGF0aW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MzEsMyArMjYzMSw5
IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnN0b3BCYXRjaGluZ1VwZGEKICAgICB9CiAgICAg
cmV0dXJuIFNfT0s7CiB9CisKK2Jvb2wgV2ViUHJlZmVyZW5jZXM6OmNhbnZhc0NvbG9yU3BhY2VF
bmFibGUoKQoreworICAgIHJldHVybiBib29sVmFsdWVGb3JLZXkoIldlYktpdENhbnZhc0NvbG9y
U3BhY2VCZWhhdmlvckVuYWJsZWQiKTsKK30KKwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsNiArMzQzLDEw
IEBAIHB1YmxpYzoKIAogICAgIEhSRVNVTFQgcG9zdFByZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNh
dGlvbigpOwogCisgICAgLy8gVGhlIGZvbGxvd2luZyBwcmVmZXJlbmNlIGFjY2Vzc29ycyBhcmUg
bm90IGV4cG9zZWQgdmlhIElXZWJQcmVmZXJlbmNlcyogYXMgdGhleSBhcmUgb25seQorICAgIC8v
IG5lZWRlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgY2FuIGJlIHRvZ2dsZWQgdmlhIHRoZSBz
ZXQqUHJlZmVyZW5jZUZvclRlc3RpbmcgZnVuY3Rpb25zLgorICAgIGJvb2wgY2FudmFzQ29sb3JT
cGFjZUVuYWJsZSgpOworCiBwcml2YXRlOgogICAgIFdlYlByZWZlcmVuY2VzKCk7CiAgICAgfldl
YlByZWZlcmVuY2VzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkocmV2
aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2NjcsNiArNTY2Nyw4IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5
UHJlZmVyZW5jZXNDaGFuZ2UKICAgICAgICAgcmV0dXJuIGhyOwogICAgIHNldHRpbmdzLnNldE92
ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWQoISFlbmFibGVkKTsKIAorICAgIHNldHRpbmdzLnNldENh
bnZhc0NvbG9yU3BhY2VFbmFibGVkKGNhbnZhc0NvbG9yU3BhY2VFbmFibGUoKSk7CisKICAgICBy
ZXR1cm4gU19PSzsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3NTUxKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjEtMDUtMTUg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBjcmVhdGluZy9hY2Nlc3Npbmcvc2V0dGluZyBub24tc1JHQiBJbWFnZURhdGEgdmlhIGNhbnZh
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODQx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICBSZW1vdmUgd2lkZS1nYW11dC1jYW52YXMgbm93IHRoYXQg
dGhleSBzaG91bGQgcGFzcy4KKworICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1z
cGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS5odG1s
OiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyB0ZXN0IGV4ZXJjaXNpbmcgZ2V0SW1hZ2VEYXRhIGFu
ZCBwdXRJbWFnZURhdGEgd2l0aCBub24tc1JHQiBjYW52YXNlcworICAgICAgICBhbmQgbm9uLXNS
R0IgSW1hZ2VEYXRhLgorIAorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEt
ZXhwZWN0ZWQudHh0OgorICAgICAgICBVcGRhdGUgcmVzdWx0cyBmb3IgdXBkYXRlZCBlcnJvciBt
ZXNzYWdlcywgd2hpY2ggYXJlIGEgYml0IHdvcnNlIGR1ZSBhZGRpdGlvbmFsCisgICAgICAgIGFt
YmlndWl0eSBpbiBzaWduYXR1cmVzLgorCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICBNYXJrIG5ldyB0ZXN0IGFzIGZhaWxpbmcgb24gZ2xpYiBkdWUg
dG8gbGFjayBvZiBkaXNwbGF5LXAzIHN1cHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgTWFyayBuZXcgdGVzdCBhcyBmYWlsaW5nIG9uIFdp
bmRvd3MgZHVlIHRvIGxhY2sgb2YgZGlzcGxheS1wMyBzdXBwb3J0LgorICAgICAgICBVbnNraXAg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MtY29sb3JTcGFjZS1lbmFibGVkLmh0bWwg
d2hpY2gKKyAgICAgICAgc2hvdWxkIG5vdyBwYXNzIGR1ZSB0byBhZGRpbmcgbWFudWFsIHByZWZl
cmVuY2VzIHN1cHBvcnQgaW4gV2ViS2l0TGVnYWN5L3dpbi4gCisKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC10eXBlcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgIFVwZGF0ZSByZXN1bHRzIGR1ZSB0byBuZXcgYXR0cmlidXRlIGluIElt
YWdlRGF0YSB0aGF0IGlzIGF1dG8gcHJpbnRlZC4KKwogMjAyMS0wNS0xNSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNyZWF0ZUNvbmljR3JhZGllbnQKSW5kZXg6IExheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwko
cmV2aXNpb24gMjc3NTQ0KQorKysgTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2lu
ZyBjb3B5KQpAQCAtMzk5NCw5ICszOTk0LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZh
cy9lbGVtZW50L2RyYXdpbmctaW1hZ2VzLXRvLXRoZS1jYW52YXMvaW1hZ2Utb3JpZW50YXRpb24v
ZHJhd0ltYWdlLWZyb20tZWxlbWVudC1zd2FwLXdpZHRoLWhlaWdodC50ZW50YXRpdmUuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2NhbnZhcy9lbGVtZW50L2RyYXdpbmctaW1hZ2VzLXRvLXRoZS1jYW52YXMvaW1hZ2Utb3JpZW50
YXRpb24vZHJhd0ltYWdlLWZyb20tZWxlbWVudC50ZW50YXRpdmUuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogCi0jIFNvbWV0aW1lcyBwcmludHMgd2VpcmQgb3V0cHV0IGF0IHRoZSBiZWdpbm5p
bmcgb2YgdGhlIHRlc3RzLgotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzIFsgRmFpbHVyZSBQYXNzIF0KLQogIyBDU1Mg
TWFzb25yeSBMYXlvdXQgbm90IHN1cHBvcnRlZC4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1ncmlkL21hc29ucnkudGVudGF0aXZlIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMjAyMTE1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1
YmdyaWQgWyBTa2lwIF0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xv
ci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1h
Z2VEYXRhLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU5IEBACitUZXN0IHRoYXQgcGl4ZWwgYWNjZXNz
IGZ1bmN0aW9ucyB3b3JrIHdpdGggbm9uLVNSR0IgY29sb3Igc3BhY2VzLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0Nh
bnZhcy5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJv
bURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlU1JHQi5jb2xvclNwYWNlIGlzICJz
cmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdD
b2xvclNwYWNlRGlzcGxheVAzLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGltYWdl
RGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhcy5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFn
ZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZVNSR0IuY29sb3JT
cGFjZSBpcyAic3JnYiIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJp
ZGluZ0NvbG9yU3BhY2VEaXNwbGF5UDMuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1Mg
aW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3Rvci5jb2xvclNwYWNlIGlzICJz
cmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGlu
Z0NvbG9yU3BhY2VUb1NSR0IuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgaW1hZ2VEYXRhQ3Jl
YXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclNldHRpbmdDb2xvclNwYWNlVG9EaXNwbGF5UDMu
Y29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFn
ZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXIuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1Mg
aW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXJTZXR0
aW5nQ29sb3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFnZURhdGFD
cmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlclNldHRpbmdDb2xvclNw
YWNlVG9EaXNwbGF5UDMuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKKworVGVzdGluZyBhIGRp
c3BsYXktcDMgY2FudmFzIHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW50byBp
dAorCitUZXN0IGdldEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24g
YSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBk
cmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBk
YXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0
YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdp
dGggc3JnYiBzcGVjaWZpZWQsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29s
b3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBp
cyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1
NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitUZXN0
IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMg
Y2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KQor
UEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBp
cyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BB
U1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCitUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0
aCBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbnRvIGl0CisKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdp
dGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52
YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3Bh
Y2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5k
YXRhWzFdIGlzIDI1MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNd
IGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNw
bGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkK
K1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMwor
UEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRh
dGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVj
aWZpZWQsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEg
MCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BB
U1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRh
dGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBz
cmdiIGNhbnZhcyB3aXRoIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGludG8gaXQKKwor
VGVzdCBnZXRJbWFnZURhdGEgd2l0aCBubyBzcGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgc3Jn
YiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQp
CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAK
K1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBk
YXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVk
LCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRy
YXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0
YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlz
IDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNw
bGF5LXAzIHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNw
bGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNw
bGF5LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAy
NTEKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKwor
VGVzdGluZyBhIHNyZ2IgY2FudmFzIHdpdGggY29sb3Ioc3JnYi1wMyAwIDEgMCkgZHJhd24gaW50
byBpdAorCitUZXN0IGdldEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwg
b24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBp
dCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMg
MAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNT
IGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZp
ZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24g
aW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBd
IGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAor
UEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXkt
cDMgc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAx
IDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQ
QVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1MQorUEFTUyBk
YXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCisKK1Rlc3Rpbmcg
YSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIGRpc3BsYXktcDMgSW1hZ2VEYXRhIGRyYXduIGludG8g
aXQKKworUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBp
cyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BB
U1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXkt
cDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BB
U1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCitUZXN0aW5n
IGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBzcmdiIEltYWdlRGF0YSBkcmF3biBpbnRvIGl0CisK
K1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMwor
UEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRh
dGEuZGF0YVszXSBpcyAyNTUKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgor
UEFTUyBkYXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTEKK1BBU1Mg
ZGF0YS5kYXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKworVGVzdGluZyBh
IHNyZ2IgY2FudmFzIHdpdGggZGlzcGxheS1wMyBJbWFnZURhdGEgZHJhd24gaW50byBpdAorCitQ
QVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BB
U1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRh
LmRhdGFbM10gaXMgMjU1CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BB
U1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRh
dGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBz
cmdiIGNhbnZhcyB3aXRoIHNyZ2IgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQKKworUEFTUyBkYXRh
LmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEu
ZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNd
IGlzIDI1NQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEu
ZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1MQorUEFTUyBkYXRhLmRhdGFb
Ml0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3Bs
YXktcDMtSW1hZ2VEYXRhLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyOTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBwaXhl
bCBhY2Nlc3MgZnVuY3Rpb25zIHdvcmsgd2l0aCBub24tU1JHQiBjb2xvciBzcGFjZXMuIik7CisK
K2xldCBjYW52YXNEaXNwbGF5UDMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsK
K2xldCBjb250ZXh0RGlzcGxheVAzID0gY2FudmFzRGlzcGxheVAzLmdldENvbnRleHQoIjJkIiwg
eyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CisKK2xldCBjYW52YXNTUkdCID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CitsZXQgY29udGV4dFNSR0IgPSBjYW52YXNTUkdC
LmdldENvbnRleHQoIjJkIiwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CisKK2NvbnN0IGltYWdl
RGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzID0gY29udGV4dERpc3BsYXlQMy5jcmVhdGVJ
bWFnZURhdGEoNTAsIDUwKTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQ
M0NhbnZhcy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApOworCitjb25zdCBpbWFnZURhdGFD
cmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlU1JHQiA9IGNvbnRl
eHREaXNwbGF5UDMuY3JlYXRlSW1hZ2VEYXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAic3JnYiIg
fSk7CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXNPdmVycmlk
aW5nQ29sb3JTcGFjZVNSR0IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VE
YXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZURpc3BsYXlQ
MyA9IGNvbnRleHREaXNwbGF5UDMuY3JlYXRlSW1hZ2VEYXRhKDUwLCA1MCwgeyBjb2xvclNwYWNl
OiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21EaXNwbGF5
UDNDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZURpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNw
bGF5LXAzImApOworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXMgPSBjb250
ZXh0U1JHQi5jcmVhdGVJbWFnZURhdGEoNTAsIDUwKTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVh
dGVkRnJvbVNSR0JDYW52YXMuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VE
YXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdCID0gY29udGV4
dFNSR0IuY3JlYXRlSW1hZ2VEYXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7Citz
aG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3Bh
Y2VTUkdCLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRG
cm9tU1JHQkNhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxheVAzID0gY29udGV4dFNSR0Iu
Y3JlYXRlSW1hZ2VEYXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7Citz
aG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3Bh
Y2VEaXNwbGF5UDMuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKTsKKworY29uc3QgaW1hZ2VE
YXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvciA9IG5ldyBJbWFnZURhdGEoNTAsIDUw
LCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJv
bUltYWdlRGF0YUNvbnN0cnVjdG9yLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCk7CisKK2NvbnN0IGlt
YWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JTZXR0aW5nQ29sb3JTcGFjZVRv
U1JHQiA9IG5ldyBJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3No
b3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0Nv
bG9yU3BhY2VUb1NSR0IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRh
Q3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclNldHRpbmdDb2xvclNwYWNlVG9EaXNwbGF5
UDMgPSBuZXcgSW1hZ2VEYXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7
CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclNldHRp
bmdDb2xvclNwYWNlVG9EaXNwbGF5UDMuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKTsKKwor
Y29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZm
ZXIgPSBuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheSg0MDApLCAxMCwgMTAsIHsg
Y29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1h
Z2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCk7CisK
K2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVm
ZmVyU2V0dGluZ0NvbG9yU3BhY2VUb1NSR0IgPSBuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1w
ZWRBcnJheSg0MDApLCAxMCwgMTAsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUo
ImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyU2V0
dGluZ0NvbG9yU3BhY2VUb1NSR0IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1h
Z2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXJTZXR0aW5n
Q29sb3JTcGFjZVRvRGlzcGxheVAzID0gbmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJy
YXkoNDAwKSwgMTAsIDEwLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJl
KCJpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlclNl
dHRpbmdDb2xvclNwYWNlVG9EaXNwbGF5UDMuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKTsK
KwordmFyIGRhdGEgPSB7IH07CisKKy8vIE5PVEU6CisvLyBjb2xvcihzcmdiIDAgMSAwKSBjb252
ZXJ0ZWQgdG8gZGlzcGxheS1wMyBpcyBjb2xvcihkaXNwbGF5LXAzIDAuNDU4NCAwLjk4NTI2IDAu
Mjk4MjkpIG9yIFsxMTcsIDI1MSwgNzYsIDI1NV0gaW4gYnl0ZSBmb3JtLgorCitkZWJ1ZygiIik7
CitkZWJ1ZygiVGVzdGluZyBhIGRpc3BsYXktcDMgY2FudmFzIHdpdGggY29sb3IoZGlzcGxheS1w
MyAwIDEgMCkgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIpOworCitjb250ZXh0RGlzcGxheVAz
LmZpbGxTdHlsZSA9ICJjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSI7Citjb250ZXh0RGlzcGxheVAz
LmZpbGxSZWN0KDAsIDAsIDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSB3
aWxsIGRlZmF1bHQgdG8gdGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGluIHRoaXMgY2FzZSwgZGlz
cGxheS1wMworZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9y
IHNwYWNlLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXkt
cDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1h
Z2VEYXRhKDAsIDAsIDEsIDEpOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxh
eS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRC
ZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0
aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xv
cihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKKy8vIE5PVEU6IGNvbG9yKGRpc3Bs
YXktcDMgMCAxIDApIGlzIG91dHNpZGUgdGhlIHJhbmdlIG9mIHNSR0IsIHNvIGl0IGNsaXBwZWQg
dG8gMjU1LgorZGF0YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEs
IHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAi
c3JnYiJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRC
ZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0
aCBkaXNwbGF5LXAzIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhh
cyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0
RGlzcGxheVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5
LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3No
b3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIy
NTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0
YVszXSIsICIyNTUiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAz
IGNhbnZhcyB3aXRoIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIi
KTsKKworY29udGV4dERpc3BsYXlQMy5maWxsU3R5bGUgPSAiY29sb3Ioc3JnYiAwIDEgMCkiOwor
Y29udGV4dERpc3BsYXlQMy5maWxsUmVjdCgwLCAwLCA1MCwgNTApOworCisvLyBObyBzcGVjaWZp
ZWQgY29sb3Igc3BhY2Ugd2lsbCBkZWZhdWx0IHRvIHRoZSBjYW52YXMnIGNvbG9yIHNwYWNlLCBp
biB0aGlzIGNhc2UsIGRpc3BsYXktcDMKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRoIG5v
IHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhh
cyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0RGlzcGxh
eVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2Ui
LCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7CitzaG91
bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICI3
NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWcoIlRlc3QgZ2V0
SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZpZWQsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNh
bnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4
dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIg
fSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJzcmdiImApCisvLyBOT1RFOiBUaGlz
IDMgaXMgb2RkLCBidXQgZHVlIHRvIGxhY2sgb2YgcHJlY2lzaW9uIGluIDgtYml0IHJvdW5kLXRy
aXBwaW5nLgorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIzIik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRC
ZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0
aCBkaXNwbGF5LXAzIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhh
cyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0RGlzcGxh
eVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9
KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsz
XSIsICIyNTUiKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBzcmdiIGNhbnZhcyB3
aXRoIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsK
KworY29udGV4dFNSR0IuZmlsbFN0eWxlID0gImNvbG9yKGRpc3BsYXktcDMgMCAxIDApIjsKK2Nv
bnRleHRTUkdCLmZpbGxSZWN0KDAsIDAsIDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmllZCBjb2xv
ciBzcGFjZSB3aWxsIGRlZmF1bHQgdG8gdGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGluIHRoaXMg
Y2FzZSwgc3JnYgorZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNv
bG9yIHNwYWNlLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMg
MCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgw
LCAwLCAxLCAxKTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsz
XSIsICIyNTUiKTsKKworZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZp
ZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkg
ZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEs
IDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIs
IGAic3JnYiJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0
YS5kYXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91
bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEg
d2l0aCBkaXNwbGF5LXAzIHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBj
b2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JH
Qi5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7
CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgi
ZGF0YS5kYXRhWzBdIiwgIjExNyIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTEiKTsK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiNzYiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10i
LCAiMjU1Iik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0
aCBjb2xvcihzcmdiLXAzIDAgMSAwKSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2Nv
bnRleHRTUkdCLmZpbGxTdHlsZSA9ICJjb2xvcihzcmdiIDAgMSAwKSI7Citjb250ZXh0U1JHQi5m
aWxsUmVjdCgwLCAwLCA1MCwgNTApOworCisvLyBObyBzcGVjaWZpZWQgY29sb3Igc3BhY2Ugd2ls
bCBkZWZhdWx0IHRvIHRoZSBjYW52YXMnIGNvbG9yIHNwYWNlLCBpbiB0aGlzIGNhc2UsIHNyZ2IK
K2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwg
b24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBp
dCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSk7CitzaG91
bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBd
IiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0
YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2Rl
YnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2Fu
dmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9
IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdi
IiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJk
YXRhLmRhdGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3No
b3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIy
NTUiKTsKKworZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZp
ZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24g
aW4gaXQpIik7CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsg
Y29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIs
IGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2
Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCisKK2RlYnVnKCIiKTsKKwor
Citjb25zdCBpbWFnZURhdGFEaXNwbGF5UDNUb1B1dCA9IG5ldyBJbWFnZURhdGEoMSwgMSwgeyBj
b2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitpbWFnZURhdGFEaXNwbGF5UDNUb1B1dC5kYXRh
WzBdID0gMDsKK2ltYWdlRGF0YURpc3BsYXlQM1RvUHV0LmRhdGFbMV0gPSAyNTU7CitpbWFnZURh
dGFEaXNwbGF5UDNUb1B1dC5kYXRhWzJdID0gMDsKK2ltYWdlRGF0YURpc3BsYXlQM1RvUHV0LmRh
dGFbM10gPSAyNTU7CisKK2NvbnN0IGltYWdlRGF0YVNSR0JUb1B1dCA9IG5ldyBJbWFnZURhdGEo
MSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitpbWFnZURhdGFTUkdCVG9QdXQuZGF0YVsw
XSA9IDA7CitpbWFnZURhdGFTUkdCVG9QdXQuZGF0YVsxXSA9IDI1NTsKK2ltYWdlRGF0YVNSR0JU
b1B1dC5kYXRhWzJdID0gMDsKK2ltYWdlRGF0YVNSR0JUb1B1dC5kYXRhWzNdID0gMjU1OworCisK
K2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBkaXNw
bGF5LXAzIEltYWdlRGF0YSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHRE
aXNwbGF5UDMucHV0SW1hZ2VEYXRhKGltYWdlRGF0YURpc3BsYXlQM1RvUHV0LCAwLCAwKTsKKwor
ZGF0YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JT
cGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQor
c2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwg
IjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzNdIiwgIjI1NSIpOworCitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEo
MCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0
YS5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwg
IjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVn
KCIiKTsKK2RlYnVnKCJUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBzcmdiIEltYWdl
RGF0YSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHREaXNwbGF5UDMucHV0
SW1hZ2VEYXRhKGltYWdlRGF0YVNSR0JUb1B1dCwgMCwgMCk7CisKK2RhdGEgPSBjb250ZXh0RGlz
cGxheVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsK
K3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKKy8vIE5PVEU6IFRoaXMgMyBp
cyBvZGQsIGJ1dCBkdWUgdG8gbGFjayBvZiBwcmVjaXNpb24gaW4gOC1iaXQgcm91bmQtdHJpcHBp
bmcuCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjMiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
MV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJk
YXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdl
RGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJl
KCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
MF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIpOworc2hvdWxkQmUo
ImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsK
KworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRoIGRpc3BsYXkt
cDMgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dFNSR0Iu
cHV0SW1hZ2VEYXRhKGltYWdlRGF0YURpc3BsYXlQM1RvUHV0LCAwLCAwKTsKKworZGF0YSA9IGNv
bnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9
KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUi
KTsKKworZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9y
U3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRp
c3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7CitzaG91bGRCZSgi
ZGF0YS5kYXRhWzFdIiwgIjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICI3NiIpOwor
c2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworCitkZWJ1ZygiIik7CitkZWJ1Zygi
VGVzdGluZyBhIHNyZ2IgY2FudmFzIHdpdGggc3JnYiBJbWFnZURhdGEgZHJhd24gaW50byBpdCIp
OworZGVidWcoIiIpOworCitjb250ZXh0U1JHQi5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhU1JHQlRv
UHV0LCAwLCAwKTsKKworZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAx
LCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBg
InNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEu
ZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxk
QmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdl
RGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJl
KCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
MF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIpOworc2hvdWxkQmUo
ImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsK
KworZGVidWcoIiIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaW1hZ2VEYXRhLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMjc3NTQ0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWlt
YWdlRGF0YS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0LDIwICsxNCwyMCBAQCBQ
QVNTIG5ldyBJbWFnZURhdGEoLTIwLCAyMCkgdGhyZXcgZXhjZXB0CiBQQVNTIG5ldyBJbWFnZURh
dGEoMjAsIC0yMCkgdGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IENhbm5vdCBhbGxvY2F0ZSBh
IGJ1ZmZlciBvZiB0aGlzIHNpemUuCiBQQVNTIG5ldyBJbWFnZURhdGEobnVsbCwgMjApIHRocmV3
IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dl
ZCByYW5nZS4uCiBQQVNTIG5ldyBJbWFnZURhdGEoMzI3NjgsIDMyNzY4KSB0aHJldyBleGNlcHRp
b24gUmFuZ2VFcnJvcjogQ2Fubm90IGFsbG9jYXRlIGEgYnVmZmVyIG9mIHRoaXMgc2l6ZS4KLVBB
U1MgbmV3IEltYWdlRGF0YShudWxsLCAyMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJl
IGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKGlt
YWdlRGF0YSwgMjAsIDIwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgn
ZGF0YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBv
ZiBVaW50OENsYW1wZWRBcnJheS4KK1BBU1MgbmV3IEltYWdlRGF0YShudWxsLCAyMCwgMjApIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEo
aW1hZ2VEYXRhLCAyMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
CiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAwKSB0aHJldyBleGNlcHRpb24gSW5kZXhT
aXplRXJyb3I6IFRoZSBpbmRleCBpcyBub3QgaW4gdGhlIGFsbG93ZWQgcmFuZ2UuLgotUEFTUyBu
ZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMjAsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJl
IGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKGlt
YWdlRGF0YSwgMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdk
YXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9m
IFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMTAsIDUp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIElt
YWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFy
cmF5LgorUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMjAsIDApIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAw
LCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IElt
YWdlRGF0YShpbWFnZURhdGEsIDEwLCA1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgogUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCAxMCwgNSkgdGhyZXcg
ZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBzaCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaGVpZ2h0
LgogUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCAtMTAsIDUpIHRocmV3IGV4Y2Vw
dGlvbiBJbmRleFNpemVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3LgogUEFT
UyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCAxMCwgLTEwKSB0aHJldyBleGNlcHRpb24g
SW5kZXhTaXplRXJyb3I6IHNoIHZhbHVlIGlzIG5vdCBlcXVhbCB0byBoZWlnaHQuCiBQQVNTIG5l
dyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KFsxLDIsMyw0LDUsNiw3LDhdKSw1MzY4
NzA5MTMsMik7IHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogTGVuZ3RoIGlzIG5vdCBh
IG11bHRpcGxlIG9mIHN3LgotUEFTUyBuZXcgSW1hZ2VEYXRhKHt9LDIsMik7IHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25z
dHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBu
ZXcgSW1hZ2VEYXRhKHVuZGVmaW5lZCwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBB
cmd1bWVudCAxICgnZGF0YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBh
biBpbnN0YW5jZSBvZiBVaW50OENsYW1wZWRBcnJheS4KLVBBU1MgbmV3IEltYWdlRGF0YSgibm9u
ZSIsMiwyKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0
byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhD
bGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFnZURhdGEoMCwyLDIpOyB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBBcmd1bWVudCAxICgnZGF0YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0
b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBVaW50OENsYW1wZWRBcnJheS4KK1BBU1MgbmV3IElt
YWdlRGF0YSh7fSwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgor
UEFTUyBuZXcgSW1hZ2VEYXRhKHVuZGVmaW5lZCwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgSW1hZ2VEYXRhKCJub25lIiwyLDIpOyB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgSW1hZ2VEYXRhKDAsMiwy
KTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgbmV3IEltYWdl
RGF0YShpbWFnZURhdGEuZGF0YSwgMzI3NjgsIDMyNzY4KSB0aHJldyBleGNlcHRpb24gSW5kZXhT
aXplRXJyb3I6IExlbmd0aCBpcyBub3QgYSBtdWx0aXBsZSBvZiBzdy4KIFBBU1MgbmV3IEltYWdl
RGF0YShpbWFnZURhdGEuZGF0YSwgSW5maW5pdHksIEluZmluaXR5KSB0aHJldyBleGNlcHRpb24g
SW5kZXhTaXplRXJyb3I6IExlbmd0aCBpcyBub3QgYSBtdWx0aXBsZSBvZiBzdy4KIFBBU1MgbmV3
IEltYWdlRGF0YShpbWFnZURhdGEuZGF0YSwgTmFOLCBOYU4pIHRocmV3IGV4Y2VwdGlvbiBJbmRl
eFNpemVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3LgpJbmRleDogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc1NDQpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjEtMDUtMTUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBjcmVhdGluZy9hY2Nlc3Npbmcvc2V0dGluZyBub24tc1JHQiBJbWFnZURhdGEg
dmlhIGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1ODQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNh
bnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5wMy1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0
ZSByZXN1bHQgdG8gcGFzc2luZy4KKwogMjAyMS0wNS0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgb3V0cHV0IGVsZW1lbnQgZG9lc24ndCByZWFjdCBwcm9wZXJs
eSB0byBub2RlIHRyZWUgbXV0YXRpb25zCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMv
MmQuY29sb3Iuc3BhY2UucDMudG8ucDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5wMy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDI3NzU0NCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5z
cGFjZS5wMy50by5wMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNSArMiw1IEBA
CiB0ZXN0IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgYW5kIHVpbnQ4IGZyb20gZGlzcGxh
eSBwMyB1aW50OCBjYW52YXMKIEFjdHVhbCBvdXRwdXQ6CiAKLUZBSUwgdGVzdCBnZXRJbWFnZURh
dGEgd2l0aCBkaXNwbGF5LXAzIGFuZCB1aW50OCBmcm9tIGRpc3BsYXkgcDMgdWludDggY2FudmFz
IGFzc2VydF9hcHByb3hfZXF1YWxzOiBleHBlY3RlZCA2MiArLy0gMiBidXQgZ290IDUwCitQQVNT
IHRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBhbmQgdWludDggZnJvbSBkaXNwbGF5
IHAzIHVpbnQ4IGNhbnZhcwogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RF
eHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0
RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyNzc1NDQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
bGliL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTIzNTgsNiArMjM1OCw3IEBA
IGZhc3QvcmVwbGFjZWQvcGRmLWFzLWVtYmVkLXdpdGgtbm8tbWltZS0KIHdlYmtpdC5vcmcvYi8y
MjQxMTIgbWVkaWEvdmlkZW8tYXMtaW1nLW91dHB1dC1wdHMuaHRtbCBbIFRpbWVvdXQgUGFzcyBd
CiAKIHdlYmtpdC5vcmcvYi8yMjU0MjMgZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRp
c3BsYXktcDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIyNTQyMyBm
YXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbCBb
IEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIyNTQyMyBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9z
aXRlLXRleHQtYWxwaGEuaHRtbCBbIEZhaWx1cmUgXQogCiAjIEZhaWxpbmcgYWZ0ZXIgcjI3NzA3
My4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCShyZXZp
c2lvbiAyNzc1NDQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
cwkod29ya2luZyBjb3B5KQpAQCAtNDYzMyw0ICs0NjMzLDUgQEAgd2ViZXhwb3NlZC9jb3VudGVy
LXN0eWxlLWltYWdlLXN5bWJvbHMtbgogCiBmYXN0L3RleHQvbGluZS1icmVhay13aXRoLWxvY2Fs
ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLWZhc3QvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRFNldHRpbmdzLWNvbG9yU3BhY2UtZW5hYmxlZC5odG1sIFsgU2tpcCBdCisjIE5v
bi1TUkdCIGNvbG9yIHNwYWNlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIFdp
bmRvd3MgcG9ydC4KK2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUlt
YWdlRGF0YS5odG1sIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC10eXBlcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0
b3JlLWF1dG9pbmNyZW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc1NDQpCisr
KyBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXV0b2lu
Y3JlbWVudC10eXBlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAgUEFTUyBrZXkgaXMgMwogUEFTUyByZXF1ZXN0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIGltYWdl
RGF0YS5wcmltYXJ5S2V5CiBQQVNTIHJlcXVlc3QucmVzdWx0LndpZHRoIGlzIGltYWdlRGF0YS53
aWR0aAogUEFTUyByZXF1ZXN0LnJlc3VsdC5oZWlnaHQgaXMgaW1hZ2VEYXRhLmhlaWdodAorUEFT
UyByZXF1ZXN0LnJlc3VsdC5jb2xvclNwYWNlIGlzIGltYWdlRGF0YS5jb2xvclNwYWNlCiBQQVNT
IGtleSBpcyA0CiBQQVNTIHJlcXVlc3QucmVzdWx0LnByaW1hcnlLZXkgaXMgZmlsZUxpc3QucHJp
bWFyeUtleQogUEFTUyByZXF1ZXN0LnJlc3VsdC5sZW5ndGggaXMgZmlsZUxpc3QubGVuZ3RoCkBA
IC00MCw2ICs0MSw3IEBAIFBBU1MgcmVxdWVzdC5yZXN1bHRbMV0udHlwZSBpcyBmaWxlLnR5cGUK
IFBBU1MgcmVxdWVzdC5yZXN1bHRbMl0ucHJpbWFyeUtleSBpcyBpbWFnZURhdGEucHJpbWFyeUtl
eQogUEFTUyByZXF1ZXN0LnJlc3VsdFsyXS53aWR0aCBpcyBpbWFnZURhdGEud2lkdGgKIFBBU1Mg
cmVxdWVzdC5yZXN1bHRbMl0uaGVpZ2h0IGlzIGltYWdlRGF0YS5oZWlnaHQKK1BBU1MgcmVxdWVz
dC5yZXN1bHRbMl0uY29sb3JTcGFjZSBpcyBpbWFnZURhdGEuY29sb3JTcGFjZQogUEFTUyByZXF1
ZXN0LnJlc3VsdFszXS5wcmltYXJ5S2V5IGlzIGZpbGVMaXN0LnByaW1hcnlLZXkKIFBBU1MgcmVx
dWVzdC5yZXN1bHRbM10ubGVuZ3RoIGlzIGZpbGVMaXN0Lmxlbmd0aAogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428766</attachid>
            <date>2021-05-15 19:37:53 -0700</date>
            <delta_ts>2021-05-15 21:39:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225841-20210515193752.patch</filename>
            <type>text/plain</type>
            <size>90466</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAyMS0wNS0xNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNyZWF0
aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0YSB2aWEgY2FudmFzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZh
cy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBhY2Nlc3Npbmcgbm9uLXNSR0IgKG9ubHkgRGlzcGxheVAzIGZvciBu
b3cgZHVlCisgICAgICAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uLCBidXQgdGhlIHN1cHBvcnQgaXMg
Z2VuZXJhbCkgcGl4ZWwgZGF0YSBpbgorICAgICAgICBIVE1MIGNhbnZhcy4KKworICAgICAgICBV
cGRhdGVzIEltYWdlRGF0YSBjb25zdHJ1Y3RvcnMgYW5kIENhbnZhc0ltYWdlRGF0YSBvcGVyYXRp
b25zIHRvIAorICAgICAgICB0YWtlIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIGRpY3Rpb25h
cmllcywgd2hpY2ggY29udGFpbiBhbiAKKyAgICAgICAgb3B0aW9uYWwgY29sb3Igc3BhY2UgKG90
aGVyd2lzZSBkZWZhdWx0aW5nIGJhY2sgdG8gc1JHQikuIAorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YVNldHRp
bmdzLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsOiBBZGRl
ZC4KKyAgICAgICAgQWRkIG5ldyBJbWFnZURhdGFTZXR0aW5ncy5pZGwgYW5kIHJlbGF0ZWQgZmls
ZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6Cisg
ICAgICAgIEZpeGVzIEZJWE1FIGFuZCB1c2VzIFBpeGVsQnVmZmVyIGRpcmVjdGx5IHJhdGhlciB0
aGFuIGFsbG9jYXRpbmcKKyAgICAgICAgYW4gdW5uZWNlc3NhcnkgSW1hZ2VEYXRhLiBUaGlzIHdh
cyBkb25lIG5vdyBzaW5jZSB0aGUgcmVsZXZlbnQKKyAgICAgICAgSW1hZ2VEYXRhIGNvbnN0cnVj
dG9yIGhhcyBnb25lIGF3YXkuCisKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb21wdXRlRGF0YVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
YXRhOjpjb21wdXRlQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEYXRhOjpwaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURhdGE6OmRhdGFTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0
YTo6ZGVlcENsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGF0YTo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
YXRhOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6Y29sb3JTcGFjZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OnBpeGVsQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4K
KworICAgICAgICAtIFJld29ya2VkIEltYWdlRGF0YSB0byBubyBsb25nZXIgc3RvcmUgYSBQaXhl
bEJ1ZmZlciwgd2hpY2ggaGFzCisgICAgICAgICAgZXh0cmFuZW91cyBpbmZvcm1hdGlvbiBpbiBp
dCwgYnV0IHJhdGhlciB0byBzdG9yZSBqdXN0IHdoYXQgaXQKKyAgICAgICAgICBuZWVkcyBJbnRT
aXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4sIGFuZCBub3cgUHJlZGVmaW5lZENvbG9y
U3BhY2UuCisgICAgICAgIC0gVXBkYXRlcyBjcmVhdGUgZnVuY3Rpb25zIGZvciBuZXcgb3B0aW9u
YWwgSW1hZ2VEYXRhU2V0dGluZ3MuCisgICAgICAgIC0gQWRkcyBjcmVhdGVVbmluaXRpYWxpemVk
IHdoaWNoIGZvbGxvd3Mgc3BlYyBsYW5ndWFnZSBmb3IgSW1hZ2VEYXRhIGNyZWF0aW9uCisgICAg
ICAgICAgYW5kIGlzIHVzZWQgYnkgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHRvIGNyZWF0ZSBJ
bWFnZURhdGEgb2JqZWN0cyBvZiB3aXRoCisgICAgICAgICAgdGhlIHJpZ2h0IGNvbG9yIHNwYWNl
cywgYWxsb3dpbmcgZm9yIGZhbGxiYWNrIHRvIHRoZSBjYW52YXMnIG93biBjb2xvciBzcGFjZQor
ICAgICAgICAgIHdoZW4gbm8gSW1hZ2VEYXRhU2V0dGluZ3MgY29sb3Igc3BhY2UgaXMgcHJvdmlk
ZWQuIEl0IGlzIHVuaW5pdGlhbGl6ZWQgYW5kCisgICAgICAgICAgdGhlcmVmb3JlIHJlcXVpcmVz
IHRoZSBjbGllbnQgdG8gaW5pdGlhbGl6ZSB0aGUgZGF0YSB0byBhbGxvdyBmb3Igc3VwcG9ydCBm
b3IKKyAgICAgICAgICBubyBhbHBoYSBzdXBwb3J0IGluIHRoZSBmdXR1cmUsIHdoaWNoIHJlcXVp
cmVzIGEgbm9uLXplcm8gaW5pdGlhbGl6YXRpb24gcGF0dGVybi4KKworICAgICAgICAqIGh0bWwv
SW1hZ2VEYXRhLmlkbDoKKyAgICAgICAgQWRkIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIHBh
cmFtZXRlcnMgYW5kIHRoZSBuZXcgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCisKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsOgorICAgICAgICBBZGQgb3B0aW9uYWwgSW1h
Z2VEYXRhU2V0dGluZ3MgcGFyYW1ldGVycy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVF
bXB0eUltYWdlRGF0YSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gaW5pdGlhbGl6ZSB0aGUgSW1h
Z2VEYXRhIGJ1ZmZlci4gUmlnaHQgbm93IGl0IGFsd2F5cyBjYWxscworICAgICAgICB6ZXJvRmls
bCgpLCBidXQgaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIG5lZWQgdG8gZG8gbW9yZS4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJ
bWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgdG8gYWNjb3VudCBmb3IgdGhpcyBmdW5j
dGlvbiBiZWluZyBhYmxlIHRvIHRocm93IGFuIGV4Y2VwdGlvbiAod2hlbiAKKyAgICAgICAgb3V0
IG9mIG1lbW9yeSkgYW5kIHVzZSB0aGUgbmV3IGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlhbGl6
ZUVtcHR5SW1hZ2VEYXRhCisgICAgICAgIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciBzcGFj
ZWQgSW1hZ2VEYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgZm9yIG5ldyBv
cHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBhbmQgdXNlIHRoZSBuZXcgY3JlYXRlVW5pbml0aWFs
aXplZAorICAgICAgICBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEgdG8gY3JlYXRlIGEgY29ycmVj
dGx5IGNvbG9yIHNwYWNlZCBJbWFnZURhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIE1vdmVz
IHBhcmFtZXRlciBjaGVja3MgdG8gdGhlIGJlZ2luaW5nIHRvIG1hdGNoIHRoZSBzcGVjLCBhbmQg
dXNlcyBuZXcgCisgICAgICAgIGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlhbGl6ZUVtcHR5SW1h
Z2VEYXRhIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciAKKyAgICAgICAgc3BhY2VkIEltYWdl
RGF0YS4gQWxzbywgdXNlIHRoZSBJbWFnZURhdGEncyBjb2xvciBzcGFjZSB3aGVuIGdldHRpbmcK
KyAgICAgICAgdGhlIHBpeGVsIGJ1ZmZlciB0byBhY3R1YWxseSByZXR1cm4gdGhlIHJpZ2h0IGRh
dGEhCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmluZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oOgorICAgICAgICBBZGQgY29udmVyc2lvbiBm
dW5jdGlvbiBmcm9tIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0byBQcmVkZWZpbmVkQ29sb3JTcGFj
ZS4KKyAgICAgICAgU2luY2UgRGVzdGluYXRpb25Db2xvclNwYWNlIGlzIGEgc3VwZXJzZXQgb2Yg
UHJlZGVmaW5lZENvbG9yU3BhY2UsIHRoaXMgY2FuCisgICAgICAgIGZhaWwsIHNvIHRoaXMgY29u
dmVyc2lvbiByZXR1cm5zIGFuIE9wdGlvbmFsLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
Lmg6CisgICAgICAgIFN0dWIgb3V0IGluc3BlY3RvciBzdXBwb3J0IGZvciBJbWFnZURhdGFTZXR0
aW5ncy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgVXNlIHRoZSBJbWFnZUJ1ZmZlcidzIGFjdHVhbCBjb2xvciBzcGFj
ZSBhcyB0aGUgc291cmNlIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFuIGhhcmQgY29k
aW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCisgICAgICAg
IHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVtcG9yYXJ5IHZh
cmlhYmxlcy4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhl
bEJ1ZmZlcik6CisgICAgICAgIFVzZSB0aGUgSW1hZ2VCdWZmZXIncyBhY3R1YWwgY29sb3Igc3Bh
Y2UgYXMgdGhlIGRlc3RpbmF0aW9uIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFuIGhh
cmQgY29kaW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCisg
ICAgICAgIHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVtcG9y
YXJ5IHZhcmlhYmxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OlBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6
OnRha2VEYXRhKToKKyAgICAgICAgQWRkIGEgZmV3IGhlbHBlcnMgdG8gYWxsb3cgY3JlYXRpb25n
IHRvL2Zyb20gUGl4ZWxCdWZmZXIKKyAgICAgICAgYSBiaXQgZWFzaWVyLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgRml4IGluY29y
cmVjdCBhc3NlcnRpb24uIFdlIHdhbnQgdG8gYXNzZXJ0IHRoYXQgdGhlcmUgaXMgbm8gZXJyb3Is
IG5vdCB0aGF0CisgICAgICAgIHRoZXJlIGlzIG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQpOgorICAgICAgICBTdG9wIGhhcmQgY29kaW5nIFNSR0IgZm9yIFBpeGVsQnVmZmVyIGNvbG9y
IHNwYWNlcyBhbmQgdXNlIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICBjb2xvciBzcGFjZSBmb3Ig
dGhlIHRhc2suIFdlIHN0aWxsIGRvIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gdGhyb3VnaCBJbWFn
ZUJ1ZmZlcgorICAgICAgICBzbyB3ZSBzaG91bGQgY29tZSBiYWNrIGFuZCBzaW1wbGlmeSBjb2Rl
IGhlcmUgdG8gbm90IGFsd2F5cyByZXF1aXJlIHRoYXQuCisKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZh
aWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFnZSk6
CisgICAgICAgIFVwZGF0ZSB0byBzcGVjaWZ5IGEgY29sb3Igc3BhY2UgdG8gbWFpbnRhaW4gZXhp
c3RpbmcgYmVoYXZpb3IuCisKIDIwMjEtMDUtMTUgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtMRkNdIE1vdmUgdGFibGUgd3JhcHBlciBxdWlya3MgdG8gaXRzIG93
biBjbGFzcwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDE3LDYgKzEw
MTcsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGh0bWwvSW1hZ2VCaXRt
YXAuaWRsCiAgICAgaHRtbC9JbWFnZUJpdG1hcE9wdGlvbnMuaWRsCiAgICAgaHRtbC9JbWFnZURh
dGEuaWRsCisgICAgaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwKICAgICBodG1sL01lZGlhQ29u
dHJvbGxlci5pZGwKICAgICBodG1sL01lZGlhRW5jcnlwdGVkRXZlbnQuaWRsCiAgICAgaHRtbC9N
ZWRpYUVycm9yLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDM2LDYgKzEw
MzYsNyBAQCAkKFBST0pFQ1RfRElSKS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCiAkKFBST0pF
Q1RfRElSKS9odG1sL0ltYWdlQml0bWFwLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9JbWFnZUJp
dG1hcE9wdGlvbnMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL0ltYWdlRGF0YS5pZGwKKyQoUFJP
SkVDVF9ESVIpL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1s
L01lZGlhQ29udHJvbGxlci5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvTWVkaWFFbmNyeXB0ZWRF
dmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvTWVkaWFFcnJvci5pZGwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lv
biAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTE4MCw2ICsxMTgwLDggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdlRGF0YS5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VE
YXRhLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1h
Z2VEYXRhU2V0dGluZ3MuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0ltYWdlRGF0YVNldHRpbmdzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZVNtb290aGluZ1F1YWxp
dHkuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbm5l
ckhUTUwuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI3
NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTg5MCw2ICs4OTAsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29y
ZSkvaHRtbC9JbWFnZUJpdG1hcC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9JbWFnZUJpdG1h
cE9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSW1hZ2VEYXRhLmlkbCBcCisgICAg
JChXZWJDb3JlKS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9o
dG1sL01lZGlhQ29udHJvbGxlci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9NZWRpYUVuY3J5
cHRlZEV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL01lZGlhRXJyb3IuaWRsIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzIwNyw2ICszMjA3LDcgQEAgSlNJbWFnZUJpdG1h
cE9wdGlvbnMuY3BwCiBKU0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKIEpTSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuY3BwCiBKU0ltYWdlRGF0YS5jcHAKK0pTSW1h
Z2VEYXRhU2V0dGluZ3MuY3BwCiBKU0ltYWdlU21vb3RoaW5nUXVhbGl0eS5jcHAKIEpTSW5wdXRF
dmVudC5jcHAKIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDk1LDYgKzQwOTUsNyBAQAogCQlCQzk2
REI0MzBGM0E4ODBFMDA1NzNDQjMgLyogUmVuZGVyQm94TW9kZWxPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTZEQjQyMEYzQTg4MEUwMDU3
M0NCMyAvKiBSZW5kZXJCb3hNb2RlbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDOTdFMjNBMTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1M
QWxsQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM5N0UyMzgxMDkxNDQ5NTAwMTBEMzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmggKi87
IH07CiAJCUJDOTdFNDEzMTA5MTU0RkEwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTQxMTEw
OTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5oICovOyB9OworCQlCQ0EwODhG
NTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTA4OEYyMjY0RTFCRjkwMDNFMkE2QyAv
KiBJbWFnZURhdGFTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDQTE2OUEzMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNh
cHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0ExNjlBMTBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVu
dC5oICovOyB9OwogCQlCQ0EyNTcxNTEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlv
bkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0EyNTcxNDEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggKi87IH07
CiAJCUJDQTJCMDYxMTA1MDQ3NjAwMDQzQkQxQyAvKiBVc2VyU2NyaXB0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EyQjA2MDEwNTA0NzVGMDA0M0JE
MUMgLyogVXNlclNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xNDMxNSw2ICsxNDMxNiw4IEBACiAJCUJDOUE2MTQyMTQ2ODU5RDkwMDYw
NTdGRCAvKiBFdmVudE5hbWVzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50TmFtZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDOUE2MTQ1MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX2V2ZW50X2Zh
Y3RvcnkucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gbWFrZV9ldmVudF9mYWN0b3J5LnBsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzlBNjE0NjE0Njg1OUQ5MDA2MDU3RkQgLyogbWFrZV9u
YW1lcy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSBtYWtlX25hbWVzLnBsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQ0EwODhGMjI2NEUxQkY5MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGlu
Z3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEYXRhU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkNBMDg4RjQyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRp
bmdzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBJbWFnZURhdGFTZXR0aW5ncy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQTE2OUEwMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25F
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxU
YWJsZUNhcHRpb25FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNB
MTY5QTEwQkZENTVCNDAwMTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMjU3MTQxMjkzQzAxMDAwN0EyNjNE
IC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIzOTI2LDYgKzIzOTI5LDggQEAKIAkJCQlBNzc5NzkxMzBENkI5RDBDMDAzODUxQjkgLyog
SW1hZ2VEYXRhLmNwcCAqLywKIAkJCQlBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VE
YXRhLmggKi8sCiAJCQkJQTc3OTc5MTUwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5pZGwg
Ki8sCisJCQkJQkNBMDg4RjIyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmgg
Ki8sCisJCQkJQkNBMDg4RjQyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmlk
bCAqLywKIAkJCQk5NzIwNUFCMTEyMzkyOTEwMDBCMTczODAgLyogSW1hZ2VEb2N1bWVudC5jcHAg
Ki8sCiAJCQkJOTcyMDVBQjIxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCAqLywK
IAkJCQlGNTVCM0Q4RDEyNTFGMTJEMDAzRUYyNjkgLyogSW1hZ2VJbnB1dFR5cGUuY3BwICovLApA
QCAtMzI4ODcsNiArMzI4OTIsNyBAQAogCQkJCUIyQTEwRDkxMEIzODE4QkQwMDA5OUFBNCAvKiBJ
bWFnZUJ1ZmZlclBpcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2
NkY1NSAvKiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzc5
NzkxQTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
Q0EwODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEMTlGRUE4MUY1NzM5NzIwMDBDNDJGQiAvKiBJbWFnZURlY29kZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEMTlGRUFFMUY1NzRCNkQwMDBDNDJGQiAvKiBJbWFnZURlY29kZXJB
VkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTVCODdFRDFDQUFGMEFCMDAzNDk0MjUgLyog
SW1hZ2VEZWNvZGVyQ0cuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiAy
Nzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQxLDMwICszMTQxLDI0IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBh
cnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciks
IDAsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICBpZiAoIWFycmF5KSB7Ci0g
ICAgICAgICAgICBmYWlsKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAg
ICB9Ci0KICAgICAgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSA9IEludFNpemUobG9naWNhbFdpZHRo
LCBsb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgSW50U2l6ZSBpbWFnZURhdGFTaXplID0gbG9naWNh
bFNpemU7CiAgICAgICAgIGltYWdlRGF0YVNpemUuc2NhbGUocmVzb2x1dGlvblNjYWxlKTsKIAot
ICAgICAgICAvLyBGSVhNRTogQ3JlYXRpbmcgdGhpcyBJbWFnZURhdGEgaXMgbm90IG5lY2Vzc2Fy
eS4gV2Ugc2hvdWxkIHNraXAgcmlnaHQgdG8gY3JlYXRpbmcgYSBQaXhlbEJ1ZmZlciBkaXJlY3Rs
eS4KLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZURhdGFT
aXplLCBhcnJheS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgaWYgKCFpbWFnZURhdGEpIHsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCks
IGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2Nh
bGUpOworICAgICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICAgICAgZmFpbCgpOwogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVy
ID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0
RnJvbUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QpLCBsb2dpY2FsU2l6ZSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlKTsKLSAgICAgICAgaWYgKCFi
dWZmZXIpIHsKKyAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVm
ZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBpbWFnZURhdGFTaXplLCBhcnJheUJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewogICAgICAgICAgICAgZmFp
bCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAg
IGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIoaW1hZ2VEYXRhLT5waXhlbEJ1ZmZlcigpLCB7IEludFBv
aW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOworICAgICAgICBidWZmZXItPnB1dFBpeGVsQnVm
ZmVyKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgeyBJbnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6
ZSB9KTsKIAogICAgICAgICBhdXRvIGJpdG1hcCA9IEltYWdlQml0bWFwOjpjcmVhdGUoSW1hZ2VC
aXRtYXBCYWNraW5nKFdURk1vdmUoYnVmZmVyKSwgT3B0aW9uU2V0PFNlcmlhbGl6YXRpb25TdGF0
ZT46OmZyb21SYXcoc2VyaWFsaXphdGlvblN0YXRlKSkpOwogICAgICAgICByZXR1cm4gZ2V0SlNW
YWx1ZShiaXRtYXApOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAkocmV2aXNpb24g
Mjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2hlY2tlZDx1
bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IEltYWdlRGF0YTo6ZGF0YVNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKK3N0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY29tcHV0
ZURhdGFTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQ2hlY2tlZDx1bnNpZ25lZCwg
UmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWREYXRhU2l6ZSA9IDQ7CiAgICAgY2hlY2tlZERhdGFTaXpl
ICo9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplLndpZHRoKCkpOwpAQCAtNDMsNTcgKzQzLDg1
IEBAIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBJbWFnZUQKICAgICByZXR1cm4g
Y2hlY2tlZERhdGFTaXplOwogfQogCitQcmVkZWZpbmVkQ29sb3JTcGFjZSBJbWFnZURhdGE6OmNv
bXB1dGVDb2xvclNwYWNlKE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncywgUHJl
ZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UpCit7CisgICAgaWYgKHNldHRpbmdz
ICYmIHNldHRpbmdzLT5jb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gKnNldHRpbmdzLT5jb2xv
clNwYWNlOworICAgIHJldHVybiBkZWZhdWx0Q29sb3JTcGFjZTsKK30KKwogUmVmPEltYWdlRGF0
YT4gSW1hZ2VEYXRhOjpjcmVhdGUoUGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlcikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoV1RGTW92ZShwaXhlbEJ1ZmZlcikpKTsKKyAg
ICBhdXRvIGNvbG9yU3BhY2UgPSB0b1ByZWRlZmluZWRDb2xvclNwYWNlKHBpeGVsQnVmZmVyLmZv
cm1hdCgpLmNvbG9yU3BhY2UpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShw
aXhlbEJ1ZmZlci5zaXplKCksIHBpeGVsQnVmZmVyLnRha2VEYXRhKCksICpjb2xvclNwYWNlKSk7
CiB9CiAKIFJlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKE9wdGlvbmFsPFBpeGVs
QnVmZmVyPiYmIHBpeGVsQnVmZmVyKQogewogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBJbWFnZURhdGE6OmNyZWF0ZShXVEZNb3ZlKCpw
aXhlbEJ1ZmZlcikpOworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpKTsK
IH0KIAogUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKIHsKLSAgICBhdXRvIGRhdGFTaXplID0gSW1hZ2VEYXRhOjpkYXRhU2l6ZShzaXplKTsK
KyAgICBhdXRvIGRhdGFTaXplID0gY29tcHV0ZURhdGFTaXplKHNpemUpOwogICAgIGlmIChkYXRh
U2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8g
Ynl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0
YVNpemUudW5zYWZlR2V0KCkpOwogICAgIGlmICghYnl0ZUFycmF5KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VO
b25OdWxsKCkgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplLCBi
eXRlQXJyYXkucmVsZWFzZU5vbk51bGwoKSwgUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0IpKTsK
IH0KIAotUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSkKK1JlZlB0cjxJbWFnZURh
dGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxVaW50OENsYW1w
ZWRBcnJheT4mJiBieXRlQXJyYXksIFByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7
Ci0gICAgYXV0byBkYXRhU2l6ZSA9IEltYWdlRGF0YTo6ZGF0YVNpemUoc2l6ZSk7Ci0gICAgaWYg
KGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBkYXRhU2l6ZS51bnNhZmVHZXQoKSA+IGJ5dGVB
cnJheS0+bGVuZ3RoKCkpCisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXpl
KTsKKyAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplLnVuc2FmZUdl
dCgpICE9IGJ5dGVBcnJheS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCIH0sIHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSB9KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSwgY29sb3JT
cGFjZSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVh
dGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoKQorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+
IEltYWdlRGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCByb3dzLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xvclNwYWNlLCBPcHRp
b25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCit7CisgICAgSW50U2l6ZSBzaXplKHJv
d3MsIHBpeGVsc1BlclJvdyk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShz
aXplKTsKKyAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgIkNhbm5vdCBhbGxvY2F0ZSBhIGJ1ZmZlciBvZiB0aGlz
IHNpemUiX3MgfTsKKworICAgIGF1dG8gYnl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YVNpemUudW5zYWZlR2V0KCkpOworICAgIGlmICghYnl0
ZUFycmF5KSB7CisgICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgbmVlZCB0byBiZSBhICJyZWFs
IiBvdXQgb2YgbWVtb3J5IGVycm9yIHdpdGggc2V0T3V0T2ZNZW1vcnlFcnJvciBjYWxsZWQgb24g
aXQ/CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiT3V0IG9mIG1lbW9y
eSJfcyB9OworICAgIH0KKworICAgIGF1dG8gY29sb3JTcGFjZSA9IGNvbXB1dGVDb2xvclNwYWNl
KHNldHRpbmdzLCBkZWZhdWx0Q29sb3JTcGFjZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW1hZ2VEYXRhKHNpemUsIGJ5dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpLCBjb2xvclNwYWNlKSk7
Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZSh1bnNp
Z25lZCBzdywgdW5zaWduZWQgc2gsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5n
cykKIHsKICAgICBpZiAoIXN3IHx8ICFzaCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
ZGV4U2l6ZUVycm9yIH07CisKICAgICBJbnRTaXplIHNpemUoc3csIHNoKTsKLSAgICBhdXRvIGRh
dGFTaXplID0gSW1hZ2VEYXRhOjpkYXRhU2l6ZShzaXplKTsKKyAgICBhdXRvIGRhdGFTaXplID0g
Y29tcHV0ZURhdGFTaXplKHNpemUpOwogICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiQ2Fubm90IGFsbG9jYXRl
IGEgYnVmZmVyIG9mIHRoaXMgc2l6ZSJfcyB9OworCiAgICAgYXV0byBieXRlQXJyYXkgPSBVaW50
OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChkYXRhU2l6ZS51bnNhZmVHZXQo
KSk7CiAgICAgaWYgKCFieXRlQXJyYXkpIHsKICAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBu
ZWVkIHRvIGJlIGEgInJlYWwiIG91dCBvZiBtZW1vcnkgZXJyb3Igd2l0aCBzZXRPdXRPZk1lbW9y
eUVycm9yIGNhbGxlZCBvbiBpdD8KICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJy
b3IsICJPdXQgb2YgbWVtb3J5Il9zIH07CiAgICAgfQogICAgIGJ5dGVBcnJheS0+emVyb0ZpbGwo
KTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSkp
OworCisgICAgYXV0byBjb2xvclNwYWNlID0gY29tcHV0ZUNvbG9yU3BhY2Uoc2V0dGluZ3MpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplLCBieXRlQXJyYXkucmVsZWFz
ZU5vbk51bGwoKSwgY29sb3JTcGFjZSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRh
Pj4gSW1hZ2VEYXRhOjpjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwg
dW5zaWduZWQgc3csIE9wdGlvbmFsPHVuc2lnbmVkPiBzaCkKK0V4Y2VwdGlvbk9yPFJlZjxJbWFn
ZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFy
cmF5LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBPcHRpb25hbDxJbWFnZURh
dGFTZXR0aW5ncz4gc2V0dGluZ3MpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYnl0ZUFycmF5
LT5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggJSA0KQpAQCAtMTA3LDIyICsx
MzUsMjggQEAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6YwogICAgIGlm
IChzaCAmJiBzaC52YWx1ZSgpICE9IGhlaWdodCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEluZGV4U2l6ZUVycm9yLCAic2ggdmFsdWUgaXMgbm90IGVxdWFsIHRvIGhlaWdodCJfcyB9Owog
Ci0gICAgYXV0byByZXN1bHQgPSBjcmVhdGUoSW50U2l6ZShzdywgaGVpZ2h0KSwgV1RGTW92ZShi
eXRlQXJyYXkpKTsKLSAgICBpZiAoIXJlc3VsdCkKKyAgICBJbnRTaXplIHNpemUoc3csIGhlaWdo
dCk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXplKTsKKyAgICBpZiAo
ZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplLnVuc2FmZUdldCgpICE9IGJ5dGVB
cnJheS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yIH07
Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworCisgICAgYXV0byBjb2xvclNw
YWNlID0gY29tcHV0ZUNvbG9yU3BhY2Uoc2V0dGluZ3MpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEltYWdlRGF0YShzaXplLCBXVEZNb3ZlKGJ5dGVBcnJheSksIGNvbG9yU3BhY2UpKTsKIH0K
IAotSW1hZ2VEYXRhOjpJbWFnZURhdGEoUGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlcikKLSAgICA6
IG1fcGl4ZWxCdWZmZXIoV1RGTW92ZShwaXhlbEJ1ZmZlcikpCitJbWFnZURhdGE6OkltYWdlRGF0
YShjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJiBkYXRh
LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorICAgIDogbV9zaXplKHNpemUpCisg
ICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKKyAgICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNl
KQogewogfQogCiBJbWFnZURhdGE6On5JbWFnZURhdGEoKSA9IGRlZmF1bHQ7CiAKLVJlZjxJbWFn
ZURhdGE+IEltYWdlRGF0YTo6ZGVlcENsb25lKCkgY29uc3QKK1BpeGVsQnVmZmVyIEltYWdlRGF0
YTo6cGl4ZWxCdWZmZXIoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
RGF0YShtX3BpeGVsQnVmZmVyLmRlZXBDbG9uZSgpKSk7CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIHRvRGVzdGluYXRpb25Db2xvclNwYWNlKG1fY29sb3JTcGFjZSkgfTsKKyAg
ICByZXR1cm4geyBmb3JtYXQsIG1fc2l6ZSwgbV9kYXRhLmdldCgpIH07CiB9CiAKIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRh
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSwx
MiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUg
IkltYWdlRGF0YVNldHRpbmdzLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBp
eGVsQnVmZmVyLmgiCisjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsMjkgKzQzLDMyIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEltYWdlRGF0YT4gY3JlYXRlKFBpeGVs
QnVmZmVyJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBj
cmVhdGUoT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIFJl
ZjxVaW50OENsYW1wZWRBcnJheT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNy
ZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNp
Z25lZD4gc2gpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBj
cmVhdGUoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
SW1hZ2VEYXRhPj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCByb3dzLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xvclNwYWNlLCBPcHRp
b25hbDxJbWFnZURhdGFTZXR0aW5ncz4gPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVkIHN3
LCB1bnNpZ25lZCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZShSZWY8VWlu
dDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNpZ25lZD4gc2gsIE9w
dGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPik7CisKICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VE
YXRhKCk7CiAKLSAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9waXhl
bEJ1ZmZlci5zaXplKCk7IH0KLSAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3BpeGVs
QnVmZmVyLnNpemUoKS53aWR0aCgpOyB9Ci0gICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGl4ZWxCdWZmZXIuc2l6ZSgpLmhlaWdodCgpOyB9CisgICAgc3RhdGljIFByZWRlZmluZWRD
b2xvclNwYWNlIGNvbXB1dGVDb2xvclNwYWNlKE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiwg
UHJlZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UgPSBQcmVkZWZpbmVkQ29sb3JT
cGFjZTo6U1JHQik7CiAKLSAgICBVaW50OENsYW1wZWRBcnJheSYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGl4ZWxCdWZmZXIuZGF0YSgpOyB9CisgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCi0gICAgUmVmPEltYWdlRGF0YT4gZGVlcENsb25lKCkg
Y29uc3Q7CisgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7IH0K
KyAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9CisgICAg
VWludDhDbGFtcGVkQXJyYXkmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0K
KyAgICBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xvclNwYWNlOyB9CiAKLSAgICBjb25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX3BpeGVsQnVmZmVyOyB9CisgICAgUGl4ZWxCdWZmZXIgcGl4ZWxCdWZmZXIo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBJbWFnZURhdGEoUGl4ZWxCdWZmZXIm
Jik7Ci0KLSAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGRhdGFT
aXplKGNvbnN0IEludFNpemUmKTsKKyAgICBleHBsaWNpdCBJbWFnZURhdGEoY29uc3QgSW50U2l6
ZSYsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmLCBQcmVkZWZpbmVkQ29sb3JTcGFjZSk7
CiAKLSAgICBQaXhlbEJ1ZmZlciBtX3BpeGVsQnVmZmVyOworICAgIEludFNpemUgbV9zaXplOwor
ICAgIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBtX2RhdGE7CisgICAgUHJlZGVmaW5lZENv
bG9yU3BhY2UgbV9jb2xvclNwYWNlOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEltYWdlRGF0YSYpOworV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgSW1h
Z2VEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5pZGwJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEYXRhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEwICszMiwxMSBAQAogICAg
IEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUK
IF0gaW50ZXJmYWNlIEltYWdlRGF0YSB7Ci0gICAgY29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBz
dywgdW5zaWduZWQgbG9uZyBzaCk7Ci0gICAgY29uc3RydWN0b3IoVWludDhDbGFtcGVkQXJyYXkg
ZGF0YSwgdW5zaWduZWQgbG9uZyBzdywgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBzaCk7CisgICAg
Y29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBzdywgdW5zaWduZWQgbG9uZyBzaCwgb3B0aW9uYWwg
SW1hZ2VEYXRhU2V0dGluZ3Mgc2V0dGluZ3MpOworICAgIGNvbnN0cnVjdG9yKFVpbnQ4Q2xhbXBl
ZEFycmF5IGRhdGEsIHVuc2lnbmVkIGxvbmcgc3csIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgc2gs
IG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIHNldHRpbmdzKTsKIAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIGhlaWdodDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVWludDhDbGFtcGVkQXJy
YXkgZGF0YTsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1DYW52YXNDb2xvclNwYWNlXSByZWFkb25s
eSBhdHRyaWJ1dGUgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFjZTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcmVk
ZWZpbmVkQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBJbWFnZURhdGFTZXR0aW5ncyB7CisgICAgT3B0aW9uYWw8
UHJlZGVmaW5lZENvbG9yU3BhY2U+IGNvbG9yU3BhY2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY2FudmFzLmh0bWwjaW1hZ2VkYXRhc2V0
dGluZ3MKK2RpY3Rpb25hcnkgSW1hZ2VEYXRhU2V0dGluZ3MgeworICAgIFtFbmFibGVkQnlTZXR0
aW5nPUNhbnZhc0NvbG9yU3BhY2VdIFByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2U7Cit9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEu
aWRsCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNJbWFnZURhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDkgKzI2LDkgQEAKIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2NhbnZhcy5odG1sI2NhbnZhc2ltYWdlZGF0
YQogaW50ZXJmYWNlIG1peGluIENhbnZhc0ltYWdlRGF0YSB7CiAgICAgLy8gcGl4ZWwgbWFuaXB1
bGF0aW9uCi0gICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShbRW5mb3JjZVJhbmdlXSBsb25n
IHN3LCBbRW5mb3JjZVJhbmdlXSBsb25nIHNoKTsKKyAgICBJbWFnZURhdGEgY3JlYXRlSW1hZ2VE
YXRhKFtFbmZvcmNlUmFuZ2VdIGxvbmcgc3csIFtFbmZvcmNlUmFuZ2VdIGxvbmcgc2gsIG9wdGlv
bmFsIEltYWdlRGF0YVNldHRpbmdzIHNldHRpbmdzKTsKICAgICBJbWFnZURhdGEgY3JlYXRlSW1h
Z2VEYXRhKEltYWdlRGF0YSBpbWFnZWRhdGEpOwotICAgIEltYWdlRGF0YSBnZXRJbWFnZURhdGEo
W0VuZm9yY2VSYW5nZV0gbG9uZyBzeCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBzeSwgW0VuZm9yY2VS
YW5nZV0gbG9uZyBzdywgW0VuZm9yY2VSYW5nZV0gbG9uZyBzaCk7CisgICAgSW1hZ2VEYXRhIGdl
dEltYWdlRGF0YShbRW5mb3JjZVJhbmdlXSBsb25nIHN4LCBbRW5mb3JjZVJhbmdlXSBsb25nIHN5
LCBbRW5mb3JjZVJhbmdlXSBsb25nIHN3LCBbRW5mb3JjZVJhbmdlXSBsb25nIHNoLCBvcHRpb25h
bCBJbWFnZURhdGFTZXR0aW5ncyBzZXR0aW5ncyk7CiAgICAgdW5kZWZpbmVkIHB1dEltYWdlRGF0
YShJbWFnZURhdGEgaW1hZ2VkYXRhLCBbRW5mb3JjZVJhbmdlXSBsb25nIGR4LCBbRW5mb3JjZVJh
bmdlXSBsb25nIGR5KTsKICAgICB1bmRlZmluZWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSBpbWFn
ZWRhdGEsIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZHgsIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZHksIFtF
bmZvcmNlUmFuZ2VdIGxvbmcgZGlydHlYLCBbRW5mb3JjZVJhbmdlXSBsb25nIGRpcnR5WSwgW0Vu
Zm9yY2VSYW5nZV0gbG9uZyBkaXJ0eVdpZHRoLCBbRW5mb3JjZVJhbmdlXSBsb25nIGRpcnR5SGVp
Z2h0KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMjc3NTQ0KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNTIsMzkgKzIxNTIsNDEgQEAgYm9vbCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpuZWVkcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3Rh
dGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGNvbnN0IEludFNpemUm
IHNpemUpCitzdGF0aWMgdm9pZCBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEoY29uc3QgSW1hZ2VE
YXRhJiBpbWFnZURhdGEpCiB7Ci0gICAgYXV0byBkYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoc2l6
ZSk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGEtPmRhdGEoKS56ZXJvRmlsbCgpOwotICAg
IHJldHVybiBkYXRhOworICAgIGltYWdlRGF0YS5kYXRhKCkuemVyb0ZpbGwoKTsKIH0KIAotUmVm
UHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlSW1hZ2VE
YXRhKEltYWdlRGF0YSYgaW1hZ2VEYXRhKSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0
YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShJbWFnZURh
dGEmIGV4aXN0aW5nSW1hZ2VEYXRhKSBjb25zdAogewotICAgIHJldHVybiBjcmVhdGVFbXB0eUlt
YWdlRGF0YShpbWFnZURhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIG5ld0ltYWdlRGF0YSA9IEltYWdl
RGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZChleGlzdGluZ0ltYWdlRGF0YS53aWR0aCgpLCBleGlz
dGluZ0ltYWdlRGF0YS5oZWlnaHQoKSwgZXhpc3RpbmdJbWFnZURhdGEuY29sb3JTcGFjZSgpKTsK
KyAgICBpZiAoIW5ld0ltYWdlRGF0YS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgaW5pdGlhbGl6
ZUVtcHR5SW1hZ2VEYXRhKG5ld0ltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKyAgICByZXR1cm4g
bmV3SW1hZ2VEYXRhOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlSW1hZ2VEYXRhKGludCBzdywgaW50IHNoKSBj
b25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OmNyZWF0ZUltYWdlRGF0YShpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRh
U2V0dGluZ3M+IHNldHRpbmdzKSBjb25zdAogewogICAgIGlmICghc3cgfHwgIXNoKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKIAotICAgIEludFNpemUgc2l6
ZSB7IHN0ZDo6YWJzKHN3KSwgc3RkOjphYnMoc2gpIH07Ci0gICAgcmV0dXJuIGNyZWF0ZUVtcHR5
SW1hZ2VEYXRhKHNpemUpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGVV
bmluaXRpYWxpemVkKHN0ZDo6YWJzKHN3KSwgc3RkOjphYnMoc2gpLCBtX3NldHRpbmdzLmNvbG9y
U3BhY2UsIHNldHRpbmdzKTsKKyAgICBpZiAoIWltYWdlRGF0YS5oYXNFeGNlcHRpb24oKSkKKyAg
ICAgICAgaW5pdGlhbGl6ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsK
KyAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRh
Pj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhKGludCBzeCwgaW50
IHN5LCBpbnQgc3csIGludCBzaCkgY29uc3QKK0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURhdGEoaW50IHN4LCBpbnQgc3ks
IGludCBzdywgaW50IHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpIGNv
bnN0CiB7CisgICAgaWYgKCFzdyB8fCAhc2gpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bmRleFNpemVFcnJvciB9OworCiAgICAgaWYgKCFjYW52YXNCYXNlKCkub3JpZ2luQ2xlYW4oKSkg
ewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShN
QUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2Fu
dmFzIGJlY2F1c2UgdGhlIGNhbnZhcyBoYXMgYmVlbiB0YWludGVkIGJ5IGNyb3NzLW9yaWdpbiBk
YXRhLiIpKTsKICAgICAgICAgY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3Vy
aXR5RXJyb3IgfTsKICAgICB9CiAKLSAgICBpZiAoIXN3IHx8ICFzaCkKLSAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07Ci0KICAgICBpZiAoc3cgPCAwKSB7CiAgICAg
ICAgIHN4ICs9IHN3OwogICAgICAgICBzdyA9IC1zdzsKQEAgLTIxOTcsMTAgKzIxOTksMTYgQEAg
RXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbgogICAgIEludFJlY3QgaW1h
Z2VEYXRhUmVjdCB7IHN4LCBzeSwgc3csIHNoIH07CiAKICAgICBJbWFnZUJ1ZmZlciogYnVmZmVy
ID0gY2FudmFzQmFzZSgpLmJ1ZmZlcigpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1
cm4gY3JlYXRlRW1wdHlJbWFnZURhdGEoaW1hZ2VEYXRhUmVjdC5zaXplKCkpOworICAgIGlmICgh
YnVmZmVyKSB7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGVVbmlu
aXRpYWxpemVkKGltYWdlRGF0YVJlY3Qud2lkdGgoKSwgaW1hZ2VEYXRhUmVjdC5oZWlnaHQoKSwg
bV9zZXR0aW5ncy5jb2xvclNwYWNlLCBzZXR0aW5ncyk7CisgICAgICAgIGlmICghaW1hZ2VEYXRh
Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZUVtcHR5SW1hZ2VEYXRhKGlt
YWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIGltYWdlRGF0YTsKKyAgICB9
CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCIH07CisgICAgYXV0byBjb21wdXRlZENvbG9yU3BhY2UgPSBJbWFnZURhdGE6OmNv
bXB1dGVDb2xvclNwYWNlKHNldHRpbmdzLCBtX3NldHRpbmdzLmNvbG9yU3BhY2UpOworCisgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIHRvRGVzdGluYXRpb25Db2xvclNwYWNlKGNv
bXB1dGVkQ29sb3JTcGFjZSkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQ
aXhlbEJ1ZmZlcihmb3JtYXQsIGltYWdlRGF0YVJlY3QpOwogICAgIGlmICghcGl4ZWxCdWZmZXIp
IHsKICAgICAgICAgY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LApAQCAtMjIwOCw2ICsyMjE2LDggQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENh
bnZhc1JlbgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
ICAgICB9CiAKKyAgICBBU1NFUlQocGl4ZWxCdWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0g
dG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoY29tcHV0ZWRDb2xvclNwYWNlKSk7CisKICAgICByZXR1
cm4geyB7IEltYWdlRGF0YTo6Y3JlYXRlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSkgfSB9OwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNs
dWRlICJJbWFnZURhdGFTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkltYWdlU21vb3RoaW5nUXVhbGl0
eS5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCkBAIC0x
OTEsOSArMTkyLDkgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxDYW52YXNHcmFkaWVu
dD4+IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZs
b2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52
YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSYmLCBjb25zdCBTdHJp
bmcmIHJlcGV0aXRpb24pOwogCi0gICAgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlSW1hZ2VEYXRh
KEltYWdlRGF0YSYpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBj
cmVhdGVJbWFnZURhdGEoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdDsKLSAgICBFeGNlcHRp
b25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gZ2V0SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQg
c3csIGludCBzaCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0
ZUltYWdlRGF0YShJbWFnZURhdGEmKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VE
YXRhPj4gY3JlYXRlSW1hZ2VEYXRhKGludCB3aWR0aCwgaW50IGhlaWdodCwgT3B0aW9uYWw8SW1h
Z2VEYXRhU2V0dGluZ3M+KSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4g
Z2V0SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1h
Z2VEYXRhU2V0dGluZ3M+KSBjb25zdDsKICAgICB2b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEm
LCBpbnQgZHgsIGludCBkeSk7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiwgaW50
IGR4LCBpbnQgZHksIGludCBkaXJ0eVgsIGludCBkaXJ0eVksIGludCBkaXJ0eVdpZHRoLCBpbnQg
ZGlydHlIZWlnaHQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZp
bmVkQ29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcmVkZWZpbmVkQ29sb3JTcGFjZS5oIgog
CiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDQgKzQ2LDIzIEBAIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3IKICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCOwogfQogCitPcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVk
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0
Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoK
KyAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCOworI2lmIEVOQUJMRShE
RVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6TGluZWFyU1JHQjoKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNl
bmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAg
IGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVybiBQ
cmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxheVAzOworI2VuZGlmCisgICAgfQorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFj
ZS5oCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVk
ZWZpbmVkQ29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw2ICs0MCw3IEBAIGVudW0g
Y2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2UgewogfTsKIAogRGVzdGluYXRpb25Db2xvclNwYWNl
IHRvRGVzdGluYXRpb25Db2xvclNwYWNlKFByZWRlZmluZWRDb2xvclNwYWNlKTsKK09wdGlvbmFs
PFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZSk7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5jcHAJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjgsNiArNDI4
LDEyIEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2MKICAgICByZXR1
cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6
SW1hZ2VEYXRhIH19OwogfQogCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoSW1hZ2VE
YXRhU2V0dGluZ3MmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKK30KKwogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlU21v
b3RoaW5nUXVhbGl0eSBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRh
dGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OlN0cmluZyB9fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAJKHJldmlzaW9uIDI3NzU0NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRh
LmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhU2V0dGluZ3MuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
YW52YXNBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaAkocmV2aXNpb24gMjc3
NTQ0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBXZWJHTFRyYW5zZm9y
bUZlZWRiYWNrOwogY2xhc3MgV2ViR0xVbmlmb3JtTG9jYXRpb247CiBjbGFzcyBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0Owogc3RydWN0IERPTU1hdHJpeDJESW5pdDsKK3N0cnVjdCBJbWFnZURhdGFT
ZXR0aW5nczsKIGVudW0gY2xhc3MgUmVjb3JkaW5nU3dpenpsZVR5cGUgOiBpbnQ7CiBlbnVtIGNs
YXNzIENhbnZhc0RpcmVjdGlvbjsKIGVudW0gY2xhc3MgQ2FudmFzRmlsbFJ1bGU7CkBAIC0xNTAs
NiArMTUxLDcgQEAgZW51bSBJbWFnZVNtb290aGluZ1F1YWxpdHk7CiAgICAgbWFjcm8oSFRNTElt
YWdlRWxlbWVudCopIFwKICAgICBtYWNybyhJbWFnZUJpdG1hcCopIFwKICAgICBtYWNybyhJbWFn
ZURhdGEqKSBcCisgICAgbWFjcm8oSW1hZ2VEYXRhU2V0dGluZ3MmKSBcCiAgICAgbWFjcm8oSW1h
Z2VTbW9vdGhpbmdRdWFsaXR5KSBcCiAgICAgbWFjcm8oT3B0aW9uYWw8ZmxvYXQ+JikgXAogICAg
IG1hY3JvKFBhdGgyRCopIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3NTQ0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDE0ICsxMTYsMTYgQEAgVmVjdG9yPHVpbnQ4X3Q+IElt
YWdlQnVmZmVyQmFja2VuZDo6dG9CRwogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGlu
YXRpb25Gb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIHZvaWQqIGRhdGEpIGNvbnN0
CiB7CisgICAgQVNTRVJUKFBpeGVsQnVmZmVyOjpzdXBwb3J0ZWRQaXhlbEZvcm1hdChkZXN0aW5h
dGlvbkZvcm1hdC5waXhlbEZvcm1hdCkpOworCiAgICAgYXV0byBzb3VyY2VSZWN0U2NhbGVkID0g
dG9CYWNrZW5kQ29vcmRpbmF0ZXMoc291cmNlUmVjdCk7CiAKICAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShkZXN0aW5hdGlvbkZvcm1hdCwgc291cmNlUmVjdFNj
YWxlZC5zaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKLSAgICBJbnRSZWN0IHNvdXJjZVJlY3RDbGlwcGVkID0gaW50ZXJzZWN0aW9u
KGJhY2tlbmRSZWN0KCksIHNvdXJjZVJlY3RTY2FsZWQpOwotICAgIEludFJlY3QgZGVzdGluYXRp
b25SZWN0ID0geyBJbnRQb2ludDo6emVybygpLCBzb3VyY2VSZWN0Q2xpcHBlZC5zaXplKCkgfTsK
KyAgICBhdXRvIHNvdXJjZVJlY3RDbGlwcGVkID0gaW50ZXJzZWN0aW9uKGJhY2tlbmRSZWN0KCks
IHNvdXJjZVJlY3RTY2FsZWQpOworICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0IHsgSW50UG9p
bnQ6Onplcm8oKSwgc291cmNlUmVjdENsaXBwZWQuc2l6ZSgpIH07CiAKICAgICBpZiAoc291cmNl
UmVjdFNjYWxlZC54KCkgPCAwKQogICAgICAgICBkZXN0aW5hdGlvblJlY3Quc2V0WCgtc291cmNl
UmVjdFNjYWxlZC54KCkpOwpAQCAtMTM0LDIzICsxMzYsMTUgQEAgT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEltYWdlQnVmZmVyQmFja2VuZAogICAgIGlmIChkZXN0aW5hdGlvblJlY3Quc2l6ZSgpICE9
IHNvdXJjZVJlY3RTY2FsZWQuc2l6ZSgpKQogICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLnpl
cm9GaWxsKCk7CiAKLSAgICB1bnNpZ25lZCBzb3VyY2VCeXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93
KCk7Ci0gICAgY29uc3QgdWludDhfdCogc291cmNlUm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlQnl0ZXNQZXJSb3cg
KyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OwotCi0gICAgdW5zaWduZWQgZGVzdGluYXRpb25C
eXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7Ci0gICAgdWludDhfdCog
ZGVzdGluYXRpb25Sb3dzID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5kYXRhKCkgKyBkZXN0aW5hdGlv
blJlY3QueSgpICogZGVzdGluYXRpb25CeXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkg
KiA0OwotCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgc291cmNlRm9ybWF0IHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxGb3JtYXQoKSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCIH07Ci0KICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291
cmNlOwotICAgIHNvdXJjZS5mb3JtYXQgPSBzb3VyY2VGb3JtYXQ7Ci0gICAgc291cmNlLmJ5dGVz
UGVyUm93ID0gc291cmNlQnl0ZXNQZXJSb3c7Ci0gICAgc291cmNlLnJvd3MgPSBzb3VyY2VSb3dz
OworICAgIHNvdXJjZS5mb3JtYXQgPSB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRp
cGxpZWQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9OworICAgIHNvdXJjZS5ieXRlc1Bl
clJvdyA9IGJ5dGVzUGVyUm93KCk7CisgICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1Bl
clJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7CiAgICAgCiAgICAgUGl4ZWxCdWZmZXJD
b252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKICAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0
aW5hdGlvbkZvcm1hdDsKLSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGRlc3RpbmF0aW9u
Qnl0ZXNQZXJSb3c7Ci0gICAgZGVzdGluYXRpb24ucm93cyA9IGRlc3RpbmF0aW9uUm93czsKKyAg
ICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7
CisgICAgZGVzdGluYXRpb24ucm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVz
dGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25S
ZWN0LngoKSAqIDQ7CiAKICAgICBjb252ZXJ0SW1hZ2VQaXhlbHMoc291cmNlLCBkZXN0aW5hdGlv
biwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKQEAgLTE1OSwxNCArMTUzLDExIEBAIE9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQKIAogdm9pZCBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBzb3VyY2VQaXhlbEJ1ZmZl
ciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9u
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgdm9p
ZCogZGF0YSkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG5vbi1SR0JBOCBwaXhl
bCBmb3JtYXRzLgotICAgIEFTU0VSVChzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKS5waXhlbEZv
cm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTgpOwotCiAgICAgYXV0byBzb3VyY2VSZWN0U2NhbGVk
ID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoc291cmNlUmVjdCk7CiAgICAgYXV0byBkZXN0aW5hdGlv
blBvaW50U2NhbGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoZGVzdGluYXRpb25Qb2ludCk7CiAK
LSAgICBJbnRSZWN0IHNvdXJjZVJlY3RDbGlwcGVkID0gaW50ZXJzZWN0aW9uKHsgSW50UG9pbnQ6
Onplcm8oKSwgc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpIH0sIHNvdXJjZVJlY3RTY2FsZWQpOwot
ICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0ID0gc291cmNlUmVjdENsaXBwZWQ7CisgICAgYXV0
byBzb3VyY2VSZWN0Q2xpcHBlZCA9IGludGVyc2VjdGlvbih7IEludFBvaW50Ojp6ZXJvKCksIHNv
dXJjZVBpeGVsQnVmZmVyLnNpemUoKSB9LCBzb3VyY2VSZWN0U2NhbGVkKTsKKyAgICBhdXRvIGRl
c3RpbmF0aW9uUmVjdCA9IHNvdXJjZVJlY3RDbGlwcGVkOwogICAgIGRlc3RpbmF0aW9uUmVjdC5t
b3ZlQnkoZGVzdGluYXRpb25Qb2ludFNjYWxlZCk7CiAKICAgICBpZiAoc291cmNlUmVjdFNjYWxl
ZC54KCkgPCAwKQpAQCAtMTc4LDI0ICsxNjksMTUgQEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OnB1dFBpeGVsQnVmZmVyKAogICAgIGRlc3RpbmF0aW9uUmVjdC5pbnRlcnNlY3QoYmFja2VuZFJl
Y3QoKSk7CiAgICAgc291cmNlUmVjdENsaXBwZWQuc2V0U2l6ZShkZXN0aW5hdGlvblJlY3Quc2l6
ZSgpKTsKIAotICAgIHVuc2lnbmVkIHNvdXJjZUJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVBpeGVs
QnVmZmVyLnNpemUoKS53aWR0aCgpOwotICAgIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZVJvd3MgPSBz
b3VyY2VQaXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291cmNlUmVjdENsaXBwZWQueSgpICog
c291cmNlQnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OwotCi0gICAgdW5z
aWduZWQgZGVzdGluYXRpb25CeXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7Ci0gICAgdWludDhf
dCogZGVzdGluYXRpb25Sb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBk
ZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb25CeXRlc1BlclJvdyArIGRlc3RpbmF0aW9u
UmVjdC54KCkgKiA0OwotCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgc291cmNlRm9ybWF0ID0gc291
cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCk7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZGVzdGluYXRp
b25Gb3JtYXQgeyBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKLQogICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9u
VmlldyBzb3VyY2U7Ci0gICAgc291cmNlLmZvcm1hdCA9IHNvdXJjZUZvcm1hdDsKLSAgICBzb3Vy
Y2UuYnl0ZXNQZXJSb3cgPSBzb3VyY2VCeXRlc1BlclJvdzsKLSAgICBzb3VyY2Uucm93cyA9IHNv
dXJjZVJvd3M7Ci0gICAgCisgICAgc291cmNlLmZvcm1hdCA9IHNvdXJjZVBpeGVsQnVmZmVyLmZv
cm1hdCgpOworICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5z
aXplKCkud2lkdGgoKTsKKyAgICBzb3VyY2Uucm93cyA9IHNvdXJjZVBpeGVsQnVmZmVyLmRhdGEo
KS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBz
b3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OworCiAgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmll
dyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0aW5hdGlvbkZvcm1h
dDsKLSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3c7
Ci0gICAgZGVzdGluYXRpb24ucm93cyA9IGRlc3RpbmF0aW9uUm93czsKKyAgICBkZXN0aW5hdGlv
bi5mb3JtYXQgPSB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9y
U3BhY2UoKSB9OworICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsK
KyAgICBkZXN0aW5hdGlvbi5yb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkg
KyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5h
dGlvblJlY3QueCgpICogNDsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAJKHJldmlzaW9uIDI3NzU0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorYm9vbCBQaXhlbEJ1ZmZlcjo6c3VwcG9ydGVkUGl4ZWxGb3JtYXQoUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQpCit7CisgICAgc3dpdGNoIChwaXhlbEZvcm1hdCkgeworICAgIGNhc2UgUGl4ZWxG
b3JtYXQ6OlJHQkE4OgorICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OkJHUkE4OgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OlJHQjEwOgorICAgIGNhc2UgUGl4ZWxG
b3JtYXQ6OlJHQjEwQTg6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIENoZWNr
ZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNp
emUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKLSAgICAvLyBOT1RFOiBPbmx5IDgtYml0IGZvcm1hdHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0
ZWQuCi0gICAgQVNTRVJUX1VOVVNFRChmb3JtYXQsIGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhl
bEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JB
OCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3JtYXQsIHN1cHBvcnRlZFBpeGVsRm9ybWF0KGZvcm1h
dC5waXhlbEZvcm1hdCkpOwogCiAgICAgY29uc3RleHByIHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwg
PSA0OwogCkBAIC00Myw3ICs1NSw3IEBAIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93
PiBQaXhlbEIKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVG
b3JEZWNvZGluZyhjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXpl
JiBzaXplLCB1bnNpZ25lZCBkYXRhQnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoZm9ybWF0LnBp
eGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0g
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxGb3JtYXQoZm9y
bWF0LnBpeGVsRm9ybWF0KSk7CiAgICAgQVNTRVJUKGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwg
c2l6ZSkudW5zYWZlR2V0KCkgPT0gZGF0YUJ5dGVMZW5ndGgpOwogCiAgICAgYXV0byBwaXhlbEFy
cmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YUJ5dGVM
ZW5ndGgpOwpAQCAtNTQsOCArNjYsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZm
ZXI6OnRyeUNyCiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7
Ci0gICAgLy8gTk9URTogT25seSA4LWJpdCBmb3JtYXRzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVk
LgotICAgIEFTU0VSVChmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8
IGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFTU0VSVChz
dXBwb3J0ZWRQaXhlbEZvcm1hdChmb3JtYXQucGl4ZWxGb3JtYXQpKTsKIAogICAgIGF1dG8gYnVm
ZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZl
clNpemUuaGFzT3ZlcmZsb3dlZCgpKQpAQCAtNjYsNiArNzcsMjEgQEAgT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcgogICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBw
aXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQogCitPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0
LCBjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZl
cikKK3sKKyAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxGb3JtYXQoZm9ybWF0LnBpeGVsRm9ybWF0
KSk7CisKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNp
emUpOworICAgIGlmIChidWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSAhPSBhcnJheUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1
dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJh
eUJ1ZmZlciksIDAsIGJ1ZmZlclNpemUudW5zYWZlR2V0KCkpOworICAgIGlmICghcGl4ZWxBcnJh
eSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4geyB7IGZvcm1hdCwg
c2l6ZSwgcGl4ZWxBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0gfTsKK30KKwogUGl4ZWxCdWZmZXI6
OlBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNp
emUmIHNpemUsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmIGRhdGEpCiAgICAgOiBtX2Zv
cm1hdCB7IGZvcm1hdCB9CiAgICAgLCBtX3NpemUgeyBzaXplIH0KQEAgLTc0LDYgKzEwMCwxNCBA
QCBQaXhlbEJ1ZmZlcjo6UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmCiAgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9zaXplLmFyZWEoKSAqIDQpLnVuc2Fm
ZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOwogfQogCitQaXhlbEJ1ZmZlcjo6UGl4ZWxCdWZm
ZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
SlNDOjpVaW50OENsYW1wZWRBcnJheSYgZGF0YSkKKyAgICA6IG1fZm9ybWF0IHsgZm9ybWF0IH0K
KyAgICAsIG1fc2l6ZSB7IHNpemUgfQorICAgICwgbV9kYXRhIHsgZGF0YSB9Cit7CisgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9zaXplLmFyZWEoKSAqIDQp
LnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworfQorCiBQaXhlbEJ1ZmZlcjo6flBp
eGVsQnVmZmVyKCkgPSBkZWZhdWx0OwogCiBQaXhlbEJ1ZmZlciBQaXhlbEJ1ZmZlcjo6ZGVlcENs
b25lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVs
QnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXIuaAkocmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGl4ZWxCdWZmZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBpeGVsQnVmZmVyKTsKIHB1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0ZWRQaXhlbEZvcm1hdChQaXhlbEZvcm1hdCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYsIGNvbnN0IEludFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IElu
dFNpemUmLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJik7CiAKICAgICBQaXhlbEJ1ZmZlcihjb25z
dCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50OENsYW1w
ZWRBcnJheT4mJik7CisgICAgUGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBj
b25zdCBJbnRTaXplJiwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5QaXhlbEJ1ZmZlcigpOwogCiAgICAgUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImJikgPSBk
ZWZhdWx0OwpAQCAtNTMsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIEpTQzo6VWludDhDbGFtcGVkQXJyYXkm
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAorICAgIFJlZjxKU0M6OlVp
bnQ4Q2xhbXBlZEFycmF5PiYmIHRha2VEYXRhKCkgeyByZXR1cm4gV1RGTW92ZShtX2RhdGEpOyB9
CisKICAgICBQaXhlbEJ1ZmZlciBkZWVwQ2xvbmUoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252
ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2
LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGUKIAog
ICAgICAgICB2SW1hZ2VfRXJyb3IgY29udmVydGVyQ3JlYXRlRXJyb3IgPSBrdkltYWdlTm9FcnJv
cjsKICAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBhZG9wdENGKHZJbWFnZUNvbnZlcnRlcl9DcmVh
dGVXaXRoQ0dJbWFnZUZvcm1hdCgmc291cmNlQ0dJbWFnZUZvcm1hdCwgJmRlc3RpbmF0aW9uQ0dJ
bWFnZUZvcm1hdCwgbnVsbHB0ciwga3ZJbWFnZU5vRmxhZ3MsICZjb252ZXJ0ZXJDcmVhdGVFcnJv
cikpOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChjb252ZXJ0ZXJDcmVhdGVF
cnJvciwgY29udmVydGVyQ3JlYXRlRXJyb3IgIT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252
ZXJ0ZXIgY3JlYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNyZWF0ZUVy
cm9yKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ3JlYXRl
RXJyb3IsIGNvbnZlcnRlckNyZWF0ZUVycm9yID09IGt2SW1hZ2VOb0Vycm9yLCAidkltYWdlQ29u
dmVydGVyIGNyZWF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiAlemQiLCBjb252ZXJ0ZXJDcmVhdGVF
cnJvcik7CiAKICAgICAgICAgdkltYWdlX0Vycm9yIGNvbnZlcnRlckNvbnZlcnRFcnJvciA9IHZJ
bWFnZUNvbnZlcnRfQW55VG9BbnkoY29udmVydGVyLmdldCgpLCAmc291cmNlVkltYWdlQnVmZmVy
LCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIG51bGxwdHIsIGt2SW1hZ2VOb0ZsYWdzKTsKICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ29udmVydEVycm9yLCBj
b252ZXJ0ZXJDb252ZXJ0RXJyb3IgPT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252ZXJ0X0Fu
eVRvQW55IGZhaWxlZCBjb252ZXJzaW9uIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNvbnZl
cnRFcnJvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiAyNzc1NDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
RmlsdGVyRWZmZWN0Ojpjb252CiAgICAgLy8gQ29sb3Igc3BhY2UgY29udmVyc2lvbiBoYXBwZW5z
IGludGVybmFsbHkgd2hlbiBkcmF3aW5nIGZyb20gb25lIGltYWdlIGJ1ZmZlciB0byBhbm90aGVy
CiAgICAgY29udmVydGVkQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGlucHV0QnVm
ZmVyLCByZWN0KTsKICAgICAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBvdXRwdXRB
bHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBvdXRwdXRBbHBoYUZvcm1hdCwg
UGl4ZWxGb3JtYXQ6OlJHQkE4LCB0YXJnZXRDb2xvclNwYWNlIH07CiAgICAgcmV0dXJuIGNvbnZl
cnRlZEJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCByZWN0KTsKIH0KIApAQCAtNTA0LDcg
KzUwNCw5IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWwKICAgICAg
ICAgICAgICAgICBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKGRlc3RpbmF0
aW9uLCAqY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCByZWN0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCIH07CisKKyAgICAgICAgICAgIEFTU0VSVChtX2ltYWdlQnVmZmVyUmVzdWx0LT5jb2xv
clNwYWNlKCkgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIFBpeGVsQnVmZmVy
Rm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwg
UGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAgICAgIG1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRQaXhlbEJ1
ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSk7
CiAgICAgICAgICAgICBpZiAoIW1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTEyLDcgKzUxNCw5IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5
VW5tdWx0aXBsaWVkUmVzdWwKICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1
dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNp
emVOZWVkc0NsYW1waW5nKGlucHV0U2l6ZSkpOwogICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxl
KG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICAgICAg
CisgICAgICAgICAgICBBU1NFUlQobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmZvcm1hdCgp
LmNvbG9yU3BhY2UgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIFBpeGVsQnVm
ZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGll
ZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAgICAg
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgaW5wdXRTaXplKTsKICAgICAgICAgICAgIGlmICghbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01MzksNyArNTQzLDkgQEAgdm9pZCBGaWx0
ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdQogICAgICAgICAgICAgICAgIGNvcHlDb252
ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCByZWN0KTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworCisgICAgICAgICAg
ICBBU1NFUlQobV9pbWFnZUJ1ZmZlclJlc3VsdC0+Y29sb3JTcGFjZSgpID09IG1fcmVzdWx0Q29s
b3JTcGFjZSk7CisgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVz
dWx0Q29sb3JTcGFjZSB9OwogICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQg
PSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQo
KSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSk7CiAgICAgICAgICAgICBpZiAoIW1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU0Nyw3
ICs1NTMsOSBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1CiAgICAg
ICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAg
ICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNp
emUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKLSAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH07CisKKyAgICAgICAgICAgIEFTU0VSVChtX3VubXVsdGlwbGllZElt
YWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29sb3JTcGFjZSk7Cisg
ICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JTcGFj
ZSB9OwogICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZl
cjo6dHJ5Q3JlYXRlKGZvcm1hdCwgaW5wdXRTaXplKTsKICAgICAgICAgICAgIGlmICghbV9wcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTkwLDcg
KzU5OCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0OjpjcmUKICAgICBJ
bnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VS
VCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKICAgICByZXN1
bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIFBpeGVsQnVmZmVyRm9y
bWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhl
bEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07CiAgICAgbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBy
ZXN1bHRTaXplKTsKICAgICByZXR1cm4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdDsKIH0KQEAg
LTYwOSw3ICs2MTcsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3Jl
CiAgICAgSW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXN1bHRTaXplKSk7CiAg
ICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBQaXhlbEJ1
ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVk
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07CiAgICAg
bV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0Owog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjc3NTQ0
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MzMxLDcgKzUzMzEsNyBAQCB2b2lkIEludGVybmFsczo6dmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkCiAgICAgaWYgKCFyZ2JhKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0byBp
bWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksIHZpZGVv
U2V0dGluZ3Mud2lkdGgoKSwgdmlkZW9TZXR0aW5ncy5oZWlnaHQoKSk7CisgICAgYXV0byBpbWFn
ZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksIHZpZGVvU2V0
dGluZ3Mud2lkdGgoKSwgdmlkZW9TZXR0aW5ncy5oZWlnaHQoKSwgeyB7IFByZWRlZmluZWRDb2xv
clNwYWNlOjpTUkdCIH0gfSk7CiAgICAgaWYgKCFpbWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5yZXNvbHZlKGltYWdlRGF0YS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSk7CiAgICAgZWxzZQpAQCAtNjIwMyw3ICs2MjAzLDcgQEAgdm9pZCBJbnRl
cm5hbHM6OmxvYWRBcnR3b3JrSW1hZ2UoU3RyaW5nJgogICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlz
ZSA9IG1ha2VVbmlxdWU8QXJ0d29ya0ltYWdlUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSk7CiAg
ICAgbV9hcnR3b3JrTG9hZGVyID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VMb2FkZXI+KCpjb250
ZXh0RG9jdW1lbnQoKSwgdXJsLCBbdGhpc10oSW1hZ2UqIGltYWdlKSB7CiAgICAgICAgIGlmIChp
bWFnZSkgewotICAgICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZSh1
bnNpZ25lZChpbWFnZS0+d2lkdGgoKSksIHVuc2lnbmVkKGltYWdlLT5oZWlnaHQoKSkpOworICAg
ICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZS0+d2lkdGgo
KSwgaW1hZ2UtPmhlaWdodCgpLCB7IHsgUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0IgfSB9KTsK
ICAgICAgICAgICAgIGlmICghaW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVzb2x2ZShpbWFnZURhdGEucmVsZWFzZVJldHVy
blZhbHVlKCkpOwogICAgICAgICAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjc3NTUyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMTUgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjcmVhdGlu
Zy9hY2Nlc3Npbmcvc2V0dGluZyBub24tc1JHQiBJbWFnZURhdGEgdmlhIGNhbnZhcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRl
c3RzIGVuYWJsaW5nIHRoZSBDYW52YXNDb2xvclNwYWNlRW5hYmxlZCBwcmVmZXJlbmNlLgorCisg
ICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmNh
bnZhc0NvbG9yU3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5oOgorICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXND
aGFuZ2VkKToKKwogMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIERyb3AgbGVnYWN5IC8gcHJlZml4ZWQgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24K
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlz
aW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYzMSwzICsyNjMxLDkgQEAgSFJFU1VMVCBXZWJQcmVmZXJl
bmNlczo6c3RvcEJhdGNoaW5nVXBkYQogICAgIH0KICAgICByZXR1cm4gU19PSzsKIH0KKworYm9v
bCBXZWJQcmVmZXJlbmNlczo6Y2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKQoreworICAgIHJldHVy
biBib29sVmFsdWVGb3JLZXkoIldlYktpdENhbnZhc0NvbG9yU3BhY2VCZWhhdmlvckVuYWJsZWQi
KTsKK30KKwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5oCShy
ZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsNiArMzQzLDEwIEBAIHB1YmxpYzoKIAogICAgIEhS
RVNVTFQgcG9zdFByZWZlcmVuY2VzQ2hhbmdlc05vdGlmaWNhdGlvbigpOwogCisgICAgLy8gVGhl
IGZvbGxvd2luZyBwcmVmZXJlbmNlIGFjY2Vzc29ycyBhcmUgbm90IGV4cG9zZWQgdmlhIElXZWJQ
cmVmZXJlbmNlcyogYXMgdGhleSBhcmUgb25seQorICAgIC8vIG5lZWRlZCBmb3IgdGVzdGluZyBw
dXJwb3NlcyBhbmQgY2FuIGJlIHRvZ2dsZWQgdmlhIHRoZSBzZXQqUHJlZmVyZW5jZUZvclRlc3Rp
bmcgZnVuY3Rpb25zLgorICAgIGJvb2wgY2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKTsKKwogcHJp
dmF0ZToKICAgICBXZWJQcmVmZXJlbmNlcygpOwogICAgIH5XZWJQcmVmZXJlbmNlcygpOwpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjY3
LDYgKzU2NjcsOCBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlCiAg
ICAgICAgIHJldHVybiBocjsKICAgICBzZXR0aW5ncy5zZXRPdmVyc2Nyb2xsQmVoYXZpb3JFbmFi
bGVkKCEhZW5hYmxlZCk7CiAKKyAgICBzZXR0aW5ncy5zZXRDYW52YXNDb2xvclNwYWNlRW5hYmxl
ZChtX3ByZWZlcmVuY2VzLT5jYW52YXNDb2xvclNwYWNlRW5hYmxlZCgpKTsKKwogICAgIHJldHVy
biBTX09LOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc1NTEpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAyMS0wNS0xNSAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNy
ZWF0aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0YSB2aWEgY2FudmFzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgIFJlbW92ZSB3aWRlLWdhbXV0LWNhbnZhcyBub3cgdGhhdCB0aGV5IHNo
b3VsZCBwYXNzLgorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRp
c3BsYXktcDMtSW1hZ2VEYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLmh0bWw6IEFkZGVk
LgorICAgICAgICBBZGQgbmV3IHRlc3QgZXhlcmNpc2luZyBnZXRJbWFnZURhdGEgYW5kIHB1dElt
YWdlRGF0YSB3aXRoIG5vbi1zUkdCIGNhbnZhc2VzCisgICAgICAgIGFuZCBub24tc1JHQiBJbWFn
ZURhdGEuCisgCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWltYWdlRGF0YS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgIFVwZGF0ZSByZXN1bHRzIGZvciB1cGRhdGVkIGVycm9yIG1lc3NhZ2Vz
LCB3aGljaCBhcmUgYSBiaXQgd29yc2UgZHVlIGFkZGl0aW9uYWwKKyAgICAgICAgYW1iaWd1aXR5
IGluIHNpZ25hdHVyZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgIE1hcmsgbmV3IHRlc3QgYXMgZmFpbGluZyBvbiBnbGliIGR1ZSB0byBsYWNr
IG9mIGRpc3BsYXktcDMgc3VwcG9ydC4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICBNYXJrIG5ldyB0ZXN0IGFzIGZhaWxpbmcgb24gV2luZG93cyBk
dWUgdG8gbGFjayBvZiBkaXNwbGF5LXAzIHN1cHBvcnQuCisgICAgICAgIFVuc2tpcCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncy1jb2xvclNwYWNlLWVuYWJsZWQuaHRtbCB3aGljaAor
ICAgICAgICBzaG91bGQgbm93IHBhc3MgZHVlIHRvIGFkZGluZyBtYW51YWwgcHJlZmVyZW5jZXMg
c3VwcG9ydCBpbiBXZWJLaXRMZWdhY3kvd2luLiAKKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LXR5cGVzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgVXBkYXRlIHJlc3VsdHMgZHVlIHRvIG5ldyBhdHRyaWJ1dGUgaW4gSW1hZ2VEYXRh
IHRoYXQgaXMgYXV0byBwcmludGVkLgorCiAyMDIxLTA1LTE1ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3JlYXRlQ29uaWNHcmFkaWVudApJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lv
biAyNzc1NDQpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTk0LDkgKzM5OTQsNiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1l
bnQvZHJhd2luZy1pbWFnZXMtdG8tdGhlLWNhbnZhcy9pbWFnZS1vcmllbnRhdGlvbi9kcmF3SW1h
Z2UtZnJvbS1lbGVtZW50LXN3YXAtd2lkdGgtaGVpZ2h0LnRlbnRhdGl2ZS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvZHJhd2luZy1pbWFnZXMtdG8tdGhlLWNhbnZhcy9pbWFnZS1vcmllbnRhdGlvbi9k
cmF3SW1hZ2UtZnJvbS1lbGVtZW50LnRlbnRhdGl2ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiAKLSMgU29tZXRpbWVzIHByaW50cyB3ZWlyZCBvdXRwdXQgYXQgdGhlIGJlZ2lubmluZyBvZiB0
aGUgdGVzdHMuCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2Vs
ZW1lbnQvd2lkZS1nYW11dC1jYW52YXMgWyBGYWlsdXJlIFBhc3MgXQotCiAjIENTUyBNYXNvbnJ5
IExheW91dCBub3Qgc3VwcG9ydGVkLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWdyaWQvbWFzb25yeS50ZW50YXRpdmUgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8yMDIx
MTUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZCBb
IFNraXAgXQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNl
LWRpc3BsYXktcDMtSW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEt
ZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNTkgQEAKK1Rlc3QgdGhhdCBwaXhlbCBhY2Nlc3MgZnVuY3Rp
b25zIHdvcmsgd2l0aCBub24tU1JHQiBjb2xvciBzcGFjZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzLmNv
bG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxh
eVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdCLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQ
QVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3Bh
Y2VEaXNwbGF5UDMuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgaW1hZ2VEYXRhQ3Jl
YXRlZEZyb21TUkdCQ2FudmFzLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGltYWdlRGF0YUNy
ZWF0ZWRGcm9tU1JHQkNhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlU1JHQi5jb2xvclNwYWNlIGlz
ICJzcmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5nQ29s
b3JTcGFjZURpc3BsYXlQMy5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBpbWFnZURh
dGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQ
QVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JTZXR0aW5nQ29sb3JT
cGFjZVRvU1JHQi5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJv
bUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNw
YWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNv
bnN0cnVjdG9yUGFzc2luZ0J1ZmZlci5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFnZURh
dGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlclNldHRpbmdDb2xv
clNwYWNlVG9TUkdCLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRG
cm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyU2V0dGluZ0NvbG9yU3BhY2VUb0Rp
c3BsYXlQMy5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorCitUZXN0aW5nIGEgZGlzcGxheS1w
MyBjYW52YXMgd2l0aCBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbnRvIGl0CisKK1Rl
c3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBhIGRpc3Bs
YXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGlu
IGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0
YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlz
IDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdi
IHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNw
bGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdi
IgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNT
IGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1h
Z2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMg
KGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRh
dGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BB
U1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRh
LmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIGNvbG9y
KHNyZ2IgMCAxIDApIGRyYXduIGludG8gaXQKKworVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBubyBz
cGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMg
Y29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAi
ZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0g
aXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1
CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMg
Y2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBk
YXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAzCitQQVNTIGRh
dGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRh
WzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIHNwZWNpZmllZCwg
b24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3
biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBkYXRh
LmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTEKK1BBU1MgZGF0YS5kYXRh
WzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKworVGVzdGluZyBhIHNyZ2IgY2Fu
dmFzIHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW50byBpdAorCitUZXN0IGdl
dEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24gYSBzcmdiIGNhbnZh
cyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1Mg
ZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBk
YXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0
YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZpZWQsIG9uIGEg
c3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4g
aXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlz
IDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFT
UyBkYXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMg
c3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMg
MCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMi
CitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1MQorUEFT
UyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCitUZXN0aW5n
IGEgc3JnYiBjYW52YXMgd2l0aCBjb2xvcihzcmdiLXAzIDAgMSAwKSBkcmF3biBpbnRvIGl0CisK
K1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBhIHNy
Z2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KQorUEFT
UyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNT
IGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5k
YXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24g
YSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkK
K1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAor
UEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRh
dGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVj
aWZpZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJh
d24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0
YS5kYXRhWzBdIGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0
YVsyXSBpcyA3NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKKworVGVzdGluZyBhIGRpc3Bs
YXktcDMgY2FudmFzIHdpdGggZGlzcGxheS1wMyBJbWFnZURhdGEgZHJhd24gaW50byBpdAorCitQ
QVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BB
U1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRh
LmRhdGFbM10gaXMgMjU1CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BB
U1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRh
LmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBkaXNw
bGF5LXAzIGNhbnZhcyB3aXRoIHNyZ2IgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQKKworUEFTUyBk
YXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAzCitQQVNTIGRh
dGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRh
WzNdIGlzIDI1NQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRh
dGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1MQorUEFTUyBkYXRhLmRh
dGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCitUZXN0aW5nIGEgc3JnYiBj
YW52YXMgd2l0aCBkaXNwbGF5LXAzIEltYWdlRGF0YSBkcmF3biBpbnRvIGl0CisKK1BBU1MgZGF0
YS5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRh
LmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsz
XSBpcyAyNTUKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBkYXRh
LmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTEKK1BBU1MgZGF0YS5kYXRh
WzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKworVGVzdGluZyBhIHNyZ2IgY2Fu
dmFzIHdpdGggc3JnYiBJbWFnZURhdGEgZHJhd24gaW50byBpdAorCitQQVNTIGRhdGEuY29sb3JT
cGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFd
IGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1
CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBd
IGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3
NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1J
bWFnZURhdGEuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDI5MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHBpeGVsIGFjY2Vz
cyBmdW5jdGlvbnMgd29yayB3aXRoIG5vbi1TUkdCIGNvbG9yIHNwYWNlcy4iKTsKKworbGV0IGNh
bnZhc0Rpc3BsYXlQMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworbGV0IGNv
bnRleHREaXNwbGF5UDMgPSBjYW52YXNEaXNwbGF5UDMuZ2V0Q29udGV4dCgiMmQiLCB7IGNvbG9y
U3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKKworbGV0IGNhbnZhc1NSR0IgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKK2xldCBjb250ZXh0U1JHQiA9IGNhbnZhc1NSR0IuZ2V0Q29u
dGV4dCgiMmQiLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKKworY29uc3QgaW1hZ2VEYXRhQ3Jl
YXRlZEZyb21EaXNwbGF5UDNDYW52YXMgPSBjb250ZXh0RGlzcGxheVAzLmNyZWF0ZUltYWdlRGF0
YSg1MCwgNTApOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tRGlzcGxheVAzQ2FudmFz
LmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRG
cm9tRGlzcGxheVAzQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdCID0gY29udGV4dERpc3Bs
YXlQMy5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3No
b3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdDb2xv
clNwYWNlU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25zdCBpbWFnZURhdGFDcmVh
dGVkRnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxheVAzID0gY29u
dGV4dERpc3BsYXlQMy5jcmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJkaXNw
bGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZh
c092ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxheVAzLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMi
YCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhcyA9IGNvbnRleHRTUkdC
LmNyZWF0ZUltYWdlRGF0YSg1MCwgNTApOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9t
U1JHQkNhbnZhcy5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25zdCBpbWFnZURhdGFDcmVh
dGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZVNSR0IgPSBjb250ZXh0U1JHQi5j
cmVhdGVJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJl
KCJpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZVNSR0Iu
Y29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21TUkdC
Q2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VEaXNwbGF5UDMgPSBjb250ZXh0U1JHQi5jcmVhdGVJ
bWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJl
KCJpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZURpc3Bs
YXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApOworCitjb25zdCBpbWFnZURhdGFDcmVh
dGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yID0gbmV3IEltYWdlRGF0YSg1MCwgNTAsIHsgY29s
b3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VE
YXRhQ29uc3RydWN0b3IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRh
Q3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclNldHRpbmdDb2xvclNwYWNlVG9TUkdCID0g
bmV3IEltYWdlRGF0YSg1MCwgNTAsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUo
ImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JTZXR0aW5nQ29sb3JTcGFj
ZVRvU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25zdCBpbWFnZURhdGFDcmVhdGVk
RnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VUb0Rpc3BsYXlQMyA9IG5l
dyBJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3Vs
ZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9y
U3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApOworCitjb25zdCBp
bWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlciA9IG5l
dyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQwMCksIDEwLCAxMCwgeyBjb2xvclNw
YWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFD
b25zdHJ1Y3RvclBhc3NpbmdCdWZmZXIuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3Qg
aW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXJTZXR0
aW5nQ29sb3JTcGFjZVRvU1JHQiA9IG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5
KDQwMCksIDEwLCAxMCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiaW1hZ2VE
YXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXJTZXR0aW5nQ29s
b3JTcGFjZVRvU1JHQi5jb2xvclNwYWNlIiwgYCJzcmdiImApOworCitjb25zdCBpbWFnZURhdGFD
cmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlclNldHRpbmdDb2xvclNw
YWNlVG9EaXNwbGF5UDMgPSBuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheSg0MDAp
LCAxMCwgMTAsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImltYWdl
RGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyU2V0dGluZ0Nv
bG9yU3BhY2VUb0Rpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApOworCit2YXIg
ZGF0YSA9IHsgfTsKKworLy8gTk9URToKKy8vIGNvbG9yKHNyZ2IgMCAxIDApIGNvbnZlcnRlZCB0
byBkaXNwbGF5LXAzIGlzIGNvbG9yKGRpc3BsYXktcDMgMC40NTg0IDAuOTg1MjYgMC4yOTgyOSkg
b3IgWzExNywgMjUxLCA3NiwgMjU1XSBpbiBieXRlIGZvcm0uCisKK2RlYnVnKCIiKTsKK2RlYnVn
KCJUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBjb2xvcihkaXNwbGF5LXAzIDAgMSAw
KSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHREaXNwbGF5UDMuZmlsbFN0
eWxlID0gImNvbG9yKGRpc3BsYXktcDMgMCAxIDApIjsKK2NvbnRleHREaXNwbGF5UDMuZmlsbFJl
Y3QoMCwgMCwgNTAsIDUwKTsKKworLy8gTm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlIHdpbGwgZGVm
YXVsdCB0byB0aGUgY2FudmFzJyBjb2xvciBzcGFjZSwgaW4gdGhpcyBjYXNlLCBkaXNwbGF5LXAz
CitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBubyBzcGVjaWZpZWQgY29sb3Igc3BhY2Us
IG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEg
MCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEo
MCwgMCwgMSwgMSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImAp
CitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0i
LCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Ig
c3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3Bs
YXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworLy8gTk9URTogY29sb3IoZGlzcGxheS1wMyAw
IDEgMCkgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2Ygc1JHQiwgc28gaXQgY2xpcHBlZCB0byAyNTUu
CitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xv
clNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJzcmdiImAp
CitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0i
LCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRoIGRpc3Bs
YXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9y
KGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHREaXNwbGF5
UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0p
Oworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUo
ImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIpOwor
c2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwg
IjI1NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIGRpc3BsYXktcDMgY2FudmFz
IHdpdGggY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIpOworCitj
b250ZXh0RGlzcGxheVAzLmZpbGxTdHlsZSA9ICJjb2xvcihzcmdiIDAgMSAwKSI7Citjb250ZXh0
RGlzcGxheVAzLmZpbGxSZWN0KDAsIDAsIDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmllZCBjb2xv
ciBzcGFjZSB3aWxsIGRlZmF1bHQgdG8gdGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGluIHRoaXMg
Y2FzZSwgZGlzcGxheS1wMworZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lm
aWVkIGNvbG9yIHNwYWNlLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9y
KHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0
SW1hZ2VEYXRhKDAsIDAsIDEsIDEpOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlz
cGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJk
YXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7Citz
aG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURh
dGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhh
cyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0RGlzcGxh
eVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3No
b3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKKy8vIE5PVEU6IFRoaXMgMyBpcyBv
ZGQsIGJ1dCBkdWUgdG8gbGFjayBvZiBwcmVjaXNpb24gaW4gOC1iaXQgcm91bmQtdHJpcHBpbmcu
CitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjMiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0i
LCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRoIGRpc3Bs
YXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9y
KHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0
SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hv
dWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEu
ZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91
bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1
NSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIHNyZ2IgY2FudmFzIHdpdGggY29s
b3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIpOworCitjb250
ZXh0U1JHQi5maWxsU3R5bGUgPSAiY29sb3IoZGlzcGxheS1wMyAwIDEgMCkiOworY29udGV4dFNS
R0IuZmlsbFJlY3QoMCwgMCwgNTAsIDUwKTsKKworLy8gTm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNl
IHdpbGwgZGVmYXVsdCB0byB0aGUgY2FudmFzJyBjb2xvciBzcGFjZSwgaW4gdGhpcyBjYXNlLCBz
cmdiCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBubyBzcGVjaWZpZWQgY29sb3Igc3Bh
Y2UsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkg
ZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEs
IDEpOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxkQmUoImRh
dGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIpOworc2hv
dWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1
NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24g
YSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBp
biBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBj
b2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJzcmdi
ImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
MV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJk
YXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRoIGRp
c3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRp
c3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHRTUkdCLmdldElt
YWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3Vs
ZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIpOworc2hvdWxk
QmUoImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUi
KTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRoIGNvbG9y
KHNyZ2ItcDMgMCAxIDApIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dFNS
R0IuZmlsbFN0eWxlID0gImNvbG9yKHNyZ2IgMCAxIDApIjsKK2NvbnRleHRTUkdCLmZpbGxSZWN0
KDAsIDAsIDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSB3aWxsIGRlZmF1
bHQgdG8gdGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGluIHRoaXMgY2FzZSwgc3JnYgorZGVidWco
IlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBhIHNy
Z2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOwor
ZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKTsKK3Nob3VsZEJlKCJk
YXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMCIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
Ml0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWcoIlRl
c3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZpZWQsIG9uIGEgc3JnYiBjYW52YXMgKGNh
bnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4
dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOwor
c2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxkQmUoImRhdGEuZGF0
YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUo
ImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOwor
CitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIHNwZWNpZmllZCwgb24g
YSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCki
KTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNw
YWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJkaXNw
bGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjExNyIpOworc2hvdWxkQmUoImRh
dGEuZGF0YVsxXSIsICIyNTEiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiNzYiKTsKK3No
b3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKKworZGVidWcoIiIpOworCisKK2NvbnN0
IGltYWdlRGF0YURpc3BsYXlQM1RvUHV0ID0gbmV3IEltYWdlRGF0YSgxLCAxLCB7IGNvbG9yU3Bh
Y2U6ICJkaXNwbGF5LXAzIiB9KTsKK2ltYWdlRGF0YURpc3BsYXlQM1RvUHV0LmRhdGFbMF0gPSAw
OworaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQuZGF0YVsxXSA9IDI1NTsKK2ltYWdlRGF0YURpc3Bs
YXlQM1RvUHV0LmRhdGFbMl0gPSAwOworaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQuZGF0YVszXSA9
IDI1NTsKKworY29uc3QgaW1hZ2VEYXRhU1JHQlRvUHV0ID0gbmV3IEltYWdlRGF0YSgxLCAxLCB7
IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK2ltYWdlRGF0YVNSR0JUb1B1dC5kYXRhWzBdID0gMDsK
K2ltYWdlRGF0YVNSR0JUb1B1dC5kYXRhWzFdID0gMjU1OworaW1hZ2VEYXRhU1JHQlRvUHV0LmRh
dGFbMl0gPSAwOworaW1hZ2VEYXRhU1JHQlRvUHV0LmRhdGFbM10gPSAyNTU7CisKKworZGVidWco
IiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIGRpc3BsYXktcDMg
SW1hZ2VEYXRhIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dERpc3BsYXlQ
My5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQsIDAsIDApOworCitkYXRhID0g
Y29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAi
c3JnYiIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwgYCJzcmdiImApCitzaG91bGRC
ZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7
CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10i
LCAiMjU1Iik7CisKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdlRGF0YSgwLCAwLCAx
LCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9y
U3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMCIpOwor
c2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0i
LCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWcoIiIpOwor
ZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIHNyZ2IgSW1hZ2VEYXRhIGRy
YXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dERpc3BsYXlQMy5wdXRJbWFnZURh
dGEoaW1hZ2VEYXRhU1JHQlRvUHV0LCAwLCAwKTsKKworZGF0YSA9IGNvbnRleHREaXNwbGF5UDMu
Z2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxk
QmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorLy8gTk9URTogVGhpcyAzIGlzIG9kZCwg
YnV0IGR1ZSB0byBsYWNrIG9mIHByZWNpc2lvbiBpbiA4LWJpdCByb3VuZC10cmlwcGluZy4KK3No
b3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMyIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIy
NTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0
YVszXSIsICIyNTUiKTsKKworZGF0YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAs
IDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEu
Y29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIx
MTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIHNyZ2IgY2FudmFzIHdpdGggZGlzcGxheS1wMyBJbWFn
ZURhdGEgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIpOworCitjb250ZXh0U1JHQi5wdXRJbWFn
ZURhdGEoaW1hZ2VEYXRhRGlzcGxheVAzVG9QdXQsIDAsIDApOworCitkYXRhID0gY29udGV4dFNS
R0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hv
dWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVsw
XSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIpOworc2hvdWxkQmUoImRh
dGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitk
YXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTog
ImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1w
MyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRC
ZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0aW5n
IGEgc3JnYiBjYW52YXMgd2l0aCBzcmdiIEltYWdlRGF0YSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1
ZygiIik7CisKK2NvbnRleHRTUkdCLnB1dEltYWdlRGF0YShpbWFnZURhdGFTUkdCVG9QdXQsIDAs
IDApOworCitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29s
b3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJg
KQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFd
IiwgIjI1NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0
YS5kYXRhWzNdIiwgIjI1NSIpOworCitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAs
IDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRpc3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEu
Y29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIx
MTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5k
YXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCitkZWJ1
ZygiIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAyNzc1NDQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaW1hZ2VEYXRh
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQsMjAgKzE0LDIwIEBAIFBBU1MgbmV3
IEltYWdlRGF0YSgtMjAsIDIwKSB0aHJldyBleGNlcHQKIFBBU1MgbmV3IEltYWdlRGF0YSgyMCwg
LTIwKSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjogQ2Fubm90IGFsbG9jYXRlIGEgYnVmZmVy
IG9mIHRoaXMgc2l6ZS4KIFBBU1MgbmV3IEltYWdlRGF0YShudWxsLCAyMCkgdGhyZXcgZXhjZXB0
aW9uIEluZGV4U2l6ZUVycm9yOiBUaGUgaW5kZXggaXMgbm90IGluIHRoZSBhbGxvd2VkIHJhbmdl
Li4KIFBBU1MgbmV3IEltYWdlRGF0YSgzMjc2OCwgMzI3NjgpIHRocmV3IGV4Y2VwdGlvbiBSYW5n
ZUVycm9yOiBDYW5ub3QgYWxsb2NhdGUgYSBidWZmZXIgb2YgdGhpcyBzaXplLgotUEFTUyBuZXcg
SW1hZ2VEYXRhKG51bGwsIDIwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1l
bnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5z
dGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRh
LCAyMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykg
dG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4
Q2xhbXBlZEFycmF5LgorUEFTUyBuZXcgSW1hZ2VEYXRhKG51bGwsIDIwLCAyMCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IEltYWdlRGF0YShpbWFnZURh
dGEsIDIwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1Mg
bmV3IEltYWdlRGF0YShpbWFnZURhdGEsIDApIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJv
cjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS4uCi1QQVNTIG5ldyBJbWFn
ZURhdGEoaW1hZ2VEYXRhLCAyMCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1l
bnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5z
dGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRh
LCAwLCAyMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0
byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhD
bGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAxMCwgNSkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRh
IGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCitQ
QVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEsIDAsIDIwKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgSW1hZ2VEYXRh
KGltYWdlRGF0YSwgMTAsIDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
CiBQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIDEwLCA1KSB0aHJldyBleGNlcHRp
b24gSW5kZXhTaXplRXJyb3I6IHNoIHZhbHVlIGlzIG5vdCBlcXVhbCB0byBoZWlnaHQuCiBQQVNT
IG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIC0xMCwgNSkgdGhyZXcgZXhjZXB0aW9uIElu
ZGV4U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEgbXVsdGlwbGUgb2Ygc3cuCiBQQVNTIG5ldyBJ
bWFnZURhdGEoaW1hZ2VEYXRhLmRhdGEsIDEwLCAtMTApIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNp
emVFcnJvcjogc2ggdmFsdWUgaXMgbm90IGVxdWFsIHRvIGhlaWdodC4KIFBBU1MgbmV3IEltYWdl
RGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoWzEsMiwzLDQsNSw2LDcsOF0pLDUzNjg3MDkxMywy
KTsgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVycm9yOiBMZW5ndGggaXMgbm90IGEgbXVsdGlw
bGUgb2Ygc3cuCi1QQVNTIG5ldyBJbWFnZURhdGEoe30sMiwyKTsgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRhIGNvbnN0cnVjdG9y
IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1QQVNTIG5ldyBJbWFn
ZURhdGEodW5kZWZpbmVkLDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50
IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3Rh
bmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKCJub25lIiwyLDIp
OyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgnZGF0YScpIHRvIHRoZSBJ
bWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBVaW50OENsYW1wZWRB
cnJheS4KLVBBU1MgbmV3IEltYWdlRGF0YSgwLDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0
IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgorUEFTUyBuZXcgSW1hZ2VEYXRh
KHt9LDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5l
dyBJbWFnZURhdGEodW5kZWZpbmVkLDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoIm5vbmUiLDIsMik7IHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoMCwyLDIpOyB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBuZXcgSW1hZ2VEYXRhKGlt
YWdlRGF0YS5kYXRhLCAzMjc2OCwgMzI3NjgpIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJv
cjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3LgogUEFTUyBuZXcgSW1hZ2VEYXRhKGlt
YWdlRGF0YS5kYXRhLCBJbmZpbml0eSwgSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNp
emVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3LgogUEFTUyBuZXcgSW1hZ2VE
YXRhKGltYWdlRGF0YS5kYXRhLCBOYU4sIE5hTikgdGhyZXcgZXhjZXB0aW9uIEluZGV4U2l6ZUVy
cm9yOiBMZW5ndGggaXMgbm90IGEgbXVsdGlwbGUgb2Ygc3cuCkluZGV4OiBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzU0NCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNS0x
NSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIGNyZWF0aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0YSB2aWEgY2Fu
dmFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNv
bG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVXBkYXRlIHJlc3VsdCB0
byBwYXNzaW5nLgorCiAyMDIxLTA1LTE0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBvdXRwdXQgZWxlbWVudCBkb2Vzbid0IHJlYWN0IHByb3Blcmx5IHRvIG5vZGUg
dHJlZSBtdXRhdGlvbnMKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5z
cGFjZS5wMy50by5wMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2Ft
dXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRvLnAzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
Mjc3NTQ0KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L3dpZGUtZ2FtdXQtY2FudmFzLzJkLmNvbG9yLnNwYWNlLnAzLnRv
LnAzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw1ICsyLDUgQEAKIHRlc3QgZ2V0
SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBhbmQgdWludDggZnJvbSBkaXNwbGF5IHAzIHVpbnQ4
IGNhbnZhcwogQWN0dWFsIG91dHB1dDoKIAotRkFJTCB0ZXN0IGdldEltYWdlRGF0YSB3aXRoIGRp
c3BsYXktcDMgYW5kIHVpbnQ4IGZyb20gZGlzcGxheSBwMyB1aW50OCBjYW52YXMgYXNzZXJ0X2Fw
cHJveF9lcXVhbHM6IGV4cGVjdGVkIDYyICsvLSAyIGJ1dCBnb3QgNTAKK1BBU1MgdGVzdCBnZXRJ
bWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIGFuZCB1aW50OCBmcm9tIGRpc3BsYXkgcDMgdWludDgg
Y2FudmFzCiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9u
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlv
bnMJKHJldmlzaW9uIDI3NzU0NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4
cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjM1OCw2ICsyMzU4LDcgQEAgZmFzdC9yZXBs
YWNlZC9wZGYtYXMtZW1iZWQtd2l0aC1uby1taW1lLQogd2Via2l0Lm9yZy9iLzIyNDExMiBtZWRp
YS92aWRlby1hcy1pbWctb3V0cHV0LXB0cy5odG1sIFsgVGltZW91dCBQYXNzIF0KIAogd2Via2l0
Lm9yZy9iLzIyNTQyMyBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjI1NDIzIGZhc3QvY2FudmFz
L2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMjI1NDIzIGZhc3QvY2FudmFzL2NhbnZhcy1jb21wb3NpdGUtdGV4dC1h
bHBoYS5odG1sIFsgRmFpbHVyZSBdCiAKICMgRmFpbGluZyBhZnRlciByMjc3MDczLgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI3NzU0
NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5n
IGNvcHkpCkBAIC00NjMzLDQgKzQ2MzMsNSBAQCB3ZWJleHBvc2VkL2NvdW50ZXItc3R5bGUtaW1h
Z2Utc3ltYm9scy1uCiAKIGZhc3QvdGV4dC9saW5lLWJyZWFrLXdpdGgtbG9jYWxlLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIAotZmFzdC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
U2V0dGluZ3MtY29sb3JTcGFjZS1lbmFibGVkLmh0bWwgWyBTa2lwIF0KKyMgTm9uLVNSR0IgY29s
b3Igc3BhY2VzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSB0aGUgV2luZG93cyBwb3J0
LgorZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLmh0
bWwgWyBTa2lwIF0KSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9v
YmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LXR5cGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXV0b2lu
Y3JlbWVudC10eXBlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NzU0NCkKKysrIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LXR5
cGVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQCBQQVNTIGtl
eSBpcyAzCiBQQVNTIHJlcXVlc3QucmVzdWx0LnByaW1hcnlLZXkgaXMgaW1hZ2VEYXRhLnByaW1h
cnlLZXkKIFBBU1MgcmVxdWVzdC5yZXN1bHQud2lkdGggaXMgaW1hZ2VEYXRhLndpZHRoCiBQQVNT
IHJlcXVlc3QucmVzdWx0LmhlaWdodCBpcyBpbWFnZURhdGEuaGVpZ2h0CitQQVNTIHJlcXVlc3Qu
cmVzdWx0LmNvbG9yU3BhY2UgaXMgaW1hZ2VEYXRhLmNvbG9yU3BhY2UKIFBBU1Mga2V5IGlzIDQK
IFBBU1MgcmVxdWVzdC5yZXN1bHQucHJpbWFyeUtleSBpcyBmaWxlTGlzdC5wcmltYXJ5S2V5CiBQ
QVNTIHJlcXVlc3QucmVzdWx0Lmxlbmd0aCBpcyBmaWxlTGlzdC5sZW5ndGgKQEAgLTQwLDYgKzQx
LDcgQEAgUEFTUyByZXF1ZXN0LnJlc3VsdFsxXS50eXBlIGlzIGZpbGUudHlwZQogUEFTUyByZXF1
ZXN0LnJlc3VsdFsyXS5wcmltYXJ5S2V5IGlzIGltYWdlRGF0YS5wcmltYXJ5S2V5CiBQQVNTIHJl
cXVlc3QucmVzdWx0WzJdLndpZHRoIGlzIGltYWdlRGF0YS53aWR0aAogUEFTUyByZXF1ZXN0LnJl
c3VsdFsyXS5oZWlnaHQgaXMgaW1hZ2VEYXRhLmhlaWdodAorUEFTUyByZXF1ZXN0LnJlc3VsdFsy
XS5jb2xvclNwYWNlIGlzIGltYWdlRGF0YS5jb2xvclNwYWNlCiBQQVNTIHJlcXVlc3QucmVzdWx0
WzNdLnByaW1hcnlLZXkgaXMgZmlsZUxpc3QucHJpbWFyeUtleQogUEFTUyByZXF1ZXN0LnJlc3Vs
dFszXS5sZW5ndGggaXMgZmlsZUxpc3QubGVuZ3RoCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCg==
</data>
<flag name="commit-queue"
          id="449797"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428772</attachid>
            <date>2021-05-15 21:39:29 -0700</date>
            <delta_ts>2021-05-16 07:16:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225841-20210515193752.patch</filename>
            <type>text/plain</type>
            <size>90458</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAyMS0wNS0xNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNyZWF0
aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0YSB2aWEgY2FudmFzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZh
cy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBhY2Nlc3Npbmcgbm9uLXNSR0IgKG9ubHkgRGlzcGxheVAzIGZvciBu
b3cgZHVlCisgICAgICAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uLCBidXQgdGhlIHN1cHBvcnQgaXMg
Z2VuZXJhbCkgcGl4ZWwgZGF0YSBpbgorICAgICAgICBIVE1MIGNhbnZhcy4KKworICAgICAgICBV
cGRhdGVzIEltYWdlRGF0YSBjb25zdHJ1Y3RvcnMgYW5kIENhbnZhc0ltYWdlRGF0YSBvcGVyYXRp
b25zIHRvIAorICAgICAgICB0YWtlIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIGRpY3Rpb25h
cmllcywgd2hpY2ggY29udGFpbiBhbiAKKyAgICAgICAgb3B0aW9uYWwgY29sb3Igc3BhY2UgKG90
aGVyd2lzZSBkZWZhdWx0aW5nIGJhY2sgdG8gc1JHQikuIAorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YVNldHRp
bmdzLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsOiBBZGRl
ZC4KKyAgICAgICAgQWRkIG5ldyBJbWFnZURhdGFTZXR0aW5ncy5pZGwgYW5kIHJlbGF0ZWQgZmls
ZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6Cisg
ICAgICAgIEZpeGVzIEZJWE1FIGFuZCB1c2VzIFBpeGVsQnVmZmVyIGRpcmVjdGx5IHJhdGhlciB0
aGFuIGFsbG9jYXRpbmcKKyAgICAgICAgYW4gdW5uZWNlc3NhcnkgSW1hZ2VEYXRhLiBUaGlzIHdh
cyBkb25lIG5vdyBzaW5jZSB0aGUgcmVsZXZlbnQKKyAgICAgICAgSW1hZ2VEYXRhIGNvbnN0cnVj
dG9yIGhhcyBnb25lIGF3YXkuCisKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb21wdXRlRGF0YVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
YXRhOjpjb21wdXRlQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEYXRhOjpwaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURhdGE6OmRhdGFTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0
YTo6ZGVlcENsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGF0YTo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
YXRhOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6Y29sb3JTcGFjZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OnBpeGVsQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4K
KworICAgICAgICAtIFJld29ya2VkIEltYWdlRGF0YSB0byBubyBsb25nZXIgc3RvcmUgYSBQaXhl
bEJ1ZmZlciwgd2hpY2ggaGFzCisgICAgICAgICAgZXh0cmFuZW91cyBpbmZvcm1hdGlvbiBpbiBp
dCwgYnV0IHJhdGhlciB0byBzdG9yZSBqdXN0IHdoYXQgaXQKKyAgICAgICAgICBuZWVkcyBJbnRT
aXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4sIGFuZCBub3cgUHJlZGVmaW5lZENvbG9y
U3BhY2UuCisgICAgICAgIC0gVXBkYXRlcyBjcmVhdGUgZnVuY3Rpb25zIGZvciBuZXcgb3B0aW9u
YWwgSW1hZ2VEYXRhU2V0dGluZ3MuCisgICAgICAgIC0gQWRkcyBjcmVhdGVVbmluaXRpYWxpemVk
IHdoaWNoIGZvbGxvd3Mgc3BlYyBsYW5ndWFnZSBmb3IgSW1hZ2VEYXRhIGNyZWF0aW9uCisgICAg
ICAgICAgYW5kIGlzIHVzZWQgYnkgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHRvIGNyZWF0ZSBJ
bWFnZURhdGEgb2JqZWN0cyBvZiB3aXRoCisgICAgICAgICAgdGhlIHJpZ2h0IGNvbG9yIHNwYWNl
cywgYWxsb3dpbmcgZm9yIGZhbGxiYWNrIHRvIHRoZSBjYW52YXMnIG93biBjb2xvciBzcGFjZQor
ICAgICAgICAgIHdoZW4gbm8gSW1hZ2VEYXRhU2V0dGluZ3MgY29sb3Igc3BhY2UgaXMgcHJvdmlk
ZWQuIEl0IGlzIHVuaW5pdGlhbGl6ZWQgYW5kCisgICAgICAgICAgdGhlcmVmb3JlIHJlcXVpcmVz
IHRoZSBjbGllbnQgdG8gaW5pdGlhbGl6ZSB0aGUgZGF0YSB0byBhbGxvdyBmb3Igc3VwcG9ydCBm
b3IKKyAgICAgICAgICBubyBhbHBoYSBzdXBwb3J0IGluIHRoZSBmdXR1cmUsIHdoaWNoIHJlcXVp
cmVzIGEgbm9uLXplcm8gaW5pdGlhbGl6YXRpb24gcGF0dGVybi4KKworICAgICAgICAqIGh0bWwv
SW1hZ2VEYXRhLmlkbDoKKyAgICAgICAgQWRkIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIHBh
cmFtZXRlcnMgYW5kIHRoZSBuZXcgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCisKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsOgorICAgICAgICBBZGQgb3B0aW9uYWwgSW1h
Z2VEYXRhU2V0dGluZ3MgcGFyYW1ldGVycy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVF
bXB0eUltYWdlRGF0YSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gaW5pdGlhbGl6ZSB0aGUgSW1h
Z2VEYXRhIGJ1ZmZlci4gUmlnaHQgbm93IGl0IGFsd2F5cyBjYWxscworICAgICAgICB6ZXJvRmls
bCgpLCBidXQgaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIG5lZWQgdG8gZG8gbW9yZS4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJ
bWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgdG8gYWNjb3VudCBmb3IgdGhpcyBmdW5j
dGlvbiBiZWluZyBhYmxlIHRvIHRocm93IGFuIGV4Y2VwdGlvbiAod2hlbiAKKyAgICAgICAgb3V0
IG9mIG1lbW9yeSkgYW5kIHVzZSB0aGUgbmV3IGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlhbGl6
ZUVtcHR5SW1hZ2VEYXRhCisgICAgICAgIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciBzcGFj
ZWQgSW1hZ2VEYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgZm9yIG5ldyBv
cHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBhbmQgdXNlIHRoZSBuZXcgY3JlYXRlVW5pbml0aWFs
aXplZAorICAgICAgICBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEgdG8gY3JlYXRlIGEgY29ycmVj
dGx5IGNvbG9yIHNwYWNlZCBJbWFnZURhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIE1vdmVz
IHBhcmFtZXRlciBjaGVja3MgdG8gdGhlIGJlZ2luaW5nIHRvIG1hdGNoIHRoZSBzcGVjLCBhbmQg
dXNlcyBuZXcgCisgICAgICAgIGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlhbGl6ZUVtcHR5SW1h
Z2VEYXRhIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciAKKyAgICAgICAgc3BhY2VkIEltYWdl
RGF0YS4gQWxzbywgdXNlIHRoZSBJbWFnZURhdGEncyBjb2xvciBzcGFjZSB3aGVuIGdldHRpbmcK
KyAgICAgICAgdGhlIHBpeGVsIGJ1ZmZlciB0byBhY3R1YWxseSByZXR1cm4gdGhlIHJpZ2h0IGRh
dGEhCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmluZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oOgorICAgICAgICBBZGQgY29udmVyc2lvbiBm
dW5jdGlvbiBmcm9tIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0byBQcmVkZWZpbmVkQ29sb3JTcGFj
ZS4KKyAgICAgICAgU2luY2UgRGVzdGluYXRpb25Db2xvclNwYWNlIGlzIGEgc3VwZXJzZXQgb2Yg
UHJlZGVmaW5lZENvbG9yU3BhY2UsIHRoaXMgY2FuCisgICAgICAgIGZhaWwsIHNvIHRoaXMgY29u
dmVyc2lvbiByZXR1cm5zIGFuIE9wdGlvbmFsLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
Lmg6CisgICAgICAgIFN0dWIgb3V0IGluc3BlY3RvciBzdXBwb3J0IGZvciBJbWFnZURhdGFTZXR0
aW5ncy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgVXNlIHRoZSBJbWFnZUJ1ZmZlcidzIGFjdHVhbCBjb2xvciBzcGFj
ZSBhcyB0aGUgc291cmNlIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFuIGhhcmQgY29k
aW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCisgICAgICAg
IHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVtcG9yYXJ5IHZh
cmlhYmxlcy4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhl
bEJ1ZmZlcik6CisgICAgICAgIFVzZSB0aGUgSW1hZ2VCdWZmZXIncyBhY3R1YWwgY29sb3Igc3Bh
Y2UgYXMgdGhlIGRlc3RpbmF0aW9uIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFuIGhh
cmQgY29kaW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCisg
ICAgICAgIHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVtcG9y
YXJ5IHZhcmlhYmxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OlBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6
OnRha2VEYXRhKToKKyAgICAgICAgQWRkIGEgZmV3IGhlbHBlcnMgdG8gYWxsb3cgY3JlYXRpb25n
IHRvL2Zyb20gUGl4ZWxCdWZmZXIKKyAgICAgICAgYSBiaXQgZWFzaWVyLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgRml4IGluY29y
cmVjdCBhc3NlcnRpb24uIFdlIHdhbnQgdG8gYXNzZXJ0IHRoYXQgdGhlcmUgaXMgbm8gZXJyb3Is
IG5vdCB0aGF0CisgICAgICAgIHRoZXJlIGlzIG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQpOgorICAgICAgICBTdG9wIGhhcmQgY29kaW5nIFNSR0IgZm9yIFBpeGVsQnVmZmVyIGNvbG9y
IHNwYWNlcyBhbmQgdXNlIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICBjb2xvciBzcGFjZSBmb3Ig
dGhlIHRhc2suIFdlIHN0aWxsIGRvIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gdGhyb3VnaCBJbWFn
ZUJ1ZmZlcgorICAgICAgICBzbyB3ZSBzaG91bGQgY29tZSBiYWNrIGFuZCBzaW1wbGlmeSBjb2Rl
IGhlcmUgdG8gbm90IGFsd2F5cyByZXF1aXJlIHRoYXQuCisKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZh
aWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFnZSk6
CisgICAgICAgIFVwZGF0ZSB0byBzcGVjaWZ5IGEgY29sb3Igc3BhY2UgdG8gbWFpbnRhaW4gZXhp
c3RpbmcgYmVoYXZpb3IuCisKIDIwMjEtMDUtMTUgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtMRkNdIE1vdmUgdGFibGUgd3JhcHBlciBxdWlya3MgdG8gaXRzIG93
biBjbGFzcwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDE3LDYgKzEw
MTcsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGh0bWwvSW1hZ2VCaXRt
YXAuaWRsCiAgICAgaHRtbC9JbWFnZUJpdG1hcE9wdGlvbnMuaWRsCiAgICAgaHRtbC9JbWFnZURh
dGEuaWRsCisgICAgaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwKICAgICBodG1sL01lZGlhQ29u
dHJvbGxlci5pZGwKICAgICBodG1sL01lZGlhRW5jcnlwdGVkRXZlbnQuaWRsCiAgICAgaHRtbC9N
ZWRpYUVycm9yLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDM2LDYgKzEw
MzYsNyBAQCAkKFBST0pFQ1RfRElSKS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCiAkKFBST0pF
Q1RfRElSKS9odG1sL0ltYWdlQml0bWFwLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9JbWFnZUJp
dG1hcE9wdGlvbnMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL0ltYWdlRGF0YS5pZGwKKyQoUFJP
SkVDVF9ESVIpL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1s
L01lZGlhQ29udHJvbGxlci5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvTWVkaWFFbmNyeXB0ZWRF
dmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvTWVkaWFFcnJvci5pZGwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lv
biAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTE4MCw2ICsxMTgwLDggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdlRGF0YS5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VE
YXRhLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1h
Z2VEYXRhU2V0dGluZ3MuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0ltYWdlRGF0YVNldHRpbmdzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZVNtb290aGluZ1F1YWxp
dHkuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbm5l
ckhUTUwuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI3
NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTg5MCw2ICs4OTAsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29y
ZSkvaHRtbC9JbWFnZUJpdG1hcC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9JbWFnZUJpdG1h
cE9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSW1hZ2VEYXRhLmlkbCBcCisgICAg
JChXZWJDb3JlKS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9o
dG1sL01lZGlhQ29udHJvbGxlci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9NZWRpYUVuY3J5
cHRlZEV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL01lZGlhRXJyb3IuaWRsIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzIwNyw2ICszMjA3LDcgQEAgSlNJbWFnZUJpdG1h
cE9wdGlvbnMuY3BwCiBKU0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKIEpTSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuY3BwCiBKU0ltYWdlRGF0YS5jcHAKK0pTSW1h
Z2VEYXRhU2V0dGluZ3MuY3BwCiBKU0ltYWdlU21vb3RoaW5nUXVhbGl0eS5jcHAKIEpTSW5wdXRF
dmVudC5jcHAKIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDk1LDYgKzQwOTUsNyBAQAogCQlCQzk2
REI0MzBGM0E4ODBFMDA1NzNDQjMgLyogUmVuZGVyQm94TW9kZWxPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTZEQjQyMEYzQTg4MEUwMDU3
M0NCMyAvKiBSZW5kZXJCb3hNb2RlbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDOTdFMjNBMTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1M
QWxsQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM5N0UyMzgxMDkxNDQ5NTAwMTBEMzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmggKi87
IH07CiAJCUJDOTdFNDEzMTA5MTU0RkEwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTQxMTEw
OTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5oICovOyB9OworCQlCQ0EwODhG
NTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTA4OEYyMjY0RTFCRjkwMDNFMkE2QyAv
KiBJbWFnZURhdGFTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDQTE2OUEzMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNh
cHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0ExNjlBMTBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVu
dC5oICovOyB9OwogCQlCQ0EyNTcxNTEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlv
bkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0EyNTcxNDEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggKi87IH07
CiAJCUJDQTJCMDYxMTA1MDQ3NjAwMDQzQkQxQyAvKiBVc2VyU2NyaXB0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EyQjA2MDEwNTA0NzVGMDA0M0JE
MUMgLyogVXNlclNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xNDMxNSw2ICsxNDMxNiw4IEBACiAJCUJDOUE2MTQyMTQ2ODU5RDkwMDYw
NTdGRCAvKiBFdmVudE5hbWVzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50TmFtZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDOUE2MTQ1MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX2V2ZW50X2Zh
Y3RvcnkucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gbWFrZV9ldmVudF9mYWN0b3J5LnBsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzlBNjE0NjE0Njg1OUQ5MDA2MDU3RkQgLyogbWFrZV9u
YW1lcy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSBtYWtlX25hbWVzLnBsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQ0EwODhGMjI2NEUxQkY5MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGlu
Z3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEYXRhU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkNBMDg4RjQyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRp
bmdzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBJbWFnZURhdGFTZXR0aW5ncy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQTE2OUEwMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25F
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxU
YWJsZUNhcHRpb25FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNB
MTY5QTEwQkZENTVCNDAwMTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMjU3MTQxMjkzQzAxMDAwN0EyNjNE
IC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIzOTI2LDYgKzIzOTI5LDggQEAKIAkJCQlBNzc5NzkxMzBENkI5RDBDMDAzODUxQjkgLyog
SW1hZ2VEYXRhLmNwcCAqLywKIAkJCQlBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VE
YXRhLmggKi8sCiAJCQkJQTc3OTc5MTUwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5pZGwg
Ki8sCisJCQkJQkNBMDg4RjIyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmgg
Ki8sCisJCQkJQkNBMDg4RjQyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmlk
bCAqLywKIAkJCQk5NzIwNUFCMTEyMzkyOTEwMDBCMTczODAgLyogSW1hZ2VEb2N1bWVudC5jcHAg
Ki8sCiAJCQkJOTcyMDVBQjIxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCAqLywK
IAkJCQlGNTVCM0Q4RDEyNTFGMTJEMDAzRUYyNjkgLyogSW1hZ2VJbnB1dFR5cGUuY3BwICovLApA
QCAtMzI4ODcsNiArMzI4OTIsNyBAQAogCQkJCUIyQTEwRDkxMEIzODE4QkQwMDA5OUFBNCAvKiBJ
bWFnZUJ1ZmZlclBpcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2
NkY1NSAvKiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzc5
NzkxQTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
Q0EwODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEMTlGRUE4MUY1NzM5NzIwMDBDNDJGQiAvKiBJbWFnZURlY29kZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEMTlGRUFFMUY1NzRCNkQwMDBDNDJGQiAvKiBJbWFnZURlY29kZXJB
VkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTVCODdFRDFDQUFGMEFCMDAzNDk0MjUgLyog
SW1hZ2VEZWNvZGVyQ0cuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiAy
Nzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQxLDMwICszMTQxLDI0IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBh
cnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciks
IDAsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICBpZiAoIWFycmF5KSB7Ci0g
ICAgICAgICAgICBmYWlsKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAg
ICB9Ci0KICAgICAgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSA9IEludFNpemUobG9naWNhbFdpZHRo
LCBsb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgSW50U2l6ZSBpbWFnZURhdGFTaXplID0gbG9naWNh
bFNpemU7CiAgICAgICAgIGltYWdlRGF0YVNpemUuc2NhbGUocmVzb2x1dGlvblNjYWxlKTsKIAot
ICAgICAgICAvLyBGSVhNRTogQ3JlYXRpbmcgdGhpcyBJbWFnZURhdGEgaXMgbm90IG5lY2Vzc2Fy
eS4gV2Ugc2hvdWxkIHNraXAgcmlnaHQgdG8gY3JlYXRpbmcgYSBQaXhlbEJ1ZmZlciBkaXJlY3Rs
eS4KLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZURhdGFT
aXplLCBhcnJheS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgaWYgKCFpbWFnZURhdGEpIHsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCks
IGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2Nh
bGUpOworICAgICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICAgICAgZmFpbCgpOwogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVy
ID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0
RnJvbUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QpLCBsb2dpY2FsU2l6ZSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlKTsKLSAgICAgICAgaWYgKCFi
dWZmZXIpIHsKKyAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVm
ZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBpbWFnZURhdGFTaXplLCBhcnJheUJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewogICAgICAgICAgICAgZmFp
bCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAg
IGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIoaW1hZ2VEYXRhLT5waXhlbEJ1ZmZlcigpLCB7IEludFBv
aW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOworICAgICAgICBidWZmZXItPnB1dFBpeGVsQnVm
ZmVyKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgeyBJbnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6
ZSB9KTsKIAogICAgICAgICBhdXRvIGJpdG1hcCA9IEltYWdlQml0bWFwOjpjcmVhdGUoSW1hZ2VC
aXRtYXBCYWNraW5nKFdURk1vdmUoYnVmZmVyKSwgT3B0aW9uU2V0PFNlcmlhbGl6YXRpb25TdGF0
ZT46OmZyb21SYXcoc2VyaWFsaXphdGlvblN0YXRlKSkpOwogICAgICAgICByZXR1cm4gZ2V0SlNW
YWx1ZShiaXRtYXApOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAkocmV2aXNpb24g
Mjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2hlY2tlZDx1
bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IEltYWdlRGF0YTo6ZGF0YVNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKK3N0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY29tcHV0
ZURhdGFTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQ2hlY2tlZDx1bnNpZ25lZCwg
UmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWREYXRhU2l6ZSA9IDQ7CiAgICAgY2hlY2tlZERhdGFTaXpl
ICo9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplLndpZHRoKCkpOwpAQCAtNDMsNTcgKzQzLDg1
IEBAIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBJbWFnZUQKICAgICByZXR1cm4g
Y2hlY2tlZERhdGFTaXplOwogfQogCitQcmVkZWZpbmVkQ29sb3JTcGFjZSBJbWFnZURhdGE6OmNv
bXB1dGVDb2xvclNwYWNlKE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncywgUHJl
ZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UpCit7CisgICAgaWYgKHNldHRpbmdz
ICYmIHNldHRpbmdzLT5jb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gKnNldHRpbmdzLT5jb2xv
clNwYWNlOworICAgIHJldHVybiBkZWZhdWx0Q29sb3JTcGFjZTsKK30KKwogUmVmPEltYWdlRGF0
YT4gSW1hZ2VEYXRhOjpjcmVhdGUoUGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlcikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoV1RGTW92ZShwaXhlbEJ1ZmZlcikpKTsKKyAg
ICBhdXRvIGNvbG9yU3BhY2UgPSB0b1ByZWRlZmluZWRDb2xvclNwYWNlKHBpeGVsQnVmZmVyLmZv
cm1hdCgpLmNvbG9yU3BhY2UpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShw
aXhlbEJ1ZmZlci5zaXplKCksIHBpeGVsQnVmZmVyLnRha2VEYXRhKCksICpjb2xvclNwYWNlKSk7
CiB9CiAKIFJlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKE9wdGlvbmFsPFBpeGVs
QnVmZmVyPiYmIHBpeGVsQnVmZmVyKQogewogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBJbWFnZURhdGE6OmNyZWF0ZShXVEZNb3ZlKCpw
aXhlbEJ1ZmZlcikpOworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpKTsK
IH0KIAogUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKIHsKLSAgICBhdXRvIGRhdGFTaXplID0gSW1hZ2VEYXRhOjpkYXRhU2l6ZShzaXplKTsK
KyAgICBhdXRvIGRhdGFTaXplID0gY29tcHV0ZURhdGFTaXplKHNpemUpOwogICAgIGlmIChkYXRh
U2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8g
Ynl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0
YVNpemUudW5zYWZlR2V0KCkpOwogICAgIGlmICghYnl0ZUFycmF5KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VO
b25OdWxsKCkgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplLCBi
eXRlQXJyYXkucmVsZWFzZU5vbk51bGwoKSwgUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0IpKTsK
IH0KIAotUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSkKK1JlZlB0cjxJbWFnZURh
dGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxVaW50OENsYW1w
ZWRBcnJheT4mJiBieXRlQXJyYXksIFByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7
Ci0gICAgYXV0byBkYXRhU2l6ZSA9IEltYWdlRGF0YTo6ZGF0YVNpemUoc2l6ZSk7Ci0gICAgaWYg
KGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBkYXRhU2l6ZS51bnNhZmVHZXQoKSA+IGJ5dGVB
cnJheS0+bGVuZ3RoKCkpCisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXpl
KTsKKyAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplLnVuc2FmZUdl
dCgpICE9IGJ5dGVBcnJheS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCIH0sIHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSB9KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSwgY29sb3JT
cGFjZSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVh
dGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoKQorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+
IEltYWdlRGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCByb3dzLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xvclNwYWNlLCBPcHRp
b25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCit7CisgICAgSW50U2l6ZSBzaXplKHJv
d3MsIHBpeGVsc1BlclJvdyk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShz
aXplKTsKKyAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgIkNhbm5vdCBhbGxvY2F0ZSBhIGJ1ZmZlciBvZiB0aGlz
IHNpemUiX3MgfTsKKworICAgIGF1dG8gYnl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YVNpemUudW5zYWZlR2V0KCkpOworICAgIGlmICghYnl0
ZUFycmF5KSB7CisgICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgbmVlZCB0byBiZSBhICJyZWFs
IiBvdXQgb2YgbWVtb3J5IGVycm9yIHdpdGggc2V0T3V0T2ZNZW1vcnlFcnJvciBjYWxsZWQgb24g
aXQ/CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiT3V0IG9mIG1lbW9y
eSJfcyB9OworICAgIH0KKworICAgIGF1dG8gY29sb3JTcGFjZSA9IGNvbXB1dGVDb2xvclNwYWNl
KHNldHRpbmdzLCBkZWZhdWx0Q29sb3JTcGFjZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW1hZ2VEYXRhKHNpemUsIGJ5dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpLCBjb2xvclNwYWNlKSk7
Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZSh1bnNp
Z25lZCBzdywgdW5zaWduZWQgc2gsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5n
cykKIHsKICAgICBpZiAoIXN3IHx8ICFzaCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
ZGV4U2l6ZUVycm9yIH07CisKICAgICBJbnRTaXplIHNpemUoc3csIHNoKTsKLSAgICBhdXRvIGRh
dGFTaXplID0gSW1hZ2VEYXRhOjpkYXRhU2l6ZShzaXplKTsKKyAgICBhdXRvIGRhdGFTaXplID0g
Y29tcHV0ZURhdGFTaXplKHNpemUpOwogICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiQ2Fubm90IGFsbG9jYXRl
IGEgYnVmZmVyIG9mIHRoaXMgc2l6ZSJfcyB9OworCiAgICAgYXV0byBieXRlQXJyYXkgPSBVaW50
OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChkYXRhU2l6ZS51bnNhZmVHZXQo
KSk7CiAgICAgaWYgKCFieXRlQXJyYXkpIHsKICAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBu
ZWVkIHRvIGJlIGEgInJlYWwiIG91dCBvZiBtZW1vcnkgZXJyb3Igd2l0aCBzZXRPdXRPZk1lbW9y
eUVycm9yIGNhbGxlZCBvbiBpdD8KICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJy
b3IsICJPdXQgb2YgbWVtb3J5Il9zIH07CiAgICAgfQogICAgIGJ5dGVBcnJheS0+emVyb0ZpbGwo
KTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSkp
OworCisgICAgYXV0byBjb2xvclNwYWNlID0gY29tcHV0ZUNvbG9yU3BhY2Uoc2V0dGluZ3MpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplLCBieXRlQXJyYXkucmVsZWFz
ZU5vbk51bGwoKSwgY29sb3JTcGFjZSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRh
Pj4gSW1hZ2VEYXRhOjpjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwg
dW5zaWduZWQgc3csIE9wdGlvbmFsPHVuc2lnbmVkPiBzaCkKK0V4Y2VwdGlvbk9yPFJlZjxJbWFn
ZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFy
cmF5LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBPcHRpb25hbDxJbWFnZURh
dGFTZXR0aW5ncz4gc2V0dGluZ3MpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYnl0ZUFycmF5
LT5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggJSA0KQpAQCAtMTA3LDIyICsx
MzUsMjggQEAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6YwogICAgIGlm
IChzaCAmJiBzaC52YWx1ZSgpICE9IGhlaWdodCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEluZGV4U2l6ZUVycm9yLCAic2ggdmFsdWUgaXMgbm90IGVxdWFsIHRvIGhlaWdodCJfcyB9Owog
Ci0gICAgYXV0byByZXN1bHQgPSBjcmVhdGUoSW50U2l6ZShzdywgaGVpZ2h0KSwgV1RGTW92ZShi
eXRlQXJyYXkpKTsKLSAgICBpZiAoIXJlc3VsdCkKKyAgICBJbnRTaXplIHNpemUoc3csIGhlaWdo
dCk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXplKTsKKyAgICBpZiAo
ZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplLnVuc2FmZUdldCgpICE9IGJ5dGVB
cnJheS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yIH07
Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworCisgICAgYXV0byBjb2xvclNw
YWNlID0gY29tcHV0ZUNvbG9yU3BhY2Uoc2V0dGluZ3MpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEltYWdlRGF0YShzaXplLCBXVEZNb3ZlKGJ5dGVBcnJheSksIGNvbG9yU3BhY2UpKTsKIH0K
IAotSW1hZ2VEYXRhOjpJbWFnZURhdGEoUGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlcikKLSAgICA6
IG1fcGl4ZWxCdWZmZXIoV1RGTW92ZShwaXhlbEJ1ZmZlcikpCitJbWFnZURhdGE6OkltYWdlRGF0
YShjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJiBkYXRh
LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorICAgIDogbV9zaXplKHNpemUpCisg
ICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKKyAgICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNl
KQogewogfQogCiBJbWFnZURhdGE6On5JbWFnZURhdGEoKSA9IGRlZmF1bHQ7CiAKLVJlZjxJbWFn
ZURhdGE+IEltYWdlRGF0YTo6ZGVlcENsb25lKCkgY29uc3QKK1BpeGVsQnVmZmVyIEltYWdlRGF0
YTo6cGl4ZWxCdWZmZXIoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
RGF0YShtX3BpeGVsQnVmZmVyLmRlZXBDbG9uZSgpKSk7CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIHRvRGVzdGluYXRpb25Db2xvclNwYWNlKG1fY29sb3JTcGFjZSkgfTsKKyAg
ICByZXR1cm4geyBmb3JtYXQsIG1fc2l6ZSwgbV9kYXRhLmdldCgpIH07CiB9CiAKIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRh
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSwx
MiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUg
IkltYWdlRGF0YVNldHRpbmdzLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBp
eGVsQnVmZmVyLmgiCisjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsMjkgKzQzLDMyIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEltYWdlRGF0YT4gY3JlYXRlKFBpeGVs
QnVmZmVyJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBj
cmVhdGUoT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIFJl
ZjxVaW50OENsYW1wZWRBcnJheT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNy
ZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNp
Z25lZD4gc2gpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBj
cmVhdGUoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
SW1hZ2VEYXRhPj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCByb3dzLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xvclNwYWNlLCBPcHRp
b25hbDxJbWFnZURhdGFTZXR0aW5ncz4gPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVkIHN3
LCB1bnNpZ25lZCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZShSZWY8VWlu
dDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNpZ25lZD4gc2gsIE9w
dGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPik7CisKICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VE
YXRhKCk7CiAKLSAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9waXhl
bEJ1ZmZlci5zaXplKCk7IH0KLSAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3BpeGVs
QnVmZmVyLnNpemUoKS53aWR0aCgpOyB9Ci0gICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGl4ZWxCdWZmZXIuc2l6ZSgpLmhlaWdodCgpOyB9CisgICAgc3RhdGljIFByZWRlZmluZWRD
b2xvclNwYWNlIGNvbXB1dGVDb2xvclNwYWNlKE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiwg
UHJlZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UgPSBQcmVkZWZpbmVkQ29sb3JT
cGFjZTo6U1JHQik7CiAKLSAgICBVaW50OENsYW1wZWRBcnJheSYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGl4ZWxCdWZmZXIuZGF0YSgpOyB9CisgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCi0gICAgUmVmPEltYWdlRGF0YT4gZGVlcENsb25lKCkg
Y29uc3Q7CisgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7IH0K
KyAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9CisgICAg
VWludDhDbGFtcGVkQXJyYXkmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0K
KyAgICBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xvclNwYWNlOyB9CiAKLSAgICBjb25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX3BpeGVsQnVmZmVyOyB9CisgICAgUGl4ZWxCdWZmZXIgcGl4ZWxCdWZmZXIo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBJbWFnZURhdGEoUGl4ZWxCdWZmZXIm
Jik7Ci0KLSAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGRhdGFT
aXplKGNvbnN0IEludFNpemUmKTsKKyAgICBleHBsaWNpdCBJbWFnZURhdGEoY29uc3QgSW50U2l6
ZSYsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmLCBQcmVkZWZpbmVkQ29sb3JTcGFjZSk7
CiAKLSAgICBQaXhlbEJ1ZmZlciBtX3BpeGVsQnVmZmVyOworICAgIEludFNpemUgbV9zaXplOwor
ICAgIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBtX2RhdGE7CisgICAgUHJlZGVmaW5lZENv
bG9yU3BhY2UgbV9jb2xvclNwYWNlOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEltYWdlRGF0YSYpOworV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgSW1h
Z2VEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5pZGwJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEYXRhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEwICszMiwxMSBAQAogICAg
IEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUK
IF0gaW50ZXJmYWNlIEltYWdlRGF0YSB7Ci0gICAgY29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBz
dywgdW5zaWduZWQgbG9uZyBzaCk7Ci0gICAgY29uc3RydWN0b3IoVWludDhDbGFtcGVkQXJyYXkg
ZGF0YSwgdW5zaWduZWQgbG9uZyBzdywgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBzaCk7CisgICAg
Y29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBzdywgdW5zaWduZWQgbG9uZyBzaCwgb3B0aW9uYWwg
SW1hZ2VEYXRhU2V0dGluZ3Mgc2V0dGluZ3MpOworICAgIGNvbnN0cnVjdG9yKFVpbnQ4Q2xhbXBl
ZEFycmF5IGRhdGEsIHVuc2lnbmVkIGxvbmcgc3csIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgc2gs
IG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIHNldHRpbmdzKTsKIAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIGhlaWdodDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVWludDhDbGFtcGVkQXJy
YXkgZGF0YTsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1DYW52YXNDb2xvclNwYWNlXSByZWFkb25s
eSBhdHRyaWJ1dGUgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFjZTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcmVk
ZWZpbmVkQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBJbWFnZURhdGFTZXR0aW5ncyB7CisgICAgT3B0aW9uYWw8
UHJlZGVmaW5lZENvbG9yU3BhY2U+IGNvbG9yU3BhY2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY2FudmFzLmh0bWwjaW1hZ2VkYXRhc2V0
dGluZ3MKK2RpY3Rpb25hcnkgSW1hZ2VEYXRhU2V0dGluZ3MgeworICAgIFtFbmFibGVkQnlTZXR0
aW5nPUNhbnZhc0NvbG9yU3BhY2VdIFByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2U7Cit9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEu
aWRsCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNJbWFnZURhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDkgKzI2LDkgQEAKIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2NhbnZhcy5odG1sI2NhbnZhc2ltYWdlZGF0
YQogaW50ZXJmYWNlIG1peGluIENhbnZhc0ltYWdlRGF0YSB7CiAgICAgLy8gcGl4ZWwgbWFuaXB1
bGF0aW9uCi0gICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShbRW5mb3JjZVJhbmdlXSBsb25n
IHN3LCBbRW5mb3JjZVJhbmdlXSBsb25nIHNoKTsKKyAgICBJbWFnZURhdGEgY3JlYXRlSW1hZ2VE
YXRhKFtFbmZvcmNlUmFuZ2VdIGxvbmcgc3csIFtFbmZvcmNlUmFuZ2VdIGxvbmcgc2gsIG9wdGlv
bmFsIEltYWdlRGF0YVNldHRpbmdzIHNldHRpbmdzKTsKICAgICBJbWFnZURhdGEgY3JlYXRlSW1h
Z2VEYXRhKEltYWdlRGF0YSBpbWFnZWRhdGEpOwotICAgIEltYWdlRGF0YSBnZXRJbWFnZURhdGEo
W0VuZm9yY2VSYW5nZV0gbG9uZyBzeCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBzeSwgW0VuZm9yY2VS
YW5nZV0gbG9uZyBzdywgW0VuZm9yY2VSYW5nZV0gbG9uZyBzaCk7CisgICAgSW1hZ2VEYXRhIGdl
dEltYWdlRGF0YShbRW5mb3JjZVJhbmdlXSBsb25nIHN4LCBbRW5mb3JjZVJhbmdlXSBsb25nIHN5
LCBbRW5mb3JjZVJhbmdlXSBsb25nIHN3LCBbRW5mb3JjZVJhbmdlXSBsb25nIHNoLCBvcHRpb25h
bCBJbWFnZURhdGFTZXR0aW5ncyBzZXR0aW5ncyk7CiAgICAgdW5kZWZpbmVkIHB1dEltYWdlRGF0
YShJbWFnZURhdGEgaW1hZ2VkYXRhLCBbRW5mb3JjZVJhbmdlXSBsb25nIGR4LCBbRW5mb3JjZVJh
bmdlXSBsb25nIGR5KTsKICAgICB1bmRlZmluZWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSBpbWFn
ZWRhdGEsIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZHgsIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZHksIFtF
bmZvcmNlUmFuZ2VdIGxvbmcgZGlydHlYLCBbRW5mb3JjZVJhbmdlXSBsb25nIGRpcnR5WSwgW0Vu
Zm9yY2VSYW5nZV0gbG9uZyBkaXJ0eVdpZHRoLCBbRW5mb3JjZVJhbmdlXSBsb25nIGRpcnR5SGVp
Z2h0KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMjc3NTQ0KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNTIsMzkgKzIxNTIsNDEgQEAgYm9vbCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpuZWVkcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3Rh
dGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGNvbnN0IEludFNpemUm
IHNpemUpCitzdGF0aWMgdm9pZCBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEoY29uc3QgSW1hZ2VE
YXRhJiBpbWFnZURhdGEpCiB7Ci0gICAgYXV0byBkYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoc2l6
ZSk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGEtPmRhdGEoKS56ZXJvRmlsbCgpOwotICAg
IHJldHVybiBkYXRhOworICAgIGltYWdlRGF0YS5kYXRhKCkuemVyb0ZpbGwoKTsKIH0KIAotUmVm
UHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlSW1hZ2VE
YXRhKEltYWdlRGF0YSYgaW1hZ2VEYXRhKSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0
YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShJbWFnZURh
dGEmIGV4aXN0aW5nSW1hZ2VEYXRhKSBjb25zdAogewotICAgIHJldHVybiBjcmVhdGVFbXB0eUlt
YWdlRGF0YShpbWFnZURhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIG5ld0ltYWdlRGF0YSA9IEltYWdl
RGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZChleGlzdGluZ0ltYWdlRGF0YS53aWR0aCgpLCBleGlz
dGluZ0ltYWdlRGF0YS5oZWlnaHQoKSwgZXhpc3RpbmdJbWFnZURhdGEuY29sb3JTcGFjZSgpKTsK
KyAgICBpZiAoIW5ld0ltYWdlRGF0YS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgaW5pdGlhbGl6
ZUVtcHR5SW1hZ2VEYXRhKG5ld0ltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKyAgICByZXR1cm4g
bmV3SW1hZ2VEYXRhOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlSW1hZ2VEYXRhKGludCBzdywgaW50IHNoKSBj
b25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OmNyZWF0ZUltYWdlRGF0YShpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRh
U2V0dGluZ3M+IHNldHRpbmdzKSBjb25zdAogewogICAgIGlmICghc3cgfHwgIXNoKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKIAotICAgIEludFNpemUgc2l6
ZSB7IHN0ZDo6YWJzKHN3KSwgc3RkOjphYnMoc2gpIH07Ci0gICAgcmV0dXJuIGNyZWF0ZUVtcHR5
SW1hZ2VEYXRhKHNpemUpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGVV
bmluaXRpYWxpemVkKHN0ZDo6YWJzKHN3KSwgc3RkOjphYnMoc2gpLCBtX3NldHRpbmdzLmNvbG9y
U3BhY2UsIHNldHRpbmdzKTsKKyAgICBpZiAoIWltYWdlRGF0YS5oYXNFeGNlcHRpb24oKSkKKyAg
ICAgICAgaW5pdGlhbGl6ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsK
KyAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRh
Pj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhKGludCBzeCwgaW50
IHN5LCBpbnQgc3csIGludCBzaCkgY29uc3QKK0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURhdGEoaW50IHN4LCBpbnQgc3ks
IGludCBzdywgaW50IHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpIGNv
bnN0CiB7CisgICAgaWYgKCFzdyB8fCAhc2gpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bmRleFNpemVFcnJvciB9OworCiAgICAgaWYgKCFjYW52YXNCYXNlKCkub3JpZ2luQ2xlYW4oKSkg
ewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShN
QUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2Fu
dmFzIGJlY2F1c2UgdGhlIGNhbnZhcyBoYXMgYmVlbiB0YWludGVkIGJ5IGNyb3NzLW9yaWdpbiBk
YXRhLiIpKTsKICAgICAgICAgY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3Vy
aXR5RXJyb3IgfTsKICAgICB9CiAKLSAgICBpZiAoIXN3IHx8ICFzaCkKLSAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07Ci0KICAgICBpZiAoc3cgPCAwKSB7CiAgICAg
ICAgIHN4ICs9IHN3OwogICAgICAgICBzdyA9IC1zdzsKQEAgLTIxOTcsMTAgKzIxOTksMTYgQEAg
RXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbgogICAgIEludFJlY3QgaW1h
Z2VEYXRhUmVjdCB7IHN4LCBzeSwgc3csIHNoIH07CiAKICAgICBJbWFnZUJ1ZmZlciogYnVmZmVy
ID0gY2FudmFzQmFzZSgpLmJ1ZmZlcigpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1
cm4gY3JlYXRlRW1wdHlJbWFnZURhdGEoaW1hZ2VEYXRhUmVjdC5zaXplKCkpOworICAgIGlmICgh
YnVmZmVyKSB7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGVVbmlu
aXRpYWxpemVkKGltYWdlRGF0YVJlY3Qud2lkdGgoKSwgaW1hZ2VEYXRhUmVjdC5oZWlnaHQoKSwg
bV9zZXR0aW5ncy5jb2xvclNwYWNlLCBzZXR0aW5ncyk7CisgICAgICAgIGlmICghaW1hZ2VEYXRh
Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZUVtcHR5SW1hZ2VEYXRhKGlt
YWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIGltYWdlRGF0YTsKKyAgICB9
CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCIH07CisgICAgYXV0byBjb21wdXRlZENvbG9yU3BhY2UgPSBJbWFnZURhdGE6OmNv
bXB1dGVDb2xvclNwYWNlKHNldHRpbmdzLCBtX3NldHRpbmdzLmNvbG9yU3BhY2UpOworCisgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIHRvRGVzdGluYXRpb25Db2xvclNwYWNlKGNv
bXB1dGVkQ29sb3JTcGFjZSkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQ
aXhlbEJ1ZmZlcihmb3JtYXQsIGltYWdlRGF0YVJlY3QpOwogICAgIGlmICghcGl4ZWxCdWZmZXIp
IHsKICAgICAgICAgY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LApAQCAtMjIwOCw2ICsyMjE2LDggQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENh
bnZhc1JlbgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
ICAgICB9CiAKKyAgICBBU1NFUlQocGl4ZWxCdWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0g
dG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoY29tcHV0ZWRDb2xvclNwYWNlKSk7CisKICAgICByZXR1
cm4geyB7IEltYWdlRGF0YTo6Y3JlYXRlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSkgfSB9OwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNs
dWRlICJJbWFnZURhdGFTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkltYWdlU21vb3RoaW5nUXVhbGl0
eS5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCkBAIC0x
OTEsOSArMTkyLDkgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxDYW52YXNHcmFkaWVu
dD4+IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZs
b2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52
YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSYmLCBjb25zdCBTdHJp
bmcmIHJlcGV0aXRpb24pOwogCi0gICAgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlSW1hZ2VEYXRh
KEltYWdlRGF0YSYpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBj
cmVhdGVJbWFnZURhdGEoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdDsKLSAgICBFeGNlcHRp
b25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gZ2V0SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQg
c3csIGludCBzaCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0
ZUltYWdlRGF0YShJbWFnZURhdGEmKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VE
YXRhPj4gY3JlYXRlSW1hZ2VEYXRhKGludCB3aWR0aCwgaW50IGhlaWdodCwgT3B0aW9uYWw8SW1h
Z2VEYXRhU2V0dGluZ3M+KSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4g
Z2V0SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1h
Z2VEYXRhU2V0dGluZ3M+KSBjb25zdDsKICAgICB2b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEm
LCBpbnQgZHgsIGludCBkeSk7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiwgaW50
IGR4LCBpbnQgZHksIGludCBkaXJ0eVgsIGludCBkaXJ0eVksIGludCBkaXJ0eVdpZHRoLCBpbnQg
ZGlydHlIZWlnaHQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZp
bmVkQ29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcmVkZWZpbmVkQ29sb3JTcGFjZS5oIgog
CiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDQgKzQ2LDIzIEBAIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3IKICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCOwogfQogCitPcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVk
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0
Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoK
KyAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCOworI2lmIEVOQUJMRShE
RVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6TGluZWFyU1JHQjoKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNl
bmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAg
IGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVybiBQ
cmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxheVAzOworI2VuZGlmCisgICAgfQorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFj
ZS5oCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVk
ZWZpbmVkQ29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw2ICs0MCw3IEBAIGVudW0g
Y2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2UgewogfTsKIAogRGVzdGluYXRpb25Db2xvclNwYWNl
IHRvRGVzdGluYXRpb25Db2xvclNwYWNlKFByZWRlZmluZWRDb2xvclNwYWNlKTsKK09wdGlvbmFs
PFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZSk7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5jcHAJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjgsNiArNDI4
LDEyIEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2MKICAgICByZXR1
cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6
SW1hZ2VEYXRhIH19OwogfQogCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoSW1hZ2VE
YXRhU2V0dGluZ3MmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKK30KKwogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlU21v
b3RoaW5nUXVhbGl0eSBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRh
dGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OlN0cmluZyB9fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAJKHJldmlzaW9uIDI3NzU0NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRh
LmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhU2V0dGluZ3MuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
YW52YXNBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaAkocmV2aXNpb24gMjc3
NTQ0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBXZWJHTFRyYW5zZm9y
bUZlZWRiYWNrOwogY2xhc3MgV2ViR0xVbmlmb3JtTG9jYXRpb247CiBjbGFzcyBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0Owogc3RydWN0IERPTU1hdHJpeDJESW5pdDsKK3N0cnVjdCBJbWFnZURhdGFT
ZXR0aW5nczsKIGVudW0gY2xhc3MgUmVjb3JkaW5nU3dpenpsZVR5cGUgOiBpbnQ7CiBlbnVtIGNs
YXNzIENhbnZhc0RpcmVjdGlvbjsKIGVudW0gY2xhc3MgQ2FudmFzRmlsbFJ1bGU7CkBAIC0xNTAs
NiArMTUxLDcgQEAgZW51bSBJbWFnZVNtb290aGluZ1F1YWxpdHk7CiAgICAgbWFjcm8oSFRNTElt
YWdlRWxlbWVudCopIFwKICAgICBtYWNybyhJbWFnZUJpdG1hcCopIFwKICAgICBtYWNybyhJbWFn
ZURhdGEqKSBcCisgICAgbWFjcm8oSW1hZ2VEYXRhU2V0dGluZ3MmKSBcCiAgICAgbWFjcm8oSW1h
Z2VTbW9vdGhpbmdRdWFsaXR5KSBcCiAgICAgbWFjcm8oT3B0aW9uYWw8ZmxvYXQ+JikgXAogICAg
IG1hY3JvKFBhdGgyRCopIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3NTQ0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDE0ICsxMTYsMTYgQEAgVmVjdG9yPHVpbnQ4X3Q+IElt
YWdlQnVmZmVyQmFja2VuZDo6dG9CRwogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGlu
YXRpb25Gb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIHZvaWQqIGRhdGEpIGNvbnN0
CiB7CisgICAgQVNTRVJUKFBpeGVsQnVmZmVyOjpzdXBwb3J0ZWRQaXhlbEZvcm1hdChkZXN0aW5h
dGlvbkZvcm1hdC5waXhlbEZvcm1hdCkpOworCiAgICAgYXV0byBzb3VyY2VSZWN0U2NhbGVkID0g
dG9CYWNrZW5kQ29vcmRpbmF0ZXMoc291cmNlUmVjdCk7CiAKICAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShkZXN0aW5hdGlvbkZvcm1hdCwgc291cmNlUmVjdFNj
YWxlZC5zaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKLSAgICBJbnRSZWN0IHNvdXJjZVJlY3RDbGlwcGVkID0gaW50ZXJzZWN0aW9u
KGJhY2tlbmRSZWN0KCksIHNvdXJjZVJlY3RTY2FsZWQpOwotICAgIEludFJlY3QgZGVzdGluYXRp
b25SZWN0ID0geyBJbnRQb2ludDo6emVybygpLCBzb3VyY2VSZWN0Q2xpcHBlZC5zaXplKCkgfTsK
KyAgICBhdXRvIHNvdXJjZVJlY3RDbGlwcGVkID0gaW50ZXJzZWN0aW9uKGJhY2tlbmRSZWN0KCks
IHNvdXJjZVJlY3RTY2FsZWQpOworICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0IHsgSW50UG9p
bnQ6Onplcm8oKSwgc291cmNlUmVjdENsaXBwZWQuc2l6ZSgpIH07CiAKICAgICBpZiAoc291cmNl
UmVjdFNjYWxlZC54KCkgPCAwKQogICAgICAgICBkZXN0aW5hdGlvblJlY3Quc2V0WCgtc291cmNl
UmVjdFNjYWxlZC54KCkpOwpAQCAtMTM0LDIzICsxMzYsMTUgQEAgT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEltYWdlQnVmZmVyQmFja2VuZAogICAgIGlmIChkZXN0aW5hdGlvblJlY3Quc2l6ZSgpICE9
IHNvdXJjZVJlY3RTY2FsZWQuc2l6ZSgpKQogICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLnpl
cm9GaWxsKCk7CiAKLSAgICB1bnNpZ25lZCBzb3VyY2VCeXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93
KCk7Ci0gICAgY29uc3QgdWludDhfdCogc291cmNlUm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlQnl0ZXNQZXJSb3cg
KyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OwotCi0gICAgdW5zaWduZWQgZGVzdGluYXRpb25C
eXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7Ci0gICAgdWludDhfdCog
ZGVzdGluYXRpb25Sb3dzID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5kYXRhKCkgKyBkZXN0aW5hdGlv
blJlY3QueSgpICogZGVzdGluYXRpb25CeXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkg
KiA0OwotCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgc291cmNlRm9ybWF0IHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxGb3JtYXQoKSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCIH07Ci0KICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291
cmNlOwotICAgIHNvdXJjZS5mb3JtYXQgPSBzb3VyY2VGb3JtYXQ7Ci0gICAgc291cmNlLmJ5dGVz
UGVyUm93ID0gc291cmNlQnl0ZXNQZXJSb3c7Ci0gICAgc291cmNlLnJvd3MgPSBzb3VyY2VSb3dz
OworICAgIHNvdXJjZS5mb3JtYXQgPSB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRp
cGxpZWQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9OworICAgIHNvdXJjZS5ieXRlc1Bl
clJvdyA9IGJ5dGVzUGVyUm93KCk7CisgICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1Bl
clJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7CiAgICAgCiAgICAgUGl4ZWxCdWZmZXJD
b252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKICAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0
aW5hdGlvbkZvcm1hdDsKLSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGRlc3RpbmF0aW9u
Qnl0ZXNQZXJSb3c7Ci0gICAgZGVzdGluYXRpb24ucm93cyA9IGRlc3RpbmF0aW9uUm93czsKKyAg
ICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7
CisgICAgZGVzdGluYXRpb24ucm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVz
dGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25S
ZWN0LngoKSAqIDQ7CiAKICAgICBjb252ZXJ0SW1hZ2VQaXhlbHMoc291cmNlLCBkZXN0aW5hdGlv
biwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKQEAgLTE1OSwxNCArMTUzLDExIEBAIE9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQKIAogdm9pZCBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBzb3VyY2VQaXhlbEJ1ZmZl
ciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9u
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgdm9p
ZCogZGF0YSkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG5vbi1SR0JBOCBwaXhl
bCBmb3JtYXRzLgotICAgIEFTU0VSVChzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKS5waXhlbEZv
cm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTgpOwotCiAgICAgYXV0byBzb3VyY2VSZWN0U2NhbGVk
ID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoc291cmNlUmVjdCk7CiAgICAgYXV0byBkZXN0aW5hdGlv
blBvaW50U2NhbGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoZGVzdGluYXRpb25Qb2ludCk7CiAK
LSAgICBJbnRSZWN0IHNvdXJjZVJlY3RDbGlwcGVkID0gaW50ZXJzZWN0aW9uKHsgSW50UG9pbnQ6
Onplcm8oKSwgc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpIH0sIHNvdXJjZVJlY3RTY2FsZWQpOwot
ICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0ID0gc291cmNlUmVjdENsaXBwZWQ7CisgICAgYXV0
byBzb3VyY2VSZWN0Q2xpcHBlZCA9IGludGVyc2VjdGlvbih7IEludFBvaW50Ojp6ZXJvKCksIHNv
dXJjZVBpeGVsQnVmZmVyLnNpemUoKSB9LCBzb3VyY2VSZWN0U2NhbGVkKTsKKyAgICBhdXRvIGRl
c3RpbmF0aW9uUmVjdCA9IHNvdXJjZVJlY3RDbGlwcGVkOwogICAgIGRlc3RpbmF0aW9uUmVjdC5t
b3ZlQnkoZGVzdGluYXRpb25Qb2ludFNjYWxlZCk7CiAKICAgICBpZiAoc291cmNlUmVjdFNjYWxl
ZC54KCkgPCAwKQpAQCAtMTc4LDI0ICsxNjksMTUgQEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OnB1dFBpeGVsQnVmZmVyKAogICAgIGRlc3RpbmF0aW9uUmVjdC5pbnRlcnNlY3QoYmFja2VuZFJl
Y3QoKSk7CiAgICAgc291cmNlUmVjdENsaXBwZWQuc2V0U2l6ZShkZXN0aW5hdGlvblJlY3Quc2l6
ZSgpKTsKIAotICAgIHVuc2lnbmVkIHNvdXJjZUJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVBpeGVs
QnVmZmVyLnNpemUoKS53aWR0aCgpOwotICAgIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZVJvd3MgPSBz
b3VyY2VQaXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291cmNlUmVjdENsaXBwZWQueSgpICog
c291cmNlQnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OwotCi0gICAgdW5z
aWduZWQgZGVzdGluYXRpb25CeXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7Ci0gICAgdWludDhf
dCogZGVzdGluYXRpb25Sb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBk
ZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb25CeXRlc1BlclJvdyArIGRlc3RpbmF0aW9u
UmVjdC54KCkgKiA0OwotCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgc291cmNlRm9ybWF0ID0gc291
cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCk7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZGVzdGluYXRp
b25Gb3JtYXQgeyBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKLQogICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9u
VmlldyBzb3VyY2U7Ci0gICAgc291cmNlLmZvcm1hdCA9IHNvdXJjZUZvcm1hdDsKLSAgICBzb3Vy
Y2UuYnl0ZXNQZXJSb3cgPSBzb3VyY2VCeXRlc1BlclJvdzsKLSAgICBzb3VyY2Uucm93cyA9IHNv
dXJjZVJvd3M7Ci0gICAgCisgICAgc291cmNlLmZvcm1hdCA9IHNvdXJjZVBpeGVsQnVmZmVyLmZv
cm1hdCgpOworICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5z
aXplKCkud2lkdGgoKTsKKyAgICBzb3VyY2Uucm93cyA9IHNvdXJjZVBpeGVsQnVmZmVyLmRhdGEo
KS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBz
b3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OworCiAgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmll
dyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0aW5hdGlvbkZvcm1h
dDsKLSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3c7
Ci0gICAgZGVzdGluYXRpb24ucm93cyA9IGRlc3RpbmF0aW9uUm93czsKKyAgICBkZXN0aW5hdGlv
bi5mb3JtYXQgPSB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9y
U3BhY2UoKSB9OworICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsK
KyAgICBkZXN0aW5hdGlvbi5yb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkg
KyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5h
dGlvblJlY3QueCgpICogNDsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAJKHJldmlzaW9uIDI3NzU0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorYm9vbCBQaXhlbEJ1ZmZlcjo6c3VwcG9ydGVkUGl4ZWxGb3JtYXQoUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQpCit7CisgICAgc3dpdGNoIChwaXhlbEZvcm1hdCkgeworICAgIGNhc2UgUGl4ZWxG
b3JtYXQ6OlJHQkE4OgorICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OkJHUkE4OgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OlJHQjEwOgorICAgIGNhc2UgUGl4ZWxG
b3JtYXQ6OlJHQjEwQTg6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIENoZWNr
ZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNp
emUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKLSAgICAvLyBOT1RFOiBPbmx5IDgtYml0IGZvcm1hdHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0
ZWQuCi0gICAgQVNTRVJUX1VOVVNFRChmb3JtYXQsIGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhl
bEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JB
OCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3JtYXQsIHN1cHBvcnRlZFBpeGVsRm9ybWF0KGZvcm1h
dC5waXhlbEZvcm1hdCkpOwogCiAgICAgY29uc3RleHByIHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwg
PSA0OwogCkBAIC00Myw3ICs1NSw3IEBAIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93
PiBQaXhlbEIKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVG
b3JEZWNvZGluZyhjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXpl
JiBzaXplLCB1bnNpZ25lZCBkYXRhQnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoZm9ybWF0LnBp
eGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0g
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxGb3JtYXQoZm9y
bWF0LnBpeGVsRm9ybWF0KSk7CiAgICAgQVNTRVJUKGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwg
c2l6ZSkudW5zYWZlR2V0KCkgPT0gZGF0YUJ5dGVMZW5ndGgpOwogCiAgICAgYXV0byBwaXhlbEFy
cmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YUJ5dGVM
ZW5ndGgpOwpAQCAtNTQsOCArNjYsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZm
ZXI6OnRyeUNyCiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7
Ci0gICAgLy8gTk9URTogT25seSA4LWJpdCBmb3JtYXRzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVk
LgotICAgIEFTU0VSVChmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8
IGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFTU0VSVChz
dXBwb3J0ZWRQaXhlbEZvcm1hdChmb3JtYXQucGl4ZWxGb3JtYXQpKTsKIAogICAgIGF1dG8gYnVm
ZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZl
clNpemUuaGFzT3ZlcmZsb3dlZCgpKQpAQCAtNjYsNiArNzcsMjEgQEAgT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcgogICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBw
aXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQogCitPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0
LCBjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZl
cikKK3sKKyAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxGb3JtYXQoZm9ybWF0LnBpeGVsRm9ybWF0
KSk7CisKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNp
emUpOworICAgIGlmIChidWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSAhPSBhcnJheUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1
dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJh
eUJ1ZmZlciksIDAsIGJ1ZmZlclNpemUudW5zYWZlR2V0KCkpOworICAgIGlmICghcGl4ZWxBcnJh
eSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4geyB7IGZvcm1hdCwg
c2l6ZSwgcGl4ZWxBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0gfTsKK30KKwogUGl4ZWxCdWZmZXI6
OlBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNp
emUmIHNpemUsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmIGRhdGEpCiAgICAgOiBtX2Zv
cm1hdCB7IGZvcm1hdCB9CiAgICAgLCBtX3NpemUgeyBzaXplIH0KQEAgLTc0LDYgKzEwMCwxNCBA
QCBQaXhlbEJ1ZmZlcjo6UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmCiAgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9zaXplLmFyZWEoKSAqIDQpLnVuc2Fm
ZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOwogfQogCitQaXhlbEJ1ZmZlcjo6UGl4ZWxCdWZm
ZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
SlNDOjpVaW50OENsYW1wZWRBcnJheSYgZGF0YSkKKyAgICA6IG1fZm9ybWF0IHsgZm9ybWF0IH0K
KyAgICAsIG1fc2l6ZSB7IHNpemUgfQorICAgICwgbV9kYXRhIHsgZGF0YSB9Cit7CisgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9zaXplLmFyZWEoKSAqIDQp
LnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworfQorCiBQaXhlbEJ1ZmZlcjo6flBp
eGVsQnVmZmVyKCkgPSBkZWZhdWx0OwogCiBQaXhlbEJ1ZmZlciBQaXhlbEJ1ZmZlcjo6ZGVlcENs
b25lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVs
QnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXIuaAkocmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGl4ZWxCdWZmZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBpeGVsQnVmZmVyKTsKIHB1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0ZWRQaXhlbEZvcm1hdChQaXhlbEZvcm1hdCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYsIGNvbnN0IEludFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IElu
dFNpemUmLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJik7CiAKICAgICBQaXhlbEJ1ZmZlcihjb25z
dCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50OENsYW1w
ZWRBcnJheT4mJik7CisgICAgUGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBj
b25zdCBJbnRTaXplJiwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5QaXhlbEJ1ZmZlcigpOwogCiAgICAgUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImJikgPSBk
ZWZhdWx0OwpAQCAtNTMsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIEpTQzo6VWludDhDbGFtcGVkQXJyYXkm
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAorICAgIFJlZjxKU0M6OlVp
bnQ4Q2xhbXBlZEFycmF5PiYmIHRha2VEYXRhKCkgeyByZXR1cm4gV1RGTW92ZShtX2RhdGEpOyB9
CisKICAgICBQaXhlbEJ1ZmZlciBkZWVwQ2xvbmUoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252
ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2
LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGUKIAog
ICAgICAgICB2SW1hZ2VfRXJyb3IgY29udmVydGVyQ3JlYXRlRXJyb3IgPSBrdkltYWdlTm9FcnJv
cjsKICAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBhZG9wdENGKHZJbWFnZUNvbnZlcnRlcl9DcmVh
dGVXaXRoQ0dJbWFnZUZvcm1hdCgmc291cmNlQ0dJbWFnZUZvcm1hdCwgJmRlc3RpbmF0aW9uQ0dJ
bWFnZUZvcm1hdCwgbnVsbHB0ciwga3ZJbWFnZU5vRmxhZ3MsICZjb252ZXJ0ZXJDcmVhdGVFcnJv
cikpOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChjb252ZXJ0ZXJDcmVhdGVF
cnJvciwgY29udmVydGVyQ3JlYXRlRXJyb3IgIT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252
ZXJ0ZXIgY3JlYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNyZWF0ZUVy
cm9yKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ3JlYXRl
RXJyb3IsIGNvbnZlcnRlckNyZWF0ZUVycm9yID09IGt2SW1hZ2VOb0Vycm9yLCAidkltYWdlQ29u
dmVydGVyIGNyZWF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiAlemQiLCBjb252ZXJ0ZXJDcmVhdGVF
cnJvcik7CiAKICAgICAgICAgdkltYWdlX0Vycm9yIGNvbnZlcnRlckNvbnZlcnRFcnJvciA9IHZJ
bWFnZUNvbnZlcnRfQW55VG9BbnkoY29udmVydGVyLmdldCgpLCAmc291cmNlVkltYWdlQnVmZmVy
LCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIG51bGxwdHIsIGt2SW1hZ2VOb0ZsYWdzKTsKICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ29udmVydEVycm9yLCBj
b252ZXJ0ZXJDb252ZXJ0RXJyb3IgPT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252ZXJ0X0Fu
eVRvQW55IGZhaWxlZCBjb252ZXJzaW9uIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNvbnZl
cnRFcnJvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiAyNzc1NDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
RmlsdGVyRWZmZWN0Ojpjb252CiAgICAgLy8gQ29sb3Igc3BhY2UgY29udmVyc2lvbiBoYXBwZW5z
IGludGVybmFsbHkgd2hlbiBkcmF3aW5nIGZyb20gb25lIGltYWdlIGJ1ZmZlciB0byBhbm90aGVy
CiAgICAgY29udmVydGVkQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGlucHV0QnVm
ZmVyLCByZWN0KTsKICAgICAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBvdXRwdXRB
bHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBvdXRwdXRBbHBoYUZvcm1hdCwg
UGl4ZWxGb3JtYXQ6OlJHQkE4LCB0YXJnZXRDb2xvclNwYWNlIH07CiAgICAgcmV0dXJuIGNvbnZl
cnRlZEJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCByZWN0KTsKIH0KIApAQCAtNTA0LDcg
KzUwNCw5IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWwKICAgICAg
ICAgICAgICAgICBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKGRlc3RpbmF0
aW9uLCAqY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCByZWN0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCIH07CisKKyAgICAgICAgICAgIEFTU0VSVChtX2ltYWdlQnVmZmVyUmVzdWx0LT5jb2xv
clNwYWNlKCkgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIFBpeGVsQnVmZmVy
Rm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwg
UGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAgICAgIG1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRQaXhlbEJ1
ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSk7
CiAgICAgICAgICAgICBpZiAoIW1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTEyLDcgKzUxNCw5IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5
VW5tdWx0aXBsaWVkUmVzdWwKICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1
dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNp
emVOZWVkc0NsYW1waW5nKGlucHV0U2l6ZSkpOwogICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxl
KG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICAgICAg
CisgICAgICAgICAgICBBU1NFUlQobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmZvcm1hdCgp
LmNvbG9yU3BhY2UgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIFBpeGVsQnVm
ZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGll
ZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAgICAg
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgaW5wdXRTaXplKTsKICAgICAgICAgICAgIGlmICghbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01MzksNyArNTQzLDkgQEAgdm9pZCBGaWx0
ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdQogICAgICAgICAgICAgICAgIGNvcHlDb252
ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCByZWN0KTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworCisgICAgICAgICAg
ICBBU1NFUlQobV9pbWFnZUJ1ZmZlclJlc3VsdC0+Y29sb3JTcGFjZSgpID09IG1fcmVzdWx0Q29s
b3JTcGFjZSk7CisgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVz
dWx0Q29sb3JTcGFjZSB9OwogICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQg
PSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQo
KSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSk7CiAgICAgICAgICAgICBpZiAoIW1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU0Nyw3
ICs1NTMsOSBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1CiAgICAg
ICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAg
ICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNp
emUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKLSAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH07CisKKyAgICAgICAgICAgIEFTU0VSVChtX3VubXVsdGlwbGllZElt
YWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29sb3JTcGFjZSk7Cisg
ICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JTcGFj
ZSB9OwogICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZl
cjo6dHJ5Q3JlYXRlKGZvcm1hdCwgaW5wdXRTaXplKTsKICAgICAgICAgICAgIGlmICghbV9wcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTkwLDcg
KzU5OCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0OjpjcmUKICAgICBJ
bnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VS
VCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKICAgICByZXN1
bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIFBpeGVsQnVmZmVyRm9y
bWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhl
bEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07CiAgICAgbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBy
ZXN1bHRTaXplKTsKICAgICByZXR1cm4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdDsKIH0KQEAg
LTYwOSw3ICs2MTcsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3Jl
CiAgICAgSW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXN1bHRTaXplKSk7CiAg
ICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBQaXhlbEJ1
ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVk
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07CiAgICAg
bV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0Owog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjc3NTQ0
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MzMxLDcgKzUzMzEsNyBAQCB2b2lkIEludGVybmFsczo6dmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkCiAgICAgaWYgKCFyZ2JhKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0byBp
bWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksIHZpZGVv
U2V0dGluZ3Mud2lkdGgoKSwgdmlkZW9TZXR0aW5ncy5oZWlnaHQoKSk7CisgICAgYXV0byBpbWFn
ZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksIHZpZGVvU2V0
dGluZ3Mud2lkdGgoKSwgdmlkZW9TZXR0aW5ncy5oZWlnaHQoKSwgeyB7IFByZWRlZmluZWRDb2xv
clNwYWNlOjpTUkdCIH0gfSk7CiAgICAgaWYgKCFpbWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5yZXNvbHZlKGltYWdlRGF0YS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSk7CiAgICAgZWxzZQpAQCAtNjIwMyw3ICs2MjAzLDcgQEAgdm9pZCBJbnRl
cm5hbHM6OmxvYWRBcnR3b3JrSW1hZ2UoU3RyaW5nJgogICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlz
ZSA9IG1ha2VVbmlxdWU8QXJ0d29ya0ltYWdlUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSk7CiAg
ICAgbV9hcnR3b3JrTG9hZGVyID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VMb2FkZXI+KCpjb250
ZXh0RG9jdW1lbnQoKSwgdXJsLCBbdGhpc10oSW1hZ2UqIGltYWdlKSB7CiAgICAgICAgIGlmIChp
bWFnZSkgewotICAgICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZSh1
bnNpZ25lZChpbWFnZS0+d2lkdGgoKSksIHVuc2lnbmVkKGltYWdlLT5oZWlnaHQoKSkpOworICAg
ICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZS0+d2lkdGgo
KSwgaW1hZ2UtPmhlaWdodCgpLCB7IHsgUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0IgfSB9KTsK
ICAgICAgICAgICAgIGlmICghaW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVzb2x2ZShpbWFnZURhdGEucmVsZWFzZVJldHVy
blZhbHVlKCkpOwogICAgICAgICAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjc3NTUyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMTUgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjcmVhdGlu
Zy9hY2Nlc3Npbmcvc2V0dGluZyBub24tc1JHQiBJbWFnZURhdGEgdmlhIGNhbnZhcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRl
c3RzIGVuYWJsaW5nIHRoZSBDYW52YXNDb2xvclNwYWNlRW5hYmxlZCBwcmVmZXJlbmNlLgorCisg
ICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmNh
bnZhc0NvbG9yU3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5oOgorICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXND
aGFuZ2VkKToKKwogMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIERyb3AgbGVnYWN5IC8gcHJlZml4ZWQgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24K
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlz
aW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYzMSwzICsyNjMxLDkgQEAgSFJFU1VMVCBXZWJQcmVmZXJl
bmNlczo6c3RvcEJhdGNoaW5nVXBkYQogICAgIH0KICAgICByZXR1cm4gU19PSzsKIH0KKworYm9v
bCBXZWJQcmVmZXJlbmNlczo6Y2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKQoreworICAgIHJldHVy
biBib29sVmFsdWVGb3JLZXkoIldlYktpdENhbnZhc0NvbG9yU3BhY2VFbmFibGVkIik7Cit9CisK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24g
Mjc3NTQ0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQzLDYgKzM0MywxMCBAQCBwdWJsaWM6CiAKICAgICBIUkVTVUxUIHBv
c3RQcmVmZXJlbmNlc0NoYW5nZXNOb3RpZmljYXRpb24oKTsKIAorICAgIC8vIFRoZSBmb2xsb3dp
bmcgcHJlZmVyZW5jZSBhY2Nlc3NvcnMgYXJlIG5vdCBleHBvc2VkIHZpYSBJV2ViUHJlZmVyZW5j
ZXMqIGFzIHRoZXkgYXJlIG9ubHkKKyAgICAvLyBuZWVkZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMg
YW5kIGNhbiBiZSB0b2dnbGVkIHZpYSB0aGUgc2V0KlByZWZlcmVuY2VGb3JUZXN0aW5nIGZ1bmN0
aW9ucy4KKyAgICBib29sIGNhbnZhc0NvbG9yU3BhY2VFbmFibGVkKCk7CisKIHByaXZhdGU6CiAg
ICAgV2ViUHJlZmVyZW5jZXMoKTsKICAgICB+V2ViUHJlZmVyZW5jZXMoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY2Nyw2ICs1NjY3
LDggQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogICAgICAgICBy
ZXR1cm4gaHI7CiAgICAgc2V0dGluZ3Muc2V0T3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCghIWVu
YWJsZWQpOwogCisgICAgc2V0dGluZ3Muc2V0Q2FudmFzQ29sb3JTcGFjZUVuYWJsZWQobV9wcmVm
ZXJlbmNlcy0+Y2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKSk7CisKICAgICByZXR1cm4gU19PSzsK
IH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3NTUxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjEtMDUtMTUgIFNhbSBXZWluaWcg
IDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjcmVhdGluZy9h
Y2Nlc3Npbmcvc2V0dGluZyBub24tc1JHQiBJbWFnZURhdGEgdmlhIGNhbnZhcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODQxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICBSZW1vdmUgd2lkZS1nYW11dC1jYW52YXMgbm93IHRoYXQgdGhleSBzaG91bGQgcGFz
cy4KKworICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAz
LUltYWdlRGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2Nh
bnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgQWRkIG5ldyB0ZXN0IGV4ZXJjaXNpbmcgZ2V0SW1hZ2VEYXRhIGFuZCBwdXRJbWFnZURhdGEg
d2l0aCBub24tc1JHQiBjYW52YXNlcworICAgICAgICBhbmQgbm9uLXNSR0IgSW1hZ2VEYXRhLgor
IAorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICBVcGRhdGUgcmVzdWx0cyBmb3IgdXBkYXRlZCBlcnJvciBtZXNzYWdlcywgd2hpY2gg
YXJlIGEgYml0IHdvcnNlIGR1ZSBhZGRpdGlvbmFsCisgICAgICAgIGFtYmlndWl0eSBpbiBzaWdu
YXR1cmVzLgorCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICBNYXJrIG5ldyB0ZXN0IGFzIGZhaWxpbmcgb24gZ2xpYiBkdWUgdG8gbGFjayBvZiBkaXNw
bGF5LXAzIHN1cHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgTWFyayBuZXcgdGVzdCBhcyBmYWlsaW5nIG9uIFdpbmRvd3MgZHVlIHRvIGxh
Y2sgb2YgZGlzcGxheS1wMyBzdXBwb3J0LgorICAgICAgICBVbnNraXAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEU2V0dGluZ3MtY29sb3JTcGFjZS1lbmFibGVkLmh0bWwgd2hpY2gKKyAgICAgICAg
c2hvdWxkIG5vdyBwYXNzIGR1ZSB0byBhZGRpbmcgbWFudWFsIHByZWZlcmVuY2VzIHN1cHBvcnQg
aW4gV2ViS2l0TGVnYWN5L3dpbi4gCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC10eXBlcy1leHBlY3RlZC50eHQ6CisgICAgICAg
IFVwZGF0ZSByZXN1bHRzIGR1ZSB0byBuZXcgYXR0cmlidXRlIGluIEltYWdlRGF0YSB0aGF0IGlz
IGF1dG8gcHJpbnRlZC4KKwogMjAyMS0wNS0xNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNy
ZWF0ZUNvbmljR3JhZGllbnQKSW5kZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjc3NTQ0
KQorKysgTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMzk5
NCw5ICszOTk0LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nhbgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2RyYXdp
bmctaW1hZ2VzLXRvLXRoZS1jYW52YXMvaW1hZ2Utb3JpZW50YXRpb24vZHJhd0ltYWdlLWZyb20t
ZWxlbWVudC1zd2FwLXdpZHRoLWhlaWdodC50ZW50YXRpdmUuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L2RyYXdpbmctaW1hZ2VzLXRvLXRoZS1jYW52YXMvaW1hZ2Utb3JpZW50YXRpb24vZHJhd0ltYWdl
LWZyb20tZWxlbWVudC50ZW50YXRpdmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0jIFNv
bWV0aW1lcyBwcmludHMgd2VpcmQgb3V0cHV0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRlc3Rz
LgotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dp
ZGUtZ2FtdXQtY2FudmFzIFsgRmFpbHVyZSBQYXNzIF0KLQogIyBDU1MgTWFzb25yeSBMYXlvdXQg
bm90IHN1cHBvcnRlZC4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1n
cmlkL21hc29ucnkudGVudGF0aXZlIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjAyMTE1IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQgWyBTa2lwIF0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5
LXAzLUltYWdlRGF0YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29s
b3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTU5IEBACitUZXN0IHRoYXQgcGl4ZWwgYWNjZXNzIGZ1bmN0aW9ucyB3b3Jr
IHdpdGggbm9uLVNSR0IgY29sb3Igc3BhY2VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhcy5jb2xvclNwYWNl
IGlzICJkaXNwbGF5LXAzIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZh
c092ZXJyaWRpbmdDb2xvclNwYWNlU1JHQi5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFn
ZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxh
eVAzLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9t
U1JHQkNhbnZhcy5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJv
bVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZVNSR0IuY29sb3JTcGFjZSBpcyAic3JnYiIK
K1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VE
aXNwbGF5UDMuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRl
ZEZyb21JbWFnZURhdGFDb25zdHJ1Y3Rvci5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFn
ZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VUb1NS
R0IuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURh
dGFDb25zdHJ1Y3RvclNldHRpbmdDb2xvclNwYWNlVG9EaXNwbGF5UDMuY29sb3JTcGFjZSBpcyAi
ZGlzcGxheS1wMyIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3Rv
clBhc3NpbmdCdWZmZXIuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRl
ZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXJTZXR0aW5nQ29sb3JTcGFjZVRv
U1JHQi5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdl
RGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlclNldHRpbmdDb2xvclNwYWNlVG9EaXNwbGF5UDMu
Y29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKKworVGVzdGluZyBhIGRpc3BsYXktcDMgY2FudmFz
IHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW50byBpdAorCitUZXN0IGdldElt
YWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24gYSBkaXNwbGF5LXAzIGNh
bnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BB
U1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMg
MAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNT
IGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZp
ZWQsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAw
IDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1Mg
ZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRh
dGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3
aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMg
aGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9y
U3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEu
ZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNd
IGlzIDI1NQorCitUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBjb2xvcihzcmdiIDAg
MSAwKSBkcmF3biBpbnRvIGl0CisKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVk
IGNvbG9yIHNwYWNlLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNy
Z2IgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXkt
cDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1MQor
UEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBn
ZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAo
Y2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xv
clNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMworUEFTUyBkYXRhLmRhdGFb
MV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAy
NTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgZGlz
cGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQp
CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBd
IGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3
NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRo
IGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGludG8gaXQKKworVGVzdCBnZXRJbWFnZURh
dGEgd2l0aCBubyBzcGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZh
cyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29s
b3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRh
WzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMg
MjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2Fu
dmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KQorUEFT
UyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNT
IGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5k
YXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIHNwZWNpZmll
ZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBk
cmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBk
YXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTEKK1BBU1MgZGF0YS5k
YXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKworVGVzdGluZyBhIHNyZ2Ig
Y2FudmFzIHdpdGggY29sb3Ioc3JnYi1wMyAwIDEgMCkgZHJhd24gaW50byBpdAorCitUZXN0IGdl
dEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24gYSBzcmdiIGNhbnZh
cyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5j
b2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRh
dGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBp
cyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZpZWQsIG9uIGEgc3JnYiBj
YW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRh
dGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0
YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFb
M10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBv
biBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0
KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVsw
XSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMg
NzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCisKK1Rlc3RpbmcgYSBkaXNwbGF5LXAzIGNh
bnZhcyB3aXRoIGRpc3BsYXktcDMgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQKKworUEFTUyBkYXRh
LmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEu
ZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNd
IGlzIDI1NQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEu
ZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJd
IGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCitUZXN0aW5nIGEgZGlzcGxheS1wMyBj
YW52YXMgd2l0aCBzcmdiIEltYWdlRGF0YSBkcmF3biBpbnRvIGl0CisKK1BBU1MgZGF0YS5jb2xv
clNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMworUEFTUyBkYXRhLmRhdGFb
MV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAy
NTUKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBkYXRhLmRhdGFb
MF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTEKK1BBU1MgZGF0YS5kYXRhWzJdIGlz
IDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKworVGVzdGluZyBhIHNyZ2IgY2FudmFzIHdp
dGggZGlzcGxheS1wMyBJbWFnZURhdGEgZHJhd24gaW50byBpdAorCitQQVNTIGRhdGEuY29sb3JT
cGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFd
IGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1
CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBd
IGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3
NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRo
IHNyZ2IgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQKKworUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMg
InNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUK
K1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorUEFTUyBk
YXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcK
K1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1Mg
ZGF0YS5kYXRhWzNdIGlzIDI1NQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNv
bG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRh
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNv
bG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyOTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBwaXhlbCBhY2Nlc3MgZnVuY3Rp
b25zIHdvcmsgd2l0aCBub24tU1JHQiBjb2xvciBzcGFjZXMuIik7CisKK2xldCBjYW52YXNEaXNw
bGF5UDMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKK2xldCBjb250ZXh0RGlz
cGxheVAzID0gY2FudmFzRGlzcGxheVAzLmdldENvbnRleHQoIjJkIiwgeyBjb2xvclNwYWNlOiAi
ZGlzcGxheS1wMyIgfSk7CisKK2xldCBjYW52YXNTUkdCID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiY2FudmFzIik7CitsZXQgY29udGV4dFNSR0IgPSBjYW52YXNTUkdCLmdldENvbnRleHQoIjJk
IiwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9t
RGlzcGxheVAzQ2FudmFzID0gY29udGV4dERpc3BsYXlQMy5jcmVhdGVJbWFnZURhdGEoNTAsIDUw
KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhcy5jb2xvclNw
YWNlIiwgYCJkaXNwbGF5LXAzImApOworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbURpc3Bs
YXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlU1JHQiA9IGNvbnRleHREaXNwbGF5UDMuY3Jl
YXRlSW1hZ2VEYXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgi
aW1hZ2VEYXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZVNS
R0IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21E
aXNwbGF5UDNDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZURpc3BsYXlQMyA9IGNvbnRleHREaXNw
bGF5UDMuY3JlYXRlSW1hZ2VEYXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIg
fSk7CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXNPdmVycmlk
aW5nQ29sb3JTcGFjZURpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApOworCitj
b25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXMgPSBjb250ZXh0U1JHQi5jcmVhdGVJ
bWFnZURhdGEoNTAsIDUwKTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52
YXMuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21T
UkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdCID0gY29udGV4dFNSR0IuY3JlYXRlSW1h
Z2VEYXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiaW1hZ2VE
YXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdCLmNvbG9yU3Bh
Y2UiLCBgInNyZ2IiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhc092
ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxheVAzID0gY29udGV4dFNSR0IuY3JlYXRlSW1hZ2VEYXRh
KDUwLCA1MCwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiaW1hZ2VE
YXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VEaXNwbGF5UDMuY29s
b3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21J
bWFnZURhdGFDb25zdHJ1Y3RvciA9IG5ldyBJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6
ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0
cnVjdG9yLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRG
cm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQiA9IG5ldyBJbWFn
ZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURh
dGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VUb1NSR0Iu
Y29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFn
ZURhdGFDb25zdHJ1Y3RvclNldHRpbmdDb2xvclNwYWNlVG9EaXNwbGF5UDMgPSBuZXcgSW1hZ2VE
YXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiaW1h
Z2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclNldHRpbmdDb2xvclNwYWNlVG9E
aXNwbGF5UDMuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKTsKKworY29uc3QgaW1hZ2VEYXRh
Q3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXIgPSBuZXcgSW1hZ2VE
YXRhKG5ldyBVaW50OENsYW1wZWRBcnJheSg0MDApLCAxMCwgMTAsIHsgY29sb3JTcGFjZTogInNy
Z2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0
b3JQYXNzaW5nQnVmZmVyLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCk7CisKK2NvbnN0IGltYWdlRGF0
YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyU2V0dGluZ0NvbG9y
U3BhY2VUb1NSR0IgPSBuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheSg0MDApLCAx
MCwgMTAsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0
ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyU2V0dGluZ0NvbG9yU3BhY2VU
b1NSR0IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZy
b21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXJTZXR0aW5nQ29sb3JTcGFjZVRvRGlz
cGxheVAzID0gbmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoNDAwKSwgMTAsIDEw
LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVh
dGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlclNldHRpbmdDb2xvclNwYWNl
VG9EaXNwbGF5UDMuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKTsKKwordmFyIGRhdGEgPSB7
IH07CisKKy8vIE5PVEU6CisvLyBjb2xvcihzcmdiIDAgMSAwKSBjb252ZXJ0ZWQgdG8gZGlzcGxh
eS1wMyBpcyBjb2xvcihkaXNwbGF5LXAzIDAuNDU4NCAwLjk4NTI2IDAuMjk4MjkpIG9yIFsxMTcs
IDI1MSwgNzYsIDI1NV0gaW4gYnl0ZSBmb3JtLgorCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGlu
ZyBhIGRpc3BsYXktcDMgY2FudmFzIHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24g
aW50byBpdCIpOworZGVidWcoIiIpOworCitjb250ZXh0RGlzcGxheVAzLmZpbGxTdHlsZSA9ICJj
b2xvcihkaXNwbGF5LXAzIDAgMSAwKSI7Citjb250ZXh0RGlzcGxheVAzLmZpbGxSZWN0KDAsIDAs
IDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSB3aWxsIGRlZmF1bHQgdG8g
dGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGluIHRoaXMgY2FzZSwgZGlzcGxheS1wMworZGVidWco
IlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBhIGRp
c3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXdu
IGluIGl0KSIpOworZGF0YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEs
IDEpOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxk
QmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNd
IiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmll
ZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAg
MSAwKSBkcmF3biBpbiBpdCkiKTsKKy8vIE5PVEU6IGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGlz
IG91dHNpZGUgdGhlIHJhbmdlIG9mIHNSR0IsIHNvIGl0IGNsaXBwZWQgdG8gMjU1LgorZGF0YSA9
IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTog
InNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxk
QmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNd
IiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIHNw
ZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5
LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldElt
YWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3Vs
ZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsK
KworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIGNv
bG9yKHNyZ2IgMCAxIDApIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dERp
c3BsYXlQMy5maWxsU3R5bGUgPSAiY29sb3Ioc3JnYiAwIDEgMCkiOworY29udGV4dERpc3BsYXlQ
My5maWxsUmVjdCgwLCAwLCA1MCwgNTApOworCisvLyBObyBzcGVjaWZpZWQgY29sb3Igc3BhY2Ug
d2lsbCBkZWZhdWx0IHRvIHRoZSBjYW52YXMnIGNvbG9yIHNwYWNlLCBpbiB0aGlzIGNhc2UsIGRp
c3BsYXktcDMKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xv
ciBzcGFjZSwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAg
MSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdlRGF0
YSgwLCAwLCAxLCAxKTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMi
YCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRh
WzFdIiwgIjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUo
ImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGgg
c3JnYiBzcGVjaWZpZWQsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Io
c3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJ
bWFnZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgi
ZGF0YS5jb2xvclNwYWNlIiwgYCJzcmdiImApCisvLyBOT1RFOiBUaGlzIDMgaXMgb2RkLCBidXQg
ZHVlIHRvIGxhY2sgb2YgcHJlY2lzaW9uIGluIDgtYml0IHJvdW5kLXRyaXBwaW5nLgorc2hvdWxk
QmUoImRhdGEuZGF0YVswXSIsICIzIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNd
IiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIHNw
ZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAg
MSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdlRGF0
YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJk
YXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0i
LCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIpOworc2hvdWxkQmUoImRh
dGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKwor
ZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRoIGNvbG9yKGRpc3Bs
YXktcDMgMCAxIDApIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dFNSR0Iu
ZmlsbFN0eWxlID0gImNvbG9yKGRpc3BsYXktcDMgMCAxIDApIjsKK2NvbnRleHRTUkdCLmZpbGxS
ZWN0KDAsIDAsIDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSB3aWxsIGRl
ZmF1bHQgdG8gdGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGluIHRoaXMgY2FzZSwgc3JnYgorZGVi
dWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBh
IHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGlu
IGl0KSIpOworZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKTsKK3No
b3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
MF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJk
YXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKwor
ZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZpZWQsIG9uIGEgc3JnYiBj
YW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpIik7
CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFj
ZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hv
dWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1
NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRh
WzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAz
IHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAz
IDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEo
MCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0
YS5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwg
IjExNyIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTEiKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMl0iLCAiNzYiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBjb2xvcihzcmdiLXAz
IDAgMSAwKSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHRTUkdCLmZpbGxT
dHlsZSA9ICJjb2xvcihzcmdiIDAgMSAwKSI7Citjb250ZXh0U1JHQi5maWxsUmVjdCgwLCAwLCA1
MCwgNTApOworCisvLyBObyBzcGVjaWZpZWQgY29sb3Igc3BhY2Ugd2lsbCBkZWZhdWx0IHRvIHRo
ZSBjYW52YXMnIGNvbG9yIHNwYWNlLCBpbiB0aGlzIGNhc2UsIHNyZ2IKK2RlYnVnKCJUZXN0IGdl
dEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24gYSBzcmdiIGNhbnZh
cyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBj
b250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSk7CitzaG91bGRCZSgiZGF0YS5jb2xv
clNwYWNlIiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldElt
YWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFz
IGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHRTUkdCLmdl
dEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJl
KCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAi
MCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWco
IlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgc3JnYiBj
YW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRh
ID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRp
c3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJg
KQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
MV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgi
ZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCisKK2RlYnVnKCIiKTsKKworCitjb25zdCBpbWFnZURh
dGFEaXNwbGF5UDNUb1B1dCA9IG5ldyBJbWFnZURhdGEoMSwgMSwgeyBjb2xvclNwYWNlOiAiZGlz
cGxheS1wMyIgfSk7CitpbWFnZURhdGFEaXNwbGF5UDNUb1B1dC5kYXRhWzBdID0gMDsKK2ltYWdl
RGF0YURpc3BsYXlQM1RvUHV0LmRhdGFbMV0gPSAyNTU7CitpbWFnZURhdGFEaXNwbGF5UDNUb1B1
dC5kYXRhWzJdID0gMDsKK2ltYWdlRGF0YURpc3BsYXlQM1RvUHV0LmRhdGFbM10gPSAyNTU7CisK
K2NvbnN0IGltYWdlRGF0YVNSR0JUb1B1dCA9IG5ldyBJbWFnZURhdGEoMSwgMSwgeyBjb2xvclNw
YWNlOiAic3JnYiIgfSk7CitpbWFnZURhdGFTUkdCVG9QdXQuZGF0YVswXSA9IDA7CitpbWFnZURh
dGFTUkdCVG9QdXQuZGF0YVsxXSA9IDI1NTsKK2ltYWdlRGF0YVNSR0JUb1B1dC5kYXRhWzJdID0g
MDsKK2ltYWdlRGF0YVNSR0JUb1B1dC5kYXRhWzNdID0gMjU1OworCisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBkaXNwbGF5LXAzIEltYWdlRGF0
YSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHREaXNwbGF5UDMucHV0SW1h
Z2VEYXRhKGltYWdlRGF0YURpc3BsYXlQM1RvUHV0LCAwLCAwKTsKKworZGF0YSA9IGNvbnRleHRE
aXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0p
Oworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxkQmUoImRhdGEu
ZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIpOworc2hvdWxk
QmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIp
OworCitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBj
b2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwg
YCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJU
ZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBzcmdiIEltYWdlRGF0YSBkcmF3biBpbnRv
IGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHREaXNwbGF5UDMucHV0SW1hZ2VEYXRhKGltYWdl
RGF0YVNSR0JUb1B1dCwgMCwgMCk7CisKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdl
RGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJkYXRh
LmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKKy8vIE5PVEU6IFRoaXMgMyBpcyBvZGQsIGJ1dCBkdWUg
dG8gbGFjayBvZiBwcmVjaXNpb24gaW4gOC1iaXQgcm91bmQtdHJpcHBpbmcuCitzaG91bGRCZSgi
ZGF0YS5kYXRhWzBdIiwgIjMiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7Citz
aG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAi
MjU1Iik7CisKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAx
LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3Bh
Y2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7Citz
aG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIs
ICI3NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWcoIiIpOwor
ZGVidWcoIlRlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRoIGRpc3BsYXktcDMgSW1hZ2VEYXRhIGRy
YXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dFNSR0IucHV0SW1hZ2VEYXRhKGlt
YWdlRGF0YURpc3BsYXlQM1RvUHV0LCAwLCAwKTsKKworZGF0YSA9IGNvbnRleHRTUkdCLmdldElt
YWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJk
YXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMCIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
Ml0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGF0YSA9IGNv
bnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5
LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3No
b3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwg
IjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUoImRhdGEu
ZGF0YVszXSIsICIyNTUiKTsKKworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIHNyZ2Ig
Y2FudmFzIHdpdGggc3JnYiBJbWFnZURhdGEgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIpOwor
Citjb250ZXh0U1JHQi5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhU1JHQlRvUHV0LCAwLCAwKTsKKwor
ZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6
ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsz
XSIsICIyNTUiKTsKKworZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAx
LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3Bh
Y2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7Citz
aG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIs
ICI3NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWcoIiIpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtaW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtaW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3
NTQ0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWltYWdlRGF0YS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0LDIwICsxNCwyMCBAQCBQQVNTIG5ldyBJbWFnZURh
dGEoLTIwLCAyMCkgdGhyZXcgZXhjZXB0CiBQQVNTIG5ldyBJbWFnZURhdGEoMjAsIC0yMCkgdGhy
ZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IENhbm5vdCBhbGxvY2F0ZSBhIGJ1ZmZlciBvZiB0aGlz
IHNpemUuCiBQQVNTIG5ldyBJbWFnZURhdGEobnVsbCwgMjApIHRocmV3IGV4Y2VwdGlvbiBJbmRl
eFNpemVFcnJvcjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS4uCiBQQVNT
IG5ldyBJbWFnZURhdGEoMzI3NjgsIDMyNzY4KSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjog
Q2Fubm90IGFsbG9jYXRlIGEgYnVmZmVyIG9mIHRoaXMgc2l6ZS4KLVBBU1MgbmV3IEltYWdlRGF0
YShudWxsLCAyMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdk
YXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9m
IFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMjAsIDIw
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgnZGF0YScpIHRvIHRoZSBJ
bWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBVaW50OENsYW1wZWRB
cnJheS4KK1BBU1MgbmV3IEltYWdlRGF0YShudWxsLCAyMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwg
MjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIG5ldyBJbWFn
ZURhdGEoaW1hZ2VEYXRhLCAwKSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IFRoZSBp
bmRleCBpcyBub3QgaW4gdGhlIGFsbG93ZWQgcmFuZ2UuLgotUEFTUyBuZXcgSW1hZ2VEYXRhKGlt
YWdlRGF0YSwgMjAsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdk
YXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9m
IFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMjAp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIElt
YWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFy
cmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMTAsIDUpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1
Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgorUEFTUyBuZXcg
SW1hZ2VEYXRhKGltYWdlRGF0YSwgMjAsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAyMCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IEltYWdlRGF0YShpbWFnZURh
dGEsIDEwLCA1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBu
ZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCAxMCwgNSkgdGhyZXcgZXhjZXB0aW9uIEluZGV4
U2l6ZUVycm9yOiBzaCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaGVpZ2h0LgogUEFTUyBuZXcgSW1h
Z2VEYXRhKGltYWdlRGF0YS5kYXRhLCAtMTAsIDUpIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVF
cnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3LgogUEFTUyBuZXcgSW1hZ2VEYXRh
KGltYWdlRGF0YS5kYXRhLCAxMCwgLTEwKSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6
IHNoIHZhbHVlIGlzIG5vdCBlcXVhbCB0byBoZWlnaHQuCiBQQVNTIG5ldyBJbWFnZURhdGEobmV3
IFVpbnQ4Q2xhbXBlZEFycmF5KFsxLDIsMyw0LDUsNiw3LDhdKSw1MzY4NzA5MTMsMik7IHRocmV3
IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3
LgotUEFTUyBuZXcgSW1hZ2VEYXRhKHt9LDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJl
IGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKHVu
ZGVmaW5lZCwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgnZGF0
YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBV
aW50OENsYW1wZWRBcnJheS4KLVBBU1MgbmV3IEltYWdlRGF0YSgibm9uZSIsMiwyKTsgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRh
IGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1Q
QVNTIG5ldyBJbWFnZURhdGEoMCwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1
bWVudCAxICgnZGF0YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBp
bnN0YW5jZSBvZiBVaW50OENsYW1wZWRBcnJheS4KK1BBU1MgbmV3IEltYWdlRGF0YSh7fSwyLDIp
OyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgSW1hZ2VE
YXRhKHVuZGVmaW5lZCwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgorUEFTUyBuZXcgSW1hZ2VEYXRhKCJub25lIiwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgSW1hZ2VEYXRhKDAsMiwyKTsgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEu
ZGF0YSwgMzI3NjgsIDMyNzY4KSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IExlbmd0
aCBpcyBub3QgYSBtdWx0aXBsZSBvZiBzdy4KIFBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEu
ZGF0YSwgSW5maW5pdHksIEluZmluaXR5KSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6
IExlbmd0aCBpcyBub3QgYSBtdWx0aXBsZSBvZiBzdy4KIFBBU1MgbmV3IEltYWdlRGF0YShpbWFn
ZURhdGEuZGF0YSwgTmFOLCBOYU4pIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogTGVu
Z3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3LgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzc1NDQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDUtMTUgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjcmVh
dGluZy9hY2Nlc3Npbmcvc2V0dGluZyBub24tc1JHQiBJbWFnZURhdGEgdmlhIGNhbnZhcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODQxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFj
ZS5wMy50by5wMy1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0ZSByZXN1bHQgdG8gcGFzc2lu
Zy4KKwogMjAyMS0wNS0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgb3V0cHV0IGVsZW1lbnQgZG9lc24ndCByZWFjdCBwcm9wZXJseSB0byBub2RlIHRyZWUgbXV0
YXRpb25zCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMu
dG8ucDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZh
cy8yZC5jb2xvci5zcGFjZS5wMy50by5wMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NzU0NCkK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52
YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5wMy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNSArMiw1IEBACiB0ZXN0IGdldEltYWdlRGF0
YSB3aXRoIGRpc3BsYXktcDMgYW5kIHVpbnQ4IGZyb20gZGlzcGxheSBwMyB1aW50OCBjYW52YXMK
IEFjdHVhbCBvdXRwdXQ6CiAKLUZBSUwgdGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAz
IGFuZCB1aW50OCBmcm9tIGRpc3BsYXkgcDMgdWludDggY2FudmFzIGFzc2VydF9hcHByb3hfZXF1
YWxzOiBleHBlY3RlZCA2MiArLy0gMiBidXQgZ290IDUwCitQQVNTIHRlc3QgZ2V0SW1hZ2VEYXRh
IHdpdGggZGlzcGxheS1wMyBhbmQgdWludDggZnJvbSBkaXNwbGF5IHAzIHVpbnQ4IGNhbnZhcwog
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCShyZXZp
c2lvbiAyNzc1NDQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlv
bnMJKHdvcmtpbmcgY29weSkKQEAgLTIzNTgsNiArMjM1OCw3IEBAIGZhc3QvcmVwbGFjZWQvcGRm
LWFzLWVtYmVkLXdpdGgtbm8tbWltZS0KIHdlYmtpdC5vcmcvYi8yMjQxMTIgbWVkaWEvdmlkZW8t
YXMtaW1nLW91dHB1dC1wdHMuaHRtbCBbIFRpbWVvdXQgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8y
MjU0MjMgZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIyNTQyMyBmYXN0L2NhbnZhcy9jYW52YXMt
Y29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzIyNTQyMyBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLXRleHQtYWxwaGEuaHRt
bCBbIEZhaWx1cmUgXQogCiAjIEZhaWxpbmcgYWZ0ZXIgcjI3NzA3My4KSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyNzc1NDQpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpA
QCAtNDYzMyw0ICs0NjMzLDUgQEAgd2ViZXhwb3NlZC9jb3VudGVyLXN0eWxlLWltYWdlLXN5bWJv
bHMtbgogCiBmYXN0L3RleHQvbGluZS1icmVhay13aXRoLWxvY2FsZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKLWZhc3QvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdz
LWNvbG9yU3BhY2UtZW5hYmxlZC5odG1sIFsgU2tpcCBdCisjIE5vbi1TUkdCIGNvbG9yIHNwYWNl
cyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIFdpbmRvd3MgcG9ydC4KK2Zhc3Qv
Y2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS5odG1sIFsgU2tp
cCBdCkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3Rv
cmUtYXV0b2luY3JlbWVudC10eXBlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQt
dHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc1NDQpCisrKyBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC10eXBlcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAgUEFTUyBrZXkgaXMgMwog
UEFTUyByZXF1ZXN0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIGltYWdlRGF0YS5wcmltYXJ5S2V5CiBQ
QVNTIHJlcXVlc3QucmVzdWx0LndpZHRoIGlzIGltYWdlRGF0YS53aWR0aAogUEFTUyByZXF1ZXN0
LnJlc3VsdC5oZWlnaHQgaXMgaW1hZ2VEYXRhLmhlaWdodAorUEFTUyByZXF1ZXN0LnJlc3VsdC5j
b2xvclNwYWNlIGlzIGltYWdlRGF0YS5jb2xvclNwYWNlCiBQQVNTIGtleSBpcyA0CiBQQVNTIHJl
cXVlc3QucmVzdWx0LnByaW1hcnlLZXkgaXMgZmlsZUxpc3QucHJpbWFyeUtleQogUEFTUyByZXF1
ZXN0LnJlc3VsdC5sZW5ndGggaXMgZmlsZUxpc3QubGVuZ3RoCkBAIC00MCw2ICs0MSw3IEBAIFBB
U1MgcmVxdWVzdC5yZXN1bHRbMV0udHlwZSBpcyBmaWxlLnR5cGUKIFBBU1MgcmVxdWVzdC5yZXN1
bHRbMl0ucHJpbWFyeUtleSBpcyBpbWFnZURhdGEucHJpbWFyeUtleQogUEFTUyByZXF1ZXN0LnJl
c3VsdFsyXS53aWR0aCBpcyBpbWFnZURhdGEud2lkdGgKIFBBU1MgcmVxdWVzdC5yZXN1bHRbMl0u
aGVpZ2h0IGlzIGltYWdlRGF0YS5oZWlnaHQKK1BBU1MgcmVxdWVzdC5yZXN1bHRbMl0uY29sb3JT
cGFjZSBpcyBpbWFnZURhdGEuY29sb3JTcGFjZQogUEFTUyByZXF1ZXN0LnJlc3VsdFszXS5wcmlt
YXJ5S2V5IGlzIGZpbGVMaXN0LnByaW1hcnlLZXkKIFBBU1MgcmVxdWVzdC5yZXN1bHRbM10ubGVu
Z3RoIGlzIGZpbGVMaXN0Lmxlbmd0aAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQo=
</data>
<flag name="commit-queue"
          id="449799"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428787</attachid>
            <date>2021-05-16 07:16:43 -0700</date>
            <delta_ts>2021-05-16 08:21:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225841-20210515193752.patch</filename>
            <type>text/plain</type>
            <size>90515</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBAQAorMjAyMS0wNS0xNSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNyZWF0
aW5nL2FjY2Vzc2luZy9zZXR0aW5nIG5vbi1zUkdCIEltYWdlRGF0YSB2aWEgY2FudmFzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU4NDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZh
cy9jYW52YXMtY29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbAorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBhY2Nlc3Npbmcgbm9uLXNSR0IgKG9ubHkgRGlzcGxheVAzIGZvciBu
b3cgZHVlCisgICAgICAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uLCBidXQgdGhlIHN1cHBvcnQgaXMg
Z2VuZXJhbCkgcGl4ZWwgZGF0YSBpbgorICAgICAgICBIVE1MIGNhbnZhcy4KKworICAgICAgICBV
cGRhdGVzIEltYWdlRGF0YSBjb25zdHJ1Y3RvcnMgYW5kIENhbnZhc0ltYWdlRGF0YSBvcGVyYXRp
b25zIHRvIAorICAgICAgICB0YWtlIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIGRpY3Rpb25h
cmllcywgd2hpY2ggY29udGFpbiBhbiAKKyAgICAgICAgb3B0aW9uYWwgY29sb3Igc3BhY2UgKG90
aGVyd2lzZSBkZWZhdWx0aW5nIGJhY2sgdG8gc1JHQikuIAorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YVNldHRp
bmdzLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsOiBBZGRl
ZC4KKyAgICAgICAgQWRkIG5ldyBJbWFnZURhdGFTZXR0aW5ncy5pZGwgYW5kIHJlbGF0ZWQgZmls
ZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6Cisg
ICAgICAgIEZpeGVzIEZJWE1FIGFuZCB1c2VzIFBpeGVsQnVmZmVyIGRpcmVjdGx5IHJhdGhlciB0
aGFuIGFsbG9jYXRpbmcKKyAgICAgICAgYW4gdW5uZWNlc3NhcnkgSW1hZ2VEYXRhLiBUaGlzIHdh
cyBkb25lIG5vdyBzaW5jZSB0aGUgcmVsZXZlbnQKKyAgICAgICAgSW1hZ2VEYXRhIGNvbnN0cnVj
dG9yIGhhcyBnb25lIGF3YXkuCisKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb21wdXRlRGF0YVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
YXRhOjpjb21wdXRlQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpJbWFnZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEYXRhOjpwaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURhdGE6OmRhdGFTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0
YTo6ZGVlcENsb25lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5o
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGF0YTo6d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
YXRhOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEYXRhOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6Y29sb3JTcGFjZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURhdGE6OnBpeGVsQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4K
KworICAgICAgICAtIFJld29ya2VkIEltYWdlRGF0YSB0byBubyBsb25nZXIgc3RvcmUgYSBQaXhl
bEJ1ZmZlciwgd2hpY2ggaGFzCisgICAgICAgICAgZXh0cmFuZW91cyBpbmZvcm1hdGlvbiBpbiBp
dCwgYnV0IHJhdGhlciB0byBzdG9yZSBqdXN0IHdoYXQgaXQKKyAgICAgICAgICBuZWVkcyBJbnRT
aXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4sIGFuZCBub3cgUHJlZGVmaW5lZENvbG9y
U3BhY2UuCisgICAgICAgIC0gVXBkYXRlcyBjcmVhdGUgZnVuY3Rpb25zIGZvciBuZXcgb3B0aW9u
YWwgSW1hZ2VEYXRhU2V0dGluZ3MuCisgICAgICAgIC0gQWRkcyBjcmVhdGVVbmluaXRpYWxpemVk
IHdoaWNoIGZvbGxvd3Mgc3BlYyBsYW5ndWFnZSBmb3IgSW1hZ2VEYXRhIGNyZWF0aW9uCisgICAg
ICAgICAgYW5kIGlzIHVzZWQgYnkgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHRvIGNyZWF0ZSBJ
bWFnZURhdGEgb2JqZWN0cyBvZiB3aXRoCisgICAgICAgICAgdGhlIHJpZ2h0IGNvbG9yIHNwYWNl
cywgYWxsb3dpbmcgZm9yIGZhbGxiYWNrIHRvIHRoZSBjYW52YXMnIG93biBjb2xvciBzcGFjZQor
ICAgICAgICAgIHdoZW4gbm8gSW1hZ2VEYXRhU2V0dGluZ3MgY29sb3Igc3BhY2UgaXMgcHJvdmlk
ZWQuIEl0IGlzIHVuaW5pdGlhbGl6ZWQgYW5kCisgICAgICAgICAgdGhlcmVmb3JlIHJlcXVpcmVz
IHRoZSBjbGllbnQgdG8gaW5pdGlhbGl6ZSB0aGUgZGF0YSB0byBhbGxvdyBmb3Igc3VwcG9ydCBm
b3IKKyAgICAgICAgICBubyBhbHBoYSBzdXBwb3J0IGluIHRoZSBmdXR1cmUsIHdoaWNoIHJlcXVp
cmVzIGEgbm9uLXplcm8gaW5pdGlhbGl6YXRpb24gcGF0dGVybi4KKworICAgICAgICAqIGh0bWwv
SW1hZ2VEYXRhLmlkbDoKKyAgICAgICAgQWRkIG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIHBh
cmFtZXRlcnMgYW5kIHRoZSBuZXcgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCisKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEuaWRsOgorICAgICAgICBBZGQgb3B0aW9uYWwgSW1h
Z2VEYXRhU2V0dGluZ3MgcGFyYW1ldGVycy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVF
bXB0eUltYWdlRGF0YSk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gaW5pdGlhbGl6ZSB0aGUgSW1h
Z2VEYXRhIGJ1ZmZlci4gUmlnaHQgbm93IGl0IGFsd2F5cyBjYWxscworICAgICAgICB6ZXJvRmls
bCgpLCBidXQgaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIG5lZWQgdG8gZG8gbW9yZS4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVJ
bWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgdG8gYWNjb3VudCBmb3IgdGhpcyBmdW5j
dGlvbiBiZWluZyBhYmxlIHRvIHRocm93IGFuIGV4Y2VwdGlvbiAod2hlbiAKKyAgICAgICAgb3V0
IG9mIG1lbW9yeSkgYW5kIHVzZSB0aGUgbmV3IGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlhbGl6
ZUVtcHR5SW1hZ2VEYXRhCisgICAgICAgIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciBzcGFj
ZWQgSW1hZ2VEYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpjcmVhdGVJbWFnZURhdGEgY29uc3QpOgorICAgICAgICBVcGRhdGUgZm9yIG5ldyBv
cHRpb25hbCBJbWFnZURhdGFTZXR0aW5ncyBhbmQgdXNlIHRoZSBuZXcgY3JlYXRlVW5pbml0aWFs
aXplZAorICAgICAgICBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEgdG8gY3JlYXRlIGEgY29ycmVj
dGx5IGNvbG9yIHNwYWNlZCBJbWFnZURhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OmdldEltYWdlRGF0YSBjb25zdCk6CisgICAgICAgIE1vdmVz
IHBhcmFtZXRlciBjaGVja3MgdG8gdGhlIGJlZ2luaW5nIHRvIG1hdGNoIHRoZSBzcGVjLCBhbmQg
dXNlcyBuZXcgCisgICAgICAgIGNyZWF0ZVVuaW5pdGlhbGl6ZWQvaW5pdGlhbGl6ZUVtcHR5SW1h
Z2VEYXRhIHRvIGNyZWF0ZSBhIGNvcnJlY3RseSBjb2xvciAKKyAgICAgICAgc3BhY2VkIEltYWdl
RGF0YS4gQWxzbywgdXNlIHRoZSBJbWFnZURhdGEncyBjb2xvciBzcGFjZSB3aGVuIGdldHRpbmcK
KyAgICAgICAgdGhlIHBpeGVsIGJ1ZmZlciB0byBhY3R1YWxseSByZXR1cm4gdGhlIHJpZ2h0IGRh
dGEhCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmluZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oOgorICAgICAgICBBZGQgY29udmVyc2lvbiBm
dW5jdGlvbiBmcm9tIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0byBQcmVkZWZpbmVkQ29sb3JTcGFj
ZS4KKyAgICAgICAgU2luY2UgRGVzdGluYXRpb25Db2xvclNwYWNlIGlzIGEgc3VwZXJzZXQgb2Yg
UHJlZGVmaW5lZENvbG9yU3BhY2UsIHRoaXMgY2FuCisgICAgICAgIGZhaWwsIHNvIHRoaXMgY29u
dmVyc2lvbiByZXR1cm5zIGFuIE9wdGlvbmFsLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
Lmg6CisgICAgICAgIFN0dWIgb3V0IGluc3BlY3RvciBzdXBwb3J0IGZvciBJbWFnZURhdGFTZXR0
aW5ncy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgVXNlIHRoZSBJbWFnZUJ1ZmZlcidzIGFjdHVhbCBjb2xvciBzcGFj
ZSBhcyB0aGUgc291cmNlIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFuIGhhcmQgY29k
aW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCisgICAgICAg
IHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVtcG9yYXJ5IHZh
cmlhYmxlcy4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhl
bEJ1ZmZlcik6CisgICAgICAgIFVzZSB0aGUgSW1hZ2VCdWZmZXIncyBhY3R1YWwgY29sb3Igc3Bh
Y2UgYXMgdGhlIGRlc3RpbmF0aW9uIGNvbG9yIHNwYWNlCisgICAgICAgIHJhdGhlciB0aGFuIGhh
cmQgY29kaW5nIHNSR0IuIFRoaXMgYWxsb3dzIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCisg
ICAgICAgIHRvIHRha2UgcGxhY2UuIEFsc28gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdGVtcG9y
YXJ5IHZhcmlhYmxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OlBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6
OnRha2VEYXRhKToKKyAgICAgICAgQWRkIGEgZmV3IGhlbHBlcnMgdG8gYWxsb3cgY3JlYXRpb25n
IHRvL2Zyb20gUGl4ZWxCdWZmZXIKKyAgICAgICAgYSBiaXQgZWFzaWVyLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgRml4IGluY29y
cmVjdCBhc3NlcnRpb24uIFdlIHdhbnQgdG8gYXNzZXJ0IHRoYXQgdGhlcmUgaXMgbm8gZXJyb3Is
IG5vdCB0aGF0CisgICAgICAgIHRoZXJlIGlzIG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQpOgorICAgICAgICBTdG9wIGhhcmQgY29kaW5nIFNSR0IgZm9yIFBpeGVsQnVmZmVyIGNvbG9y
IHNwYWNlcyBhbmQgdXNlIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICBjb2xvciBzcGFjZSBmb3Ig
dGhlIHRhc2suIFdlIHN0aWxsIGRvIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gdGhyb3VnaCBJbWFn
ZUJ1ZmZlcgorICAgICAgICBzbyB3ZSBzaG91bGQgY29tZSBiYWNrIGFuZCBzaW1wbGlmeSBjb2Rl
IGhlcmUgdG8gbm90IGFsd2F5cyByZXF1aXJlIHRoYXQuCisKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZh
aWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bG9hZEFydHdvcmtJbWFnZSk6
CisgICAgICAgIFVwZGF0ZSB0byBzcGVjaWZ5IGEgY29sb3Igc3BhY2UgdG8gbWFpbnRhaW4gZXhp
c3RpbmcgYmVoYXZpb3IuCisKIDIwMjEtMDUtMTUgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtMRkNdIE1vdmUgdGFibGUgd3JhcHBlciBxdWlya3MgdG8gaXRzIG93
biBjbGFzcwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDE3LDYgKzEw
MTcsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGh0bWwvSW1hZ2VCaXRt
YXAuaWRsCiAgICAgaHRtbC9JbWFnZUJpdG1hcE9wdGlvbnMuaWRsCiAgICAgaHRtbC9JbWFnZURh
dGEuaWRsCisgICAgaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5pZGwKICAgICBodG1sL01lZGlhQ29u
dHJvbGxlci5pZGwKICAgICBodG1sL01lZGlhRW5jcnlwdGVkRXZlbnQuaWRsCiAgICAgaHRtbC9N
ZWRpYUVycm9yLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDM2LDYgKzEw
MzYsNyBAQCAkKFBST0pFQ1RfRElSKS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCiAkKFBST0pF
Q1RfRElSKS9odG1sL0ltYWdlQml0bWFwLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9JbWFnZUJp
dG1hcE9wdGlvbnMuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1sL0ltYWdlRGF0YS5pZGwKKyQoUFJP
SkVDVF9ESVIpL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaWRsCiAkKFBST0pFQ1RfRElSKS9odG1s
L01lZGlhQ29udHJvbGxlci5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvTWVkaWFFbmNyeXB0ZWRF
dmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvTWVkaWFFcnJvci5pZGwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lv
biAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTE4MCw2ICsxMTgwLDggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHRTZXR0aW5ncy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ltYWdlRGF0YS5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VE
YXRhLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW1h
Z2VEYXRhU2V0dGluZ3MuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0ltYWdlRGF0YVNldHRpbmdzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbWFnZVNtb290aGluZ1F1YWxp
dHkuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNJbm5l
ckhUTUwuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI3
NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTg5MCw2ICs4OTAsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29y
ZSkvaHRtbC9JbWFnZUJpdG1hcC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9JbWFnZUJpdG1h
cE9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSW1hZ2VEYXRhLmlkbCBcCisgICAg
JChXZWJDb3JlKS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9o
dG1sL01lZGlhQ29udHJvbGxlci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9NZWRpYUVuY3J5
cHRlZEV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL01lZGlhRXJyb3IuaWRsIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzIwNyw2ICszMjA3LDcgQEAgSlNJbWFnZUJpdG1h
cE9wdGlvbnMuY3BwCiBKU0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKIEpTSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0U2V0dGluZ3MuY3BwCiBKU0ltYWdlRGF0YS5jcHAKK0pTSW1h
Z2VEYXRhU2V0dGluZ3MuY3BwCiBKU0ltYWdlU21vb3RoaW5nUXVhbGl0eS5jcHAKIEpTSW5wdXRF
dmVudC5jcHAKIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDk1LDYgKzQwOTUsNyBAQAogCQlCQzk2
REI0MzBGM0E4ODBFMDA1NzNDQjMgLyogUmVuZGVyQm94TW9kZWxPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTZEQjQyMEYzQTg4MEUwMDU3
M0NCMyAvKiBSZW5kZXJCb3hNb2RlbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDOTdFMjNBMTA5MTQ0OTUwMDEwRDM2MSAvKiBIVE1M
QWxsQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM5N0UyMzgxMDkxNDQ5NTAwMTBEMzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmggKi87
IH07CiAJCUJDOTdFNDEzMTA5MTU0RkEwMDEwRDM2MSAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk3RTQxMTEw
OTE1NEZBMDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5oICovOyB9OworCQlCQ0EwODhG
NTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTA4OEYyMjY0RTFCRjkwMDNFMkE2QyAv
KiBJbWFnZURhdGFTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDQTE2OUEzMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNh
cHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0ExNjlBMTBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVu
dC5oICovOyB9OwogCQlCQ0EyNTcxNTEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlv
bkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0EyNTcxNDEyOTNDMDEwMDA3QTI2M0QgLyogVmVydGljYWxQb3NpdGlvbkNhY2hlLmggKi87IH07
CiAJCUJDQTJCMDYxMTA1MDQ3NjAwMDQzQkQxQyAvKiBVc2VyU2NyaXB0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EyQjA2MDEwNTA0NzVGMDA0M0JE
MUMgLyogVXNlclNjcmlwdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xNDMxNSw2ICsxNDMxNiw4IEBACiAJCUJDOUE2MTQyMTQ2ODU5RDkwMDYw
NTdGRCAvKiBFdmVudE5hbWVzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50TmFtZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDOUE2MTQ1MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX2V2ZW50X2Zh
Y3RvcnkucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gbWFrZV9ldmVudF9mYWN0b3J5LnBsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzlBNjE0NjE0Njg1OUQ5MDA2MDU3RkQgLyogbWFrZV9u
YW1lcy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSBtYWtlX25hbWVzLnBsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQ0EwODhGMjI2NEUxQkY5MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGlu
Z3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEYXRhU2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkNBMDg4RjQyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRp
bmdzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBJbWFnZURhdGFTZXR0aW5ncy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQTE2OUEwMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25F
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxU
YWJsZUNhcHRpb25FbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNB
MTY5QTEwQkZENTVCNDAwMTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBMjU3MTQxMjkzQzAxMDAwN0EyNjNE
IC8qIFZlcnRpY2FsUG9zaXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWZXJ0aWNhbFBvc2l0aW9uQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIzOTI2LDYgKzIzOTI5LDggQEAKIAkJCQlBNzc5NzkxMzBENkI5RDBDMDAzODUxQjkgLyog
SW1hZ2VEYXRhLmNwcCAqLywKIAkJCQlBNzc5NzkxNDBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VE
YXRhLmggKi8sCiAJCQkJQTc3OTc5MTUwRDZCOUQwQzAwMzg1MUI5IC8qIEltYWdlRGF0YS5pZGwg
Ki8sCisJCQkJQkNBMDg4RjIyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmgg
Ki8sCisJCQkJQkNBMDg4RjQyNjRFMUJGOTAwM0UyQTZDIC8qIEltYWdlRGF0YVNldHRpbmdzLmlk
bCAqLywKIAkJCQk5NzIwNUFCMTEyMzkyOTEwMDBCMTczODAgLyogSW1hZ2VEb2N1bWVudC5jcHAg
Ki8sCiAJCQkJOTcyMDVBQjIxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCAqLywK
IAkJCQlGNTVCM0Q4RDEyNTFGMTJEMDAzRUYyNjkgLyogSW1hZ2VJbnB1dFR5cGUuY3BwICovLApA
QCAtMzI4ODcsNiArMzI4OTIsNyBAQAogCQkJCUIyQTEwRDkxMEIzODE4QkQwMDA5OUFBNCAvKiBJ
bWFnZUJ1ZmZlclBpcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2
NkY1NSAvKiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzc5
NzkxQTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
Q0EwODhGNTI2NEUxQzA4MDAzRTJBNkMgLyogSW1hZ2VEYXRhU2V0dGluZ3MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEMTlGRUE4MUY1NzM5NzIwMDBDNDJGQiAvKiBJbWFnZURlY29kZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEMTlGRUFFMUY1NzRCNkQwMDBDNDJGQiAvKiBJbWFnZURlY29kZXJB
VkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTVCODdFRDFDQUFGMEFCMDAzNDk0MjUgLyog
SW1hZ2VEZWNvZGVyQ0cuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiAy
Nzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQxLDMwICszMTQxLDI0IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBh
cnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciks
IDAsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICBpZiAoIWFycmF5KSB7Ci0g
ICAgICAgICAgICBmYWlsKCk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwotICAgICAg
ICB9Ci0KICAgICAgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSA9IEludFNpemUobG9naWNhbFdpZHRo
LCBsb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgSW50U2l6ZSBpbWFnZURhdGFTaXplID0gbG9naWNh
bFNpemU7CiAgICAgICAgIGltYWdlRGF0YVNpemUuc2NhbGUocmVzb2x1dGlvblNjYWxlKTsKIAot
ICAgICAgICAvLyBGSVhNRTogQ3JlYXRpbmcgdGhpcyBJbWFnZURhdGEgaXMgbm90IG5lY2Vzc2Fy
eS4gV2Ugc2hvdWxkIHNraXAgcmlnaHQgdG8gY3JlYXRpbmcgYSBQaXhlbEJ1ZmZlciBkaXJlY3Rs
eS4KLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZURhdGFT
aXplLCBhcnJheS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgaWYgKCFpbWFnZURhdGEpIHsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCks
IGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2Nh
bGUpOworICAgICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICAgICAgZmFpbCgpOwogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVy
ID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0
RnJvbUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QpLCBsb2dpY2FsU2l6ZSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlKTsKLSAgICAgICAgaWYgKCFi
dWZmZXIpIHsKKyAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVm
ZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBpbWFnZURhdGFTaXplLCBhcnJheUJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewogICAgICAgICAgICAgZmFp
bCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAg
IGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIoaW1hZ2VEYXRhLT5waXhlbEJ1ZmZlcigpLCB7IEludFBv
aW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOworICAgICAgICBidWZmZXItPnB1dFBpeGVsQnVm
ZmVyKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgeyBJbnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6
ZSB9KTsKIAogICAgICAgICBhdXRvIGJpdG1hcCA9IEltYWdlQml0bWFwOjpjcmVhdGUoSW1hZ2VC
aXRtYXBCYWNraW5nKFdURk1vdmUoYnVmZmVyKSwgT3B0aW9uU2V0PFNlcmlhbGl6YXRpb25TdGF0
ZT46OmZyb21SYXcoc2VyaWFsaXphdGlvblN0YXRlKSkpOwogICAgICAgICByZXR1cm4gZ2V0SlNW
YWx1ZShiaXRtYXApOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAkocmV2aXNpb24g
Mjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2hlY2tlZDx1
bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IEltYWdlRGF0YTo6ZGF0YVNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKK3N0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gY29tcHV0
ZURhdGFTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQ2hlY2tlZDx1bnNpZ25lZCwg
UmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWREYXRhU2l6ZSA9IDQ7CiAgICAgY2hlY2tlZERhdGFTaXpl
ICo9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplLndpZHRoKCkpOwpAQCAtNDMsNTcgKzQzLDg1
IEBAIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBJbWFnZUQKICAgICByZXR1cm4g
Y2hlY2tlZERhdGFTaXplOwogfQogCitQcmVkZWZpbmVkQ29sb3JTcGFjZSBJbWFnZURhdGE6OmNv
bXB1dGVDb2xvclNwYWNlKE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5ncywgUHJl
ZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UpCit7CisgICAgaWYgKHNldHRpbmdz
ICYmIHNldHRpbmdzLT5jb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gKnNldHRpbmdzLT5jb2xv
clNwYWNlOworICAgIHJldHVybiBkZWZhdWx0Q29sb3JTcGFjZTsKK30KKwogUmVmPEltYWdlRGF0
YT4gSW1hZ2VEYXRhOjpjcmVhdGUoUGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlcikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoV1RGTW92ZShwaXhlbEJ1ZmZlcikpKTsKKyAg
ICBhdXRvIGNvbG9yU3BhY2UgPSB0b1ByZWRlZmluZWRDb2xvclNwYWNlKHBpeGVsQnVmZmVyLmZv
cm1hdCgpLmNvbG9yU3BhY2UpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShw
aXhlbEJ1ZmZlci5zaXplKCksIHBpeGVsQnVmZmVyLnRha2VEYXRhKCksICpjb2xvclNwYWNlKSk7
CiB9CiAKIFJlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKE9wdGlvbmFsPFBpeGVs
QnVmZmVyPiYmIHBpeGVsQnVmZmVyKQogewogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBJbWFnZURhdGE6OmNyZWF0ZShXVEZNb3ZlKCpw
aXhlbEJ1ZmZlcikpOworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZSgqcGl4ZWxCdWZmZXIpKTsK
IH0KIAogUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKIHsKLSAgICBhdXRvIGRhdGFTaXplID0gSW1hZ2VEYXRhOjpkYXRhU2l6ZShzaXplKTsK
KyAgICBhdXRvIGRhdGFTaXplID0gY29tcHV0ZURhdGFTaXplKHNpemUpOwogICAgIGlmIChkYXRh
U2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8g
Ynl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0
YVNpemUudW5zYWZlR2V0KCkpOwogICAgIGlmICghYnl0ZUFycmF5KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VO
b25OdWxsKCkgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplLCBi
eXRlQXJyYXkucmVsZWFzZU5vbk51bGwoKSwgUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0IpKTsK
IH0KIAotUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSkKK1JlZlB0cjxJbWFnZURh
dGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxVaW50OENsYW1w
ZWRBcnJheT4mJiBieXRlQXJyYXksIFByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7
Ci0gICAgYXV0byBkYXRhU2l6ZSA9IEltYWdlRGF0YTo6ZGF0YVNpemUoc2l6ZSk7Ci0gICAgaWYg
KGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBkYXRhU2l6ZS51bnNhZmVHZXQoKSA+IGJ5dGVB
cnJheS0+bGVuZ3RoKCkpCisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXpl
KTsKKyAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplLnVuc2FmZUdl
dCgpICE9IGJ5dGVBcnJheS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCIH0sIHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSB9KSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSwgY29sb3JT
cGFjZSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gSW1hZ2VEYXRhOjpjcmVh
dGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoKQorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+
IEltYWdlRGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCByb3dzLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xvclNwYWNlLCBPcHRp
b25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpCit7CisgICAgSW50U2l6ZSBzaXplKHJv
d3MsIHBpeGVsc1BlclJvdyk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShz
aXplKTsKKyAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgIkNhbm5vdCBhbGxvY2F0ZSBhIGJ1ZmZlciBvZiB0aGlz
IHNpemUiX3MgfTsKKworICAgIGF1dG8gYnl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YVNpemUudW5zYWZlR2V0KCkpOworICAgIGlmICghYnl0
ZUFycmF5KSB7CisgICAgICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgbmVlZCB0byBiZSBhICJyZWFs
IiBvdXQgb2YgbWVtb3J5IGVycm9yIHdpdGggc2V0T3V0T2ZNZW1vcnlFcnJvciBjYWxsZWQgb24g
aXQ/CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiT3V0IG9mIG1lbW9y
eSJfcyB9OworICAgIH0KKworICAgIGF1dG8gY29sb3JTcGFjZSA9IGNvbXB1dGVDb2xvclNwYWNl
KHNldHRpbmdzLCBkZWZhdWx0Q29sb3JTcGFjZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW1hZ2VEYXRhKHNpemUsIGJ5dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpLCBjb2xvclNwYWNlKSk7
Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZSh1bnNp
Z25lZCBzdywgdW5zaWduZWQgc2gsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiBzZXR0aW5n
cykKIHsKICAgICBpZiAoIXN3IHx8ICFzaCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
ZGV4U2l6ZUVycm9yIH07CisKICAgICBJbnRTaXplIHNpemUoc3csIHNoKTsKLSAgICBhdXRvIGRh
dGFTaXplID0gSW1hZ2VEYXRhOjpkYXRhU2l6ZShzaXplKTsKKyAgICBhdXRvIGRhdGFTaXplID0g
Y29tcHV0ZURhdGFTaXplKHNpemUpOwogICAgIGlmIChkYXRhU2l6ZS5oYXNPdmVyZmxvd2VkKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAiQ2Fubm90IGFsbG9jYXRl
IGEgYnVmZmVyIG9mIHRoaXMgc2l6ZSJfcyB9OworCiAgICAgYXV0byBieXRlQXJyYXkgPSBVaW50
OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChkYXRhU2l6ZS51bnNhZmVHZXQo
KSk7CiAgICAgaWYgKCFieXRlQXJyYXkpIHsKICAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyBu
ZWVkIHRvIGJlIGEgInJlYWwiIG91dCBvZiBtZW1vcnkgZXJyb3Igd2l0aCBzZXRPdXRPZk1lbW9y
eUVycm9yIGNhbGxlZCBvbiBpdD8KICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJy
b3IsICJPdXQgb2YgbWVtb3J5Il9zIH07CiAgICAgfQogICAgIGJ5dGVBcnJheS0+emVyb0ZpbGwo
KTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSkp
OworCisgICAgYXV0byBjb2xvclNwYWNlID0gY29tcHV0ZUNvbG9yU3BhY2Uoc2V0dGluZ3MpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YShzaXplLCBieXRlQXJyYXkucmVsZWFz
ZU5vbk51bGwoKSwgY29sb3JTcGFjZSkpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRh
Pj4gSW1hZ2VEYXRhOjpjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmIGJ5dGVBcnJheSwg
dW5zaWduZWQgc3csIE9wdGlvbmFsPHVuc2lnbmVkPiBzaCkKK0V4Y2VwdGlvbk9yPFJlZjxJbWFn
ZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFy
cmF5LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBPcHRpb25hbDxJbWFnZURh
dGFTZXR0aW5ncz4gc2V0dGluZ3MpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYnl0ZUFycmF5
LT5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggJSA0KQpAQCAtMTA3LDIyICsx
MzUsMjggQEAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6YwogICAgIGlm
IChzaCAmJiBzaC52YWx1ZSgpICE9IGhlaWdodCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEluZGV4U2l6ZUVycm9yLCAic2ggdmFsdWUgaXMgbm90IGVxdWFsIHRvIGhlaWdodCJfcyB9Owog
Ci0gICAgYXV0byByZXN1bHQgPSBjcmVhdGUoSW50U2l6ZShzdywgaGVpZ2h0KSwgV1RGTW92ZShi
eXRlQXJyYXkpKTsKLSAgICBpZiAoIXJlc3VsdCkKKyAgICBJbnRTaXplIHNpemUoc3csIGhlaWdo
dCk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGNvbXB1dGVEYXRhU2l6ZShzaXplKTsKKyAgICBpZiAo
ZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpIHx8IGRhdGFTaXplLnVuc2FmZUdldCgpICE9IGJ5dGVB
cnJheS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yIH07
Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOworCisgICAgYXV0byBjb2xvclNw
YWNlID0gY29tcHV0ZUNvbG9yU3BhY2Uoc2V0dGluZ3MpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEltYWdlRGF0YShzaXplLCBXVEZNb3ZlKGJ5dGVBcnJheSksIGNvbG9yU3BhY2UpKTsKIH0K
IAotSW1hZ2VEYXRhOjpJbWFnZURhdGEoUGl4ZWxCdWZmZXImJiBwaXhlbEJ1ZmZlcikKLSAgICA6
IG1fcGl4ZWxCdWZmZXIoV1RGTW92ZShwaXhlbEJ1ZmZlcikpCitJbWFnZURhdGE6OkltYWdlRGF0
YShjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJiBkYXRh
LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorICAgIDogbV9zaXplKHNpemUpCisg
ICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKKyAgICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNl
KQogewogfQogCiBJbWFnZURhdGE6On5JbWFnZURhdGEoKSA9IGRlZmF1bHQ7CiAKLVJlZjxJbWFn
ZURhdGE+IEltYWdlRGF0YTo6ZGVlcENsb25lKCkgY29uc3QKK1BpeGVsQnVmZmVyIEltYWdlRGF0
YTo6cGl4ZWxCdWZmZXIoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
RGF0YShtX3BpeGVsQnVmZmVyLmRlZXBDbG9uZSgpKSk7CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIHRvRGVzdGluYXRpb25Db2xvclNwYWNlKG1fY29sb3JTcGFjZSkgfTsKKyAg
ICByZXR1cm4geyBmb3JtYXQsIG1fc2l6ZSwgbV9kYXRhLmdldCgpIH07CiB9CiAKIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEltYWdlRGF0YSYgaW1hZ2VEYXRh
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSwx
MiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUg
IkltYWdlRGF0YVNldHRpbmdzLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBp
eGVsQnVmZmVyLmgiCisjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsMjkgKzQzLDMyIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEltYWdlRGF0YT4gY3JlYXRlKFBpeGVs
QnVmZmVyJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBj
cmVhdGUoT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIFJl
ZjxVaW50OENsYW1wZWRBcnJheT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNy
ZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNp
Z25lZD4gc2gpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBj
cmVhdGUoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
SW1hZ2VEYXRhPj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCByb3dzLCB1bnNpZ25lZCBw
aXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xvclNwYWNlLCBPcHRp
b25hbDxJbWFnZURhdGFTZXR0aW5ncz4gPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVkIHN3
LCB1bnNpZ25lZCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZShSZWY8VWlu
dDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNpZ25lZD4gc2gsIE9w
dGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPik7CisKICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VE
YXRhKCk7CiAKLSAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9waXhl
bEJ1ZmZlci5zaXplKCk7IH0KLSAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3BpeGVs
QnVmZmVyLnNpemUoKS53aWR0aCgpOyB9Ci0gICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGl4ZWxCdWZmZXIuc2l6ZSgpLmhlaWdodCgpOyB9CisgICAgc3RhdGljIFByZWRlZmluZWRD
b2xvclNwYWNlIGNvbXB1dGVDb2xvclNwYWNlKE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPiwg
UHJlZGVmaW5lZENvbG9yU3BhY2UgZGVmYXVsdENvbG9yU3BhY2UgPSBQcmVkZWZpbmVkQ29sb3JT
cGFjZTo6U1JHQik7CiAKLSAgICBVaW50OENsYW1wZWRBcnJheSYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGl4ZWxCdWZmZXIuZGF0YSgpOyB9CisgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogCi0gICAgUmVmPEltYWdlRGF0YT4gZGVlcENsb25lKCkg
Y29uc3Q7CisgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7IH0K
KyAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9CisgICAg
VWludDhDbGFtcGVkQXJyYXkmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0K
KyAgICBQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xvclNwYWNlOyB9CiAKLSAgICBjb25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX3BpeGVsQnVmZmVyOyB9CisgICAgUGl4ZWxCdWZmZXIgcGl4ZWxCdWZmZXIo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBJbWFnZURhdGEoUGl4ZWxCdWZmZXIm
Jik7Ci0KLSAgICBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGRhdGFT
aXplKGNvbnN0IEludFNpemUmKTsKKyAgICBleHBsaWNpdCBJbWFnZURhdGEoY29uc3QgSW50U2l6
ZSYsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmLCBQcmVkZWZpbmVkQ29sb3JTcGFjZSk7
CiAKLSAgICBQaXhlbEJ1ZmZlciBtX3BpeGVsQnVmZmVyOworICAgIEludFNpemUgbV9zaXplOwor
ICAgIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBtX2RhdGE7CisgICAgUHJlZGVmaW5lZENv
bG9yU3BhY2UgbV9jb2xvclNwYWNlOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEltYWdlRGF0YSYpOworV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgSW1h
Z2VEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEYXRhLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5pZGwJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEYXRhLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDEwICszMiwxMSBAQAogICAg
IEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUK
IF0gaW50ZXJmYWNlIEltYWdlRGF0YSB7Ci0gICAgY29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBz
dywgdW5zaWduZWQgbG9uZyBzaCk7Ci0gICAgY29uc3RydWN0b3IoVWludDhDbGFtcGVkQXJyYXkg
ZGF0YSwgdW5zaWduZWQgbG9uZyBzdywgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBzaCk7CisgICAg
Y29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBzdywgdW5zaWduZWQgbG9uZyBzaCwgb3B0aW9uYWwg
SW1hZ2VEYXRhU2V0dGluZ3Mgc2V0dGluZ3MpOworICAgIGNvbnN0cnVjdG9yKFVpbnQ4Q2xhbXBl
ZEFycmF5IGRhdGEsIHVuc2lnbmVkIGxvbmcgc3csIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgc2gs
IG9wdGlvbmFsIEltYWdlRGF0YVNldHRpbmdzIHNldHRpbmdzKTsKIAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIGhlaWdodDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVWludDhDbGFtcGVkQXJy
YXkgZGF0YTsKKyAgICBbRW5hYmxlZEJ5U2V0dGluZz1DYW52YXNDb2xvclNwYWNlXSByZWFkb25s
eSBhdHRyaWJ1dGUgUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JTcGFjZTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGFTZXR0aW5ncy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcmVk
ZWZpbmVkQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBJbWFnZURhdGFTZXR0aW5ncyB7CisgICAgT3B0aW9uYWw8
UHJlZGVmaW5lZENvbG9yU3BhY2U+IGNvbG9yU3BhY2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlkbAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YVNldHRpbmdzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvY2FudmFzLmh0bWwjaW1hZ2VkYXRhc2V0
dGluZ3MKK2RpY3Rpb25hcnkgSW1hZ2VEYXRhU2V0dGluZ3MgeworICAgIFtFbmFibGVkQnlTZXR0
aW5nPUNhbnZhc0NvbG9yU3BhY2VdIFByZWRlZmluZWRDb2xvclNwYWNlIGNvbG9yU3BhY2U7Cit9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzSW1hZ2VEYXRhLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNJbWFnZURhdGEu
aWRsCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNJbWFnZURhdGEuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDkgKzI2LDkgQEAKIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2NhbnZhcy5odG1sI2NhbnZhc2ltYWdlZGF0
YQogaW50ZXJmYWNlIG1peGluIENhbnZhc0ltYWdlRGF0YSB7CiAgICAgLy8gcGl4ZWwgbWFuaXB1
bGF0aW9uCi0gICAgSW1hZ2VEYXRhIGNyZWF0ZUltYWdlRGF0YShbRW5mb3JjZVJhbmdlXSBsb25n
IHN3LCBbRW5mb3JjZVJhbmdlXSBsb25nIHNoKTsKKyAgICBJbWFnZURhdGEgY3JlYXRlSW1hZ2VE
YXRhKFtFbmZvcmNlUmFuZ2VdIGxvbmcgc3csIFtFbmZvcmNlUmFuZ2VdIGxvbmcgc2gsIG9wdGlv
bmFsIEltYWdlRGF0YVNldHRpbmdzIHNldHRpbmdzKTsKICAgICBJbWFnZURhdGEgY3JlYXRlSW1h
Z2VEYXRhKEltYWdlRGF0YSBpbWFnZWRhdGEpOwotICAgIEltYWdlRGF0YSBnZXRJbWFnZURhdGEo
W0VuZm9yY2VSYW5nZV0gbG9uZyBzeCwgW0VuZm9yY2VSYW5nZV0gbG9uZyBzeSwgW0VuZm9yY2VS
YW5nZV0gbG9uZyBzdywgW0VuZm9yY2VSYW5nZV0gbG9uZyBzaCk7CisgICAgSW1hZ2VEYXRhIGdl
dEltYWdlRGF0YShbRW5mb3JjZVJhbmdlXSBsb25nIHN4LCBbRW5mb3JjZVJhbmdlXSBsb25nIHN5
LCBbRW5mb3JjZVJhbmdlXSBsb25nIHN3LCBbRW5mb3JjZVJhbmdlXSBsb25nIHNoLCBvcHRpb25h
bCBJbWFnZURhdGFTZXR0aW5ncyBzZXR0aW5ncyk7CiAgICAgdW5kZWZpbmVkIHB1dEltYWdlRGF0
YShJbWFnZURhdGEgaW1hZ2VkYXRhLCBbRW5mb3JjZVJhbmdlXSBsb25nIGR4LCBbRW5mb3JjZVJh
bmdlXSBsb25nIGR5KTsKICAgICB1bmRlZmluZWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSBpbWFn
ZWRhdGEsIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZHgsIFtFbmZvcmNlUmFuZ2VdIGxvbmcgZHksIFtF
bmZvcmNlUmFuZ2VdIGxvbmcgZGlydHlYLCBbRW5mb3JjZVJhbmdlXSBsb25nIGRpcnR5WSwgW0Vu
Zm9yY2VSYW5nZV0gbG9uZyBkaXJ0eVdpZHRoLCBbRW5mb3JjZVJhbmdlXSBsb25nIGRpcnR5SGVp
Z2h0KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMjc3NTQ0KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNTIsMzkgKzIxNTIsNDEgQEAgYm9vbCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpuZWVkcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3Rh
dGljIFJlZlB0cjxJbWFnZURhdGE+IGNyZWF0ZUVtcHR5SW1hZ2VEYXRhKGNvbnN0IEludFNpemUm
IHNpemUpCitzdGF0aWMgdm9pZCBpbml0aWFsaXplRW1wdHlJbWFnZURhdGEoY29uc3QgSW1hZ2VE
YXRhJiBpbWFnZURhdGEpCiB7Ci0gICAgYXV0byBkYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoc2l6
ZSk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIGRhdGEtPmRhdGEoKS56ZXJvRmlsbCgpOwotICAg
IHJldHVybiBkYXRhOworICAgIGltYWdlRGF0YS5kYXRhKCkuemVyb0ZpbGwoKTsKIH0KIAotUmVm
UHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlSW1hZ2VE
YXRhKEltYWdlRGF0YSYgaW1hZ2VEYXRhKSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0
YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZUltYWdlRGF0YShJbWFnZURh
dGEmIGV4aXN0aW5nSW1hZ2VEYXRhKSBjb25zdAogewotICAgIHJldHVybiBjcmVhdGVFbXB0eUlt
YWdlRGF0YShpbWFnZURhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIG5ld0ltYWdlRGF0YSA9IEltYWdl
RGF0YTo6Y3JlYXRlVW5pbml0aWFsaXplZChleGlzdGluZ0ltYWdlRGF0YS53aWR0aCgpLCBleGlz
dGluZ0ltYWdlRGF0YS5oZWlnaHQoKSwgZXhpc3RpbmdJbWFnZURhdGEuY29sb3JTcGFjZSgpKTsK
KyAgICBpZiAoIW5ld0ltYWdlRGF0YS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgaW5pdGlhbGl6
ZUVtcHR5SW1hZ2VEYXRhKG5ld0ltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKyAgICByZXR1cm4g
bmV3SW1hZ2VEYXRhOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlSW1hZ2VEYXRhKGludCBzdywgaW50IHNoKSBj
b25zdAorRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OmNyZWF0ZUltYWdlRGF0YShpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1hZ2VEYXRh
U2V0dGluZ3M+IHNldHRpbmdzKSBjb25zdAogewogICAgIGlmICghc3cgfHwgIXNoKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKIAotICAgIEludFNpemUgc2l6
ZSB7IHN0ZDo6YWJzKHN3KSwgc3RkOjphYnMoc2gpIH07Ci0gICAgcmV0dXJuIGNyZWF0ZUVtcHR5
SW1hZ2VEYXRhKHNpemUpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGVV
bmluaXRpYWxpemVkKHN0ZDo6YWJzKHN3KSwgc3RkOjphYnMoc2gpLCBtX3NldHRpbmdzLmNvbG9y
U3BhY2UsIHNldHRpbmdzKTsKKyAgICBpZiAoIWltYWdlRGF0YS5oYXNFeGNlcHRpb24oKSkKKyAg
ICAgICAgaW5pdGlhbGl6ZUVtcHR5SW1hZ2VEYXRhKGltYWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsK
KyAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1FeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VEYXRh
Pj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Z2V0SW1hZ2VEYXRhKGludCBzeCwgaW50
IHN5LCBpbnQgc3csIGludCBzaCkgY29uc3QKK0V4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpnZXRJbWFnZURhdGEoaW50IHN4LCBpbnQgc3ks
IGludCBzdywgaW50IHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gc2V0dGluZ3MpIGNv
bnN0CiB7CisgICAgaWYgKCFzdyB8fCAhc2gpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bmRleFNpemVFcnJvciB9OworCiAgICAgaWYgKCFjYW52YXNCYXNlKCkub3JpZ2luQ2xlYW4oKSkg
ewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb25zb2xlTWVzc2FnZShN
QUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiVW5hYmxlIHRvIGdldCBpbWFnZSBkYXRhIGZyb20gY2Fu
dmFzIGJlY2F1c2UgdGhlIGNhbnZhcyBoYXMgYmVlbiB0YWludGVkIGJ5IGNyb3NzLW9yaWdpbiBk
YXRhLiIpKTsKICAgICAgICAgY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3Vy
aXR5RXJyb3IgfTsKICAgICB9CiAKLSAgICBpZiAoIXN3IHx8ICFzaCkKLSAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07Ci0KICAgICBpZiAoc3cgPCAwKSB7CiAgICAg
ICAgIHN4ICs9IHN3OwogICAgICAgICBzdyA9IC1zdzsKQEAgLTIxOTcsMTAgKzIxOTksMTYgQEAg
RXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENhbnZhc1JlbgogICAgIEludFJlY3QgaW1h
Z2VEYXRhUmVjdCB7IHN4LCBzeSwgc3csIHNoIH07CiAKICAgICBJbWFnZUJ1ZmZlciogYnVmZmVy
ID0gY2FudmFzQmFzZSgpLmJ1ZmZlcigpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1
cm4gY3JlYXRlRW1wdHlJbWFnZURhdGEoaW1hZ2VEYXRhUmVjdC5zaXplKCkpOworICAgIGlmICgh
YnVmZmVyKSB7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGVVbmlu
aXRpYWxpemVkKGltYWdlRGF0YVJlY3Qud2lkdGgoKSwgaW1hZ2VEYXRhUmVjdC5oZWlnaHQoKSwg
bV9zZXR0aW5ncy5jb2xvclNwYWNlLCBzZXR0aW5ncyk7CisgICAgICAgIGlmICghaW1hZ2VEYXRh
Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgaW5pdGlhbGl6ZUVtcHR5SW1hZ2VEYXRhKGlt
YWdlRGF0YS5yZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIGltYWdlRGF0YTsKKyAgICB9
CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCIH07CisgICAgYXV0byBjb21wdXRlZENvbG9yU3BhY2UgPSBJbWFnZURhdGE6OmNv
bXB1dGVDb2xvclNwYWNlKHNldHRpbmdzLCBtX3NldHRpbmdzLmNvbG9yU3BhY2UpOworCisgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIHRvRGVzdGluYXRpb25Db2xvclNwYWNlKGNv
bXB1dGVkQ29sb3JTcGFjZSkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQ
aXhlbEJ1ZmZlcihmb3JtYXQsIGltYWdlRGF0YVJlY3QpOwogICAgIGlmICghcGl4ZWxCdWZmZXIp
IHsKICAgICAgICAgY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LApAQCAtMjIwOCw2ICsyMjE2LDggQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEltYWdlRGF0YT4+IENh
bnZhc1JlbgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
ICAgICB9CiAKKyAgICBBU1NFUlQocGl4ZWxCdWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0g
dG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoY29tcHV0ZWRDb2xvclNwYWNlKSk7CisKICAgICByZXR1
cm4geyB7IEltYWdlRGF0YTo6Y3JlYXRlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSkgfSB9OwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNs
dWRlICJJbWFnZURhdGFTZXR0aW5ncy5oIgogI2luY2x1ZGUgIkltYWdlU21vb3RoaW5nUXVhbGl0
eS5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCkBAIC0x
OTEsOSArMTkyLDkgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxDYW52YXNHcmFkaWVu
dD4+IGNyZWF0ZVJhZGlhbEdyYWRpZW50KGZsb2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgcjAsIGZs
b2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcjEpOwogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52
YXNQYXR0ZXJuPj4gY3JlYXRlUGF0dGVybihDYW52YXNJbWFnZVNvdXJjZSYmLCBjb25zdCBTdHJp
bmcmIHJlcGV0aXRpb24pOwogCi0gICAgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlSW1hZ2VEYXRh
KEltYWdlRGF0YSYpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZURhdGE+PiBj
cmVhdGVJbWFnZURhdGEoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdDsKLSAgICBFeGNlcHRp
b25PcjxSZWZQdHI8SW1hZ2VEYXRhPj4gZ2V0SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQg
c3csIGludCBzaCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0
ZUltYWdlRGF0YShJbWFnZURhdGEmKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VE
YXRhPj4gY3JlYXRlSW1hZ2VEYXRhKGludCB3aWR0aCwgaW50IGhlaWdodCwgT3B0aW9uYWw8SW1h
Z2VEYXRhU2V0dGluZ3M+KSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4g
Z2V0SW1hZ2VEYXRhKGludCBzeCwgaW50IHN5LCBpbnQgc3csIGludCBzaCwgT3B0aW9uYWw8SW1h
Z2VEYXRhU2V0dGluZ3M+KSBjb25zdDsKICAgICB2b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEm
LCBpbnQgZHgsIGludCBkeSk7CiAgICAgdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhJiwgaW50
IGR4LCBpbnQgZHksIGludCBkaXJ0eVgsIGludCBkaXJ0eVksIGludCBkaXJ0eVdpZHRoLCBpbnQg
ZGlydHlIZWlnaHQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZp
bmVkQ29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcmVkZWZpbmVkQ29sb3JTcGFjZS5oIgog
CiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDQgKzQ2LDIzIEBAIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3IKICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCOwogfQogCitPcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVk
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBzd2l0
Y2ggKGNvbG9yU3BhY2UpIHsKKyAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoK
KyAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCOworI2lmIEVOQUJMRShE
RVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6TGluZWFyU1JHQjoKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNl
bmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAg
IGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIHJldHVybiBQ
cmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxheVAzOworI2VuZGlmCisgICAgfQorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFj
ZS5oCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVk
ZWZpbmVkQ29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw2ICs0MCw3IEBAIGVudW0g
Y2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2UgewogfTsKIAogRGVzdGluYXRpb25Db2xvclNwYWNl
IHRvRGVzdGluYXRpb25Db2xvclNwYWNlKFByZWRlZmluZWRDb2xvclNwYWNlKTsKK09wdGlvbmFs
PFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZSk7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5jcHAJKHJldmlzaW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjgsNiArNDI4
LDEyIEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2MKICAgICByZXR1
cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6
SW1hZ2VEYXRhIH19OwogfQogCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoSW1hZ2VE
YXRhU2V0dGluZ3MmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKK30KKwogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlU21v
b3RoaW5nUXVhbGl0eSBhcmd1bWVudCkKIHsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRh
dGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OlN0cmluZyB9fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAJKHJldmlzaW9uIDI3NzU0NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRh
LmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhU2V0dGluZ3MuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
YW52YXNBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaAkocmV2aXNpb24gMjc3
NTQ0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBXZWJHTFRyYW5zZm9y
bUZlZWRiYWNrOwogY2xhc3MgV2ViR0xVbmlmb3JtTG9jYXRpb247CiBjbGFzcyBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0Owogc3RydWN0IERPTU1hdHJpeDJESW5pdDsKK3N0cnVjdCBJbWFnZURhdGFT
ZXR0aW5nczsKIGVudW0gY2xhc3MgUmVjb3JkaW5nU3dpenpsZVR5cGUgOiBpbnQ7CiBlbnVtIGNs
YXNzIENhbnZhc0RpcmVjdGlvbjsKIGVudW0gY2xhc3MgQ2FudmFzRmlsbFJ1bGU7CkBAIC0xNTAs
NiArMTUxLDcgQEAgZW51bSBJbWFnZVNtb290aGluZ1F1YWxpdHk7CiAgICAgbWFjcm8oSFRNTElt
YWdlRWxlbWVudCopIFwKICAgICBtYWNybyhJbWFnZUJpdG1hcCopIFwKICAgICBtYWNybyhJbWFn
ZURhdGEqKSBcCisgICAgbWFjcm8oSW1hZ2VEYXRhU2V0dGluZ3MmKSBcCiAgICAgbWFjcm8oSW1h
Z2VTbW9vdGhpbmdRdWFsaXR5KSBcCiAgICAgbWFjcm8oT3B0aW9uYWw8ZmxvYXQ+JikgXAogICAg
IG1hY3JvKFBhdGgyRCopIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3NTQ0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDE0ICsxMTYsMTYgQEAgVmVjdG9yPHVpbnQ4X3Q+IElt
YWdlQnVmZmVyQmFja2VuZDo6dG9CRwogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGlu
YXRpb25Gb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIHZvaWQqIGRhdGEpIGNvbnN0
CiB7CisgICAgQVNTRVJUKFBpeGVsQnVmZmVyOjpzdXBwb3J0ZWRQaXhlbEZvcm1hdChkZXN0aW5h
dGlvbkZvcm1hdC5waXhlbEZvcm1hdCkpOworCiAgICAgYXV0byBzb3VyY2VSZWN0U2NhbGVkID0g
dG9CYWNrZW5kQ29vcmRpbmF0ZXMoc291cmNlUmVjdCk7CiAKICAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShkZXN0aW5hdGlvbkZvcm1hdCwgc291cmNlUmVjdFNj
YWxlZC5zaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKLSAgICBJbnRSZWN0IHNvdXJjZVJlY3RDbGlwcGVkID0gaW50ZXJzZWN0aW9u
KGJhY2tlbmRSZWN0KCksIHNvdXJjZVJlY3RTY2FsZWQpOwotICAgIEludFJlY3QgZGVzdGluYXRp
b25SZWN0ID0geyBJbnRQb2ludDo6emVybygpLCBzb3VyY2VSZWN0Q2xpcHBlZC5zaXplKCkgfTsK
KyAgICBhdXRvIHNvdXJjZVJlY3RDbGlwcGVkID0gaW50ZXJzZWN0aW9uKGJhY2tlbmRSZWN0KCks
IHNvdXJjZVJlY3RTY2FsZWQpOworICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0IHsgSW50UG9p
bnQ6Onplcm8oKSwgc291cmNlUmVjdENsaXBwZWQuc2l6ZSgpIH07CiAKICAgICBpZiAoc291cmNl
UmVjdFNjYWxlZC54KCkgPCAwKQogICAgICAgICBkZXN0aW5hdGlvblJlY3Quc2V0WCgtc291cmNl
UmVjdFNjYWxlZC54KCkpOwpAQCAtMTM0LDIzICsxMzYsMTUgQEAgT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEltYWdlQnVmZmVyQmFja2VuZAogICAgIGlmIChkZXN0aW5hdGlvblJlY3Quc2l6ZSgpICE9
IHNvdXJjZVJlY3RTY2FsZWQuc2l6ZSgpKQogICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLnpl
cm9GaWxsKCk7CiAKLSAgICB1bnNpZ25lZCBzb3VyY2VCeXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93
KCk7Ci0gICAgY29uc3QgdWludDhfdCogc291cmNlUm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlQnl0ZXNQZXJSb3cg
KyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OwotCi0gICAgdW5zaWduZWQgZGVzdGluYXRpb25C
eXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7Ci0gICAgdWludDhfdCog
ZGVzdGluYXRpb25Sb3dzID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5kYXRhKCkgKyBkZXN0aW5hdGlv
blJlY3QueSgpICogZGVzdGluYXRpb25CeXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkg
KiA0OwotCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgc291cmNlRm9ybWF0IHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxGb3JtYXQoKSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCIH07Ci0KICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291
cmNlOwotICAgIHNvdXJjZS5mb3JtYXQgPSBzb3VyY2VGb3JtYXQ7Ci0gICAgc291cmNlLmJ5dGVz
UGVyUm93ID0gc291cmNlQnl0ZXNQZXJSb3c7Ci0gICAgc291cmNlLnJvd3MgPSBzb3VyY2VSb3dz
OworICAgIHNvdXJjZS5mb3JtYXQgPSB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRp
cGxpZWQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9OworICAgIHNvdXJjZS5ieXRlc1Bl
clJvdyA9IGJ5dGVzUGVyUm93KCk7CisgICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1Bl
clJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7CiAgICAgCiAgICAgUGl4ZWxCdWZmZXJD
b252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKICAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0
aW5hdGlvbkZvcm1hdDsKLSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGRlc3RpbmF0aW9u
Qnl0ZXNQZXJSb3c7Ci0gICAgZGVzdGluYXRpb24ucm93cyA9IGRlc3RpbmF0aW9uUm93czsKKyAg
ICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7
CisgICAgZGVzdGluYXRpb24ucm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVz
dGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25S
ZWN0LngoKSAqIDQ7CiAKICAgICBjb252ZXJ0SW1hZ2VQaXhlbHMoc291cmNlLCBkZXN0aW5hdGlv
biwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKQEAgLTE1OSwxNCArMTUzLDExIEBAIE9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQKIAogdm9pZCBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBzb3VyY2VQaXhlbEJ1ZmZl
ciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9u
UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgdm9p
ZCogZGF0YSkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG5vbi1SR0JBOCBwaXhl
bCBmb3JtYXRzLgotICAgIEFTU0VSVChzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKS5waXhlbEZv
cm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTgpOwotCiAgICAgYXV0byBzb3VyY2VSZWN0U2NhbGVk
ID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoc291cmNlUmVjdCk7CiAgICAgYXV0byBkZXN0aW5hdGlv
blBvaW50U2NhbGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoZGVzdGluYXRpb25Qb2ludCk7CiAK
LSAgICBJbnRSZWN0IHNvdXJjZVJlY3RDbGlwcGVkID0gaW50ZXJzZWN0aW9uKHsgSW50UG9pbnQ6
Onplcm8oKSwgc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpIH0sIHNvdXJjZVJlY3RTY2FsZWQpOwot
ICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0ID0gc291cmNlUmVjdENsaXBwZWQ7CisgICAgYXV0
byBzb3VyY2VSZWN0Q2xpcHBlZCA9IGludGVyc2VjdGlvbih7IEludFBvaW50Ojp6ZXJvKCksIHNv
dXJjZVBpeGVsQnVmZmVyLnNpemUoKSB9LCBzb3VyY2VSZWN0U2NhbGVkKTsKKyAgICBhdXRvIGRl
c3RpbmF0aW9uUmVjdCA9IHNvdXJjZVJlY3RDbGlwcGVkOwogICAgIGRlc3RpbmF0aW9uUmVjdC5t
b3ZlQnkoZGVzdGluYXRpb25Qb2ludFNjYWxlZCk7CiAKICAgICBpZiAoc291cmNlUmVjdFNjYWxl
ZC54KCkgPCAwKQpAQCAtMTc4LDI0ICsxNjksMTUgQEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OnB1dFBpeGVsQnVmZmVyKAogICAgIGRlc3RpbmF0aW9uUmVjdC5pbnRlcnNlY3QoYmFja2VuZFJl
Y3QoKSk7CiAgICAgc291cmNlUmVjdENsaXBwZWQuc2V0U2l6ZShkZXN0aW5hdGlvblJlY3Quc2l6
ZSgpKTsKIAotICAgIHVuc2lnbmVkIHNvdXJjZUJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVBpeGVs
QnVmZmVyLnNpemUoKS53aWR0aCgpOwotICAgIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZVJvd3MgPSBz
b3VyY2VQaXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291cmNlUmVjdENsaXBwZWQueSgpICog
c291cmNlQnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OwotCi0gICAgdW5z
aWduZWQgZGVzdGluYXRpb25CeXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7Ci0gICAgdWludDhf
dCogZGVzdGluYXRpb25Sb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBk
ZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb25CeXRlc1BlclJvdyArIGRlc3RpbmF0aW9u
UmVjdC54KCkgKiA0OwotCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgc291cmNlRm9ybWF0ID0gc291
cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCk7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZGVzdGluYXRp
b25Gb3JtYXQgeyBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKLQogICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9u
VmlldyBzb3VyY2U7Ci0gICAgc291cmNlLmZvcm1hdCA9IHNvdXJjZUZvcm1hdDsKLSAgICBzb3Vy
Y2UuYnl0ZXNQZXJSb3cgPSBzb3VyY2VCeXRlc1BlclJvdzsKLSAgICBzb3VyY2Uucm93cyA9IHNv
dXJjZVJvd3M7Ci0gICAgCisgICAgc291cmNlLmZvcm1hdCA9IHNvdXJjZVBpeGVsQnVmZmVyLmZv
cm1hdCgpOworICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5z
aXplKCkud2lkdGgoKTsKKyAgICBzb3VyY2Uucm93cyA9IHNvdXJjZVBpeGVsQnVmZmVyLmRhdGEo
KS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBz
b3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OworCiAgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmll
dyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0aW5hdGlvbkZvcm1h
dDsKLSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3c7
Ci0gICAgZGVzdGluYXRpb24ucm93cyA9IGRlc3RpbmF0aW9uUm93czsKKyAgICBkZXN0aW5hdGlv
bi5mb3JtYXQgPSB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9y
U3BhY2UoKSB9OworICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsK
KyAgICBkZXN0aW5hdGlvbi5yb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkg
KyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5h
dGlvblJlY3QueCgpICogNDsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAJKHJldmlzaW9uIDI3NzU0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorYm9vbCBQaXhlbEJ1ZmZlcjo6c3VwcG9ydGVkUGl4ZWxGb3JtYXQoUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQpCit7CisgICAgc3dpdGNoIChwaXhlbEZvcm1hdCkgeworICAgIGNhc2UgUGl4ZWxG
b3JtYXQ6OlJHQkE4OgorICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OkJHUkE4OgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OlJHQjEwOgorICAgIGNhc2UgUGl4ZWxG
b3JtYXQ6OlJHQjEwQTg6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIENoZWNr
ZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNp
emUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKLSAgICAvLyBOT1RFOiBPbmx5IDgtYml0IGZvcm1hdHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0
ZWQuCi0gICAgQVNTRVJUX1VOVVNFRChmb3JtYXQsIGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhl
bEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JB
OCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3JtYXQsIHN1cHBvcnRlZFBpeGVsRm9ybWF0KGZvcm1h
dC5waXhlbEZvcm1hdCkpOwogCiAgICAgY29uc3RleHByIHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwg
PSA0OwogCkBAIC00Myw3ICs1NSw3IEBAIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93
PiBQaXhlbEIKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVG
b3JEZWNvZGluZyhjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXpl
JiBzaXplLCB1bnNpZ25lZCBkYXRhQnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoZm9ybWF0LnBp
eGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0g
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxGb3JtYXQoZm9y
bWF0LnBpeGVsRm9ybWF0KSk7CiAgICAgQVNTRVJUKGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwg
c2l6ZSkudW5zYWZlR2V0KCkgPT0gZGF0YUJ5dGVMZW5ndGgpOwogCiAgICAgYXV0byBwaXhlbEFy
cmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YUJ5dGVM
ZW5ndGgpOwpAQCAtNTQsOCArNjYsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZm
ZXI6OnRyeUNyCiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7
Ci0gICAgLy8gTk9URTogT25seSA4LWJpdCBmb3JtYXRzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVk
LgotICAgIEFTU0VSVChmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8
IGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFTU0VSVChz
dXBwb3J0ZWRQaXhlbEZvcm1hdChmb3JtYXQucGl4ZWxGb3JtYXQpKTsKIAogICAgIGF1dG8gYnVm
ZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZl
clNpemUuaGFzT3ZlcmZsb3dlZCgpKQpAQCAtNjYsNiArNzcsMjEgQEAgT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcgogICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBw
aXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQogCitPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0
LCBjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZl
cikKK3sKKyAgICBBU1NFUlQoc3VwcG9ydGVkUGl4ZWxGb3JtYXQoZm9ybWF0LnBpeGVsRm9ybWF0
KSk7CisKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNp
emUpOworICAgIGlmIChidWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICBpZiAoYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSAhPSBhcnJheUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1
dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92ZShhcnJh
eUJ1ZmZlciksIDAsIGJ1ZmZlclNpemUudW5zYWZlR2V0KCkpOworICAgIGlmICghcGl4ZWxBcnJh
eSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4geyB7IGZvcm1hdCwg
c2l6ZSwgcGl4ZWxBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0gfTsKK30KKwogUGl4ZWxCdWZmZXI6
OlBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNp
emUmIHNpemUsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmIGRhdGEpCiAgICAgOiBtX2Zv
cm1hdCB7IGZvcm1hdCB9CiAgICAgLCBtX3NpemUgeyBzaXplIH0KQEAgLTc0LDYgKzEwMCwxNCBA
QCBQaXhlbEJ1ZmZlcjo6UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmCiAgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9zaXplLmFyZWEoKSAqIDQpLnVuc2Fm
ZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOwogfQogCitQaXhlbEJ1ZmZlcjo6UGl4ZWxCdWZm
ZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
SlNDOjpVaW50OENsYW1wZWRBcnJheSYgZGF0YSkKKyAgICA6IG1fZm9ybWF0IHsgZm9ybWF0IH0K
KyAgICAsIG1fc2l6ZSB7IHNpemUgfQorICAgICwgbV9kYXRhIHsgZGF0YSB9Cit7CisgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigobV9zaXplLmFyZWEoKSAqIDQp
LnVuc2FmZUdldCgpIDw9IG1fZGF0YS0+bGVuZ3RoKCkpOworfQorCiBQaXhlbEJ1ZmZlcjo6flBp
eGVsQnVmZmVyKCkgPSBkZWZhdWx0OwogCiBQaXhlbEJ1ZmZlciBQaXhlbEJ1ZmZlcjo6ZGVlcENs
b25lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVs
QnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXIuaAkocmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGl4ZWxCdWZmZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBpeGVsQnVmZmVyKTsKIHB1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBzdXBw
b3J0ZWRQaXhlbEZvcm1hdChQaXhlbEZvcm1hdCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYsIGNvbnN0IEludFNpemUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IElu
dFNpemUmLCBSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJik7CiAKICAgICBQaXhlbEJ1ZmZlcihjb25z
dCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCBSZWY8SlNDOjpVaW50OENsYW1w
ZWRBcnJheT4mJik7CisgICAgUGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBj
b25zdCBJbnRTaXplJiwgSlNDOjpVaW50OENsYW1wZWRBcnJheSYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5QaXhlbEJ1ZmZlcigpOwogCiAgICAgUGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXImJikgPSBk
ZWZhdWx0OwpAQCAtNTMsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIEpTQzo6VWludDhDbGFtcGVkQXJyYXkm
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAorICAgIFJlZjxKU0M6OlVp
bnQ4Q2xhbXBlZEFycmF5PiYmIHRha2VEYXRhKCkgeyByZXR1cm4gV1RGTW92ZShtX2RhdGEpOyB9
CisKICAgICBQaXhlbEJ1ZmZlciBkZWVwQ2xvbmUoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252
ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3NTQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2
LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGUKIAog
ICAgICAgICB2SW1hZ2VfRXJyb3IgY29udmVydGVyQ3JlYXRlRXJyb3IgPSBrdkltYWdlTm9FcnJv
cjsKICAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBhZG9wdENGKHZJbWFnZUNvbnZlcnRlcl9DcmVh
dGVXaXRoQ0dJbWFnZUZvcm1hdCgmc291cmNlQ0dJbWFnZUZvcm1hdCwgJmRlc3RpbmF0aW9uQ0dJ
bWFnZUZvcm1hdCwgbnVsbHB0ciwga3ZJbWFnZU5vRmxhZ3MsICZjb252ZXJ0ZXJDcmVhdGVFcnJv
cikpOwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChjb252ZXJ0ZXJDcmVhdGVF
cnJvciwgY29udmVydGVyQ3JlYXRlRXJyb3IgIT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252
ZXJ0ZXIgY3JlYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNyZWF0ZUVy
cm9yKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ3JlYXRl
RXJyb3IsIGNvbnZlcnRlckNyZWF0ZUVycm9yID09IGt2SW1hZ2VOb0Vycm9yLCAidkltYWdlQ29u
dmVydGVyIGNyZWF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiAlemQiLCBjb252ZXJ0ZXJDcmVhdGVF
cnJvcik7CiAKICAgICAgICAgdkltYWdlX0Vycm9yIGNvbnZlcnRlckNvbnZlcnRFcnJvciA9IHZJ
bWFnZUNvbnZlcnRfQW55VG9BbnkoY29udmVydGVyLmdldCgpLCAmc291cmNlVkltYWdlQnVmZmVy
LCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIG51bGxwdHIsIGt2SW1hZ2VOb0ZsYWdzKTsKICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQoY29udmVydGVyQ29udmVydEVycm9yLCBj
b252ZXJ0ZXJDb252ZXJ0RXJyb3IgPT0ga3ZJbWFnZU5vRXJyb3IsICJ2SW1hZ2VDb252ZXJ0X0Fu
eVRvQW55IGZhaWxlZCBjb252ZXJzaW9uIHdpdGggZXJyb3I6ICV6ZCIsIGNvbnZlcnRlckNvbnZl
cnRFcnJvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiAyNzc1NDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
RmlsdGVyRWZmZWN0Ojpjb252CiAgICAgLy8gQ29sb3Igc3BhY2UgY29udmVyc2lvbiBoYXBwZW5z
IGludGVybmFsbHkgd2hlbiBkcmF3aW5nIGZyb20gb25lIGltYWdlIGJ1ZmZlciB0byBhbm90aGVy
CiAgICAgY29udmVydGVkQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGlucHV0QnVm
ZmVyLCByZWN0KTsKICAgICAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBvdXRwdXRB
bHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBvdXRwdXRBbHBoYUZvcm1hdCwg
UGl4ZWxGb3JtYXQ6OlJHQkE4LCB0YXJnZXRDb2xvclNwYWNlIH07CiAgICAgcmV0dXJuIGNvbnZl
cnRlZEJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCByZWN0KTsKIH0KIApAQCAtNTA0LDcg
KzUwNCw5IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWwKICAgICAg
ICAgICAgICAgICBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKGRlc3RpbmF0
aW9uLCAqY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCByZWN0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCIH07CisKKyAgICAgICAgICAgIEFTU0VSVChtX2ltYWdlQnVmZmVyUmVzdWx0LT5jb2xv
clNwYWNlKCkgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIFBpeGVsQnVmZmVy
Rm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwg
UGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAgICAgIG1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRQaXhlbEJ1
ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSk7
CiAgICAgICAgICAgICBpZiAoIW1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTEyLDcgKzUxNCw5IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5
VW5tdWx0aXBsaWVkUmVzdWwKICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1
dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNp
emVOZWVkc0NsYW1waW5nKGlucHV0U2l6ZSkpOwogICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxl
KG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICAgICAg
CisgICAgICAgICAgICBBU1NFUlQobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmZvcm1hdCgp
LmNvbG9yU3BhY2UgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsKKyAgICAgICAgICAgIFBpeGVsQnVm
ZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGll
ZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICAgICAgICAg
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgaW5wdXRTaXplKTsKICAgICAgICAgICAgIGlmICghbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01MzksNyArNTQzLDkgQEAgdm9pZCBGaWx0
ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdQogICAgICAgICAgICAgICAgIGNvcHlDb252
ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCByZWN0KTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworCisgICAgICAgICAg
ICBBU1NFUlQobV9pbWFnZUJ1ZmZlclJlc3VsdC0+Y29sb3JTcGFjZSgpID09IG1fcmVzdWx0Q29s
b3JTcGFjZSk7CisgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVz
dWx0Q29sb3JTcGFjZSB9OwogICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQg
PSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQo
KSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSk7CiAgICAgICAgICAgICBpZiAoIW1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU0Nyw3
ICs1NTMsOSBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1CiAgICAg
ICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAg
ICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNp
emUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKLSAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH07CisKKyAgICAgICAgICAgIEFTU0VSVChtX3VubXVsdGlwbGllZElt
YWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29sb3JTcGFjZSk7Cisg
ICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JTcGFj
ZSB9OwogICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZl
cjo6dHJ5Q3JlYXRlKGZvcm1hdCwgaW5wdXRTaXplKTsKICAgICAgICAgICAgIGlmICghbV9wcmVt
dWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTkwLDcg
KzU5OCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0OjpjcmUKICAgICBJ
bnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VS
VCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKICAgICByZXN1
bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIFBpeGVsQnVmZmVyRm9y
bWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhl
bEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07CiAgICAgbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBy
ZXN1bHRTaXplKTsKICAgICByZXR1cm4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdDsKIH0KQEAg
LTYwOSw3ICs2MTcsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3Jl
CiAgICAgSW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXN1bHRTaXplKSk7CiAg
ICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBQaXhlbEJ1
ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVk
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07CiAgICAg
bV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0Owog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjc3NTQ0
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MzMxLDcgKzUzMzEsNyBAQCB2b2lkIEludGVybmFsczo6dmlkZW9TYW1wbGVBdmFpbGFi
bGUoTWVkCiAgICAgaWYgKCFyZ2JhKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0byBp
bWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksIHZpZGVv
U2V0dGluZ3Mud2lkdGgoKSwgdmlkZW9TZXR0aW5ncy5oZWlnaHQoKSk7CisgICAgYXV0byBpbWFn
ZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksIHZpZGVvU2V0
dGluZ3Mud2lkdGgoKSwgdmlkZW9TZXR0aW5ncy5oZWlnaHQoKSwgeyB7IFByZWRlZmluZWRDb2xv
clNwYWNlOjpTUkdCIH0gfSk7CiAgICAgaWYgKCFpbWFnZURhdGEuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5yZXNvbHZlKGltYWdlRGF0YS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSk7CiAgICAgZWxzZQpAQCAtNjIwMyw3ICs2MjAzLDcgQEAgdm9pZCBJbnRl
cm5hbHM6OmxvYWRBcnR3b3JrSW1hZ2UoU3RyaW5nJgogICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlz
ZSA9IG1ha2VVbmlxdWU8QXJ0d29ya0ltYWdlUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSk7CiAg
ICAgbV9hcnR3b3JrTG9hZGVyID0gbWFrZVVuaXF1ZTxBcnR3b3JrSW1hZ2VMb2FkZXI+KCpjb250
ZXh0RG9jdW1lbnQoKSwgdXJsLCBbdGhpc10oSW1hZ2UqIGltYWdlKSB7CiAgICAgICAgIGlmIChp
bWFnZSkgewotICAgICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZSh1
bnNpZ25lZChpbWFnZS0+d2lkdGgoKSksIHVuc2lnbmVkKGltYWdlLT5oZWlnaHQoKSkpOworICAg
ICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShpbWFnZS0+d2lkdGgo
KSwgaW1hZ2UtPmhlaWdodCgpLCB7IHsgUHJlZGVmaW5lZENvbG9yU3BhY2U6OlNSR0IgfSB9KTsK
ICAgICAgICAgICAgIGlmICghaW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgIG1fYXJ0d29ya0ltYWdlUHJvbWlzZS0+cmVzb2x2ZShpbWFnZURhdGEucmVsZWFzZVJldHVy
blZhbHVlKCkpOwogICAgICAgICAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjc3NTUyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMTUgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjcmVhdGlu
Zy9hY2Nlc3Npbmcvc2V0dGluZyBub24tc1JHQiBJbWFnZURhdGEgdmlhIGNhbnZhcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODQxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHRl
c3RzIGVuYWJsaW5nIHRoZSBDYW52YXNDb2xvclNwYWNlRW5hYmxlZCBwcmVmZXJlbmNlLgorCisg
ICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmNh
bnZhc0NvbG9yU3BhY2VFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5oOgorICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXND
aGFuZ2VkKToKKwogMjAyMS0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIERyb3AgbGVnYWN5IC8gcHJlZml4ZWQgV2ViQXVkaW8gaW1wbGVtZW50YXRpb24K
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlz
aW9uIDI3NzU0NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYzMSwzICsyNjMxLDkgQEAgSFJFU1VMVCBXZWJQcmVmZXJl
bmNlczo6c3RvcEJhdGNoaW5nVXBkYQogICAgIH0KICAgICByZXR1cm4gU19PSzsKIH0KKworYm9v
bCBXZWJQcmVmZXJlbmNlczo6Y2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKQoreworICAgIHJldHVy
biBib29sVmFsdWVGb3JLZXkoIldlYktpdENhbnZhc0NvbG9yU3BhY2VFbmFibGVkIik7Cit9CisK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24g
Mjc3NTQ0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQzLDYgKzM0MywxMCBAQCBwdWJsaWM6CiAKICAgICBIUkVTVUxUIHBv
c3RQcmVmZXJlbmNlc0NoYW5nZXNOb3RpZmljYXRpb24oKTsKIAorICAgIC8vIFRoZSBmb2xsb3dp
bmcgcHJlZmVyZW5jZSBhY2Nlc3NvcnMgYXJlIG5vdCBleHBvc2VkIHZpYSBJV2ViUHJlZmVyZW5j
ZXMqIGFzIHRoZXkgYXJlIG9ubHkKKyAgICAvLyBuZWVkZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMg
YW5kIGNhbiBiZSB0b2dnbGVkIHZpYSB0aGUgc2V0KlByZWZlcmVuY2VGb3JUZXN0aW5nIGZ1bmN0
aW9ucy4KKyAgICBib29sIGNhbnZhc0NvbG9yU3BhY2VFbmFibGVkKCk7CisKIHByaXZhdGU6CiAg
ICAgV2ViUHJlZmVyZW5jZXMoKTsKICAgICB+V2ViUHJlZmVyZW5jZXMoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNzc1NDQpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY2Nyw2ICs1NjY3
LDggQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogICAgICAgICBy
ZXR1cm4gaHI7CiAgICAgc2V0dGluZ3Muc2V0T3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCghIWVu
YWJsZWQpOwogCisgICAgc2V0dGluZ3Muc2V0Q2FudmFzQ29sb3JTcGFjZUVuYWJsZWQobV9wcmVm
ZXJlbmNlcy0+Y2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKSk7CisKICAgICByZXR1cm4gU19PSzsK
IH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3NTUxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjEtMDUtMTUgIFNhbSBXZWluaWcg
IDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjcmVhdGluZy9h
Y2Nlc3Npbmcvc2V0dGluZyBub24tc1JHQiBJbWFnZURhdGEgdmlhIGNhbnZhcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODQxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICBSZW1vdmUgd2lkZS1nYW11dC1jYW52YXMgbm93IHRoYXQgdGhleSBzaG91bGQgcGFz
cy4KKworICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAz
LUltYWdlRGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2Nh
bnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgQWRkIG5ldyB0ZXN0IGV4ZXJjaXNpbmcgZ2V0SW1hZ2VEYXRhIGFuZCBwdXRJbWFnZURhdGEg
d2l0aCBub24tc1JHQiBjYW52YXNlcworICAgICAgICBhbmQgbm9uLXNSR0IgSW1hZ2VEYXRhLgor
IAorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1pbWFnZURhdGEtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICBVcGRhdGUgcmVzdWx0cyBmb3IgdXBkYXRlZCBlcnJvciBtZXNzYWdlcywgd2hpY2gg
YXJlIGEgYml0IHdvcnNlIGR1ZSBhZGRpdGlvbmFsCisgICAgICAgIGFtYmlndWl0eSBpbiBzaWdu
YXR1cmVzLgorCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICBNYXJrIG5ldyB0ZXN0IGFzIGZhaWxpbmcgb24gZ2xpYiBkdWUgdG8gbGFjayBvZiBkaXNw
bGF5LXAzIHN1cHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgTWFyayBuZXcgdGVzdCBhcyBmYWlsaW5nIG9uIFdpbmRvd3MgZHVlIHRvIGxh
Y2sgb2YgZGlzcGxheS1wMyBzdXBwb3J0LgorICAgICAgICBVbnNraXAgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEU2V0dGluZ3MtY29sb3JTcGFjZS1lbmFibGVkLmh0bWwgd2hpY2gKKyAgICAgICAg
c2hvdWxkIG5vdyBwYXNzIGR1ZSB0byBhZGRpbmcgbWFudWFsIHByZWZlcmVuY2VzIHN1cHBvcnQg
aW4gV2ViS2l0TGVnYWN5L3dpbi4gCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC10eXBlcy1leHBlY3RlZC50eHQ6CisgICAgICAg
IFVwZGF0ZSByZXN1bHRzIGR1ZSB0byBuZXcgYXR0cmlidXRlIGluIEltYWdlRGF0YSB0aGF0IGlz
IGF1dG8gcHJpbnRlZC4KKwogMjAyMS0wNS0xNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNy
ZWF0ZUNvbmljR3JhZGllbnQKSW5kZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjc3NTQ0
KQorKysgTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMzk5
NCw5ICszOTk0LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nhbgog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2RyYXdp
bmctaW1hZ2VzLXRvLXRoZS1jYW52YXMvaW1hZ2Utb3JpZW50YXRpb24vZHJhd0ltYWdlLWZyb20t
ZWxlbWVudC1zd2FwLXdpZHRoLWhlaWdodC50ZW50YXRpdmUuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L2RyYXdpbmctaW1hZ2VzLXRvLXRoZS1jYW52YXMvaW1hZ2Utb3JpZW50YXRpb24vZHJhd0ltYWdl
LWZyb20tZWxlbWVudC50ZW50YXRpdmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0jIFNv
bWV0aW1lcyBwcmludHMgd2VpcmQgb3V0cHV0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRlc3Rz
LgotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3dp
ZGUtZ2FtdXQtY2FudmFzIFsgRmFpbHVyZSBQYXNzIF0KLQogIyBDU1MgTWFzb25yeSBMYXlvdXQg
bm90IHN1cHBvcnRlZC4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1n
cmlkL21hc29ucnkudGVudGF0aXZlIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjAyMTE1IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQgWyBTa2lwIF0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5
LXAzLUltYWdlRGF0YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29s
b3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTU5IEBACitUZXN0IHRoYXQgcGl4ZWwgYWNjZXNzIGZ1bmN0aW9ucyB3b3Jr
IHdpdGggbm9uLVNSR0IgY29sb3Igc3BhY2VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhcy5jb2xvclNwYWNl
IGlzICJkaXNwbGF5LXAzIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZh
c092ZXJyaWRpbmdDb2xvclNwYWNlU1JHQi5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFn
ZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxh
eVAzLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGltYWdlRGF0YUNyZWF0ZWRGcm9t
U1JHQkNhbnZhcy5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJv
bVNSR0JDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZVNSR0IuY29sb3JTcGFjZSBpcyAic3JnYiIK
K1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VE
aXNwbGF5UDMuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRl
ZEZyb21JbWFnZURhdGFDb25zdHJ1Y3Rvci5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFn
ZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VUb1NS
R0IuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURh
dGFDb25zdHJ1Y3RvclNldHRpbmdDb2xvclNwYWNlVG9EaXNwbGF5UDMuY29sb3JTcGFjZSBpcyAi
ZGlzcGxheS1wMyIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3Rv
clBhc3NpbmdCdWZmZXIuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgaW1hZ2VEYXRhQ3JlYXRl
ZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXJTZXR0aW5nQ29sb3JTcGFjZVRv
U1JHQi5jb2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdl
RGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlclNldHRpbmdDb2xvclNwYWNlVG9EaXNwbGF5UDMu
Y29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKKworVGVzdGluZyBhIGRpc3BsYXktcDMgY2FudmFz
IHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW50byBpdAorCitUZXN0IGdldElt
YWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24gYSBkaXNwbGF5LXAzIGNh
bnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BB
U1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMg
MAorUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNT
IGRhdGEuZGF0YVszXSBpcyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZp
ZWQsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAw
IDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1Mg
ZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRh
dGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3
aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMg
aGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9y
U3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEu
ZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNd
IGlzIDI1NQorCitUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBjb2xvcihzcmdiIDAg
MSAwKSBkcmF3biBpbnRvIGl0CisKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVk
IGNvbG9yIHNwYWNlLCBvbiBhIGRpc3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNy
Z2IgMCAxIDApIGRyYXduIGluIGl0KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXkt
cDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1MQor
UEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorVGVzdCBn
ZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAo
Y2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xv
clNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMworUEFTUyBkYXRhLmRhdGFb
MV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAy
NTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgZGlz
cGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQp
CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBd
IGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3
NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRo
IGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGludG8gaXQKKworVGVzdCBnZXRJbWFnZURh
dGEgd2l0aCBubyBzcGVjaWZpZWQgY29sb3Igc3BhY2UsIG9uIGEgc3JnYiBjYW52YXMgKGNhbnZh
cyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRhdGEuY29s
b3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRh
WzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMg
MjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2Fu
dmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGluIGl0KQorUEFT
UyBkYXRhLmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNT
IGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5k
YXRhWzNdIGlzIDI1NQorVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIHNwZWNpZmll
ZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBk
cmF3biBpbiBpdCkKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBk
YXRhLmRhdGFbMF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTEKK1BBU1MgZGF0YS5k
YXRhWzJdIGlzIDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKworVGVzdGluZyBhIHNyZ2Ig
Y2FudmFzIHdpdGggY29sb3Ioc3JnYi1wMyAwIDEgMCkgZHJhd24gaW50byBpdAorCitUZXN0IGdl
dEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24gYSBzcmdiIGNhbnZh
cyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkKK1BBU1MgZGF0YS5j
b2xvclNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMAorUEFTUyBkYXRhLmRh
dGFbMV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBp
cyAyNTUKK1Rlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZpZWQsIG9uIGEgc3JnYiBj
YW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpCitQQVNTIGRh
dGEuY29sb3JTcGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0
YS5kYXRhWzFdIGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFb
M10gaXMgMjU1CitUZXN0IGdldEltYWdlRGF0YSB3aXRoIGRpc3BsYXktcDMgc3BlY2lmaWVkLCBv
biBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0
KQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVsw
XSBpcyAxMTcKK1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMg
NzYKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCisKK1Rlc3RpbmcgYSBkaXNwbGF5LXAzIGNh
bnZhcyB3aXRoIGRpc3BsYXktcDMgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQKKworUEFTUyBkYXRh
LmNvbG9yU3BhY2UgaXMgInNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEu
ZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNd
IGlzIDI1NQorUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEu
ZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUKK1BBU1MgZGF0YS5kYXRhWzJd
IGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorCitUZXN0aW5nIGEgZGlzcGxheS1wMyBj
YW52YXMgd2l0aCBzcmdiIEltYWdlRGF0YSBkcmF3biBpbnRvIGl0CisKK1BBU1MgZGF0YS5jb2xv
clNwYWNlIGlzICJzcmdiIgorUEFTUyBkYXRhLmRhdGFbMF0gaXMgMworUEFTUyBkYXRhLmRhdGFb
MV0gaXMgMjU1CitQQVNTIGRhdGEuZGF0YVsyXSBpcyAwCitQQVNTIGRhdGEuZGF0YVszXSBpcyAy
NTUKK1BBU1MgZGF0YS5jb2xvclNwYWNlIGlzICJkaXNwbGF5LXAzIgorUEFTUyBkYXRhLmRhdGFb
MF0gaXMgMTE3CitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTEKK1BBU1MgZGF0YS5kYXRhWzJdIGlz
IDc2CitQQVNTIGRhdGEuZGF0YVszXSBpcyAyNTUKKworVGVzdGluZyBhIHNyZ2IgY2FudmFzIHdp
dGggZGlzcGxheS1wMyBJbWFnZURhdGEgZHJhd24gaW50byBpdAorCitQQVNTIGRhdGEuY29sb3JT
cGFjZSBpcyAic3JnYiIKK1BBU1MgZGF0YS5kYXRhWzBdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzFd
IGlzIDI1NQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgMAorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1
CitQQVNTIGRhdGEuY29sb3JTcGFjZSBpcyAiZGlzcGxheS1wMyIKK1BBU1MgZGF0YS5kYXRhWzBd
IGlzIDExNworUEFTUyBkYXRhLmRhdGFbMV0gaXMgMjUxCitQQVNTIGRhdGEuZGF0YVsyXSBpcyA3
NgorUEFTUyBkYXRhLmRhdGFbM10gaXMgMjU1CisKK1Rlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRo
IHNyZ2IgSW1hZ2VEYXRhIGRyYXduIGludG8gaXQKKworUEFTUyBkYXRhLmNvbG9yU3BhY2UgaXMg
InNyZ2IiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAwCitQQVNTIGRhdGEuZGF0YVsxXSBpcyAyNTUK
K1BBU1MgZGF0YS5kYXRhWzJdIGlzIDAKK1BBU1MgZGF0YS5kYXRhWzNdIGlzIDI1NQorUEFTUyBk
YXRhLmNvbG9yU3BhY2UgaXMgImRpc3BsYXktcDMiCitQQVNTIGRhdGEuZGF0YVswXSBpcyAxMTcK
K1BBU1MgZGF0YS5kYXRhWzFdIGlzIDI1MQorUEFTUyBkYXRhLmRhdGFbMl0gaXMgNzYKK1BBU1Mg
ZGF0YS5kYXRhWzNdIGlzIDI1NQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNv
bG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRh
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNv
bG9yLXNwYWNlLWRpc3BsYXktcDMtSW1hZ2VEYXRhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyOTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBwaXhlbCBhY2Nlc3MgZnVuY3Rp
b25zIHdvcmsgd2l0aCBub24tU1JHQiBjb2xvciBzcGFjZXMuIik7CisKK2xldCBjYW52YXNEaXNw
bGF5UDMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKK2xldCBjb250ZXh0RGlz
cGxheVAzID0gY2FudmFzRGlzcGxheVAzLmdldENvbnRleHQoIjJkIiwgeyBjb2xvclNwYWNlOiAi
ZGlzcGxheS1wMyIgfSk7CisKK2xldCBjYW52YXNTUkdCID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiY2FudmFzIik7CitsZXQgY29udGV4dFNSR0IgPSBjYW52YXNTUkdCLmdldENvbnRleHQoIjJk
IiwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9t
RGlzcGxheVAzQ2FudmFzID0gY29udGV4dERpc3BsYXlQMy5jcmVhdGVJbWFnZURhdGEoNTAsIDUw
KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbURpc3BsYXlQM0NhbnZhcy5jb2xvclNw
YWNlIiwgYCJkaXNwbGF5LXAzImApOworCitjb25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbURpc3Bs
YXlQM0NhbnZhc092ZXJyaWRpbmdDb2xvclNwYWNlU1JHQiA9IGNvbnRleHREaXNwbGF5UDMuY3Jl
YXRlSW1hZ2VEYXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgi
aW1hZ2VEYXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZVNS
R0IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21E
aXNwbGF5UDNDYW52YXNPdmVycmlkaW5nQ29sb3JTcGFjZURpc3BsYXlQMyA9IGNvbnRleHREaXNw
bGF5UDMuY3JlYXRlSW1hZ2VEYXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIg
fSk7CitzaG91bGRCZSgiaW1hZ2VEYXRhQ3JlYXRlZEZyb21EaXNwbGF5UDNDYW52YXNPdmVycmlk
aW5nQ29sb3JTcGFjZURpc3BsYXlQMy5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApOworCitj
b25zdCBpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52YXMgPSBjb250ZXh0U1JHQi5jcmVhdGVJ
bWFnZURhdGEoNTAsIDUwKTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbVNSR0JDYW52
YXMuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21T
UkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdCID0gY29udGV4dFNSR0IuY3JlYXRlSW1h
Z2VEYXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgiaW1hZ2VE
YXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VTUkdCLmNvbG9yU3Bh
Y2UiLCBgInNyZ2IiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRGcm9tU1JHQkNhbnZhc092
ZXJyaWRpbmdDb2xvclNwYWNlRGlzcGxheVAzID0gY29udGV4dFNSR0IuY3JlYXRlSW1hZ2VEYXRh
KDUwLCA1MCwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiaW1hZ2VE
YXRhQ3JlYXRlZEZyb21TUkdCQ2FudmFzT3ZlcnJpZGluZ0NvbG9yU3BhY2VEaXNwbGF5UDMuY29s
b3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21J
bWFnZURhdGFDb25zdHJ1Y3RvciA9IG5ldyBJbWFnZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6
ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0
cnVjdG9yLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCk7CisKK2NvbnN0IGltYWdlRGF0YUNyZWF0ZWRG
cm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JTZXR0aW5nQ29sb3JTcGFjZVRvU1JHQiA9IG5ldyBJbWFn
ZURhdGEoNTAsIDUwLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURh
dGFDcmVhdGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yU2V0dGluZ0NvbG9yU3BhY2VUb1NSR0Iu
Y29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZyb21JbWFn
ZURhdGFDb25zdHJ1Y3RvclNldHRpbmdDb2xvclNwYWNlVG9EaXNwbGF5UDMgPSBuZXcgSW1hZ2VE
YXRhKDUwLCA1MCwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiaW1h
Z2VEYXRhQ3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclNldHRpbmdDb2xvclNwYWNlVG9E
aXNwbGF5UDMuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKTsKKworY29uc3QgaW1hZ2VEYXRh
Q3JlYXRlZEZyb21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXIgPSBuZXcgSW1hZ2VE
YXRhKG5ldyBVaW50OENsYW1wZWRBcnJheSg0MDApLCAxMCwgMTAsIHsgY29sb3JTcGFjZTogInNy
Z2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0
b3JQYXNzaW5nQnVmZmVyLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCk7CisKK2NvbnN0IGltYWdlRGF0
YUNyZWF0ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyU2V0dGluZ0NvbG9y
U3BhY2VUb1NSR0IgPSBuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheSg0MDApLCAx
MCwgMTAsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImltYWdlRGF0YUNyZWF0
ZWRGcm9tSW1hZ2VEYXRhQ29uc3RydWN0b3JQYXNzaW5nQnVmZmVyU2V0dGluZ0NvbG9yU3BhY2VU
b1NSR0IuY29sb3JTcGFjZSIsIGAic3JnYiJgKTsKKworY29uc3QgaW1hZ2VEYXRhQ3JlYXRlZEZy
b21JbWFnZURhdGFDb25zdHJ1Y3RvclBhc3NpbmdCdWZmZXJTZXR0aW5nQ29sb3JTcGFjZVRvRGlz
cGxheVAzID0gbmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoNDAwKSwgMTAsIDEw
LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJpbWFnZURhdGFDcmVh
dGVkRnJvbUltYWdlRGF0YUNvbnN0cnVjdG9yUGFzc2luZ0J1ZmZlclNldHRpbmdDb2xvclNwYWNl
VG9EaXNwbGF5UDMuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKTsKKwordmFyIGRhdGEgPSB7
IH07CisKKy8vIE5PVEU6CisvLyBjb2xvcihzcmdiIDAgMSAwKSBjb252ZXJ0ZWQgdG8gZGlzcGxh
eS1wMyBpcyBjb2xvcihkaXNwbGF5LXAzIDAuNDU4NCAwLjk4NTI2IDAuMjk4MjkpIG9yIFsxMTcs
IDI1MSwgNzYsIDI1NV0gaW4gYnl0ZSBmb3JtLgorCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGlu
ZyBhIGRpc3BsYXktcDMgY2FudmFzIHdpdGggY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24g
aW50byBpdCIpOworZGVidWcoIiIpOworCitjb250ZXh0RGlzcGxheVAzLmZpbGxTdHlsZSA9ICJj
b2xvcihkaXNwbGF5LXAzIDAgMSAwKSI7Citjb250ZXh0RGlzcGxheVAzLmZpbGxSZWN0KDAsIDAs
IDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSB3aWxsIGRlZmF1bHQgdG8g
dGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGluIHRoaXMgY2FzZSwgZGlzcGxheS1wMworZGVidWco
IlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBhIGRp
c3BsYXktcDMgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXdu
IGluIGl0KSIpOworZGF0YSA9IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEs
IDEpOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJgKQorc2hvdWxk
QmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNd
IiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBzcmdiIHNwZWNpZmll
ZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAzIDAg
MSAwKSBkcmF3biBpbiBpdCkiKTsKKy8vIE5PVEU6IGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGlz
IG91dHNpZGUgdGhlIHJhbmdlIG9mIHNSR0IsIHNvIGl0IGNsaXBwZWQgdG8gMjU1LgorZGF0YSA9
IGNvbnRleHREaXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTog
InNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxk
QmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNd
IiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIHNw
ZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5
LXAzIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldElt
YWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3Vs
ZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsK
KworZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBkaXNwbGF5LXAzIGNhbnZhcyB3aXRoIGNv
bG9yKHNyZ2IgMCAxIDApIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dERp
c3BsYXlQMy5maWxsU3R5bGUgPSAiY29sb3Ioc3JnYiAwIDEgMCkiOworY29udGV4dERpc3BsYXlQ
My5maWxsUmVjdCgwLCAwLCA1MCwgNTApOworCisvLyBObyBzcGVjaWZpZWQgY29sb3Igc3BhY2Ug
d2lsbCBkZWZhdWx0IHRvIHRoZSBjYW52YXMnIGNvbG9yIHNwYWNlLCBpbiB0aGlzIGNhc2UsIGRp
c3BsYXktcDMKK2RlYnVnKCJUZXN0IGdldEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xv
ciBzcGFjZSwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAg
MSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdlRGF0
YSgwLCAwLCAxLCAxKTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMi
YCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRh
WzFdIiwgIjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUo
ImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGgg
c3JnYiBzcGVjaWZpZWQsIG9uIGEgZGlzcGxheS1wMyBjYW52YXMgKGNhbnZhcyBoYXMgY29sb3Io
c3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJ
bWFnZURhdGEoMCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAic3JnYiIgfSk7CitzaG91bGRCZSgi
ZGF0YS5jb2xvclNwYWNlIiwgYCJzcmdiImApCisvLyBOT1RFOiBUaGlzIDMgaXMgb2RkLCBidXQg
ZHVlIHRvIGxhY2sgb2YgcHJlY2lzaW9uIGluIDgtYml0IHJvdW5kLXRyaXBwaW5nLgorc2hvdWxk
QmUoImRhdGEuZGF0YVswXSIsICIzIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNd
IiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAzIHNw
ZWNpZmllZCwgb24gYSBkaXNwbGF5LXAzIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAg
MSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdlRGF0
YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJk
YXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0i
LCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIpOworc2hvdWxkQmUoImRh
dGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKwor
ZGVidWcoIiIpOworZGVidWcoIlRlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRoIGNvbG9yKGRpc3Bs
YXktcDMgMCAxIDApIGRyYXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dFNSR0Iu
ZmlsbFN0eWxlID0gImNvbG9yKGRpc3BsYXktcDMgMCAxIDApIjsKK2NvbnRleHRTUkdCLmZpbGxS
ZWN0KDAsIDAsIDUwLCA1MCk7CisKKy8vIE5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSB3aWxsIGRl
ZmF1bHQgdG8gdGhlIGNhbnZhcycgY29sb3Igc3BhY2UsIGluIHRoaXMgY2FzZSwgc3JnYgorZGVi
dWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggbm8gc3BlY2lmaWVkIGNvbG9yIHNwYWNlLCBvbiBh
IHNyZ2IgY2FudmFzIChjYW52YXMgaGFzIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGRyYXduIGlu
IGl0KSIpOworZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxKTsKK3No
b3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
MF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJk
YXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKwor
ZGVidWcoIlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggc3JnYiBzcGVjaWZpZWQsIG9uIGEgc3JnYiBj
YW52YXMgKGNhbnZhcyBoYXMgY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgZHJhd24gaW4gaXQpIik7
CitkYXRhID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFj
ZTogInNyZ2IiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hv
dWxkQmUoImRhdGEuZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1
NSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRh
WzNdIiwgIjI1NSIpOworCitkZWJ1ZygiVGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAz
IHNwZWNpZmllZCwgb24gYSBzcmdiIGNhbnZhcyAoY2FudmFzIGhhcyBjb2xvcihkaXNwbGF5LXAz
IDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBjb250ZXh0U1JHQi5nZXRJbWFnZURhdGEo
MCwgMCwgMSwgMSwgeyBjb2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0
YS5jb2xvclNwYWNlIiwgYCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwg
IjExNyIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTEiKTsKK3Nob3VsZEJlKCJkYXRh
LmRhdGFbMl0iLCAiNzYiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJUZXN0aW5nIGEgc3JnYiBjYW52YXMgd2l0aCBjb2xvcihzcmdiLXAz
IDAgMSAwKSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHRTUkdCLmZpbGxT
dHlsZSA9ICJjb2xvcihzcmdiIDAgMSAwKSI7Citjb250ZXh0U1JHQi5maWxsUmVjdCgwLCAwLCA1
MCwgNTApOworCisvLyBObyBzcGVjaWZpZWQgY29sb3Igc3BhY2Ugd2lsbCBkZWZhdWx0IHRvIHRo
ZSBjYW52YXMnIGNvbG9yIHNwYWNlLCBpbiB0aGlzIGNhc2UsIHNyZ2IKK2RlYnVnKCJUZXN0IGdl
dEltYWdlRGF0YSB3aXRoIG5vIHNwZWNpZmllZCBjb2xvciBzcGFjZSwgb24gYSBzcmdiIGNhbnZh
cyAoY2FudmFzIGhhcyBjb2xvcihzcmdiIDAgMSAwKSBkcmF3biBpbiBpdCkiKTsKK2RhdGEgPSBj
b250ZXh0U1JHQi5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSk7CitzaG91bGRCZSgiZGF0YS5jb2xv
clNwYWNlIiwgYCJzcmdiImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJUZXN0IGdldElt
YWdlRGF0YSB3aXRoIHNyZ2Igc3BlY2lmaWVkLCBvbiBhIHNyZ2IgY2FudmFzIChjYW52YXMgaGFz
IGNvbG9yKHNyZ2IgMCAxIDApIGRyYXduIGluIGl0KSIpOworZGF0YSA9IGNvbnRleHRTUkdCLmdl
dEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJl
KCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAi
MCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRh
dGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWco
IlRlc3QgZ2V0SW1hZ2VEYXRhIHdpdGggZGlzcGxheS1wMyBzcGVjaWZpZWQsIG9uIGEgc3JnYiBj
YW52YXMgKGNhbnZhcyBoYXMgY29sb3Ioc3JnYiAwIDEgMCkgZHJhd24gaW4gaXQpIik7CitkYXRh
ID0gY29udGV4dFNSR0IuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogImRp
c3BsYXktcDMiIH0pOworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAiZGlzcGxheS1wMyJg
KQorc2hvdWxkQmUoImRhdGEuZGF0YVswXSIsICIxMTciKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
MV0iLCAiMjUxIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjc2Iik7CitzaG91bGRCZSgi
ZGF0YS5kYXRhWzNdIiwgIjI1NSIpOworCisKK2RlYnVnKCIiKTsKKworCitjb25zdCBpbWFnZURh
dGFEaXNwbGF5UDNUb1B1dCA9IG5ldyBJbWFnZURhdGEoMSwgMSwgeyBjb2xvclNwYWNlOiAiZGlz
cGxheS1wMyIgfSk7CitpbWFnZURhdGFEaXNwbGF5UDNUb1B1dC5kYXRhWzBdID0gMDsKK2ltYWdl
RGF0YURpc3BsYXlQM1RvUHV0LmRhdGFbMV0gPSAyNTU7CitpbWFnZURhdGFEaXNwbGF5UDNUb1B1
dC5kYXRhWzJdID0gMDsKK2ltYWdlRGF0YURpc3BsYXlQM1RvUHV0LmRhdGFbM10gPSAyNTU7CisK
K2NvbnN0IGltYWdlRGF0YVNSR0JUb1B1dCA9IG5ldyBJbWFnZURhdGEoMSwgMSwgeyBjb2xvclNw
YWNlOiAic3JnYiIgfSk7CitpbWFnZURhdGFTUkdCVG9QdXQuZGF0YVswXSA9IDA7CitpbWFnZURh
dGFTUkdCVG9QdXQuZGF0YVsxXSA9IDI1NTsKK2ltYWdlRGF0YVNSR0JUb1B1dC5kYXRhWzJdID0g
MDsKK2ltYWdlRGF0YVNSR0JUb1B1dC5kYXRhWzNdID0gMjU1OworCisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJUZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBkaXNwbGF5LXAzIEltYWdlRGF0
YSBkcmF3biBpbnRvIGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHREaXNwbGF5UDMucHV0SW1h
Z2VEYXRhKGltYWdlRGF0YURpc3BsYXlQM1RvUHV0LCAwLCAwKTsKKworZGF0YSA9IGNvbnRleHRE
aXNwbGF5UDMuZ2V0SW1hZ2VEYXRhKDAsIDAsIDEsIDEsIHsgY29sb3JTcGFjZTogInNyZ2IiIH0p
Oworc2hvdWxkQmUoImRhdGEuY29sb3JTcGFjZSIsIGAic3JnYiJgKQorc2hvdWxkQmUoImRhdGEu
ZGF0YVswXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1NSIpOworc2hvdWxk
QmUoImRhdGEuZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzNdIiwgIjI1NSIp
OworCitkYXRhID0gY29udGV4dERpc3BsYXlQMy5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSwgeyBj
b2xvclNwYWNlOiAiZGlzcGxheS1wMyIgfSk7CitzaG91bGRCZSgiZGF0YS5jb2xvclNwYWNlIiwg
YCJkaXNwbGF5LXAzImApCitzaG91bGRCZSgiZGF0YS5kYXRhWzBdIiwgIjAiKTsKK3Nob3VsZEJl
KCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsK
K3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJU
ZXN0aW5nIGEgZGlzcGxheS1wMyBjYW52YXMgd2l0aCBzcmdiIEltYWdlRGF0YSBkcmF3biBpbnRv
IGl0Iik7CitkZWJ1ZygiIik7CisKK2NvbnRleHREaXNwbGF5UDMucHV0SW1hZ2VEYXRhKGltYWdl
RGF0YVNSR0JUb1B1dCwgMCwgMCk7CisKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdl
RGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJkYXRh
LmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKKy8vIE5PVEU6IFRoaXMgMyBpcyBvZGQsIGJ1dCBkdWUg
dG8gbGFjayBvZiBwcmVjaXNpb24gaW4gOC1iaXQgcm91bmQtdHJpcHBpbmcuCitzaG91bGRCZSgi
ZGF0YS5kYXRhWzBdIiwgIjMiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMV0iLCAiMjU1Iik7Citz
aG91bGRCZSgiZGF0YS5kYXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbM10iLCAi
MjU1Iik7CisKK2RhdGEgPSBjb250ZXh0RGlzcGxheVAzLmdldEltYWdlRGF0YSgwLCAwLCAxLCAx
LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3Bh
Y2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7Citz
aG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIs
ICI3NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWcoIiIpOwor
ZGVidWcoIlRlc3RpbmcgYSBzcmdiIGNhbnZhcyB3aXRoIGRpc3BsYXktcDMgSW1hZ2VEYXRhIGRy
YXduIGludG8gaXQiKTsKK2RlYnVnKCIiKTsKKworY29udGV4dFNSR0IucHV0SW1hZ2VEYXRhKGlt
YWdlRGF0YURpc3BsYXlQM1RvUHV0LCAwLCAwKTsKKworZGF0YSA9IGNvbnRleHRTUkdCLmdldElt
YWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJk
YXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMCIp
Oworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUiKTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFb
Ml0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGF0YSA9IGNv
bnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5
LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgImRpc3BsYXktcDMiYCkKK3No
b3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7CitzaG91bGRCZSgiZGF0YS5kYXRhWzFdIiwg
IjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIsICI3NiIpOworc2hvdWxkQmUoImRhdGEu
ZGF0YVszXSIsICIyNTUiKTsKKworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdGluZyBhIHNyZ2Ig
Y2FudmFzIHdpdGggc3JnYiBJbWFnZURhdGEgZHJhd24gaW50byBpdCIpOworZGVidWcoIiIpOwor
Citjb250ZXh0U1JHQi5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhU1JHQlRvUHV0LCAwLCAwKTsKKwor
ZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAxLCB7IGNvbG9yU3BhY2U6
ICJzcmdiIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3BhY2UiLCBgInNyZ2IiYCkKK3Nob3Vs
ZEJlKCJkYXRhLmRhdGFbMF0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsxXSIsICIyNTUi
KTsKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsz
XSIsICIyNTUiKTsKKworZGF0YSA9IGNvbnRleHRTUkdCLmdldEltYWdlRGF0YSgwLCAwLCAxLCAx
LCB7IGNvbG9yU3BhY2U6ICJkaXNwbGF5LXAzIiB9KTsKK3Nob3VsZEJlKCJkYXRhLmNvbG9yU3Bh
Y2UiLCBgImRpc3BsYXktcDMiYCkKK3Nob3VsZEJlKCJkYXRhLmRhdGFbMF0iLCAiMTE3Iik7Citz
aG91bGRCZSgiZGF0YS5kYXRhWzFdIiwgIjI1MSIpOworc2hvdWxkQmUoImRhdGEuZGF0YVsyXSIs
ICI3NiIpOworc2hvdWxkQmUoImRhdGEuZGF0YVszXSIsICIyNTUiKTsKKworZGVidWcoIiIpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtaW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtaW1hZ2VEYXRhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3
NTQ0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWltYWdlRGF0YS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0LDIwICsxNCwyMCBAQCBQQVNTIG5ldyBJbWFnZURh
dGEoLTIwLCAyMCkgdGhyZXcgZXhjZXB0CiBQQVNTIG5ldyBJbWFnZURhdGEoMjAsIC0yMCkgdGhy
ZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IENhbm5vdCBhbGxvY2F0ZSBhIGJ1ZmZlciBvZiB0aGlz
IHNpemUuCiBQQVNTIG5ldyBJbWFnZURhdGEobnVsbCwgMjApIHRocmV3IGV4Y2VwdGlvbiBJbmRl
eFNpemVFcnJvcjogVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS4uCiBQQVNT
IG5ldyBJbWFnZURhdGEoMzI3NjgsIDMyNzY4KSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjog
Q2Fubm90IGFsbG9jYXRlIGEgYnVmZmVyIG9mIHRoaXMgc2l6ZS4KLVBBU1MgbmV3IEltYWdlRGF0
YShudWxsLCAyMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdk
YXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9m
IFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMjAsIDIw
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgnZGF0YScpIHRvIHRoZSBJ
bWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBVaW50OENsYW1wZWRB
cnJheS4KK1BBU1MgbmV3IEltYWdlRGF0YShudWxsLCAyMCwgMjApIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAyMCwg
MjApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIG5ldyBJbWFn
ZURhdGEoaW1hZ2VEYXRhLCAwKSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IFRoZSBp
bmRleCBpcyBub3QgaW4gdGhlIGFsbG93ZWQgcmFuZ2UuLgotUEFTUyBuZXcgSW1hZ2VEYXRhKGlt
YWdlRGF0YSwgMjAsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdk
YXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9m
IFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMjAp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIElt
YWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFy
cmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgMTAsIDUpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1
Y3RvciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgorUEFTUyBuZXcg
SW1hZ2VEYXRhKGltYWdlRGF0YSwgMjAsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIG5ldyBJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAyMCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgbmV3IEltYWdlRGF0YShpbWFnZURh
dGEsIDEwLCA1KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBu
ZXcgSW1hZ2VEYXRhKGltYWdlRGF0YS5kYXRhLCAxMCwgNSkgdGhyZXcgZXhjZXB0aW9uIEluZGV4
U2l6ZUVycm9yOiBzaCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaGVpZ2h0LgogUEFTUyBuZXcgSW1h
Z2VEYXRhKGltYWdlRGF0YS5kYXRhLCAtMTAsIDUpIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVF
cnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3LgogUEFTUyBuZXcgSW1hZ2VEYXRh
KGltYWdlRGF0YS5kYXRhLCAxMCwgLTEwKSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6
IHNoIHZhbHVlIGlzIG5vdCBlcXVhbCB0byBoZWlnaHQuCiBQQVNTIG5ldyBJbWFnZURhdGEobmV3
IFVpbnQ4Q2xhbXBlZEFycmF5KFsxLDIsMyw0LDUsNiw3LDhdKSw1MzY4NzA5MTMsMik7IHRocmV3
IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogTGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3
LgotUEFTUyBuZXcgSW1hZ2VEYXRhKHt9LDIsMik7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEFyZ3VtZW50IDEgKCdkYXRhJykgdG8gdGhlIEltYWdlRGF0YSBjb25zdHJ1Y3RvciBtdXN0IGJl
IGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5LgotUEFTUyBuZXcgSW1hZ2VEYXRhKHVu
ZGVmaW5lZCwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1bWVudCAxICgnZGF0
YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBV
aW50OENsYW1wZWRBcnJheS4KLVBBU1MgbmV3IEltYWdlRGF0YSgibm9uZSIsMiwyKTsgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2RhdGEnKSB0byB0aGUgSW1hZ2VEYXRh
IGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkuCi1Q
QVNTIG5ldyBJbWFnZURhdGEoMCwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcmd1
bWVudCAxICgnZGF0YScpIHRvIHRoZSBJbWFnZURhdGEgY29uc3RydWN0b3IgbXVzdCBiZSBhbiBp
bnN0YW5jZSBvZiBVaW50OENsYW1wZWRBcnJheS4KK1BBU1MgbmV3IEltYWdlRGF0YSh7fSwyLDIp
OyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgSW1hZ2VE
YXRhKHVuZGVmaW5lZCwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgorUEFTUyBuZXcgSW1hZ2VEYXRhKCJub25lIiwyLDIpOyB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgSW1hZ2VEYXRhKDAsMiwyKTsgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEu
ZGF0YSwgMzI3NjgsIDMyNzY4KSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6IExlbmd0
aCBpcyBub3QgYSBtdWx0aXBsZSBvZiBzdy4KIFBBU1MgbmV3IEltYWdlRGF0YShpbWFnZURhdGEu
ZGF0YSwgSW5maW5pdHksIEluZmluaXR5KSB0aHJldyBleGNlcHRpb24gSW5kZXhTaXplRXJyb3I6
IExlbmd0aCBpcyBub3QgYSBtdWx0aXBsZSBvZiBzdy4KIFBBU1MgbmV3IEltYWdlRGF0YShpbWFn
ZURhdGEuZGF0YSwgTmFOLCBOYU4pIHRocmV3IGV4Y2VwdGlvbiBJbmRleFNpemVFcnJvcjogTGVu
Z3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIHN3LgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzc1NDQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDUtMTUgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjcmVh
dGluZy9hY2Nlc3Npbmcvc2V0dGluZyBub24tc1JHQiBJbWFnZURhdGEgdmlhIGNhbnZhcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1ODQxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFj
ZS5wMy50by5wMy1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0ZSByZXN1bHQgdG8gcGFzc2lu
Zy4KKwogMjAyMS0wNS0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgb3V0cHV0IGVsZW1lbnQgZG9lc24ndCByZWFjdCBwcm9wZXJseSB0byBub2RlIHRyZWUgbXV0
YXRpb25zCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvd2lkZS1nYW11dC1jYW52YXMvMmQuY29sb3Iuc3BhY2UucDMu
dG8ucDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZh
cy8yZC5jb2xvci5zcGFjZS5wMy50by5wMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NzU0NCkK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52
YXMvZWxlbWVudC93aWRlLWdhbXV0LWNhbnZhcy8yZC5jb2xvci5zcGFjZS5wMy50by5wMy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNSArMiw1IEBACiB0ZXN0IGdldEltYWdlRGF0
YSB3aXRoIGRpc3BsYXktcDMgYW5kIHVpbnQ4IGZyb20gZGlzcGxheSBwMyB1aW50OCBjYW52YXMK
IEFjdHVhbCBvdXRwdXQ6CiAKLUZBSUwgdGVzdCBnZXRJbWFnZURhdGEgd2l0aCBkaXNwbGF5LXAz
IGFuZCB1aW50OCBmcm9tIGRpc3BsYXkgcDMgdWludDggY2FudmFzIGFzc2VydF9hcHByb3hfZXF1
YWxzOiBleHBlY3RlZCA2MiArLy0gMiBidXQgZ290IDUwCitQQVNTIHRlc3QgZ2V0SW1hZ2VEYXRh
IHdpdGggZGlzcGxheS1wMyBhbmQgdWludDggZnJvbSBkaXNwbGF5IHAzIHVpbnQ4IGNhbnZhcwog
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCShyZXZp
c2lvbiAyNzc1NDQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlv
bnMJKHdvcmtpbmcgY29weSkKQEAgLTIzNTgsNiArMjM1OCw3IEBAIGZhc3QvcmVwbGFjZWQvcGRm
LWFzLWVtYmVkLXdpdGgtbm8tbWltZS0KIHdlYmtpdC5vcmcvYi8yMjQxMTIgbWVkaWEvdmlkZW8t
YXMtaW1nLW91dHB1dC1wdHMuaHRtbCBbIFRpbWVvdXQgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8y
MjU0MjMgZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNwYWNlLWRpc3BsYXktcDMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIyNTQyMyBmYXN0L2NhbnZhcy9jYW52YXMt
Y29sb3Itc3BhY2UtZGlzcGxheS1wMy1JbWFnZURhdGEuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzIyNTQyMyBmYXN0L2NhbnZhcy9jYW52YXMtY29tcG9zaXRlLXRleHQtYWxwaGEuaHRt
bCBbIEZhaWx1cmUgXQogCiAjIEZhaWxpbmcgYWZ0ZXIgcjI3NzA3My4KSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyNzc1NDQpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpA
QCAtNDYzMyw0ICs0NjMzLDYgQEAgd2ViZXhwb3NlZC9jb3VudGVyLXN0eWxlLWltYWdlLXN5bWJv
bHMtbgogCiBmYXN0L3RleHQvbGluZS1icmVhay13aXRoLWxvY2FsZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiAKLWZhc3QvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldHRpbmdz
LWNvbG9yU3BhY2UtZW5hYmxlZC5odG1sIFsgU2tpcCBdCisjIE5vbi1TUkdCIGNvbG9yIHNwYWNl
cyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIFdpbmRvd3MgcG9ydC4KK2Zhc3Qv
Y2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLmh0bWwgWyBTa2lwIF0KK2Zhc3Qv
Y2FudmFzL2NhbnZhcy1jb2xvci1zcGFjZS1kaXNwbGF5LXAzLUltYWdlRGF0YS5odG1sIFsgU2tp
cCBdCkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3Rv
cmUtYXV0b2luY3JlbWVudC10eXBlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQt
dHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc1NDQpCisrKyBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC10eXBlcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAgUEFTUyBrZXkgaXMgMwog
UEFTUyByZXF1ZXN0LnJlc3VsdC5wcmltYXJ5S2V5IGlzIGltYWdlRGF0YS5wcmltYXJ5S2V5CiBQ
QVNTIHJlcXVlc3QucmVzdWx0LndpZHRoIGlzIGltYWdlRGF0YS53aWR0aAogUEFTUyByZXF1ZXN0
LnJlc3VsdC5oZWlnaHQgaXMgaW1hZ2VEYXRhLmhlaWdodAorUEFTUyByZXF1ZXN0LnJlc3VsdC5j
b2xvclNwYWNlIGlzIGltYWdlRGF0YS5jb2xvclNwYWNlCiBQQVNTIGtleSBpcyA0CiBQQVNTIHJl
cXVlc3QucmVzdWx0LnByaW1hcnlLZXkgaXMgZmlsZUxpc3QucHJpbWFyeUtleQogUEFTUyByZXF1
ZXN0LnJlc3VsdC5sZW5ndGggaXMgZmlsZUxpc3QubGVuZ3RoCkBAIC00MCw2ICs0MSw3IEBAIFBB
U1MgcmVxdWVzdC5yZXN1bHRbMV0udHlwZSBpcyBmaWxlLnR5cGUKIFBBU1MgcmVxdWVzdC5yZXN1
bHRbMl0ucHJpbWFyeUtleSBpcyBpbWFnZURhdGEucHJpbWFyeUtleQogUEFTUyByZXF1ZXN0LnJl
c3VsdFsyXS53aWR0aCBpcyBpbWFnZURhdGEud2lkdGgKIFBBU1MgcmVxdWVzdC5yZXN1bHRbMl0u
aGVpZ2h0IGlzIGltYWdlRGF0YS5oZWlnaHQKK1BBU1MgcmVxdWVzdC5yZXN1bHRbMl0uY29sb3JT
cGFjZSBpcyBpbWFnZURhdGEuY29sb3JTcGFjZQogUEFTUyByZXF1ZXN0LnJlc3VsdFszXS5wcmlt
YXJ5S2V5IGlzIGZpbGVMaXN0LnByaW1hcnlLZXkKIFBBU1MgcmVxdWVzdC5yZXN1bHRbM10ubGVu
Z3RoIGlzIGZpbGVMaXN0Lmxlbmd0aAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>