<?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>91044</bug_id>
          
          <creation_ts>2012-07-11 20:21:14 -0700</creation_ts>
          <short_desc>[chromium] Introduce CCResourceProvider, replacing TextureAllocator and hiding textures from clients to allow transport</short_desc>
          <delta_ts>2013-04-15 08:01:36 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>91712</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Labour">piman</reporter>
          <assigned_to name="Antoine Labour">piman</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>epenner</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>rniwa</cc>
    
    <cc>schenney</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>667358</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-11 20:21:14 -0700</bug_when>
    <thetext>[chromium] Introduce CCResourceProvider, replacing TextureAllocator and hiding textures from clients to allow transport</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667366</commentid>
    <comment_count>1</comment_count>
      <attachid>151850</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-11 20:40:01 -0700</bug_when>
    <thetext>Created attachment 151850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667368</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-11 20:43:12 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667369</commentid>
    <comment_count>3</comment_count>
      <attachid>151850</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-11 20:48:28 -0700</bug_when>
    <thetext>Comment on attachment 151850
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderer.h:61
&gt; +    };

Note: I&apos;m not sure this belongs here, but implTextureAllocator/contentsTextureAllocator used to be here. Maybe we can move to somewhere else. I don&apos;t think the CCResourceProvider should define those. Maybe CCLTHI?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.h:50
&gt; +    typedef unsigned ResourceId;

Note: I defined that type mostly to differentiate what are conceptually textures vs resources, but it means I have to include CCResourceProvider.h everywhere. I&apos;m ok using unsigned in client classes instead.

&gt; Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp:-83
&gt; -    // FIXME: Rename these to add &quot;m_&quot;.

sorry - as I went through here, I wanted to fix the FIXME, but that makes this patch huge. Unfortunately it&apos;s a mix of the functional change as well as the renaming (to note: in several tests, there were a few priorityCalculator variables hiding the field - I removed them, which should be ok since CCPriorityCalculator doesn&apos;t have state).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668077</commentid>
    <comment_count>4</comment_count>
      <attachid>151850</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-12 12:25:57 -0700</bug_when>
    <thetext>Comment on attachment 151850
Patch

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

&gt;&gt; Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp:-83
&gt;&gt; -    // FIXME: Rename these to add &quot;m_&quot;.
&gt; 
&gt; sorry - as I went through here, I wanted to fix the FIXME, but that makes this patch huge. Unfortunately it&apos;s a mix of the functional change as well as the renaming (to note: in several tests, there were a few priorityCalculator variables hiding the field - I removed them, which should be ok since CCPriorityCalculator doesn&apos;t have state).

My bad. I did it to keep another huge patch more readable, but obviously I should have just done it (or followed up faster).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668079</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-12 12:27:26 -0700</bug_when>
    <thetext>Closing as this is now here:
https://code.google.com/p/chromium/issues/detail?id=137094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668080</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-12 12:27:44 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Closing as this is now here:
&gt; https://code.google.com/p/chromium/issues/detail?id=137094

OMG Sorry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668082</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-12 12:28:10 -0700</bug_when>
    <thetext>Wrong TAB!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668137</commentid>
    <comment_count>8</comment_count>
      <attachid>151850</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-12 13:15:40 -0700</bug_when>
    <thetext>Comment on attachment 151850
Patch

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

Looks like a good refactoring.  I think we&apos;ll want CCResourceProvider to be a base class with virtual methods (for the non-direct-GL implementation), but I can do that in a later patch.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.h:65
&gt; +    // Producer interface.

Could you add comments and assertions specifying which methods are expected to be called from the main thread and which from the impl thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668152</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-12 13:23:23 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 151850 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151850&amp;action=review
&gt; 
&gt; Looks like a good refactoring.  I think we&apos;ll want CCResourceProvider to be a base class with virtual methods (for the non-direct-GL implementation), but I can do that in a later patch.

Yeah, we can probably do that. Some of the logic (e.g. resource accounting) would make sense to share across the implementations.
You&apos;ll note that many (most of, actually) of the &quot;FIXME: Implement this path for software compositing.&quot; moved to CCResourceProvider so that should help simplifying that work.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.h:65
&gt; &gt; +    // Producer interface.
&gt; 
&gt; Could you add comments and assertions specifying which methods are expected to be called from the main thread and which from the impl thread?

Will do. The expectation is that everything is called from the impl thread, or during the commit step with the impl thread locked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668451</commentid>
    <comment_count>10</comment_count>
      <attachid>152111</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-12 17:42:23 -0700</bug_when>
    <thetext>Created attachment 152111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668455</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-12 17:45:23 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 151850 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151850&amp;action=review
&gt; &gt; 
&gt; &gt; Looks like a good refactoring.  I think we&apos;ll want CCResourceProvider to be a base class with virtual methods (for the non-direct-GL implementation), but I can do that in a later patch.
&gt; 
&gt; Yeah, we can probably do that. Some of the logic (e.g. resource accounting) would make sense to share across the implementations.
&gt; You&apos;ll note that many (most of, actually) of the &quot;FIXME: Implement this path for software compositing.&quot; moved to CCResourceProvider so that should help simplifying that work.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.h:65
&gt; &gt; &gt; +    // Producer interface.
&gt; &gt; 
&gt; &gt; Could you add comments and assertions specifying which methods are expected to be called from the main thread and which from the impl thread?
&gt; 
&gt; Will do. The expectation is that everything is called from the impl thread, or during the commit step with the impl thread locked.

Newest patch has this. Actually right now, only the impl thread calls it, so I made the asserts stricter.
Note: some tests don&apos;t bother separating main thread-side stuff vs impl thread-side stuff, so I can&apos;t use CCProxy::isImplThread without heavily modifying all those tests. Instead I assert WTF::currentThread(), which means it&apos;s a very loose check in single threaded mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668659</commentid>
    <comment_count>12</comment_count>
      <attachid>152111</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-07-13 00:02:55 -0700</bug_when>
    <thetext>Comment on attachment 152111
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:631
&gt; +        copyTextureToFramebuffer(backgroundTexture-&gt;beginRenderFrom(), quad-&gt;quadRect().size(), quad-&gt;drawTransform());

a little creepy that the beginRenderFrom is in here. Move to line before so its obvious? And any where else where this pattern is done?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:721
&gt; +        contentsTexture-&gt;endRenderFrom();

I&apos;m really worried about early returns causing forgotten endRenderFroms/Tos.

Would a (mandatory) scoped class help ensure pairing?

Also, just bikeshedding, but why render? When I read render the first few times, I started thinking we&apos;re going to endRenderFrom when we get the swapack.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1391
&gt; +    finishCurrentFramebuffer();

finish implies to me glFinish. Longer but more self-explanatory function name possible?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1437
&gt; +void LayerRendererChromium::finishCurrentFramebuffer()

yeah, definitely confused what this thing is doing...

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderer.h:60
&gt; +      ContentPool

Content pool?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668660</commentid>
    <comment_count>13</comment_count>
      <attachid>152111</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-07-13 00:03:10 -0700</bug_when>
    <thetext>Comment on attachment 152111
Patch

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

&gt; I think we&apos;ll want CCResourceProvider to be a base class with virtual methods (for the non-direct-GL implementation), but I can do that in a later patch.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:631
&gt; +        copyTextureToFramebuffer(backgroundTexture-&gt;beginRenderFrom(), quad-&gt;quadRect().size(), quad-&gt;drawTransform());

a little creepy that the beginRenderFrom is in here. Move to line before so its obvious? And any where else where this pattern is done?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:721
&gt; +        contentsTexture-&gt;endRenderFrom();

I&apos;m really worried about early returns causing forgotten endRenderFroms/Tos.

Would a (mandatory) scoped class help ensure pairing?

Also, just bikeshedding, but why render? When I read render the first few times, I started thinking we&apos;re going to endRenderFrom when we get the swapack.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1391
&gt; +    finishCurrentFramebuffer();

finish implies to me glFinish. Longer but more self-explanatory function name possible?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1437
&gt; +void LayerRendererChromium::finishCurrentFramebuffer()

yeah, definitely confused what this thing is doing...

&gt; Source/WebKit/chromium/tests/CCResourceProviderTest.cpp:83
&gt; +            ASSERT(false);

I&apos;ve heard james say not to use defaults on enum switches because that we&apos;ve got our compilers set up to warn about this case? ~shrug~

&gt; Source/WebKit/chromium/tests/CCResourceProviderTest.cpp:218
&gt; +    CCResourceProvider::ResourceId id = m_resourceProvider-&gt;createResource(pool, size, format, CCResourceProvider::Any);

Just noticing now, this enum value might want a better name so it better documents the positional argument when used in this form...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669490</commentid>
    <comment_count>14</comment_count>
      <attachid>152111</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-13 15:21:38 -0700</bug_when>
    <thetext>Comment on attachment 152111
Patch

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

This is great stuff.  :)

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:721
&gt;&gt;&gt; +        contentsTexture-&gt;endRenderFrom();
&gt;&gt; 
&gt;&gt; I&apos;m really worried about early returns causing forgotten endRenderFroms/Tos.
&gt;&gt; 
&gt;&gt; Would a (mandatory) scoped class help ensure pairing?
&gt;&gt; 
&gt;&gt; Also, just bikeshedding, but why render? When I read render the first few times, I started thinking we&apos;re going to endRenderFrom when we get the swapack.
&gt; 
&gt; I&apos;m really worried about early returns causing forgotten endRenderFroms/Tos.
&gt; 
&gt; Would a (mandatory) scoped class help ensure pairing?
&gt; 
&gt; Also, just bikeshedding, but why render? When I read render the first few times, I started thinking we&apos;re going to endRenderFrom when we get the swapack.

I&apos;m going to hop on this bikeshed too.  What about mapForRead/mapForWrite?

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1437
&gt;&gt;&gt; +void LayerRendererChromium::finishCurrentFramebuffer()
&gt;&gt; 
&gt;&gt; yeah, definitely confused what this thing is doing...
&gt; 
&gt; yeah, definitely confused what this thing is doing...

This is the pair to a potential beginRenderTo from bindFramebufferToTexture (render to texture).

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTexture.h:90
&gt;      // These functions will aquire the texture if possible. If neither haveBackingTexture()
&gt;      // nor canAquireBackingTexture() is true, an ID of zero will be used/returned.

Should these comments be removed too?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTextureManager.cpp:39
&gt; +CCPrioritizedTextureManager::CCPrioritizedTextureManager(size_t maxMemoryLimitBytes, int, int pool)

Can you explicitly use CCRenderer::ResourcePool in  more places? I&apos;m fine if CCResourceProvider is agnostic and just uses an int, but higher level compositor code should be using an enum.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderer.h:60
&gt;&gt; +      ContentPool
&gt; 
&gt; Content pool?

This is an enum that differentiates the old contentsTextureAllocator (main thread content) vs. implTextureAllocator (render surfaces).

&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.cpp:171
&gt; +    ASSERT(WTF::currentThread() == m_threadIdentifier);

How many tests fail if this is CCProxy::isImplThread? Can you just flavor with DebugScopedSetImplThread to taste?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.cpp:209
&gt; +#ifndef NDEBUG

#if !ASSERT_DISABLED

&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.cpp:236
&gt; +    m_texSubImage = adoptPtr(new LayerTextureSubImage(useMapSub));

Having this in one place is really nice cleanup.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.cpp:254
&gt; +    if (m_format == GraphicsContext3D::TEXTURE_2D) {
&gt; +        ASSERT(m_externalTextureResource);
&gt; +        resourceProvider-&gt;deleteResource(m_externalTextureResource);
&gt; +        m_externalTextureResource = 0;
&gt; +    }
&gt; +
&gt;      m_provider-&gt;putCurrentFrame(m_frame);
&gt;      m_frame = 0;

Talking out loud: like the other didDraw FIXME, I think this will also not be true for an embedded compositor.  I think willDraw/didDraw are going to need some serious changes to handle that case.

&gt;&gt; Source/WebKit/chromium/tests/CCResourceProviderTest.cpp:83
&gt;&gt; +            ASSERT(false);
&gt; 
&gt; I&apos;ve heard james say not to use defaults on enum switches because that we&apos;ve got our compilers set up to warn about this case? ~shrug~

That&apos;s only the case when your switch statement covers every case.

Also, ASSERT_NOT_REACHED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670930</commentid>
    <comment_count>15</comment_count>
      <attachid>152687</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-16 20:19:47 -0700</bug_when>
    <thetext>Created attachment 152687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670940</commentid>
    <comment_count>16</comment_count>
      <attachid>152111</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-16 20:29:37 -0700</bug_when>
    <thetext>Comment on attachment 152111
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:631
&gt;&gt;&gt; +        copyTextureToFramebuffer(backgroundTexture-&gt;beginRenderFrom(), quad-&gt;quadRect().size(), quad-&gt;drawTransform());
&gt;&gt; 
&gt;&gt; a little creepy that the beginRenderFrom is in here. Move to line before so its obvious? And any where else where this pattern is done?
&gt; 
&gt; a little creepy that the beginRenderFrom is in here. Move to line before so its obvious? And any where else where this pattern is done?

I replaced by the CCScopedLockResourceForRead and stuff, it should look nicer now.

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:721
&gt;&gt;&gt;&gt; +        contentsTexture-&gt;endRenderFrom();
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m really worried about early returns causing forgotten endRenderFroms/Tos.
&gt;&gt;&gt; 
&gt;&gt;&gt; Would a (mandatory) scoped class help ensure pairing?
&gt;&gt;&gt; 
&gt;&gt;&gt; Also, just bikeshedding, but why render? When I read render the first few times, I started thinking we&apos;re going to endRenderFrom when we get the swapack.
&gt;&gt; 
&gt;&gt; I&apos;m really worried about early returns causing forgotten endRenderFroms/Tos.
&gt;&gt; 
&gt;&gt; Would a (mandatory) scoped class help ensure pairing?
&gt;&gt; 
&gt;&gt; Also, just bikeshedding, but why render? When I read render the first few times, I started thinking we&apos;re going to endRenderFrom when we get the swapack.
&gt; 
&gt; I&apos;m going to hop on this bikeshed too.  What about mapForRead/mapForWrite?

I named lockForRead/lockForWrite. I liked map* but I&apos;m afraid it&apos;d conflict with a future map() that gives us mapped pixels. But I&apos;m not attached to it, so either way.
I also added the CCScopedLockResourceFor* classes. They are effectively mandatory.

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1391
&gt;&gt;&gt; +    finishCurrentFramebuffer();
&gt;&gt; 
&gt;&gt; finish implies to me glFinish. Longer but more self-explanatory function name possible?
&gt; 
&gt; finish implies to me glFinish. Longer but more self-explanatory function name possible?

With the CCScopedLockResource* it made sense to remove that function, so the naming problem went away.

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1437
&gt;&gt;&gt;&gt; +void LayerRendererChromium::finishCurrentFramebuffer()
&gt;&gt;&gt; 
&gt;&gt;&gt; yeah, definitely confused what this thing is doing...
&gt;&gt; 
&gt;&gt; yeah, definitely confused what this thing is doing...
&gt; 
&gt; This is the pair to a potential beginRenderTo from bindFramebufferToTexture (render to texture).

It&apos;s gone.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTexture.h:90
&gt;&gt;      // nor canAquireBackingTexture() is true, an ID of zero will be used/returned.
&gt; 
&gt; Should these comments be removed too?

Updated.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTextureManager.cpp:39
&gt;&gt; +CCPrioritizedTextureManager::CCPrioritizedTextureManager(size_t maxMemoryLimitBytes, int, int pool)
&gt; 
&gt; Can you explicitly use CCRenderer::ResourcePool in  more places? I&apos;m fine if CCResourceProvider is agnostic and just uses an int, but higher level compositor code should be using an enum.

As discussed, that would invert the CCRenderer and CCPrioritizedTextureManager layering, so I didn&apos;t do it. If we change our mind, and make CCPrioritizedTextureManager aware of pools, I suggest we then hardcode ContentPool here.

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderer.h:60
&gt;&gt;&gt; +      ContentPool
&gt;&gt; 
&gt;&gt; Content pool?
&gt; 
&gt; This is an enum that differentiates the old contentsTextureAllocator (main thread content) vs. implTextureAllocator (render surfaces).

Added comments.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.cpp:171
&gt;&gt; +    ASSERT(WTF::currentThread() == m_threadIdentifier);
&gt; 
&gt; How many tests fail if this is CCProxy::isImplThread? Can you just flavor with DebugScopedSetImplThread to taste?

I&apos;m a little sad in that it makes CCResourceProvider dependent on CCProxy, but it probably provides more safety, so be it.
I peppered DebugScopedSetImplThread in many tests. I&apos;ll let you judge.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.cpp:209
&gt;&gt; +#ifndef NDEBUG
&gt; 
&gt; #if !ASSERT_DISABLED

Gone.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.cpp:254
&gt;&gt;      m_frame = 0;
&gt; 
&gt; Talking out loud: like the other didDraw FIXME, I think this will also not be true for an embedded compositor.  I think willDraw/didDraw are going to need some serious changes to handle that case.

Yes, you&apos;re absolutely right, I should have mentioned it here too. I added a similar FIXME.

&gt;&gt;&gt; Source/WebKit/chromium/tests/CCResourceProviderTest.cpp:83
&gt;&gt;&gt; +            ASSERT(false);
&gt;&gt; 
&gt;&gt; I&apos;ve heard james say not to use defaults on enum switches because that we&apos;ve got our compilers set up to warn about this case? ~shrug~
&gt; 
&gt; That&apos;s only the case when your switch statement covers every case.
&gt; 
&gt; Also, ASSERT_NOT_REACHED.

Done.

&gt;&gt; Source/WebKit/chromium/tests/CCResourceProviderTest.cpp:218
&gt;&gt; +    CCResourceProvider::ResourceId id = m_resourceProvider-&gt;createResource(pool, size, format, CCResourceProvider::Any);
&gt; 
&gt; Just noticing now, this enum value might want a better name so it better documents the positional argument when used in this form...

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670955</commentid>
    <comment_count>17</comment_count>
      <attachid>152687</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-16 21:09:18 -0700</bug_when>
    <thetext>Comment on attachment 152687
Patch

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

Thanks for all the DebugScopedSetImplThread additions.  I realize that it&apos;s a little verbose, but I find it helpful when reading both code and tests to have a better sense of what context function calls are happening in.

The scoped locks are much clearer to read, too.

I&apos;m good with this patch, but I want to give Nat a chance to chime in, since he had a bunch of feedback the first time around.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.cpp:34
&gt; +#include &quot;cc/CCProxy.h&quot;

Yeah, it&apos;s sad to have this dependency, but it already exists in a number of other places.  We could always split out the thread identifier stuff into a separate class that&apos;s smaller than CCProxy.h.  There&apos;s no real reason that it has to be in there.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureLayerImpl.cpp:71
&gt; +    // pipelinig of updates) for the client will need to exist to solve this.

typo

&gt; Source/WebKit/chromium/tests/FakeCCGraphicsContext.h:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

2012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672951</commentid>
    <comment_count>18</comment_count>
      <attachid>153137</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-18 16:30:17 -0700</bug_when>
    <thetext>Created attachment 153137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672988</commentid>
    <comment_count>19</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-18 16:59:03 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 152687 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152687&amp;action=review
&gt; 
&gt; Thanks for all the DebugScopedSetImplThread additions.  I realize that it&apos;s a little verbose, but I find it helpful when reading both code and tests to have a better sense of what context function calls are happening in.
&gt; 
&gt; The scoped locks are much clearer to read, too.
&gt; 
&gt; I&apos;m good with this patch, but I want to give Nat a chance to chime in, since he had a bunch of feedback the first time around.


Nat, did you get a chance to look at the new patch?

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCResourceProvider.cpp:34
&gt; &gt; +#include &quot;cc/CCProxy.h&quot;
&gt; 
&gt; Yeah, it&apos;s sad to have this dependency, but it already exists in a number of other places.  We could always split out the thread identifier stuff into a separate class that&apos;s smaller than CCProxy.h.  There&apos;s no real reason that it has to be in there.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCTextureLayerImpl.cpp:71
&gt; &gt; +    // pipelinig of updates) for the client will need to exist to solve this.
&gt; 
&gt; typo

Done.

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/FakeCCGraphicsContext.h:2
&gt; &gt; + * Copyright (C) 2011 Google Inc. All rights reserved.
&gt; 
&gt; 2012

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672990</commentid>
    <comment_count>20</comment_count>
      <attachid>153137</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-18 17:03:30 -0700</bug_when>
    <thetext>Comment on attachment 153137
Patch

R=me.  I cornered Nat and he said he was happy with the naming and excited about the scoped locks.  He said if he looked more closely and didn&apos;t like it, he&apos;d just file bugs later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673014</commentid>
    <comment_count>21</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-07-18 17:24:33 -0700</bug_when>
    <thetext>And to be clear, the first time I looked at this, it looked awesome anyway. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673040</commentid>
    <comment_count>22</comment_count>
      <attachid>153137</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 18:10:15 -0700</bug_when>
    <thetext>Comment on attachment 153137
Patch

Rejecting attachment 153137 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
 316 (offset 3 lines).
Hunk #11 succeeded at 360 (offset 3 lines).
Hunk #12 succeeded at 382 (offset 3 lines).
Hunk #13 succeeded at 409 (offset 3 lines).
Hunk #14 succeeded at 433 (offset 2 lines).
patching file Source/WebKit/chromium/tests/TextureCopierTest.cpp
patching file Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Adrienne W...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13272694</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673054</commentid>
    <comment_count>23</comment_count>
      <attachid>153154</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-18 18:31:39 -0700</bug_when>
    <thetext>Created attachment 153154
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673104</commentid>
    <comment_count>24</comment_count>
      <attachid>153154</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 19:46:42 -0700</bug_when>
    <thetext>Comment on attachment 153154
Patch for landing

Clearing flags on attachment: 153154

Committed r123065: &lt;http://trac.webkit.org/changeset/123065&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673105</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 19:46:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673183</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 22:40:12 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 91712</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673189</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-18 22:56:36 -0700</bug_when>
    <thetext>Build fixes attempts landed in http://trac.webkit.org/changeset/123073 and http://trac.webkit.org/changeset/123074.

Using anonymous namespace is such a bad idea and please build your patch before landing patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673212</commentid>
    <comment_count>28</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-18 23:42:18 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Build fixes attempts landed in http://trac.webkit.org/changeset/123073 and http://trac.webkit.org/changeset/123074.
&gt; 
&gt; Using anonymous namespace is such a bad idea and please build your patch before landing patches.

rniwa: This patch was landed with the commit queue.

The gclient errors were Win only:
http://build.webkit.org/builders/Chromium%20Win%20Release/builds/46459/steps/gclient/logs/stdio

The build errors were Mac only: http://build.webkit.org/builders/Chromium%20Mac%20Release/builds/40233/steps/compile-webkit/logs/stdio

The build error has absolutely nothing to do with anonymous namespaces, and instead is bug https://bugs.webkit.org/show_bug.cgi?id=74625 yet again.  Clang doesn&apos;t optimize out all transient uses of the publicly defined OwnPtr copy constructor in the same way that gcc does; in some cases this will generate link failures.  This is an ongoing failure that nobody else seems to feel is a real problem.

If you have a problem with anonymous namespaces, then please propose a style guide change rather than being frustrated at people for using them.  I find them to be a perfectly reasonable alternative to &apos;static&apos; to prevent things from having external linkage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673218</commentid>
    <comment_count>29</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-18 23:48:30 -0700</bug_when>
    <thetext>It doesn&apos;t change the fact this patch caused a build failure, and using commit-queue doesn&apos;t excuse you from causing a build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673227</commentid>
    <comment_count>30</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-18 23:58:16 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; It doesn&apos;t change the fact this patch caused a build failure, and using commit-queue doesn&apos;t excuse you from causing a build failure.

It&apos;s true, but landing a patch that causes a build failure is not the same as landing a patch that doesn&apos;t build on any platform.  I&apos;m trying to say that there&apos;s no need to accuse anybody here of being irresponsible.

The commit queue is not perfect insurance, and I don&apos;t think it&apos;s a big deal to just immediately roll out the low percentage of patches that make it through but still break the build.  It happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673228</commentid>
    <comment_count>31</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-07-19 00:01:45 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; It doesn&apos;t change the fact this patch caused a build failure, and using commit-queue doesn&apos;t excuse you from causing a build failure.

Oh come on. We&apos;re all friends here. Lets be polite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673281</commentid>
    <comment_count>32</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-07-19 01:07:07 -0700</bug_when>
    <thetext>Apologies for the build breakage, and thank you for fixing it.

I did indeed build and test on linux, and relied on the cq for other platforms. It seemed reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673289</commentid>
    <comment_count>33</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-19 01:17:24 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; It doesn&apos;t change the fact this patch caused a build failure, and using commit-queue doesn&apos;t excuse you from causing a build failure.
&gt; 
&gt; It&apos;s true, but landing a patch that causes a build failure is not the same as landing a patch that doesn&apos;t build on any platform. I&apos;m trying to say that there&apos;s no need to accuse anybody here of being irresponsible.

Sure, I&apos;ve never accused anyone of being irresponsible. I&apos;m only asking people to build their patches on relevant platforms before landing them especially because most of Chromium developers tend to have multiple machines at their disposal, and this is one of the reasons I develop on Mac so that I can catch Mac specific build failures on my machine and then Linux specific build failures using EWS.

&gt; The commit queue is not perfect insurance, and I don&apos;t think it&apos;s a big deal to just immediately roll out the low percentage of patches that make it through but still break the build.  It happens.

It creates SVN churns, slows down bot cycles, and disrupts everyone&apos;s workflow. I&apos;d argue that rolling out patches should be the last resort.


(In reply to comment #31)
&gt; (In reply to comment #29)
&gt; &gt; It doesn&apos;t change the fact this patch caused a build failure, and using commit-queue doesn&apos;t excuse you from causing a build failure.
&gt; 
&gt; Oh come on. We&apos;re all friends here. Lets be polite.

I&apos;m sorry I didn&apos;t mean to be impolite.

On the other hand, causing build failures, then accusing someone who fixed those failures instead of simply rolling out the patch of complaining too much, etc... is considered extremely rude in my culture.

Now, all I wanted to see was a response like the one below I would had a good night sleep but now I&apos;m wide awake and in a really bad mood but whatever. It&apos;s not your fault.

(In reply to comment #32)
&gt; Apologies for the build breakage, and thank you for fixing it.
&gt; 
&gt; I did indeed build and test on linux, and relied on the cq for other platforms. It seemed reasonable.

No problem.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151850</attachid>
            <date>2012-07-11 20:40:01 -0700</date>
            <delta_ts>2012-07-12 17:42:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91044-20120711204001.patch</filename>
            <type>text/plain</type>
            <size>348480</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxNjE2MzI1MDljZTk3
YTM0NmQyNTYzYTNiM2RjZWUxMGQ1MGQ2YjU0Li5lZmZmZDAxODRlYTVhOGMzMjA2NTMyY2VjYTcw
ZjU5YTZiMTdlZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0wNy0xMSAg
QW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBJbnRyb2R1Y2UgQ0NSZXNvdXJjZVByb3ZpZGVyLCByZXBsYWNpbmcgVGV4dHVyZUFsbG9jYXRv
ciBhbmQgaGlkaW5nIHRleHR1cmVzIGZyb20gY2xpZW50cyB0byBhbGxvdyB0cmFuc3BvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBkb2VzIHNl
dmVyYWwgdGhpbmdzOgorICAgICAgICAtIEFkZCBhIENDUmVzb3VyY2VQcm92aWRlciBjbGFzcywg
dGhhdCBoaWRlcyB0ZXh0dXJlcyBhbmQgdGhlIDNEIGNvbnRleHQKKyAgICAgICAgZnJvbSBsYXll
cnMgKGV4Y2VwdCB0aG9zZSB0aGF0IG5lZWQgaXQpLiBJbnN0ZWFkIGxheWVycyBtYW5hZ2UKKyAg
ICAgICAgInJlc291cmNlcyIuIEluIHRoZSBmdXR1cmUsIHJlc291cmNlcyBhcmUgZXhwZWN0ZWQg
dG8gYmUgdHJhbnNwb3J0YWJsZQorICAgICAgICB0byBhICJwYXJlbnQiIENDUmVzb3VyY2VQcm92
aWRlciB0byBhbGxvdyBmbGF0dGVuaW5nIG9mIG5lc3RlZAorICAgICAgICBjb21wb3NpdG9ycy4K
KyAgICAgICAgLSBSZXBsYWNlIHRleHR1cmUgaWRzIGJ5IHJlc291cmNlIGlkcyBpbiBEcmF3UXVh
ZHMgKGFsbG93aW5nIHRoZW0gdG8gYmUKKyAgICAgICAgc2VyaWFsaXphYmxlKS4KKyAgICAgICAg
LSBSZXBsYWNlIFRleHR1cmVBbGxvY2F0b3IgdXNlcyBieSB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVy
IGNsYXNzLgorICAgICAgICAtIFVwbG9hZCBvZiBkYXRhIGlzIGRvbmUgdGhyb3VnaCB0aGUgQ0NS
ZXNvdXJjZVByb3ZpZGVyIGluc3RlYWQgb2YKKyAgICAgICAgZXhwbGljaXQgR0wgY2FsbHMuCisg
ICAgICAgIC0gRXh0ZXJuYWwgdGV4dHVyZXMgYXJlIHdyYXBwZWQgaW50byBhIHJlc291cmNlIGF0
IGRyYXcgdGltZSAoc2VlCisgICAgICAgIGNhdmVhdC9GSVhNRSBpbiBDQ1RleHR1cmVMYXllcklt
cGwpLgorICAgICAgICAtIFJlbmRlcmluZyB3aXRoIHRoZSByZXNvdXJjZXMgaXMgZG9uZSB0aHJv
dWdoIGFuIGV4cGxpY2l0CisgICAgICAgIGJlZ2luUmVuZGVyRnJvbS9lbmRSZW5kZXJGcm9tIHRo
YXQgZXhwb3NlcyB0aGUgdGV4dHVyZSBvbmx5IGJldHdlZW4gdGhhdAorICAgICAgICBwYWlyLgor
ICAgICAgICAtIE1lcmdlIGFsbCB0aGUgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgaW5zdGFuY2VzIChv
bmUgcGVyIGxheWVyKSwgaW50byBhCisgICAgICAgIHNpbmdsZSBpbnN0YW5jZSBvbiB0aGUgQ0NS
ZXNvdXJjZVByb3ZpZGVyLgorCisgICAgICAgIEFkZGVkIENDUmVzb3VyY2VQcm92aWRlclRlc3Qs
IHRoZSByZWZhY3RvcmluZyBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oOgorICAgICAgICAo
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRv
clRleHR1cmVRdWFkOjpyZXNvdXJjZUlkKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvclRpbGVRdWFkLmg6CisgICAgICAgIChXZWJDb21wb3NpdG9yVGlsZVF1YWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OnJlc291cmNlSWQpOgorCiAy
MDEyLTA3LTExICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBbY2hyb21pdW1dIE1vdmUgY29tcG9zaXRvciBxdWFkcyB0byBQbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAyYzVhMWQ2MWNiYzE2N2EwY2JhOTNlYWI4ZDQ4ZGQ4NDcyOWUz
OWY5Li45MTk1MzRjMzc1NWNkYjE0YjA4MjQwY2ZmNGI2NDg1ODhkYjlmYWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzEwIEBACisyMDEyLTA3LTExICBBbnRvaW5lIExhYm91ciAgPHBpbWFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEludHJvZHVjZSBDQ1Jlc291cmNlUHJv
dmlkZXIsIHJlcGxhY2luZyBUZXh0dXJlQWxsb2NhdG9yIGFuZCBoaWRpbmcgdGV4dHVyZXMgZnJv
bSBjbGllbnRzIHRvIGFsbG93IHRyYW5zcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEwNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGRvZXMgc2V2ZXJhbCB0aGluZ3M6CisgICAgICAgIC0g
QWRkIGEgQ0NSZXNvdXJjZVByb3ZpZGVyIGNsYXNzLCB0aGF0IGhpZGVzIHRleHR1cmVzIGFuZCB0
aGUgM0QgY29udGV4dAorICAgICAgICBmcm9tIGxheWVycyAoZXhjZXB0IHRob3NlIHRoYXQgbmVl
ZCBpdCkuIEluc3RlYWQgbGF5ZXJzIG1hbmFnZQorICAgICAgICAicmVzb3VyY2VzIi4gSW4gdGhl
IGZ1dHVyZSwgcmVzb3VyY2VzIGFyZSBleHBlY3RlZCB0byBiZSB0cmFuc3BvcnRhYmxlCisgICAg
ICAgIHRvIGEgInBhcmVudCIgQ0NSZXNvdXJjZVByb3ZpZGVyIHRvIGFsbG93IGZsYXR0ZW5pbmcg
b2YgbmVzdGVkCisgICAgICAgIGNvbXBvc2l0b3JzLgorICAgICAgICAtIFJlcGxhY2UgdGV4dHVy
ZSBpZHMgYnkgcmVzb3VyY2UgaWRzIGluIERyYXdRdWFkcyAoYWxsb3dpbmcgdGhlbSB0byBiZQor
ICAgICAgICBzZXJpYWxpemFibGUpLgorICAgICAgICAtIFJlcGxhY2UgVGV4dHVyZUFsbG9jYXRv
ciB1c2VzIGJ5IHRoZSBDQ1Jlc291cmNlUHJvdmlkZXIgY2xhc3MuCisgICAgICAgIC0gVXBsb2Fk
IG9mIGRhdGEgaXMgZG9uZSB0aHJvdWdoIHRoZSBDQ1Jlc291cmNlUHJvdmlkZXIgaW5zdGVhZCBv
ZgorICAgICAgICBleHBsaWNpdCBHTCBjYWxscy4KKyAgICAgICAgLSBFeHRlcm5hbCB0ZXh0dXJl
cyBhcmUgd3JhcHBlZCBpbnRvIGEgcmVzb3VyY2UgYXQgZHJhdyB0aW1lIChzZWUKKyAgICAgICAg
Y2F2ZWF0L0ZJWE1FIGluIENDVGV4dHVyZUxheWVySW1wbCkuCisgICAgICAgIC0gUmVuZGVyaW5n
IHdpdGggdGhlIHJlc291cmNlcyBpcyBkb25lIHRocm91Z2ggYW4gZXhwbGljaXQKKyAgICAgICAg
YmVnaW5SZW5kZXJGcm9tL2VuZFJlbmRlckZyb20gdGhhdCBleHBvc2VzIHRoZSB0ZXh0dXJlIG9u
bHkgYmV0d2VlbiB0aGF0CisgICAgICAgIHBhaXIuCisgICAgICAgIC0gTWVyZ2UgYWxsIHRoZSBM
YXllclRleHR1cmVTdWJJbWFnZSBpbnN0YW5jZXMgKG9uZSBwZXIgbGF5ZXIpLCBpbnRvIGEKKyAg
ICAgICAgc2luZ2xlIGluc3RhbmNlIG9uIHRoZSBDQ1Jlc291cmNlUHJvdmlkZXIuCisKKyAgICAg
ICAgQWRkZWQgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgdGhlIHJlZmFjdG9yaW5nIGlzIGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6V2ViQ29tcG9zaXRvclRl
eHR1cmVRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBv
c2l0b3JUaWxlUXVhZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUaWxlUXVh
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRpbGVRdWFkOjpXZWJD
b21wb3NpdG9yVGlsZVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZSk6
CisgICAgICAgIChCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaDoKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2NlbGVy
YXRlZENhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRh
dGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChU
ZXh0dXJlKToKKyAgICAgICAgKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVV
cGRhdGVyOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoSW1hZ2VMYXllclRl
eHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVvUXVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlUXVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdJT1N1cmZh
Y2VRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hl
YWRzVXBEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZmluaXNoRHJhd2luZ0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OnVzZVNjb3BlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2hDdXJyZW50RnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OnJlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZVN1YkltYWdlOjpMYXllclRleHR1cmVTdWJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRleHR1cmVTdWJJbWFnZTo6dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChMYXllclRleHR1cmVTdWJJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYW5h
Z2VkVGV4dHVyZTo6TWFuYWdlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRl
eHR1cmU6OnJlc2VydmUpOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OmFsbG9j
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpzdGVhbCk6CisgICAgICAg
IChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlOjpNYW5h
Z2VkVGV4dHVyZTo6cmVzb3VyY2VJZCk6CisgICAgICAgIChNYW5hZ2VkVGV4dHVyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0
ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVDb3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRU
ZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Zmx1c2gpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoKKyAgICAgICAgKFRleHR1
cmVDb3BpZXIpOgorICAgICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgIChUZXh0dXJlTWFu
YWdlcik6CisgICAgICAgIChUZXh0dXJlSW5mbyk6CisgICAgICAgIChFdmljdGlvbkVudHJ5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaDoK
KyAgICAgICAgKFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6CisgICAg
ICAgIChUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNw
bGF5OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lP
U3VyZmFjZUxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0lPU3VyZmFjZUxheWVy
SW1wbDo6d2lsbERyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ0lPU3VyZmFjZUxheWVySW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJJbXBsOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpjb250ZW50c1Jlc291cmNlSWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpkZWxldGVDb250ZW50c1RleHR1
cmVzT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YmVn
aW5Db21taXRPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
Q0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnJlbGVhc2VDb250ZW50c1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRpZERyYXdBbGxMYXllcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
SW1wbDo6cmVzb3VyY2VQcm92aWRlcik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4
dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YWNxdWly
ZUJhY2tpbmdUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJl
OjpyZXNvdXJjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjp1
cGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmJlZ2luUmVu
ZGVyVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmVuZFJlbmRl
clRvKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKENDUHJpb3JpdGl6ZWRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3Jp
dGl6ZWRUZXh0dXJlOjpCYWNraW5nOjpyZXNvdXJjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nOjpCYWNraW5nKToKKyAgICAgICAgKEJhY2tpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6On5DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1
aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNsZWFyQWxsTWVtb3J5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWxsQmFja2luZ1RleHR1cmVzV2VyZURl
bGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpj
cmVhdGVCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6ZGVzdHJveUJhY2tpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clBhc3NEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0Ry
YXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaDoKKyAgICAgICAgKENDUmVuZGVy
UGFzc0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpt
YXNrUmVzb3VyY2VJZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6
YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHR1
cmVUb1N0b3JhZ2VGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6aXNUZXh0dXJlRm9ybWF0U3Vw
cG9ydGVkRm9yU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6On5DQ1Jlc291
cmNlUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpncmFw
aGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6Omlu
VXNlQnlDb25zdW1lcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNy
ZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Y3Jl
YXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVz
b3VyY2VQcm92aWRlcjo6ZGVsZXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpkZWxldGVPd25lZFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1Jlc291cmNlUHJvdmlkZXI6OnVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNl
UHJvdmlkZXI6OmJlZ2luUmVuZGVyVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVBy
b3ZpZGVyOjplbmRSZW5kZXJUbyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlk
ZXI6OmJlZ2luUmVuZGVyRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlk
ZXI6OmVuZFJlbmRlckZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVy
OjpDQ1Jlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3Zp
ZGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Jlc291cmNlUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1Jlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjptYXhUZXh0dXJlU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6Om51bVJlc291cmNlcyk6CisgICAgICAgIChSZXNvdXJj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0
dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6Q0NTY29wZWRUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6YWxsb2NhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTY29wZWRUZXh0dXJlOjpmcmVlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKENDU2NvcGVkVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Njb3BlZFRleHR1cmU6OmJlZ2luUmVuZGVyVG8pOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTY29wZWRUZXh0dXJlOjplbmRSZW5kZXJUbyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1Njb3BlZFRleHR1cmU6OmJlZ2luUmVuZGVyRnJvbSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1Njb3BlZFRleHR1cmU6OmVuZFJlbmRlckZyb20pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpDQ1Njcm9sbGJhckxheWVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY3JvbGxiYXJMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5
ZXJJbXBsOjpzZXRCYWNrVHJhY2tSZXNvdXJjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Ny
b2xsYmFyTGF5ZXJJbXBsOjpzZXRGb3JlVHJhY2tSZXNvdXJjZUlkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpzZXRUaHVtYlJlc291cmNlSWQpOgorICAgICAgICAo
Q0NTY3JvbGxiYXJMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5n
bGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2lu
Z2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhy
ZWFkUHJveHk6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlOjppZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RleHR1cmU6OnNldElkKToKKyAgICAgICAgKENDVGV4dHVyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6Q0NUZXh0dXJlTGF5ZXJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6d2lsbERyYXcpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVMYXllckltcGw6
OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6ZGlk
RHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
TGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RleHR1cmVMYXllckltcGwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhy
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9u
SW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6OnJlc291
cmNlSWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2FibGVUaWxlOjpzZXRSZXNvdXJjZUlkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYXdhYmxlVGlsZTo6RHJhd2FibGVUaWxlKToKKyAgICAgICAg
KERyYXdhYmxlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpjb250
ZW50c1Jlc291cmNlSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6aGFz
VGV4dHVyZUlkRm9yVGlsZUF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6
OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OnB1c2hU
aWxlUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAoQ0NUaWxlZExheWVySW1wbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpDQ1ZpZGVvTGF5ZXJJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6On5DQ1ZpZGVvTGF5ZXJJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0xheWVySW1wbDo6ZGlkRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5
ZXJJbXBsOjpGcmFtZVBsYW5lOjphbGxvY2F0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NW
aWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6ZnJlZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0xheWVySW1wbDo6YWxsb2NhdGVQbGFuZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0xheWVySW1wbDo6Y29weVBsYW5lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Zp
ZGVvTGF5ZXJJbXBsOjpmcmVlUGxhbmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9M
YXllckltcGw6OmZyZWVVbnVzZWRQbGFuZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRl
b0xheWVySW1wbDo6ZGlkTG9zZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAgICAgICAgKENDVmlkZW9MYXllcklt
cGwpOgorICAgICAgICAoRnJhbWVQbGFuZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5
ZXJJbXBsOjpGcmFtZVBsYW5lOjpGcmFtZVBsYW5lKToKKwogMjAxMi0wNy0xMSAgQWxleGFuZHJl
IEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBNb3ZlIGNv
bXBvc2l0b3IgcXVhZHMgdG8gUGxhdGZvcm0vY2hyb21pdW0vcHVibGljCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGRkNTBmZmNlOWMxZGNkOTEyMzQ1N2RhYjcwZTYzMDljZTRlOGM3ZTgu
LmEyMmI3NDViNzdhM2JhNzllMmVjM2NhODAxNzU5MGFhNjdjMmVjNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMTItMDctMTEgIEFudG9pbmUgTGFib3Vy
ICA8cGltYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW50cm9kdWNlIEND
UmVzb3VyY2VQcm92aWRlciwgcmVwbGFjaW5nIFRleHR1cmVBbGxvY2F0b3IgYW5kIGhpZGluZyB0
ZXh0dXJlcyBmcm9tIGNsaWVudHMgdG8gYWxsb3cgdHJhbnNwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTA0NAorCisgICAgICAgIFRoaXMgZG9l
cyBzZXZlcmFsIHRoaW5nczoKKyAgICAgICAgLSBBZGQgYSBDQ1Jlc291cmNlUHJvdmlkZXIgY2xh
c3MsIHRoYXQgaGlkZXMgdGV4dHVyZXMgYW5kIHRoZSAzRCBjb250ZXh0CisgICAgICAgIGZyb20g
bGF5ZXJzIChleGNlcHQgdGhvc2UgdGhhdCBuZWVkIGl0KS4gSW5zdGVhZCBsYXllcnMgbWFuYWdl
CisgICAgICAgICJyZXNvdXJjZXMiLiBJbiB0aGUgZnV0dXJlLCByZXNvdXJjZXMgYXJlIGV4cGVj
dGVkIHRvIGJlIHRyYW5zcG9ydGFibGUKKyAgICAgICAgdG8gYSAicGFyZW50IiBDQ1Jlc291cmNl
UHJvdmlkZXIgdG8gYWxsb3cgZmxhdHRlbmluZyBvZiBuZXN0ZWQKKyAgICAgICAgY29tcG9zaXRv
cnMuCisgICAgICAgIC0gUmVwbGFjZSB0ZXh0dXJlIGlkcyBieSByZXNvdXJjZSBpZHMgaW4gRHJh
d1F1YWRzIChhbGxvd2luZyB0aGVtIHRvIGJlCisgICAgICAgIHNlcmlhbGl6YWJsZSkuCisgICAg
ICAgIC0gUmVwbGFjZSBUZXh0dXJlQWxsb2NhdG9yIHVzZXMgYnkgdGhlIENDUmVzb3VyY2VQcm92
aWRlciBjbGFzcy4KKyAgICAgICAgLSBVcGxvYWQgb2YgZGF0YSBpcyBkb25lIHRocm91Z2ggdGhl
IENDUmVzb3VyY2VQcm92aWRlciBpbnN0ZWFkIG9mCisgICAgICAgIGV4cGxpY2l0IEdMIGNhbGxz
LgorICAgICAgICAtIEV4dGVybmFsIHRleHR1cmVzIGFyZSB3cmFwcGVkIGludG8gYSByZXNvdXJj
ZSBhdCBkcmF3IHRpbWUgKHNlZQorICAgICAgICBjYXZlYXQvRklYTUUgaW4gQ0NUZXh0dXJlTGF5
ZXJJbXBsKS4KKyAgICAgICAgLSBSZW5kZXJpbmcgd2l0aCB0aGUgcmVzb3VyY2VzIGlzIGRvbmUg
dGhyb3VnaCBhbiBleHBsaWNpdAorICAgICAgICBiZWdpblJlbmRlckZyb20vZW5kUmVuZGVyRnJv
bSB0aGF0IGV4cG9zZXMgdGhlIHRleHR1cmUgb25seSBiZXR3ZWVuIHRoYXQKKyAgICAgICAgcGFp
ci4KKyAgICAgICAgLSBNZXJnZSBhbGwgdGhlIExheWVyVGV4dHVyZVN1YkltYWdlIGluc3RhbmNl
cyAob25lIHBlciBsYXllciksIGludG8gYQorICAgICAgICBzaW5nbGUgaW5zdGFuY2Ugb24gdGhl
IENDUmVzb3VyY2VQcm92aWRlci4KKworICAgICAgICBBZGRlZCBDQ1Jlc291cmNlUHJvdmlkZXJU
ZXN0LCB0aGUgcmVmYWN0b3JpbmcgaXMgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwOgor
ICAgICAgICAoV1RGOjpDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Q6OkNDUHJpb3JpdGl6ZWRUZXh0
dXJlVGVzdCk6CisgICAgICAgIChXVEY6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdDo6Y3JlYXRl
TWFuYWdlcik6CisgICAgICAgIChXVEY6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdDo6dmFsaWRh
dGVUZXh0dXJlKToKKyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0OjpyZXNv
dXJjZVByb3ZpZGVyKToKKyAgICAgICAgKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCk6CisgICAg
ICAgIChXVEY6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6
CisgICAgICAgICogdGVzdHMvQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFJlc291cmNlUHJvdmlkZXJDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlUHJvdmlkZXJDb250ZXh0OjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlUHJvdmlkZXJDb250ZXh0OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OmRlbGV0ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6dGV4U3RvcmFnZTJERVhUKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OnRleEltYWdlMkQpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlUHJvdmlkZXJDb250ZXh0OjpnZXRQaXhlbHMpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6dGV4dHVyZUNvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OnRleHR1cmVTaXplKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OlJlc291cmNlUHJvdmlkZXJD
b250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OlRleHR1
cmU6OlRleHR1cmUpOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlUHJvdmlkZXJDb250ZXh0OjphbGxvY2F0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6c2V0UGl4ZWxzKToKKyAgICAgICAgKENDUmVzb3VyY2VQ
cm92aWRlclRlc3QpOgorICAgICAgICAoV2ViS2l0OjpDQ1Jlc291cmNlUHJvdmlkZXJUZXN0OjpD
Q1Jlc291cmNlUHJvdmlkZXJUZXN0KToKKyAgICAgICAgKFdlYktpdDo6Q0NSZXNvdXJjZVByb3Zp
ZGVyVGVzdDo6Y29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkNDUmVzb3VyY2VQcm92aWRlclRl
c3Q6OmdldFJlc291cmNlUGl4ZWxzKToKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAg
ICAgKiB0ZXN0cy9DQ1Njb3BlZFRleHR1cmVUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAg
ICAgIChDQ0xheWVyVGVzdENvbW1vbjo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoQ0NMYXllclRl
c3RDb21tb246OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24u
Y3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9u
Lmg6CisgICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGV4dHVy
ZUNvcGllcjo6Y29weVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VUZXh0dXJl
Q29waWVyOjpmbHVzaCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZVRleHR1cmVVcGxvYWRl
cjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAgICogdGVzdHMvQ29udGVudExheWVyQ2hyb21pdW1U
ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VEVTVCk6CisgICAgICAgICogdGVzdHMvRmFrZUND
R3JhcGhpY3NDb250ZXh0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6Y3JlYXRlRmFrZUNDR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiB0ZXN0
cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKEZha2VMYXllclJlbmRl
cmVyQ2hyb21pdW06OkZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoTGF5ZXJS
ZW5kZXJlckNocm9taXVtVGVzdDo6TGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCk6CisgICAgICAg
IChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0Ojpjb250ZXh0KToKKyAgICAgICAgKExheWVyUmVu
ZGVyZXJDaHJvbWl1bVRlc3QpOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAqIHRlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9U
ZXh0dXJlTWFuYWdlclRlc3QuY3BwOgorICAgICAgICAoV1RGOjpUZXh0dXJlTWFuYWdlclRlc3Q6
OlRleHR1cmVNYW5hZ2VyVGVzdCk6CisgICAgICAgIChXVEY6OlRleHR1cmVNYW5hZ2VyVGVzdDo6
Y3JlYXRlVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV1RGOjpUZXh0dXJlTWFuYWdlclRlc3Q6
OnJlcXVlc3RUZXh0dXJlKToKKyAgICAgICAgKFRleHR1cmVNYW5hZ2VyVGVzdCk6CisgICAgICAg
ICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisKIDIwMTItMDctMTEgIEFsZXhh
bmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTW92
ZSBjb21wb3NpdG9yIHF1YWRzIHRvIFBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1
YWQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1
cmVRdWFkLmgKaW5kZXggOWJlNmZkM2U2ZDMxODI2ZjI1MTJhODAyNjM3Mjc5ZjQzMjcyNjA2My4u
NmI4ODY5NTY1YzE2YTIyYTk3ZjIyZWFjNjUzZGM5MGRhYjM1ZmM3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaAor
KysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJl
UXVhZC5oCkBAIC00MywxMSArNDMsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJD
b21wb3NpdG9yVGV4dHVyZVF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1YWQgewogcHVibGlj
OgogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNv
bXBvc2l0b3JUZXh0dXJlUXVhZD4gY3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29s
IHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1dlJlY3QsIGJv
b2wgZmxpcHBlZCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCByZXNvdXJjZUlkLCBib29sIHByZW11bHRpcGxpZWRB
bHBoYSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7CiAg
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IHV2UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdXZSZWN0OyB9
CiAjZW5kaWYKIAotICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4
dHVyZUlkOyB9CisgICAgdW5zaWduZWQgcmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b3VyY2VJZDsgfQogICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKCkgY29uc3QgeyByZXR1cm4g
IG1fcHJlbXVsdGlwbGllZEFscGhhOyB9CiAgICAgYm9vbCBmbGlwcGVkKCkgY29uc3QgeyByZXR1
cm4gbV9mbGlwcGVkOyB9CiAKQEAgLTU2LDEwICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNv
bXBvc2l0b3JRdWFkKik7CiBwcml2YXRlOgogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAg
IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdW5zaWduZWQgdGV4dHVyZV9p
ZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdXZS
ZWN0LCBib29sIGZsaXBwZWQpOworICAgIFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZChjb25zdCBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgdW5zaWduZWQgcmVzb3VyY2VJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpOwogI2VuZGlmCiAKLSAg
ICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICB1bnNpZ25lZCBtX3Jlc291cmNlSWQ7CiAgICAg
Ym9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKICAgICBXZWJGbG9hdFJlY3QgbV91dlJlY3Q7CiAg
ICAgYm9vbCBtX2ZsaXBwZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDb21wb3NpdG9yVGlsZVF1YWQuaAppbmRleCBlMGEyNTViYjI1ZGEzNzhiYmFm
NDU5OTY1ZTYyMmQ0MjNlMjk3ODZhLi5lMjBkZTcyMzMxMGE2ODk1N2E3OTljMmViOTdhODAxNTRh
YjFiYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3JUaWxlUXVhZC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29tcG9zaXRvclRpbGVRdWFkLmgKQEAgLTM5LDkgKzM5LDkgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJDb21wb3NpdG9yVGlsZVF1YWQgOiBwdWJsaWMgV2ViQ29tcG9zaXRvclF1
YWQgewogcHVibGljOgogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPFdlYkNvbXBvc2l0b3JUaWxlUXVhZD4gY3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JT
aGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVD
b250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VB
QSwgYm9vbCBib3R0b21FZGdlQUEpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkNvbXBvc2l0
b3JUaWxlUXVhZD4gY3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
b3BhcXVlUmVjdCwgdW5zaWduZWQgcmVzb3VyY2VJZCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHRleHR1cmVPZmZzZXQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRleHR1cmVTaXplLCBHQzNE
aW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEs
IGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CiAK
LSAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVy
ZUlkOyB9CisgICAgdW5zaWduZWQgcmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3Vy
Y2VJZDsgfQogICAgIFdlYkNvcmU6OkludFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX3RleHR1cmVPZmZzZXQ7IH0KICAgICBXZWJDb3JlOjpJbnRTaXplIHRleHR1cmVTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlU2l6ZTsgfQogICAgIEdDM0RpbnQgdGV4dHVyZUZp
bHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUZpbHRlcjsgfQpAQCAtNTgsMTAgKzU4LDEw
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgV2ViQ29tcG9zaXRvclRpbGVRdWFkKiBtYXRl
cmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1YWQqKTsKIHByaXZhdGU6CiAjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCi0gICAgIFdlYkNvbXBvc2l0b3JUaWxlUXVhZChjb25zdCBXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcXVhZFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBz
d2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmln
aHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKKyAgICAgV2ViQ29tcG9zaXRvclRpbGVRdWFk
KGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBxdWFkUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgb3BhcXVlUmVjdCwgdW5zaWdu
ZWQgcmVzb3VyY2VJZCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIs
IGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBi
b29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CiAjZW5kaWYKIAotICAgIFBsYXRm
b3JtM0RPYmplY3QgbV90ZXh0dXJlSWQ7CisgICAgdW5zaWduZWQgbV9yZXNvdXJjZUlkOwogICAg
IFdlYlBvaW50IG1fdGV4dHVyZU9mZnNldDsKICAgICBXZWJTaXplIG1fdGV4dHVyZVNpemU7CiAg
ICAgR0MzRGludCBtX3RleHR1cmVGaWx0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTM4YmU5MmFk
Mjk0YTkyMTk1Y2Q2NzIyNTY3M2JhMGYzMWEzMmZkNC4uNjhjZGZjZDYyOGIzMjljY2Y3N2ZkOWUy
MmRlYjQ4NmQzNmQwYzNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtODI3OSw4ICs4Mjc5LDYgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAnLAotICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVy
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJlZVN5bmNo
cm9uaXplci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0xheWVyQ2hyb21pdW0uY3BwJywKQEAgLTgzNjIsNiArODM2MCw4IEBACiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVycy5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3Vy
ZmFjZUZpbHRlcnMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJpbmdTdGF0cy5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3BwCmlu
ZGV4IGU1ZjQ1ZmRjNGNiMmE1OGY3Mjg3ZjVmYWM1ZGM1NmJkZDIzMDQwN2IuLmRkMGI2N2E0MWEy
M2Y2YTFiODA4MjY5NjYzMDIwZjA3ZmQ2MDU5MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0
b3JUZXh0dXJlUXVhZC5jcHAKQEAgLTMxLDE0ICszMSwxNCBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRl
eHR1cmVRdWFkPiBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6
OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxw
aGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpCitQYXNzT3duUHRyPFdl
YkNvbXBvc2l0b3JUZXh0dXJlUXVhZD4gV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpjcmVhdGUo
Y29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCByZXNvdXJjZUlkLCBib29sIHBy
ZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkK
IHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZChzaGFy
ZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0ZXh0dXJlSWQsIHByZW11bHRpcGxpZWRBbHBoYSwgdXZS
ZWN0LCBmbGlwcGVkKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVzb3VyY2VJZCwgcHJlbXVsdGlw
bGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpKTsKIH0KIAotV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkOjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0
LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9h
dFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKQorV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpX
ZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNp
Z25lZCByZXNvdXJjZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0
JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkKICAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1
YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlRleHR1cmVDb250ZW50LCBxdWFkUmVjdCkKLSAg
ICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlk
KQogICAgICwgbV9wcmVtdWx0aXBsaWVkQWxwaGEocHJlbXVsdGlwbGllZEFscGhhKQogICAgICwg
bV91dlJlY3QodXZSZWN0KQogICAgICwgbV9mbGlwcGVkKGZsaXBwZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxl
UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNv
bXBvc2l0b3JUaWxlUXVhZC5jcHAKaW5kZXggMjdhYTc3NTA4MTc0MWIxMTQxOWI4MTE3Njg3YTk5
NmFmOTJkMWNlYy4uZGUwZTgxZGZjZmVjZTAyMDM4NzdhODJjNGZmNmJlYjY4MDNkMzFlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21w
b3NpdG9yVGlsZVF1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L3N1cHBvcnQvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmNwcApAQCAtMzEsMTQgKzMxLDE0IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc093blB0
cjxXZWJDb21wb3NpdG9yVGlsZVF1YWQ+IFdlYkNvbXBvc2l0b3JUaWxlUXVhZDo6Y3JlYXRlKGNv
bnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50
U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29u
dGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEs
IGJvb2wgYm90dG9tRWRnZUFBKQorUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGlsZVF1YWQ+IFdl
YkNvbXBvc2l0b3JUaWxlUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IElu
dFJlY3QmIG9wYXF1ZVJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQsIGNvbnN0IEludFBvaW50JiB0
ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJl
RmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVk
Z2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9yVGlsZVF1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFk
UmVjdCwgb3BhcXVlUmVjdCwgdGV4dHVyZUlkLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwg
dGV4dHVyZUZpbHRlciwgc3dpenpsZUNvbnRlbnRzLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJp
Z2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNv
bXBvc2l0b3JUaWxlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVSZWN0LCBy
ZXNvdXJjZUlkLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgc3dp
enpsZUNvbnRlbnRzLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21F
ZGdlQUEpKTsKIH0KIAotV2ViQ29tcG9zaXRvclRpbGVRdWFkOjpXZWJDb21wb3NpdG9yVGlsZVF1
YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZv
cm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25z
dCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6
bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVk
Z2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCitXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OldlYkNvbXBv
c2l0b3JUaWxlUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVS
ZWN0LCB1bnNpZ25lZCByZXNvdXJjZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwg
Y29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBz
d2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmln
aHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQogICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hh
cmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6VGlsZWRDb250ZW50LCBxdWFkUmVjdCkK
LSAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJj
ZUlkKQogICAgICwgbV90ZXh0dXJlT2Zmc2V0KHRleHR1cmVPZmZzZXQpCiAgICAgLCBtX3RleHR1
cmVTaXplKHRleHR1cmVTaXplKQogICAgICwgbV90ZXh0dXJlRmlsdGVyKHRleHR1cmVGaWx0ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CmluZGV4IGY4NjljNThhMmNjYzBiMDlmMjNmNTJjNDcxYzMyYTkwNDhlZGNlNDQuLmQyNDRkZTY3
NGEyNmJhNGQ3YWVjNWFhY2U2YTJhZWQxNGExYWVhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAj
aW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9y
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgotI2luY2x1ZGUgImNjL0NDR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAic2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDIwICs0NywxOSBAQCBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ1Jlc291cmNlUHJv
dmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1
cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QocmVzb3VyY2VQcm92
aWRlciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKLVBhc3NSZWZQdHI8
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIs
IGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCitQYXNzUmVmUHRyPEJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI+IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyLCB1c2VNYXBU
ZXhTdWJJbWFnZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcihwYWludGVyKSk7CiB9CiAKLUJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBh
aW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKK0JpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIo
UGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKICAgICA6IENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikKICAgICAsIG1fb3BhcXVlKGZhbHNlKQotICAgICwg
bV90ZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkKIHsKIH0KIApAQCAtODMsOCArODEsNiBA
QCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZAogCiB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUsIGZsb2F0IGNvbnRlbnRzV2lkdGhTY2FsZSwgZmxvYXQgY29u
dGVudHNIZWlnaHRTY2FsZSwgSW50UmVjdCYgcmVzdWx0aW5nT3BhcXVlUmVjdCkKIHsKLSAgICBt
X3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7Ci0KICAgICBpZiAobV9jYW52
YXNTaXplICE9IGNvbnRlbnRSZWN0LnNpemUoKSkgewogICAgICAgICBtX2NhbnZhc1NpemUgPSBj
b250ZW50UmVjdC5zaXplKCk7CiAgICAgICAgIG1fY2FudmFzID0gYWRvcHRQdHIoc2tpYTo6Q3Jl
YXRlQml0bWFwQ2FudmFzKG1fY2FudmFzU2l6ZS53aWR0aCgpLCBtX2NhbnZhc1NpemUuaGVpZ2h0
KCksIG1fb3BhcXVlKSk7CkBAIC05MywxMyArODksMTIgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QKICAgICBwYWludENvbnRlbnRzKG1fY2FudmFzLmdldCgpLCBjb250ZW50UmVjdCwgY29udGVu
dHNXaWR0aFNjYWxlLCBjb250ZW50c0hlaWdodFNjYWxlLCByZXN1bHRpbmdPcGFxdWVSZWN0KTsK
IH0KIAotdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJl
UmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3Vy
Y2VQcm92aWRlciwgQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIGNvbnN0IFNrQml0
bWFwJiBiaXRtYXAgPSBtX2NhbnZhcy0+Z2V0RGV2aWNlKCktPmFjY2Vzc0JpdG1hcChmYWxzZSk7
CiAgICAgYml0bWFwLmxvY2tQaXhlbHMoKTsKIAotICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNv
bnRleHQsIGFsbG9jYXRvcik7Ci0gICAgbV90ZXhTdWJJbWFnZS51cGxvYWQoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGJpdG1hcC5nZXRQaXhlbHMoKSksIGNvbnRlbnRSZWN0KCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgdGV4dHVy
ZS0+dXBsb2FkKHJlc291cmNlUHJvdmlkZXIsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
aXRtYXAuZ2V0UGl4ZWxzKCkpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7
CiAgICAgYml0bWFwLnVubG9ja1BpeGVscygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggZDk3OTY4YzAzNTU2MjQzMDU1MmNm
ZDhiZjc5NzYwNDBmZjkzOGQyNi4uYTdmMTFmYTUzNmMyOTg3OWY0OTc3YzRlNDlkNjA0MTdlOTkz
Nzc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaApAQCAtMzAsMTQgKzMwLDEyIEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogCiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgotI2luY2x1ZGUgIkxh
eWVyVGV4dHVyZVN1YkltYWdlLmgiCiAKIGNsYXNzIFNrQ2FudmFzOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwotY2xhc3MgQ0NHcmFwaGljc0Nv
bnRleHQ7CiAKIC8vIFRoaXMgY2xhc3MgcmFzdGVyaXplcyB0aGUgY29udGVudFJlY3QgaW50byBh
IHNraWEgYml0bWFwIGNhbnZhcy4gSXQgdGhlbiB1cGRhdGVzCiAvLyB0ZXh0dXJlcyBieSBjb3B5
aW5nIGZyb20gdGhlIGNhbnZhcyBpbnRvIHRoZSB0ZXh0dXJlLCB1c2luZyBNYXBTdWJJbWFnZSBp
ZgpAQCAtNDksNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+KTsK
ICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSBPVkVSUklERTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIE9WRVJSSURFOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4
dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBAIC01NywyMyArNTUs
MjIgQEAgcHVibGljOgogICAgICAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiBt
X3RleHR1cmVVcGRhdGVyOwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRyPExheWVy
UGFpbnRlckNocm9taXVtPik7CiAgICAgdmlydHVhbCB+Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcigpOwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKik7CiAg
ICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVt
IHRleHR1cmVGb3JtYXQpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBmbG9hdCBjb250
ZW50c1dpZHRoU2NhbGUsIGZsb2F0IGNvbnRlbnRzSGVpZ2h0U2NhbGUsIEludFJlY3QmIHJlc3Vs
dGluZ09wYXF1ZVJlY3QpIE9WRVJSSURFOwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoQ0NH
cmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgQ0NQcmlvcml0aXplZFRleHR1cmUq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7Cisg
ICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqLCBDQ1ByaW9yaXRp
emVkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJREU7CiAK
IHByaXZhdGU6Ci0gICAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CisgICAgZXhw
bGljaXQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPik7CiAKICAgICBPd25QdHI8U2tDYW52YXM+IG1fY2FudmFzOwogICAgIElu
dFNpemUgbV9jYW52YXNTaXplOwogICAgIGJvb2wgbV9vcGFxdWU7Ci0gICAgTGF5ZXJUZXh0dXJl
U3ViSW1hZ2UgbV90ZXhTdWJJbWFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKaW5kZXggMjNjZmZlYTk0MjBjMWI2MDY0NTdiZmUxZWZmMjcyZWU4Y2Fm
MzU0My4uMjg1OTI0MjUzOTg0ZTI3MjhkNWRlZDFiM2FlYmQxYjg4MmY0ZWYwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgi
CiAjaW5jbHVkZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0RldmljZS5oIgotI2luY2x1ZGUg
ImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTQs
MjQgKzUzLDIxIEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjCiAgICAgdGV4dHVyZVVwZGF0ZXIo
KS0+cGFpbnRDb250ZW50c1JlY3QoJmNhbnZhcywgc291cmNlUmVjdCk7CiB9CiAKLXZvaWQgQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVj
dChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3Zv
aWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBk
YXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmUo
KS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLQogICAgIG1fYml0bWFwLmxvY2tQ
aXhlbHMoKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0
LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVjdCwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1f
Yml0bWFwLmdldFBpeGVscygpKSk7CisgICAgdGV4dHVyZSgpLT51cGxvYWQocmVzb3VyY2VQcm92
aWRlciwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1fYml0bWFwLmdldFBpeGVscygpKSwgZGVzdFJl
Y3QsIGRlc3RSZWN0LCBkZXN0UmVjdCk7CiAgICAgbV9iaXRtYXAudW5sb2NrUGl4ZWxzKCk7CiAg
ICAgbV9iaXRtYXAucmVzZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwg
Ym9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKK1Bhc3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKHBhaW50ZXIsIHVzZU1hcFRleFN1YkltYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIp
KTsKIH0KIAotQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRl
ckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQorQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQog
ICAgIDogU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyKQotICAgICwg
bV90ZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkKIHsKIH0KIApAQCAtOTEsMTIgKzg3LDYg
QEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIKICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVk
VGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGZsb2F0IGNvbnRlbnRzV2lkdGhTY2FsZSwgZmxvYXQg
Y29udGVudHNIZWlnaHRTY2FsZSwgSW50UmVjdCYgcmVzdWx0aW5nT3BhcXVlUmVjdCkKLXsKLSAg
ICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7Ci0gICAgU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRSZWN0LCB0
aWxlU2l6ZSwgY29udGVudHNXaWR0aFNjYWxlLCBjb250ZW50c0hlaWdodFNjYWxlLCByZXN1bHRp
bmdPcGFxdWVSZWN0KTsKLX0KLQogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpwYWludENvbnRlbnRzUmVjdChTa0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0KQogewogICAgIC8vIFRyYW5zbGF0ZSB0aGUgb3JpZ2luIG9mIGNvbnRl
bnRSZWN0IHRvIHRoYXQgb2Ygc291cmNlUmVjdC4KQEAgLTEwNSwxMCArOTUsNSBAQCB2b2lkIEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0
KFNrQ2FudmFzKiBjYW52YQogICAgIGRyYXdQaWN0dXJlKGNhbnZhcyk7CiB9CiAKLXZvaWQgQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3Qo
Q0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscykKLXsKLSAgICBtX3RleFN1YkltYWdl
LnVwbG9hZChwaXhlbHMsIGRlc3RSZWN0LCBkZXN0UmVjdCwgZGVzdFJlY3QsIGZvcm1hdCwgY29u
dGV4dCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAvLyBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNzg3YjM5OTM3Yzk5ZTE3YTY0
YWViNGQwODhhNWNlODk4YmVlZGI2Yy4uODU1ZDQwNTg1NmU0MGU1ODZhOWE4MDcxYTI3NDZkYmIz
NjdkODNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMjgsNyArMjgsNiBAQAogI2RlZmluZSBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLSNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgogI2lu
Y2x1ZGUgIlNrQml0bWFwLmgiCiAjaW5jbHVkZSAiU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIgogCkBAIC00Myw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShC
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxDQ1By
aW9yaXRpemVkVGV4dHVyZT4pOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KSBPVkVSUklERTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIE9WRVJSSURFOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0K
QEAgLTUyLDE5ICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsKIAotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+
IGNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhT
dWJJbWFnZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+
KTsKICAgICB2aXJ0dWFsIH5CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KCk7CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZT4gY3JlYXRlVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVu
dW0gdGV4dHVyZUZvcm1hdCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1Vw
ZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IGZsb2F0IGNvbnRlbnRzV2lkdGhTY2FsZSwgZmxvYXQgY29udGVudHNIZWlnaHRTY2FsZSwgSW50
UmVjdCYgcmVzdWx0aW5nT3BhcXVlUmVjdCkgT1ZFUlJJREU7CiAgICAgdm9pZCBwYWludENvbnRl
bnRzUmVjdChTa0NhbnZhcyosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOwotICAgIHZvaWQg
dXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBHQzNEZW51bSBmb3JtYXQsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCB1aW50OF90KiBwaXhlbHMpOwogCiBwcml2YXRl
OgotICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0
cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOwotCi0gICAg
TGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90ZXhTdWJJbWFnZTsKKyAgICBleHBsaWNpdCBCaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVy
Q2hyb21pdW0+KTsKIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDlmNDBmN2ZlMTg4YjkzOWRkMTY0YWU0YTUyYmVkNzk5ZTRiZTg4MWYuLjcxOWY5ZDg5
OTExNmUzYTQxYTk5YTg3ZDY3Zjg4MjY2MjgxMDU0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTEyMiw5ICsxMjIsOSBAQCB2b2lkIENvbnRlbnRMYXllckNocm9t
aXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCkKICAgICBpZiAobGF5ZXJUcmVlSG9z
dCgpLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVQYWludGluZykKICAgICAgICAgbV90ZXh0dXJlVXBk
YXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3Jl
YXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7CiAgICAgZWxzZSBp
ZiAoQ0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5nRW5hYmxlZCgpKQotICAgICAgICBtX3RleHR1
cmVVcGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3Jl
YXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgbGF5ZXJUcmVlSG9z
dCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOworICAgICAgICBt
X3RleHR1cmVVcGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7CiAgICAg
ZWxzZQotICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwg
bGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIp
OworICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7CiAg
ICAgbV90ZXh0dXJlVXBkYXRlci0+c2V0T3BhcXVlKG9wYXF1ZSgpKTsKIAogICAgIEdDM0RlbnVt
IHRleHR1cmVGb3JtYXQgPSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMoKS5iZXN0VGV4dHVyZUZvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4
IDdlOWFjMGE2YzY1ZmEwMGY1OWU2ODAwNDlhNTJjZDA5ZTVmYWQ2NmMuLmE4NDc5ZjExMjVhZTVh
NmI5MTlmYzk4MTQwYmE3OGNjY2IwN2QyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cApAQCAtMzksMjAgKzM5LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBQYXNz
T3duUHRyPFNrQ2FudmFzPiBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUqIHRl
eHR1cmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW50U2l6ZSBjYW52YXNTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZCkKIHsKLSAgICAvLyBBbGxvY2F0
ZSBzbyB0aGF0IHdlIGhhdmUgYSB2YWxpZCB0ZXh0dXJlIGlkLgotICAgIHRleHR1cmUtPmFjcXVp
cmVCYWNraW5nVGV4dHVyZShhbGxvY2F0b3IpOwotCiAgICAgR3JDb250ZXh0KiBnckNvbnRleHQg
PSBjb250ZXh0LT5nckNvbnRleHQoKTsKLSAgICBJbnRTaXplIGNhbnZhc1NpemUgPSB0ZXh0dXJl
LT5zaXplKCk7CiAgICAgR3JQbGF0Zm9ybVRleHR1cmVEZXNjIHRleHR1cmVEZXNjOwogICAgIHRl
eHR1cmVEZXNjLmZGbGFncyA9IGtSZW5kZXJUYXJnZXRfR3JQbGF0Zm9ybVRleHR1cmVGbGFnOwog
ICAgIHRleHR1cmVEZXNjLmZXaWR0aCA9IGNhbnZhc1NpemUud2lkdGgoKTsKICAgICB0ZXh0dXJl
RGVzYy5mSGVpZ2h0ID0gY2FudmFzU2l6ZS5oZWlnaHQoKTsKICAgICB0ZXh0dXJlRGVzYy5mQ29u
ZmlnID0ga1NraWE4ODg4X1BNX0dyUGl4ZWxDb25maWc7Ci0gICAgdGV4dHVyZURlc2MuZlRleHR1
cmVIYW5kbGUgPSB0ZXh0dXJlLT50ZXh0dXJlSWQoKTsKKyAgICB0ZXh0dXJlRGVzYy5mVGV4dHVy
ZUhhbmRsZSA9IHRleHR1cmVJZDsKICAgICBTa0F1dG9UVW5yZWY8R3JUZXh0dXJlPiB0YXJnZXQo
Z3JDb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVRleHR1cmUodGV4dHVyZURlc2MpKTsKICAgICBTa0F1
dG9UVW5yZWY8U2tEZXZpY2U+IGRldmljZShuZXcgU2tHcHVEZXZpY2UoZ3JDb250ZXh0LCB0YXJn
ZXQuZ2V0KCkpKTsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNrQ2FudmFzKGRldmljZS5nZXQo
KSkpOwpAQCAtNjgsMTIgKzY0LDEyIEBAIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQogewogfQogCi12b2lkIEZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVj
dChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRl
UmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gc2hhcmVkQ29udGV4dCA9IENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSA/
IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGb3JJbXBsVGhyZWFkKCkgOiBTaGFyZWRHcmFw
aGljc0NvbnRleHQzRDo6Z2V0KCk7CiAgICAgaWYgKCFzaGFyZWRDb250ZXh0KQogICAgICAgICBy
ZXR1cm47Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3Qoc2hhcmVkQ29u
dGV4dC5yZWxlYXNlKCksIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3Qoc2hhcmVkQ29udGV4
dC5yZWxlYXNlKCksIHJlc291cmNlUHJvdmlkZXIsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVz
dFJlY3QpOwogfQogCiBQYXNzUmVmUHRyPEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcj4gRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKQEAg
LTEwMSw3ICs5Nyw3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwCiAgICAgcmV0dXJuIExheWVy
VGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CiB9CiAKLXZvaWQgRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVj
dChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBwcnBDb250ZXh0LCBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBwcnBDb250ZXh0LCBDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQocHJwQ29udGV4dCk7CiAKQEAgLTEwOSw3
ICsxMDUsNyBAQCB2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoUGFzc1JlZlB0cgogICAgIGNvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpOwogCiAgICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBk
cmF3IG9uLgotICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0gY3JlYXRlQWNjZWxlcmF0ZWRD
YW52YXMoY29udGV4dC5nZXQoKSwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKKyAgICBPd25QdHI8U2tD
YW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnRleHQuZ2V0KCksIHRl
eHR1cmUtPnNpemUoKSwgdGV4dHVyZS0+YmVnaW5SZW5kZXJUbyhyZXNvdXJjZVByb3ZpZGVyKSk7
CiAKICAgICAvLyBUaGUgY29tcG9zaXRvciBleHBlY3RzIHRoZSB0ZXh0dXJlcyB0byBiZSB1cHNp
ZGUtZG93biBzbyBpdCBjYW4gZmxpcAogICAgIC8vIHRoZSBmaW5hbCBjb21wb3NpdGVkIGltYWdl
LiBHYW5lc2ggcmVuZGVycyB0aGUgaW1hZ2UgdXByaWdodCBzbyB3ZQpAQCAtMTI5LDYgKzEyNSw3
IEBAIHZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1
cGRhdGVUZXh0dXJlUmVjdChQYXNzUmVmUHRyCiAKICAgICAvLyBGbHVzaCB0aGUgR0wgY29udGV4
dCBzbyByZW5kZXJpbmcgcmVzdWx0cyBmcm9tIHRoaXMgY29udGV4dCBhcmUgdmlzaWJsZSBpbiB0
aGUgY29tcG9zaXRvcidzIGNvbnRleHQuCiAgICAgY29udGV4dC0+Zmx1c2goKTsKKyAgICB0ZXh0
dXJlLT5lbmRSZW5kZXJUbyhyZXNvdXJjZVByb3ZpZGVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA4ZjYzMGE5MjI4MjY0MTIzYmRm
ZjVmN2Q4NGQ5Yjg3M2I4YWEyOTY5Li40NDY0OWU0NzNjNjlkMjQ0YzkxYzA5YTU2YWI3MTljMjBl
MWE0ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKiwgUGFzc093blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4pOwogICAgICAgICB2
aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NH
cmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIq
IHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxG
b3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgT1ZFUlJJREU7Ci0gICAgdm9pZCB1cGRhdGVU
ZXh0dXJlUmVjdChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgVGV4dHVyZUFsbG9jYXRv
ciosIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4sIENDUmVzb3VyY2VQcm92aWRlciosIENDUHJpb3JpdGl6
ZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCAzNzY5MzY1ODZkOGE5MWE4MzVm
ZjZlYzgzYjUzZmM4MmJhNTVjMGM3Li5lZGUwNTQzMDY1M2I0NjZhMmZhOTc0MGRkZGQ5OGI3YmZj
NDIwNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM0LDcgKzM0LDYg
QEAKIAogI2luY2x1ZGUgIkltYWdlTGF5ZXJDaHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiTGF5ZXJU
ZXh0dXJlU3ViSW1hZ2UuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5j
bHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCkBAIC01
Miw5ICs1MSw5IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpIE9WRVJSSURFCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIE9WRVJSSURFCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFs
bG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICB0
ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChyZXNvdXJjZVByb3ZpZGVyLCB0ZXh0
dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToK
QEAgLTYzLDkgKzYyLDkgQEAgcHVibGljOgogICAgICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0
ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElt
YWdlTGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0
ZXIodXNlTWFwVGV4U3ViSW1hZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFn
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+SW1hZ2VMYXll
clRleHR1cmVVcGRhdGVyKCkgeyB9CkBAIC04MSwxMCArODAsOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAg
dm9pZCB1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgdm9p
ZCB1cGRhdGVUZXh0dXJlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIs
IENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKICAgICB7Ci0gICAgICAgIHRleHR1cmUtPmJpbmRU
ZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0KICAgICAgICAgLy8gU291cmNlIHJlY3Qgc2hv
dWxkIG5ldmVyIGdvIG91dHNpZGUgdGhlIGltYWdlIHBpeGVscywgZXZlbiBpZiB0aGlzCiAgICAg
ICAgIC8vIGlzIHJlcXVlc3RlZCBiZWNhdXNlIHRoZSB0ZXh0dXJlIGV4dGVuZHMgb3V0c2lkZSB0
aGUgaW1hZ2UuCiAgICAgICAgIEludFJlY3QgY2xpcHBlZFNvdXJjZVJlY3QgPSBzb3VyY2VSZWN0
OwpAQCAtOTYsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsaXBwZWREZXN0UmVjdC5zZXRT
aXplKGNsaXBwZWRTb3VyY2VSZWN0LnNpemUoKSk7CiAKICAgICAgICAgU2tBdXRvTG9ja1BpeGVs
cyBsb2NrKG1fYml0bWFwKTsKLSAgICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KG1fYml0bWFwLmdldFBpeGVscygpKSwgaW1hZ2VSZWN0LCBjbGlw
cGVkU291cmNlUmVjdCwgY2xpcHBlZERlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4
dCk7CisgICAgICAgIHRleHR1cmUtPnVwbG9hZChyZXNvdXJjZVByb3ZpZGVyLCBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxzKCkpLCBpbWFnZVJlY3QsIGNsaXBw
ZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QpOwogICAgIH0KIAogICAgIHZvaWQgc2V0Qml0
bWFwKGNvbnN0IFNrQml0bWFwJiBiaXRtYXApCkBAIC0xMDUsMTMgKzEwMiw5IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVy
KGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCi0gICAgICAgIDogbV90ZXhTdWJJbWFnZSh1c2VNYXBU
ZXhTdWJJbWFnZSkKLSAgICB7Ci0gICAgfQorICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
IHsgfQogCiAgICAgU2tCaXRtYXAgbV9iaXRtYXA7Ci0gICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2Ug
bV90ZXhTdWJJbWFnZTsKIH07CiAKIFBhc3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBJbWFn
ZUxheWVyQ2hyb21pdW06OmNyZWF0ZSgpCkBAIC0xNjcsNyArMTYwLDcgQEAgdm9pZCBJbWFnZUxh
eWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQogICAgIGlmIChtX3Rl
eHR1cmVVcGRhdGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RleHR1cmVVcGRhdGVyID0g
SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUobGF5ZXJUcmVlSG9zdCgpLT5sYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOworICAgIG1fdGV4dHVyZVVwZGF0ZXIg
PSBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSgpOwogICAgIEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQgPSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5i
ZXN0VGV4dHVyZUZvcm1hdDsKICAgICBzZXRUZXh0dXJlRm9ybWF0KHRleHR1cmVGb3JtYXQpOwog
ICAgIHNldFNhbXBsZWRUZXhlbEZvcm1hdCh0ZXh0dXJlVXBkYXRlcigpLT5zYW1wbGVkVGV4ZWxG
b3JtYXQodGV4dHVyZUZvcm1hdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKaW5kZXggZTc1OWY1YzhlNzM5OTcwN2Y2ZGVlMTI4ZmM4MTZkZTI1YTBmOTdjNy4uNjU4MGM1
MDJkMTUxZGRmY2RmZDEwZmJhM2JhZDM0ODFlZDYwZjhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1h
bmFnZXIuaCIKICNpbmNsdWRlICJUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIKICNpbmNsdWRl
ICJUcmFjZUV2ZW50LmgiCi0jaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAj
aW5jbHVkZSAiY2MvQ0NMYXllclF1YWQuaCIKICNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCiAj
aW5jbHVkZSAiY2MvQ0NQcm94eS5oIgpAQCAtMTI2LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaXNCdXN5KCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVu
ZFVwbG9hZHMoKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShD
Q0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
dGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIE9WRVJSSURFIHsgdGV4dHVyZS0+dXBkYXRl
UmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQorICAgIHZp
cnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRl
eHR1cmUsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVj
dCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERSB7IHRleHR1cmUt
PnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRlciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CiAK
IHByb3RlY3RlZDoKICAgICBVbnRocm90dGxlZFRleHR1cmVVcGxvYWRlcigpIHsgfQpAQCAtMTM0
LDkgKzEzMyw5IEBAIHByb3RlY3RlZDoKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLVBh
c3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNy
ZWF0ZShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGluZykKK1Bhc3NP
d25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0
ZShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlciwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlclNldHRpbmcpCiB7
Ci0gICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFB0
cihuZXcgTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgdGV4dHVyZVVwbG9h
ZGVyU2V0dGluZykpKTsKKyAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJl
bmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCByZXNvdXJj
ZVByb3ZpZGVyLCB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKSkpOwogICAgIGlmICghbGF5ZXJSZW5k
ZXJlci0+aW5pdGlhbGl6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTQ0LDE0
ICsxNDMsMTUgQEAgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6Y3JlYXRlKENDUmVuZGVyZXJDbGllbnQKIH0KIAogTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVXBsb2FkZXJPcHRpb24g
dGV4dHVyZVVwbG9hZGVyU2V0dGluZykKICAgICA6IENDUmVuZGVyZXIoY2xpZW50KQogICAgICwg
bV9jdXJyZW50UmVuZGVyUGFzcygwKQogICAgICwgbV9jdXJyZW50VGV4dHVyZSgwKQogICAgICwg
bV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKDApCiAgICAgLCBtX3NoYXJlZEdlb21ldHJ5UXVhZChG
bG9hdFJlY3QoLTAuNWYsIC0wLjVmLCAxLjBmLCAxLjBmKSkKLSAgICAsIG1fY29udGV4dChjb250
ZXh0KQorICAgICwgbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJvdmlkZXIpCisgICAgLCBt
X2NvbnRleHQocmVzb3VyY2VQcm92aWRlci0+Z3JhcGhpY3NDb250ZXh0M0QoKSkKICAgICAsIG1f
ZGVmYXVsdFJlbmRlclBhc3MoMCkKICAgICAsIG1faXNWaWV3cG9ydENoYW5nZWQoZmFsc2UpCiAg
ICAgLCBtX2lzRnJhbWVidWZmZXJEaXNjYXJkZWQoZmFsc2UpCkBAIC0zNDQsNyArMzQ0LDcgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRlY2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0Zv
ckZyYW1lKGNvbnN0IENDUmVuZGVyUGEKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVu
ZGVyUGFzc2VzSW5EcmF3T3JkZXIuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKCFtX3JlbmRl
clBhc3NUZXh0dXJlcy5jb250YWlucyhyZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+aWQoKSkp
IHsKLSAgICAgICAgICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3Bl
ZFRleHR1cmU6OmNyZWF0ZShtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICAgICAg
ICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNy
ZWF0ZShtX3Jlc291cmNlUHJvdmlkZXIpOwogICAgICAgICAgICAgbV9yZW5kZXJQYXNzVGV4dHVy
ZXMuc2V0KHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpLCB0ZXh0dXJlLnJlbGVhc2Uo
KSk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTgsNyArNTE4LDkgQEAgc3RhdGljIGlubGluZSBT
a0JpdG1hcCBhcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVy
LCBjb25zdAogCiAgICAgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5mbHVzaCgpOwogCi0gICAg
cmV0dXJuIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KGZpbHRlcnMsIHNvdXJjZVRleHR1
cmUtPmlkKCksIHNvdXJjZVRleHR1cmUtPnNpemUoKSwgZmlsdGVyQ29udGV4dC5nZXQoKSk7Cisg
ICAgU2tCaXRtYXAgc291cmNlID0gQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHkoZmlsdGVy
cywgc291cmNlVGV4dHVyZS0+YmVnaW5SZW5kZXJUbygpLCBzb3VyY2VUZXh0dXJlLT5zaXplKCks
IGZpbHRlckNvbnRleHQuZ2V0KCkpOworICAgIHNvdXJjZVRleHR1cmUtPmVuZFJlbmRlclRvKCk7
CisgICAgcmV0dXJuIHNvdXJjZTsKIH0KIAogUGFzc093blB0cjxDQ1Njb3BlZFRleHR1cmU+IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVy
UGFzc0RyYXdRdWFkKiBxdWFkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVu
dHNEZXZpY2VUcmFuc2Zvcm0pCkBAIC01NTgsNyArNTYwLDcgQEAgUGFzc093blB0cjxDQ1Njb3Bl
ZFRleHR1cmU+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNv
bnN0IEMKIAogICAgIGRldmljZVJlY3QuaW50ZXJzZWN0KG1fY3VycmVudFJlbmRlclBhc3MtPmZy
YW1lYnVmZmVyT3V0cHV0UmVjdCgpKTsKIAotICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IGRl
dmljZUJhY2tncm91bmRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUobV9pbXBsVGV4
dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gZGV2aWNl
QmFja2dyb3VuZFRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShtX3Jlc291cmNlUHJv
dmlkZXIpOwogICAgIGlmICghZ2V0RnJhbWVidWZmZXJUZXh0dXJlKGRldmljZUJhY2tncm91bmRU
ZXh0dXJlLmdldCgpLCBkZXZpY2VSZWN0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTU2OSw4ICs1NzEsOCBAQCBQYXNzT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQwogICAgIEdyVGV4dHVyZSog
dGV4dHVyZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JUZXh0dXJlKj4oZmlsdGVyZWREZXZpY2VCYWNr
Z3JvdW5kLmdldFRleHR1cmUoKSk7CiAgICAgaW50IGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRl
eHR1cmVJZCA9IHRleHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKIAotICAgIE93blB0cjxDQ1Nj
b3BlZFRleHR1cmU+IGJhY2tncm91bmRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUo
bV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7Ci0gICAgaWYgKCFiYWNrZ3JvdW5kVGV4dHVy
ZS0+YWxsb2NhdGUocXVhZC0+cXVhZFJlY3QoKS5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBKSkKKyAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBiYWNrZ3JvdW5kVGV4dHVyZSA9IEND
U2NvcGVkVGV4dHVyZTo6Y3JlYXRlKG1fcmVzb3VyY2VQcm92aWRlcik7CisgICAgaWYgKCFiYWNr
Z3JvdW5kVGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIHF1YWQtPnF1YWRS
ZWN0KCkuc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGNvbnN0IENDUmVuZGVyUGFzcyogdGFyZ2V0UmVuZGVyUGFzcyA9IG1fY3VycmVudFJlbmRlclBh
c3M7CkBAIC02MTUsMTYgKzYxNywxOSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgIC8v
IEZJWE1FOiBDYWNoZSB0aGlzIHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBkbyBpdCBm
b3IgYm90aCB0aGUgc3VyZmFjZSBhbmQgaXRzIHJlcGxpY2EuCiAgICAgLy8gQXBwbHkgZmlsdGVy
cyB0byB0aGUgY29udGVudHMgdGV4dHVyZS4KICAgICBTa0JpdG1hcCBmaWx0ZXJCaXRtYXAgPSBh
cHBseUZpbHRlcnModGhpcywgcXVhZC0+ZmlsdGVycygpLCBjb250ZW50c1RleHR1cmUpOwotICAg
IGludCBjb250ZW50c1RleHR1cmVJZCA9IGNvbnRlbnRzVGV4dHVyZS0+aWQoKTsKKyAgICB1bnNp
Z25lZCBjb250ZW50c1RleHR1cmVJZCA9IDA7CiAgICAgaWYgKGZpbHRlckJpdG1hcC5nZXRUZXh0
dXJlKCkpIHsKICAgICAgICAgR3JUZXh0dXJlKiB0ZXh0dXJlID0gcmVpbnRlcnByZXRfY2FzdDxH
clRleHR1cmUqPihmaWx0ZXJCaXRtYXAuZ2V0VGV4dHVyZSgpKTsKICAgICAgICAgY29udGVudHNU
ZXh0dXJlSWQgPSB0ZXh0dXJlLT5nZXRUZXh0dXJlSGFuZGxlKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgY29udGVudHNUZXh0dXJlSWQgPSBjb250ZW50c1RleHR1cmUtPmJlZ2luUmVuZGVyRnJv
bSgpOwogICAgIH0KIAogICAgIC8vIERyYXcgdGhlIGJhY2tncm91bmQgdGV4dHVyZSBpZiB0aGVy
ZSBpcyBvbmUuCiAgICAgaWYgKGJhY2tncm91bmRUZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChi
YWNrZ3JvdW5kVGV4dHVyZS0+c2l6ZSgpID09IHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpKTsKLSAg
ICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGJhY2tncm91bmRUZXh0dXJlLT5pZCgpLCBx
dWFkLT5xdWFkUmVjdCgpLnNpemUoKSwgcXVhZC0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICAgICAg
Y29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGJhY2tncm91bmRUZXh0dXJlLT5iZWdpblJlbmRlckZy
b20oKSwgcXVhZC0+cXVhZFJlY3QoKS5zaXplKCksIHF1YWQtPmRyYXdUcmFuc2Zvcm0oKSk7Cisg
ICAgICAgIGJhY2tncm91bmRUZXh0dXJlLT5lbmRSZW5kZXJGcm9tKCk7CiAgICAgfQogCiAgICAg
Ym9vbCBjbGlwcGVkID0gZmFsc2U7CkBAIC02NDAsNyArNjQ1LDcgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVh
ZCogcXVhZCkKICAgICAgICAgZGV2aWNlTGF5ZXJFZGdlcy5pbmZsYXRlQW50aUFsaWFzaW5nRGlz
dGFuY2UoKTsKICAgICB9CiAKLSAgICBib29sIHVzZU1hc2sgPSBxdWFkLT5tYXNrVGV4dHVyZUlk
KCk7CisgICAgdW5zaWduZWQgbWFza1RleHR1cmVJZCA9IHF1YWQtPm1hc2tSZXNvdXJjZUlkKCkg
PyBtX3Jlc291cmNlUHJvdmlkZXItPmJlZ2luUmVuZGVyRnJvbShxdWFkLT5tYXNrUmVzb3VyY2VJ
ZCgpKSA6IDA7CiAKICAgICAvLyBGSVhNRTogdXNlIHRoZSBiYWNrZ3JvdW5kVGV4dHVyZSBhbmQg
YmxlbmQgdGhlIGJhY2tncm91bmQgaW4gd2l0aCB0aGlzIGRyYXcgaW5zdGVhZCBvZiBoYXZpbmcg
YSBzZXBhcmF0ZSBjb3B5IG9mIHRoZSBiYWNrZ3JvdW5kIHRleHR1cmUuCiAKQEAgLTY1Miw3ICs2
NTcsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNv
bnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgIGludCBzaGFkZXJNYXNrU2FtcGxl
ckxvY2F0aW9uID0gLTE7CiAgICAgaW50IHNoYWRlck1hdHJpeExvY2F0aW9uID0gLTE7CiAgICAg
aW50IHNoYWRlckFscGhhTG9jYXRpb24gPSAtMTsKLSAgICBpZiAodXNlQUEgJiYgdXNlTWFzaykg
eworICAgIGlmICh1c2VBQSAmJiBtYXNrVGV4dHVyZUlkKSB7CiAgICAgICAgIGNvbnN0IFJlbmRl
clBhc3NNYXNrUHJvZ3JhbUFBKiBwcm9ncmFtID0gcmVuZGVyUGFzc01hc2tQcm9ncmFtQUEoKTsK
ICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnBy
b2dyYW0oKSkpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaShw
cm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CkBAIC02NjIs
NyArNjY3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVh
ZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCkKICAgICAgICAgc2hhZGVyTWFza1Nh
bXBsZXJMb2NhdGlvbiA9IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkubWFza1NhbXBsZXJMb2Nh
dGlvbigpOwogICAgICAgICBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IHByb2dyYW0tPnZlcnRleFNo
YWRlcigpLm1hdHJpeExvY2F0aW9uKCk7CiAgICAgICAgIHNoYWRlckFscGhhTG9jYXRpb24gPSBw
cm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKTsKLSAgICB9IGVsc2UgaWYg
KCF1c2VBQSAmJiB1c2VNYXNrKSB7CisgICAgfSBlbHNlIGlmICghdXNlQUEgJiYgbWFza1RleHR1
cmVJZCkgewogICAgICAgICBjb25zdCBSZW5kZXJQYXNzTWFza1Byb2dyYW0qIHByb2dyYW0gPSBy
ZW5kZXJQYXNzTWFza1Byb2dyYW0oKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgp
LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgICAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJM
b2NhdGlvbigpLCAwKSk7CkBAIC02NzAsNyArNjc1LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVh
ZCkKICAgICAgICAgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiA9IHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkubWFza1NhbXBsZXJMb2NhdGlvbigpOwogICAgICAgICBzaGFkZXJNYXRyaXhMb2Nh
dGlvbiA9IHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCk7CiAgICAgICAg
IHNoYWRlckFscGhhTG9jYXRpb24gPSBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9j
YXRpb24oKTsKLSAgICB9IGVsc2UgaWYgKHVzZUFBICYmICF1c2VNYXNrKSB7CisgICAgfSBlbHNl
IGlmICh1c2VBQSAmJiAhbWFza1RleHR1cmVJZCkgewogICAgICAgICBjb25zdCBSZW5kZXJQYXNz
UHJvZ3JhbUFBKiBwcm9ncmFtID0gcmVuZGVyUGFzc1Byb2dyYW1BQSgpOwogICAgICAgICBHTEMo
Y29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAg
ICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKQEAgLTY5MSw3ICs2OTYsNyBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVu
ZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgIGlmIChzaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9u
ICE9IC0xKSB7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT51bmlmb3JtMWkoc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgMSkpOwotICAg
ICAgICBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBxdWFkLT5tYXNrVGV4dHVyZUlkKCkpOworICAgICAgICBjb250ZXh0KCktPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtYXNrVGV4dHVyZUlkKTsKICAgICAgICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFMCkpOwogICAgIH0KIApAQCAtNzA4LDYgKzcxMywxMiBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdR
dWFkKiBxdWFkKQogCiAgICAgZHJhd1RleHR1cmVkUXVhZChxdWFkLT5kcmF3VHJhbnNmb3JtKCks
IHF1YWQtPnF1YWRSZWN0KCkud2lkdGgoKSwgcXVhZC0+cXVhZFJlY3QoKS5oZWlnaHQoKSwgcXVh
ZC0+b3BhY2l0eSgpLCBzdXJmYWNlUXVhZCwKICAgICAgICAgICAgICAgICAgICAgIHNoYWRlck1h
dHJpeExvY2F0aW9uLCBzaGFkZXJBbHBoYUxvY2F0aW9uLCBzaGFkZXJRdWFkTG9jYXRpb24pOwor
CisgICAgaWYgKHF1YWQtPm1hc2tSZXNvdXJjZUlkKCkpCisgICAgICAgIG1fcmVzb3VyY2VQcm92
aWRlci0+ZW5kUmVuZGVyRnJvbShxdWFkLT5tYXNrUmVzb3VyY2VJZCgpKTsKKworICAgIGlmICgh
ZmlsdGVyQml0bWFwLmdldFRleHR1cmUoKSkKKyAgICAgICAgY29udGVudHNUZXh0dXJlLT5lbmRS
ZW5kZXJGcm9tKCk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3U29saWRD
b2xvclF1YWQoY29uc3QgQ0NTb2xpZENvbG9yRHJhd1F1YWQqIHF1YWQpCkBAIC04MjYsNyArODM3
LDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChjb25zdCBDQ1Rp
bGVEcmF3UXVhZCogcXVhZCkKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dy
YW0odW5pZm9ybXMucHJvZ3JhbSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5p
Zm9ybTFpKHVuaWZvcm1zLnNhbXBsZXJMb2NhdGlvbiwgMCkpOwogICAgIEdMQyhjb250ZXh0KCks
IGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsK
LSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBxdWFkLT50ZXh0dXJlSWQoKSkpOworICAgIHVuc2lnbmVkIHRleHR1
cmVJZCA9IG1fcmVzb3VyY2VQcm92aWRlci0+YmVnaW5SZW5kZXJGcm9tKHF1YWQtPnJlc291cmNl
SWQoKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKSk7CiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBxdWFkLT50ZXh0dXJlRmlsdGVy
KCkpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19G
SUxURVIsIHF1YWQtPnRleHR1cmVGaWx0ZXIoKSkpOwogCkBAIC05MDcsNiArOTE5LDcgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChjb25zdCBDQ1RpbGVEcmF3UXVh
ZCogcXVhZCkKICAgICBsb2NhbFF1YWQuc2NhbGUoMS4wZiAvIHRpbGVSZWN0LndpZHRoKCksIDEu
MGYgLyB0aWxlUmVjdC5oZWlnaHQoKSk7CiAKICAgICBkcmF3VGV4dHVyZWRRdWFkKHF1YWQtPnF1
YWRUcmFuc2Zvcm0oKSwgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIHF1YWQt
Pm9wYWNpdHkoKSwgbG9jYWxRdWFkLCB1bmlmb3Jtcy5tYXRyaXhMb2NhdGlvbiwgdW5pZm9ybXMu
YWxwaGFMb2NhdGlvbiwgdW5pZm9ybXMucG9pbnRMb2NhdGlvbik7CisgICAgbV9yZXNvdXJjZVBy
b3ZpZGVyLT5lbmRSZW5kZXJGcm9tKHF1YWQtPnJlc291cmNlSWQoKSk7CiB9CiAKIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3WVVWVmlkZW9RdWFkKGNvbnN0IENDWVVWVmlkZW9EcmF3
UXVhZCogcXVhZCkKQEAgLTkxOCwxMiArOTMxLDE1IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3WVVWVmlkZW9RdWFkKGNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCogcXVhZCkKICAg
ICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUgPSBxdWFkLT51UGxh
bmUoKTsKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUgPSBx
dWFkLT52UGxhbmUoKTsKIAorICAgIHVuc2lnbmVkIHlUZXh0dXJlSWQgPSBtX3Jlc291cmNlUHJv
dmlkZXItPmJlZ2luUmVuZGVyRnJvbSh5UGxhbmUucmVzb3VyY2VJZCk7CisgICAgdW5zaWduZWQg
dVRleHR1cmVJZCA9IG1fcmVzb3VyY2VQcm92aWRlci0+YmVnaW5SZW5kZXJGcm9tKHVQbGFuZS5y
ZXNvdXJjZUlkKTsKKyAgICB1bnNpZ25lZCB2VGV4dHVyZUlkID0gbV9yZXNvdXJjZVByb3ZpZGVy
LT5iZWdpblJlbmRlckZyb20odlBsYW5lLnJlc291cmNlSWQpOwogICAgIEdMQyhjb250ZXh0KCks
IGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsK
LSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCB5UGxhbmUudGV4dHVyZUlkKSk7CisgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgeVRl
eHR1cmVJZCkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTIpKTsKLSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0
KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB1UGxhbmUudGV4
dHVyZUlkKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdVRleHR1cmVJZCkpOwogICAgIEdMQyhjb250ZXh0
KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTMp
KTsKLSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCB2UGxhbmUudGV4dHVyZUlkKSk7CisgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
dlRleHR1cmVJZCkpOwogCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFt
KHByb2dyYW0tPnByb2dyYW0oKSkpOwogCkBAIC05NjgsNiArOTg0LDEwIEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3WVVWVmlkZW9RdWFkKGNvbnN0IENDWVVWVmlkZW9EcmF3UXVh
ZCogcXVhZCkKIAogICAgIC8vIFJlc2V0IGFjdGl2ZSB0ZXh0dXJlIGJhY2sgdG8gdGV4dHVyZSAw
LgogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRTApKTsKKworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZW5kUmVuZGVy
RnJvbSh5UGxhbmUucmVzb3VyY2VJZCk7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5lbmRSZW5k
ZXJGcm9tKHVQbGFuZS5yZXNvdXJjZUlkKTsKKyAgICBtX3Jlc291cmNlUHJvdmlkZXItPmVuZFJl
bmRlckZyb20odlBsYW5lLnJlc291cmNlSWQpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1N0cmVhbVZpZGVvUXVhZChjb25zdCBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQqIHF1
YWQpCkBAIC0xMDM0LDcgKzEwNTQsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1RleHR1cmVRdWFkKGNvbnN0IENDVGV4dHVyZURyYXdRdWFkKiBxdWFkKQogICAgIEdMQyhjb250
ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTRmKGJpbmRpbmcudGV4VHJhbnNmb3JtTG9jYXRpb24s
IHV2UmVjdC54KCksIHV2UmVjdC55KCksIHV2UmVjdC53aWR0aCgpLCB1dlJlY3QuaGVpZ2h0KCkp
KTsKIAogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBxdWFkLT50ZXh0dXJlSWQo
KSkpOworICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IG1fcmVzb3VyY2VQcm92aWRlci0+YmVnaW5S
ZW5kZXJGcm9tKHF1YWQtPnJlc291cmNlSWQoKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4
dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlk
KSk7CiAKICAgICAvLyBGSVhNRTogc2V0dGluZyB0aGUgdGV4dHVyZSBwYXJhbWV0ZXJzIGV2ZXJ5
IHRpbWUgaXMgcmVkdW5kYW50LiBNb3ZlIHRoaXMgY29kZSBzb21ld2hlcmUKICAgICAvLyB3aGVy
ZSBpdCB3aWxsIG9ubHkgaGFwcGVuIG9uY2UgcGVyIHRleHR1cmUuCkBAIC0xMDYzLDYgKzEwODQs
NyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVRdWFkKGNvbnN0IEND
VGV4dHVyZURyYXdRdWFkKiBxdWFkKQogCiAgICAgaWYgKCFxdWFkLT5wcmVtdWx0aXBsaWVkQWxw
aGEoKSkKICAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5ibGVuZEZ1bmMoR3JhcGhp
Y3NDb250ZXh0M0Q6Ok9ORSwgR3JhcGhpY3NDb250ZXh0M0Q6Ok9ORV9NSU5VU19TUkNfQUxQSEEp
KTsKKyAgICBtX3Jlc291cmNlUHJvdmlkZXItPmVuZFJlbmRlckZyb20ocXVhZC0+cmVzb3VyY2VJ
ZCgpKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdJT1N1cmZhY2VRdWFk
KGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1YWQqIHF1YWQpCkBAIC0xMDc4LDEzICsxMTAwLDYgQEAg
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdJT1N1cmZhY2VRdWFkKGNvbnN0IENDSU9T
dXJmYWNlRHJhd1F1YWQqIHF1YWQpCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3Rp
dmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhjb250ZXh0
KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdM
RV9BUkIsIHF1YWQtPmlvU3VyZmFjZVRleHR1cmVJZCgpKSk7CiAKLSAgICAvLyBGSVhNRTogc2V0
dGluZyB0aGUgdGV4dHVyZSBwYXJhbWV0ZXJzIGV2ZXJ5IHRpbWUgaXMgcmVkdW5kYW50LiBNb3Zl
IHRoaXMgY29kZSBzb21ld2hlcmUKLSAgICAvLyB3aGVyZSBpdCB3aWxsIG9ubHkgaGFwcGVuIG9u
Y2UgcGVyIHRleHR1cmUuCi0gICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0
ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7Ci0gICAgR0xDKGNv
bnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6TElORUFSKSk7Ci0gICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7Ci0gICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNz
Q29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7Ci0KICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBxdWFkVHJhbnNmb3JtID0gcXVhZC0+cXVhZFRyYW5zZm9ybSgpOwogICAgIEludFJlY3QgcXVh
ZFJlY3QgPSBxdWFkLT5xdWFkUmVjdCgpOwogICAgIHF1YWRUcmFuc2Zvcm0udHJhbnNsYXRlKHF1
YWRSZWN0LngoKSArIHF1YWRSZWN0LndpZHRoKCkgLyAyLjAsIHF1YWRSZWN0LnkoKSArIHF1YWRS
ZWN0LmhlaWdodCgpIC8gMi4wKTsKQEAgLTExMDYsNyArMTEyMSw3IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3SGVhZHNVcERpc3BsYXkoY29uc3QgQ0NTY29wZWRUZXh0dXJlKiBo
dWRUZXh0dXJlCiAgICAgY29uc3QgSGVhZHNVcERpc3BsYXlQcm9ncmFtKiBwcm9ncmFtID0gaGVh
ZHNVcERpc3BsYXlQcm9ncmFtKCk7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5p
dGlhbGl6ZWQoKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGh1ZFRleHR1
cmUtPmlkKCkpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBodWRUZXh0dXJlLT5iZWdpblJlbmRlckZyb20o
KSkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtLT5w
cm9ncmFtKCkpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZvcm0xaShwcm9n
cmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CiAKQEAgLTExMTYs
MTAgKzExMzEsMTIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlz
cGxheShjb25zdCBDQ1Njb3BlZFRleHR1cmUqIGh1ZFRleHR1cmUKICAgICAgICAgICAgICAgICAg
ICAgIDEsIHNoYXJlZEdlb21ldHJ5UXVhZCgpLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRy
aXhMb2NhdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFk
ZXIoKS5hbHBoYUxvY2F0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAtMSk7CisgICAgaHVk
VGV4dHVyZS0+ZW5kUmVuZGVyRnJvbSgpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKCkKIHsKKyAgICBmaW5pc2hDdXJyZW50RnJhbWVidWZmZXIo
KTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0
M0Q6OlNDSVNTT1JfVEVTVCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJs
ZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKIH0KQEAgLTEzNTQsMTIgKzEzNzEsMTMgQEAg
Ym9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZShDQ1Njb3Bl
ZFRleHR1cmUqIHRleHR1cmUsIGNvbnMKIHsKICAgICBBU1NFUlQoIXRleHR1cmUtPmlkKCkgfHwg
KHRleHR1cmUtPnNpemUoKSA9PSBkZXZpY2VSZWN0LnNpemUoKSAmJiB0ZXh0dXJlLT5mb3JtYXQo
KSA9PSBHcmFwaGljc0NvbnRleHQzRDo6UkdCKSk7CiAKLSAgICBpZiAoIXRleHR1cmUtPmlkKCkg
JiYgIXRleHR1cmUtPmFsbG9jYXRlKGRldmljZVJlY3Quc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQz
RDo6UkdCKSkKKyAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKEND
UmVuZGVyZXI6OkltcGxQb29sLCBkZXZpY2VSZWN0LnNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQiwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpBbnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlLT5pZCgpKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVy
ZS0+YmVnaW5SZW5kZXJUbygpKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jb3B5
VGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgdGV4dHVyZS0+Zm9y
bWF0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VSZWN0LngoKSwgZGV2aWNlUmVjdC55KCksIGRldmljZVJlY3Qud2lkdGgoKSwgZGV2aWNlUmVj
dC5oZWlnaHQoKSwgMCkpOworICAgIHRleHR1cmUtPmVuZFJlbmRlclRvKCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTEzNzAsOCArMTM4OCw4IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjppc0N1cnJlbnRSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcykK
IAogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclBhc3MoY29uc3QgQ0NSZW5k
ZXJQYXNzKiByZW5kZXJQYXNzKQogeworICAgIGZpbmlzaEN1cnJlbnRGcmFtZWJ1ZmZlcigpOwog
ICAgIG1fY3VycmVudFJlbmRlclBhc3MgPSByZW5kZXJQYXNzOwotICAgIG1fY3VycmVudFRleHR1
cmUgPSAwOwogCiAgICAgaWYgKHJlbmRlclBhc3MgPT0gbV9kZWZhdWx0UmVuZGVyUGFzcykgewog
ICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKQEAgLTEzODIsNyArMTQwMCw3IEBAIGJvb2wg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyog
cmVuZGVyUGFzcykKICAgICBDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUgPSBtX3JlbmRlclBhc3NU
ZXh0dXJlcy5nZXQocmVuZGVyUGFzcy0+aWQoKSk7CiAgICAgQVNTRVJUKHRleHR1cmUpOwogCi0g
ICAgaWYgKCF0ZXh0dXJlLT5pZCgpICYmICF0ZXh0dXJlLT5hbGxvY2F0ZShyZW5kZXJQYXNzVGV4
dHVyZVNpemUocmVuZGVyUGFzcyksIHJlbmRlclBhc3NUZXh0dXJlRm9ybWF0KHJlbmRlclBhc3Mp
KSkKKyAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVy
ZXI6OkltcGxQb29sLCByZW5kZXJQYXNzVGV4dHVyZVNpemUocmVuZGVyUGFzcyksIHJlbmRlclBh
c3NUZXh0dXJlRm9ybWF0KHJlbmRlclBhc3MpLCBDQ1Jlc291cmNlUHJvdmlkZXI6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBiaW5k
RnJhbWVidWZmZXJUb1RleHR1cmUodGV4dHVyZSwgcmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRw
dXRSZWN0KCkpOwpAQCAtMTM5MSw4ICsxNDA5LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVzZVJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogYm9vbCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVNjb3BlZFRleHR1cmUoY29uc3QgQ0NTY29wZWRUZXh0
dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpCiB7CiAgICAgQVNTRVJU
KHRleHR1cmUtPmlkKCkpOwotCi0gICAgbV9jdXJyZW50UmVuZGVyUGFzcyA9IDA7CisgICAgZmlu
aXNoQ3VycmVudEZyYW1lYnVmZmVyKCk7CiAgICAgbV9jdXJyZW50VGV4dHVyZSA9IHRleHR1cmU7
CiAKICAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKHRleHR1cmUsIHZpZXdwb3J0
UmVjdCk7CkBAIC0xNDAzLDcgKzE0MjAsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKGNvbnN0IENDU2NvcGVkVGV4dHVyZSogdGV4dAogICAg
IEFTU0VSVCh0ZXh0dXJlLT5pZCgpKTsKIAogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3Jl
ZW5GcmFtZWJ1ZmZlcklkKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUtPmlkKCksIDApKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgdGV4dHVyZS0+YmVnaW5SZW5kZXJUbygpLCAwKSk7CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJV
RyApCiAgICAgaWYgKG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9D
T01QTEVURSkgewpAQCAtMTQxNyw2ICsxNDM0LDE4IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoY29uc3QgQ0NTY29wZWRUZXh0dXJlKiB0ZXh0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5p
c2hDdXJyZW50RnJhbWVidWZmZXIoKQoreworICAgIGNvbnN0IENDU2NvcGVkVGV4dHVyZSogdGV4
dHVyZSA9IG1fY3VycmVudFRleHR1cmU7CisgICAgaWYgKCF0ZXh0dXJlICYmIG1fY3VycmVudFJl
bmRlclBhc3MgJiYgbV9jdXJyZW50UmVuZGVyUGFzcyAhPSBtX2RlZmF1bHRSZW5kZXJQYXNzKQor
ICAgICAgICB0ZXh0dXJlID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuZ2V0KG1fY3VycmVudFJlbmRl
clBhc3MtPmlkKCkpOworICAgIG1fY3VycmVudFJlbmRlclBhc3MgPSAwOworICAgIG1fY3VycmVu
dFRleHR1cmUgPSAwOworICAgIGlmICghdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuOworICAgIHRl
eHR1cmUtPmVuZFJlbmRlclRvKCk7Cit9CisKIC8vIFNldHMgdGhlIHNjaXNzb3IgcmVnaW9uIHRv
IHRoZSBnaXZlbiByZWN0YW5nbGUuIFRoZSBjb29yZGluYXRlIHN5c3RlbSBmb3IgdGhlCiAvLyBz
Y2lzc29yUmVjdCBoYXMgaXRzIG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBj
dXJyZW50IHZpc2libGUgcmVjdC4KIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTY2lz
c29yVG9SZWN0KGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0KQpAQCAtMTQ4MCwxNCArMTUwOSw2
IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygp
CiAgICAgICAgIG1fdGV4dHVyZVVwbG9hZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpj
cmVhdGUobV9jb250ZXh0KTsKICAgICBlbHNlCiAgICAgICAgIG1fdGV4dHVyZVVwbG9hZGVyID0g
VW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSgpOwotICAgIG1fY29udGVudHNUZXh0
dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0
LCBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSk7Ci0gICAgbV9pbXBsVGV4dHVyZUFsbG9j
YXRvciA9IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dCwgbV9jYXBh
YmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwotICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1Rl
eHR1cmVVc2FnZUhpbnQpCi0gICAgICAgIG1faW1wbFRleHR1cmVBbGxvY2F0b3ItPnNldFRleHR1
cmVVc2FnZUhpbnQoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQpOwotICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1RleHR1cmVTdG9yYWdlRXh0ZW5zaW9u
KSB7Ci0gICAgICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLT5zZXRVc2VUZXh0dXJlU3Rv
cmFnZUV4dCh0cnVlKTsKLSAgICAgICAgbV9pbXBsVGV4dHVyZUFsbG9jYXRvci0+c2V0VXNlVGV4
dHVyZVN0b3JhZ2VFeHQodHJ1ZSk7Ci0gICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDQxNTUyMGQ3ZmQ5ZTkzODFlNjVlNTAz
ZmE5YjczZmI1ZjlkOThjY2QuLjg2MTRiNzk2ODAxYTM5OTJlMmU1OGNhYTVhODMzODhhOGU4MGQ4
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0zNiw3ICszNiw2IEBA
CiAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRleHR1cmVD
b3BpZXIuaCIKLSNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJjYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRl
ckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgpAQCAtNjYs
NyArNjUsNyBAQCBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgQ0NSZW5kZXJl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEOjpXZWJHcmFwaGljc0NvbnRleHRMb3N0Q2FsbGJhY2sgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKExheWVyUmVuZGVyZXJDaHJvbWl1bSk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUoQ0NSZW5kZXJlckNs
aWVudCosIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlVXBsb2FkZXJPcHRp
b24pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRl
KENDUmVuZGVyZXJDbGllbnQqLCBDQ1Jlc291cmNlUHJvdmlkZXIqLCBUZXh0dXJlVXBsb2FkZXJP
cHRpb24pOwogCiAgICAgdmlydHVhbCB+TGF5ZXJSZW5kZXJlckNocm9taXVtKCk7CiAKQEAgLTEw
Myw4ICsxMDIsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFRleHR1cmVDb3BpZXIqIHRleHR1
cmVDb3BpZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3RleHR1cmVDb3BpZXIuZ2V0KCk7
IH0KICAgICB2aXJ0dWFsIFRleHR1cmVVcGxvYWRlciogdGV4dHVyZVVwbG9hZGVyKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV90ZXh0dXJlVXBsb2FkZXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFs
IFRleHR1cmVBbGxvY2F0b3IqIGltcGxUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQotICAgIHZpcnR1YWwgVGV4
dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIApAQCAt
MTE2LDkgKzExMywxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UXVhZCYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXRyaXhMb2NhdGlvbiwgaW50IGFscGhhTG9j
YXRpb24sIGludCBxdWFkTG9jYXRpb24pOwogICAgIHZvaWQgY29weVRleHR1cmVUb0ZyYW1lYnVm
ZmVyKGludCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGJvdW5kcywgY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCk7CisgICAgQ0NSZXNvdXJjZVByb3Zp
ZGVyKiByZXNvdXJjZVByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVByb3ZpZGVy
OyB9CiAKIHByb3RlY3RlZDoKLSAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNs
aWVudCosIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlVXBsb2FkZXJPcHRp
b24pOworICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50KiwgQ0NSZXNv
dXJjZVByb3ZpZGVyKiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKKwogCiAgICAgYm9vbCBpc0Zy
YW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyYW1lYnVmZmVyRGlzY2Fy
ZGVkOyB9CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CkBAIC0xNDgsNiArMTQ3LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzQ3VycmVudFJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKik7CiAK
ICAgICBib29sIGJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShjb25zdCBDQ1Njb3BlZFRleHR1cmUq
LCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpOworICAgIHZvaWQgZmluaXNoQ3VycmVudEZy
YW1lYnVmZmVyKCk7CiAKICAgICB2b2lkIGNsZWFyUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBh
c3MqLCBjb25zdCBGbG9hdFJlY3QmIGZyYW1lYnVmZmVyRGFtYWdlUmVjdCk7CiAKQEAgLTI2MCwx
MCArMjYwLDkgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8U29saWRDb2xvclByb2dyYW0+IG1fc29s
aWRDb2xvclByb2dyYW07CiAgICAgT3duUHRyPEhlYWRzVXBEaXNwbGF5UHJvZ3JhbT4gbV9oZWFk
c1VwRGlzcGxheVByb2dyYW07CiAKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQ
cm92aWRlcjsKICAgICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBtX3RleHR1cmVD
b3BpZXI7CiAgICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gbV90ZXh0dXJlVXBsb2FkZXI7Ci0g
ICAgT3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3I7Ci0gICAgT3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9pbXBsVGV4dHVy
ZUFsbG9jYXRvcjsKIAogICAgIEhhc2hNYXA8aW50LCBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiA+
IG1fcmVuZGVyUGFzc1RleHR1cmVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5j
cHAKaW5kZXggYjg3YjQzZDk0MDFhMDFmZDE5OThiNzNmMmNlZmViNmZjMDI0ZjQ1Yy4uYjY2ZDc5
ZTA0ZWJkYWY4YTY0Mjc5ZDhhMzM3YmU4M2U0MWZhYzU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4
dHVyZVN1YkltYWdlLmNwcApAQCAtMzIsMTIgKzMyLDE1IEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9u
czNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIgLy8gRm9y
IEdMQygpIG1hY3JvCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgotI2luY2x1ZGUgImNjL0NDR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+
CisKK3VzaW5nIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OkxheWVyVGV4dHVyZVN1YkltYWdlKGJvb2wg
dXNlTWFwVGV4U3ViSW1hZ2UpCiAgICAgOiBtX3VzZU1hcFRleFN1YkltYWdlKHVzZU1hcFRleFN1
YkltYWdlKQorICAgICwgbV9zdWJJbWFnZVNpemUoMCkKIHsKIH0KIApAQCAtNDUsMTggKzQ4LDkg
QEAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6On5MYXllclRleHR1cmVTdWJJbWFnZSgpCiB7CiB9CiAK
LXZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnNldFN1YkltYWdlU2l6ZShjb25zdCBJbnRTaXpl
JiBzdWJJbWFnZVNpemUpCi17Ci0gICAgaWYgKHN1YkltYWdlU2l6ZSA9PSBtX3N1YkltYWdlU2l6
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdWJJbWFnZVNpemUgPSBzdWJJbWFnZVNpemU7
Ci0gICAgbV9zdWJJbWFnZS5jbGVhcigpOwotfQotCiB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdl
Ojp1cGxvYWQoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgV2ViR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgaWYgKG1fdXNlTWFwVGV4U3ViSW1hZ2UpCiAg
ICAgICAgIHVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VS
ZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKQEAgLTY2LDExICs2MCw5IEBAIHZvaWQg
TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZChjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgaW1hZ2VSZWN0CiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdp
dGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VS
ZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1h
dCwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBXZWJHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyVGV4dHVyZVN1
YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UiKTsKLSAgICBpZiAoIW1fc3ViSW1hZ2UpCi0g
ICAgICAgIG1fc3ViSW1hZ2UgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W21fc3ViSW1hZ2VT
aXplLndpZHRoKCkgKiBtX3N1YkltYWdlU2l6ZS5oZWlnaHQoKSAqIDRdKTsKIAogICAgIC8vIE9m
ZnNldCBmcm9tIGltYWdlLXJlY3QgdG8gc291cmNlLXJlY3QuCiAgICAgSW50UG9pbnQgb2Zmc2V0
KHNvdXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwgc291cmNlUmVjdC55KCkgLSBpbWFnZVJl
Y3QueSgpKTsKQEAgLTc5LDYgKzcxLDExIEBAIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVw
bG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50CiAgICAg
aWYgKGltYWdlUmVjdC53aWR0aCgpID09IHNvdXJjZVJlY3Qud2lkdGgoKSAmJiAhb2Zmc2V0Lngo
KSkKICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmaW1hZ2VbNCAqIG9mZnNldC55KCkgKiBpbWFnZVJl
Y3Qud2lkdGgoKV07CiAgICAgZWxzZSB7CisgICAgICAgIHNpemVfdCBuZWVkZWRTaXplID0gNCAq
IGRlc3RSZWN0LndpZHRoKCkgKiBkZXN0UmVjdC5oZWlnaHQoKTsKKyAgICAgICAgaWYgKG1fc3Vi
SW1hZ2VTaXplIDwgbmVlZGVkU2l6ZSkgeworICAgICAgICAgIG1fc3ViSW1hZ2UgPSBhZG9wdEFy
cmF5UHRyKG5ldyB1aW50OF90W25lZWRlZFNpemVdKTsKKyAgICAgICAgICBtX3N1YkltYWdlU2l6
ZSA9IG5lZWRlZFNpemU7CisgICAgICAgIH0KICAgICAgICAgLy8gU3RyaWRlcyBub3QgZXF1YWws
IHNvIGRvIGEgcm93LWJ5LXJvdyBtZW1jcHkgZnJvbSB0aGUKICAgICAgICAgLy8gcGFpbnQgcmVz
dWx0cyBpbnRvIGEgdGVtcCBidWZmZXIgZm9yIHVwbG9hZGluZy4KICAgICAgICAgZm9yIChpbnQg
cm93ID0gMDsgcm93IDwgZGVzdFJlY3QuaGVpZ2h0KCk7ICsrcm93KQpAQCAtODksMzAgKzg2LDE5
IEBAIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25z
dCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50CiAgICAgICAgIHBpeGVsU291cmNlID0gJm1fc3Vi
SW1hZ2VbMF07CiAgICAgfQogCi0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAg
ICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0
aW5nLgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQz
ZC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJl
Y3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgp
LCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbFNvdXJjZSkp
OworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qu
d2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX0JZVEUsIHBpeGVsU291cmNlKSk7CiB9CiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1h
Z2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0g
Zm9ybWF0LCBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBUUkFDRV9FVkVO
VDAoImNjIiwgIkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2Ui
KTsKLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0
LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KICAgICAvLyBPZmZzZXQgZnJvbSBpbWFnZS1yZWN0IHRvIHNvdXJjZS1y
ZWN0LgogICAgIEludFBvaW50IG9mZnNldChzb3VyY2VSZWN0LngoKSAtIGltYWdlUmVjdC54KCks
IHNvdXJjZVJlY3QueSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAKICAgICAvLyBVcGxvYWQgdGlsZSBk
YXRhIHZpYSBhIG1hcHBlZCB0cmFuc2ZlciBidWZmZXIKLSAgICB1aW50OF90KiBwaXhlbERlc3Qg
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29udGV4dDNkLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01J
VU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJl
Y3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgZm9ybWF0LCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRF
X09OTFkpKTsKKyAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
Y29udGV4dC0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwg
ZGVzdFJlY3QuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZ
VEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7CiAKICAgICBpZiAoIXBpeGVs
RGVzdCkgewogICAgICAgICB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdlUmVjdCwg
c291cmNlUmVjdCwgZGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7CkBAIC0xMzYsNyArMTIyLDcg
QEAgdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKGNv
bnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdAogICAgICAgICAgICAgICAgICAgICZpbWFnZVs0ICog
KG9mZnNldC54KCkgKyAob2Zmc2V0LnkoKSArIHJvdykgKiBpbWFnZVJlY3Qud2lkdGgoKSldLAog
ICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LndpZHRoKCkgKiBjb21wb25lbnRzUGVyUGl4ZWwg
KiBieXRlc1BlckNvbXBvbmVudCk7CiAgICAgfQotICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQz
ZC0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0ocGl4ZWxEZXN0KSk7CisgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKHBpeGVsRGVzdCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaApp
bmRleCA0ZjFjNDE1MjE0ZDIzMjlhYjZlNzJjZGUxYjFmMmZlMjJmMjhhMjcwLi4zNTdiNjQxMzQ0
YjJlMGNmZGY1ZTNhZmU5MzJjOGQxOGFmYWU3MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1
YkltYWdlLmgKQEAgLTM0LDMwICszNCwzMSBAQAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNs
dWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKK30KIAotY2xhc3MgQ0NHcmFw
aGljc0NvbnRleHQ7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyVGV4dHVyZVN1
YkltYWdlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMYXllclRleHR1cmVTdWJJbWFnZShib29s
IHVzZU1hcFN1YkZvclVwbG9hZCk7CiAgICAgfkxheWVyVGV4dHVyZVN1YkltYWdlKCk7CiAKLSAg
ICB2b2lkIHNldFN1YkltYWdlU2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCB1cGxvYWQo
Y29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAg
ICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCwKLSAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0Kik7
CisgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEKik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoY29u
c3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBm
b3JtYXQsIENDR3JhcGhpY3NDb250ZXh0Kik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0MzRGVudW0gZm9ybWF0LCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAg
dm9pZCB1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0
IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3ND
b250ZXh0Kik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9y
bWF0LCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKik7CiAKICAgICBib29sIG1fdXNlTWFw
VGV4U3ViSW1hZ2U7Ci0gICAgSW50U2l6ZSBtX3N1YkltYWdlU2l6ZTsKKyAgICBzaXplX3QgbV9z
dWJJbWFnZVNpemU7CiAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gbV9zdWJJbWFnZTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBmZDhlZDg4M2NjNzM0MGNhOWM3NmQ1
NjNjZmRlOTk5MjQzODZmMzg2Li4xODk5NDJlMjUzNGIwNjg2MzczYmUzYzEyNDQ0NmMwODU2MmVl
YmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zMCwxNiArMzAsMTMgQEAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzM0QuaCIKLSNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNj
L0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIGNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBJbnRTaXplOwotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRl
eHR1cmVNYW5hZ2VyOwogCiBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gewpAQCAtNTIsNyArNDksNyBAQCBwdWJsaWM6CiAg
ICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJl
LmdldCgpOyB9CiAgICAgICAgIHZvaWQgc3dhcFRleHR1cmVXaXRoKE93blB0cjxDQ1ByaW9yaXRp
emVkVGV4dHVyZT4mIHRleHR1cmUpIHsgbV90ZXh0dXJlLnN3YXAodGV4dHVyZSk7IH0KICAgICAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3Qg
Ki8pIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4
dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChD
Q1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkgPSAwOwogICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQgVGV4
dHVyZShQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVy
ZSh0ZXh0dXJlKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCmluZGV4IDRkYWJmMWJlYmRl
YTU2NmM4MGQ4YjFjYjVhMmFlZTRiZjdiYzFkOTAuLmIyOGQ3MTY4ZDliMTRiOWZmMzIzZDkzZTM1
YTFiNjFjODgyNjQzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKQEAgLTI5LDEwICsyOSw2
IEBACiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCi0jaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlIDxw
dWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KLQotdXNpbmcgV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwxNyArMzYsMTcgQEAg
TWFuYWdlZFRleHR1cmU6Ok1hbmFnZWRUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQog
ICAgIDogbV90ZXh0dXJlTWFuYWdlcihtYW5hZ2VyKQogICAgICwgbV90b2tlbigwKQogICAgICwg
bV9mb3JtYXQoMCkKLSAgICAsIG1fdGV4dHVyZUlkKDApCisgICAgLCBtX3Jlc291cmNlSWQoMCkK
IHsKICAgICBtX3RleHR1cmVNYW5hZ2VyLT5yZWdpc3RlclRleHR1cmUodGhpcyk7CiB9CiAKLU1h
bmFnZWRUZXh0dXJlOjpNYW5hZ2VkVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlciwgVGV4
dHVyZVRva2VuIHRva2VuLCBJbnRTaXplIHNpemUsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQg
dGV4dHVyZUlkKQorTWFuYWdlZFRleHR1cmU6Ok1hbmFnZWRUZXh0dXJlKFRleHR1cmVNYW5hZ2Vy
KiBtYW5hZ2VyLCBUZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZm9y
bWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCkKICAgICA6IG1f
dGV4dHVyZU1hbmFnZXIobWFuYWdlcikKICAgICAsIG1fdG9rZW4odG9rZW4pCiAgICAgLCBtX3Np
emUoc2l6ZSkKICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKLSAgICAsIG1fdGV4dHVyZUlkKHRleHR1
cmVJZCkKKyAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZUlkKQogewogICAgIG1fdGV4dHVyZU1h
bmFnZXItPnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsKIH0KQEAgLTk0LDcgKzkwLDcgQEAgYm9vbCBN
YW5hZ2VkVGV4dHVyZTo6cmVzZXJ2ZShjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBmb3Jt
YXQpCiAgICAgaWYgKHNpemUgPT0gbV9zaXplICYmIGZvcm1hdCA9PSBtX2Zvcm1hdCAmJiBtX3Rl
eHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKQogICAgICAgICBtX3RleHR1cmVNYW5h
Z2VyLT5wcm90ZWN0VGV4dHVyZShtX3Rva2VuKTsKICAgICBlbHNlIHsKLSAgICAgICAgbV90ZXh0
dXJlSWQgPSAwOworICAgICAgICBtX3Jlc291cmNlSWQgPSAwOwogICAgICAgICByZXNlcnZlZCA9
IG1fdGV4dHVyZU1hbmFnZXItPnJlcXVlc3RUZXh0dXJlKG1fdG9rZW4sIHNpemUsIGZvcm1hdCk7
CiAgICAgICAgIGlmIChyZXNlcnZlZCkgewogICAgICAgICAgICAgbV9zaXplID0gc2l6ZTsKQEAg
LTExMywyNyArMTA5LDE2IEBAIHZvaWQgTWFuYWdlZFRleHR1cmU6OnVucmVzZXJ2ZSgpCiAgICAg
bV90ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZShtX3Rva2VuKTsKIH0KIAotdm9pZCBN
YW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9p
ZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVBy
b3ZpZGVyKQogewogICAgIEFTU0VSVChtX3RleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9r
ZW4pKTsKLSAgICBpZiAoIW1fdGV4dHVyZUlkKQotICAgICAgICBtX3RleHR1cmVJZCA9IG1fdGV4
dHVyZU1hbmFnZXItPmFsbG9jYXRlVGV4dHVyZShhbGxvY2F0b3IsIG1fdG9rZW4pOwotfQotCi12
b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotewotICAgIGFsbG9jYXRlKGFsbG9jYXRv
cik7Ci0gICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRl
eHQzRCgpOwotICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBtX3RleHR1cmVJZCk7CisgICAgaWYgKCFtX3Jlc291cmNlSWQpCisgICAgICAgIG1f
cmVzb3VyY2VJZCA9IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9jYXRlVGV4dHVyZShyZXNvdXJjZVBy
b3ZpZGVyLCBtX3Rva2VuKTsKIH0KIAogUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gTWFuYWdl
ZFRleHR1cmU6OnN0ZWFsKCkKIHsKLSAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUg
PSBhZG9wdFB0cihuZXcgTWFuYWdlZFRleHR1cmUobV90ZXh0dXJlTWFuYWdlciwgbV90b2tlbiwg
bV9zaXplLCBtX2Zvcm1hdCwgbV90ZXh0dXJlSWQpKTsKKyAgICBPd25QdHI8TWFuYWdlZFRleHR1
cmU+IHRleHR1cmUgPSBhZG9wdFB0cihuZXcgTWFuYWdlZFRleHR1cmUobV90ZXh0dXJlTWFuYWdl
ciwgbV90b2tlbiwgbV9zaXplLCBtX2Zvcm1hdCwgbV9yZXNvdXJjZUlkKSk7CiAgICAgY2xlYXIo
KTsKICAgICByZXR1cm4gdGV4dHVyZS5yZWxlYXNlKCk7CiB9CkBAIC0xNDMsNyArMTI4LDcgQEAg
dm9pZCBNYW5hZ2VkVGV4dHVyZTo6Y2xlYXIoKQogICAgIG1fdG9rZW4gPSAwOwogICAgIG1fc2l6
ZSA9IEludFNpemUoKTsKICAgICBtX2Zvcm1hdCA9IDA7Ci0gICAgbV90ZXh0dXJlSWQgPSAwOwor
ICAgIG1fcmVzb3VyY2VJZCA9IDA7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCmluZGV4IDZl
NjdlYmY2OGVhNWVlYmFjNDljYmM1ODYwODQ1ZjdmN2JiNTg0OTUuLjFmNjkxM2I1ZTQwYzE0YWEw
YTYxYmYxMTIxOTBmMWUwZTc3ZmI4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgiCiAKICNpbmNsdWRlIDx3dGYv
RmFzdEFsbG9jQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtMzUsOCAr
MzYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDR3JhcGhpY3NDb250ZXh0
OwotCiBjbGFzcyBNYW5hZ2VkVGV4dHVyZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFu
YWdlZFRleHR1cmUpOwogcHVibGljOgpAQCAtNTcsMjggKzU2LDI2IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXIgJiYgbV90ZXh0dXJlTWFuYWdlci0+aXNQcm90ZWN0
ZWQobV90b2tlbik7CiAgICAgfQogCi0gICAgdm9pZCBhbGxvY2F0ZShUZXh0dXJlQWxsb2NhdG9y
Kik7Ci0gICAgdm9pZCBiaW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxv
Y2F0b3IqKTsKLQogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQog
ICAgIHVuc2lnbmVkIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9Ci0gICAgdW5z
aWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKyAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VJZDsgfQogCi0gICAgLy8gU3RlYWwgdG9rZW4gYW5kIHRleHR1cmVJZCBieSBpbnN0
YW50aWF0ZXMgYSBuZXcgdGV4dHVyZSB1c2luZyBleGlzdGluZworICAgIC8vIFN0ZWFsIHRva2Vu
IGFuZCByZXNvdXJjZUlkIGJ5IGluc3RhbnRpYXRlcyBhIG5ldyB0ZXh0dXJlIHVzaW5nIGV4aXN0
aW5nCiAgICAgLy8gbWVtYmVyIHZhcmlhYmxlcy4KICAgICBQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiBzdGVhbCgpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1hbmFnZWRUZXh0dXJlKFRl
eHR1cmVNYW5hZ2VyKik7Ci0gICAgTWFuYWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqLCBUZXh0
dXJlVG9rZW4sIEludFNpemUsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdGV4dHVyZUlkKTsK
KyAgICBNYW5hZ2VkVGV4dHVyZShUZXh0dXJlTWFuYWdlciosIFRleHR1cmVUb2tlbiwgSW50U2l6
ZSwgdW5zaWduZWQgZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQpOwogCisg
ICAgdm9pZCBhbGxvY2F0ZShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKICAgICB2b2lkIGNsZWFyKCk7
CiAKICAgICBUZXh0dXJlTWFuYWdlciogbV90ZXh0dXJlTWFuYWdlcjsKICAgICBUZXh0dXJlVG9r
ZW4gbV90b2tlbjsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICB1bnNpZ25lZCBtX2Zvcm1hdDsK
LSAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291
cmNlSWQgbV9yZXNvdXJjZUlkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNo
cm9taXVtLmNwcAppbmRleCA1NmM5NmE3NGEwYmI2YzUxNTk1NzM4NDg0OThhYWM3ZWU1N2Q1OWM1
Li4zMDRhZGE3ZGFlZWM4NDc5MDQ4NTk5N2Y0MGExY2U0MDQ4MGIwNjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcApAQCAtNzcsMTkgKzc3LDE5IEBAIHZvaWQgU2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIp
CiAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShtX3Njcm9sbGJh
ck92ZXJsYXlTdHlsZSk7CiAKICAgICBpZiAobV9iYWNrVHJhY2sgJiYgbV9iYWNrVHJhY2stPnRl
eHR1cmUoKS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpCi0gICAgICAgIHNjcm9sbGJhckxheWVyLT5z
ZXRCYWNrVHJhY2tUZXh0dXJlSWQobV9iYWNrVHJhY2stPnRleHR1cmUoKS0+dGV4dHVyZUlkKCkp
OworICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0QmFja1RyYWNrUmVzb3VyY2VJZChtX2JhY2tU
cmFjay0+dGV4dHVyZSgpLT5yZXNvdXJjZUlkKCkpOwogICAgIGVsc2UKLSAgICAgICAgc2Nyb2xs
YmFyTGF5ZXItPnNldEJhY2tUcmFja1RleHR1cmVJZCgwKTsKKyAgICAgICAgc2Nyb2xsYmFyTGF5
ZXItPnNldEJhY2tUcmFja1Jlc291cmNlSWQoMCk7CiAKICAgICBpZiAobV9mb3JlVHJhY2sgJiYg
bV9mb3JlVHJhY2stPnRleHR1cmUoKS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpCi0gICAgICAgIHNj
cm9sbGJhckxheWVyLT5zZXRGb3JlVHJhY2tUZXh0dXJlSWQobV9mb3JlVHJhY2stPnRleHR1cmUo
KS0+dGV4dHVyZUlkKCkpOworICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0Rm9yZVRyYWNrUmVz
b3VyY2VJZChtX2ZvcmVUcmFjay0+dGV4dHVyZSgpLT5yZXNvdXJjZUlkKCkpOwogICAgIGVsc2UK
LSAgICAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldEZvcmVUcmFja1RleHR1cmVJZCgwKTsKKyAgICAg
ICAgc2Nyb2xsYmFyTGF5ZXItPnNldEZvcmVUcmFja1Jlc291cmNlSWQoMCk7CiAKICAgICBpZiAo
bV90aHVtYiAmJiBtX3RodW1iLT50ZXh0dXJlKCktPmhhdmVCYWNraW5nVGV4dHVyZSgpKQotICAg
ICAgICBzY3JvbGxiYXJMYXllci0+c2V0VGh1bWJUZXh0dXJlSWQobV90aHVtYi0+dGV4dHVyZSgp
LT50ZXh0dXJlSWQoKSk7CisgICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRUaHVtYlJlc291cmNl
SWQobV90aHVtYi0+dGV4dHVyZSgpLT5yZXNvdXJjZUlkKCkpOwogICAgIGVsc2UKLSAgICAgICAg
c2Nyb2xsYmFyTGF5ZXItPnNldFRodW1iVGV4dHVyZUlkKDApOworICAgICAgICBzY3JvbGxiYXJM
YXllci0+c2V0VGh1bWJSZXNvdXJjZUlkKDApOwogCiAgICAgVmVjdG9yPEludFJlY3Q+IHRpY2tt
YXJrczsKICAgICBtX3Njcm9sbGJhci0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7CkBAIC0yMDUs
MjQgKzIwNSwyMyBAQCB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhv
c3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQogCiB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06
OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQogewotICAgIGJvb2wgdXNlTWFwU3ViSW1h
Z2UgPSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01h
cFN1YjsKICAgICBtX3RleHR1cmVGb3JtYXQgPSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVy
ZXJDYXBhYmlsaXRpZXMoKS5iZXN0VGV4dHVyZUZvcm1hdDsKIAogICAgIGlmICghbV9iYWNrVHJh
Y2tVcGRhdGVyKQotICAgICAgICBtX2JhY2tUcmFja1VwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXI6OmNyZWF0
ZShtX3Njcm9sbGJhci5nZXQoKSwgdGhlbWUoKSwgQmFja1RyYWNrUGFydCksIHVzZU1hcFN1Yklt
YWdlKTsKKyAgICAgICAgbV9iYWNrVHJhY2tVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6Y3JlYXRlKFNjcm9sbGJhckJhY2tncm91bmRQYWludGVyOjpjcmVhdGUobV9z
Y3JvbGxiYXIuZ2V0KCksIHRoZW1lKCksIEJhY2tUcmFja1BhcnQpKTsKICAgICBpZiAoIW1fYmFj
a1RyYWNrKQogICAgICAgICBtX2JhY2tUcmFjayA9IG1fYmFja1RyYWNrVXBkYXRlci0+Y3JlYXRl
VGV4dHVyZShsYXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSk7CiAKICAg
ICAvLyBPbmx5IGNyZWF0ZSB0d28tcGFydCB0cmFjayBpZiB3ZSB0aGluayB0aGUgdHdvIHBhcnRz
IGNvdWxkIGJlIGRpZmZlcmVudCBpbiBhcHBlYXJhbmNlLgogICAgIGlmIChtX3Njcm9sbGJhci0+
aXNDdXN0b21TY3JvbGxiYXIoKSkgewogICAgICAgICBpZiAoIW1fZm9yZVRyYWNrVXBkYXRlcikK
LSAgICAgICAgICAgIG1fZm9yZVRyYWNrVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxiYXJCYWNrZ3JvdW5kUGFpbnRlcjo6Y3JlYXRlKG1fc2Ny
b2xsYmFyLmdldCgpLCB0aGVtZSgpLCBGb3J3YXJkVHJhY2tQYXJ0KSwgdXNlTWFwU3ViSW1hZ2Up
OworICAgICAgICAgICAgbV9mb3JlVHJhY2tVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6Y3JlYXRlKFNjcm9sbGJhckJhY2tncm91bmRQYWludGVyOjpjcmVhdGUobV9z
Y3JvbGxiYXIuZ2V0KCksIHRoZW1lKCksIEZvcndhcmRUcmFja1BhcnQpKTsKICAgICAgICAgaWYg
KCFtX2ZvcmVUcmFjaykKICAgICAgICAgICAgIG1fZm9yZVRyYWNrID0gbV9mb3JlVHJhY2tVcGRh
dGVyLT5jcmVhdGVUZXh0dXJlKGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdl
cigpKTsKICAgICB9CiAKICAgICBpZiAoIW1fdGh1bWJVcGRhdGVyKQotICAgICAgICBtX3RodW1i
VXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxi
YXJUaHVtYlBhaW50ZXI6OmNyZWF0ZShtX3Njcm9sbGJhci5nZXQoKSwgdGhlbWUoKSksIHVzZU1h
cFN1YkltYWdlKTsKKyAgICAgICAgbV90aHVtYlVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyVGh1bWJQYWludGVyOjpjcmVhdGUobV9zY3Jv
bGxiYXIuZ2V0KCksIHRoZW1lKCkpKTsKICAgICBpZiAoIW1fdGh1bWIpCiAgICAgICAgIG1fdGh1
bWIgPSBtX3RodW1iVXBkYXRlci0+Y3JlYXRlVGV4dHVyZShsYXllclRyZWVIb3N0KCktPmNvbnRl
bnRzVGV4dHVyZU1hbmFnZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCmluZGV4IDMzMjQz
Yzg1NTJkM2ZhMmU4NTFlZjdmODYzYTVkZTYyMDM1YzUwODUuLjBiNTk1OTdhNWVlODA5MDA3YTI0
ODQxYjVkNWY3ZTlhZjljOTQ0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCkBAIC02Niw1NSAr
NjYsNTQgQEAgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjp+QWNjZWxlcmF0ZWRUZXh0dXJlQ29w
aWVyKCkKICAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZl
cihtX2ZibykpOwogfQogCi12b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1
cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNjQ29udGV4dCwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlk
LCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBzaXplKQordm9pZCBBY2Nl
bGVyYXRlZFRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKHVuc2lnbmVkIHNvdXJjZVRleHR1cmVJ
ZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBU
UkFDRV9FVkVOVDAoImNjIiwgIlRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlIik7CiAKLSAgICBX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gY2NDb250ZXh0LT5jb250ZXh0
M0QoKTsKLSAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm47Ci0gICAg
fQotCiAgICAgLy8gTm90ZTogdGhpcyBjb2RlIGRvZXMgbm90IHJlc3RvcmUgdGhlIHZpZXdwb3J0
LCBib3VuZCBwcm9ncmFtLCAyRCB0ZXh0dXJlLCBmcmFtZWJ1ZmZlciwgYnVmZmVyIG9yIGJsZW5k
IGVuYWJsZS4KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pKTsKLSAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBkZXN0VGV4dHVyZUlkLCAwKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBt
X2ZibykpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJl
MkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09M
T1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBkZXN0VGV4dHVy
ZUlkLCAwKSk7CiAKICNpZiBPUyhBTkRST0lEKQogICAgIC8vIENsZWFyIGRlc3RpbmF0aW9uIHRv
IGltcHJvdmUgcGVyZm9ybWFuY2Ugb24gdGlsaW5nIEdQVXMuCiAgICAgLy8gVE9ETzogVXNlIEVY
VF9kaXNjYXJkX2ZyYW1lYnVmZmVyIG9yIHNraXAgY2xlYXJpbmcgaWYgaXQgaXNuJ3QgYXZhaWxh
YmxlLgotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5jbGVhcihHcmFwaGljc0NvbnRleHQzRDo6
Q09MT1JfQlVGRkVSX0JJVCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y2xlYXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQpKTsKICNlbmRpZgogCi0gICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBzb3VyY2VUZXh0dXJlSWQpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKLSAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6Ok5FQVJFU1QpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBzb3VyY2VUZXh0dXJlSWQpKTsK
KyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVT
VCkpOwogCiAgICAgaWYgKCFtX2JsaXRQcm9ncmFtLT5pbml0aWFsaXplZCgpKQotICAgICAgICBt
X2JsaXRQcm9ncmFtLT5pbml0aWFsaXplKGNvbnRleHQsIG1fdXNpbmdCaW5kVW5pZm9ybXMpOwor
ICAgICAgICBtX2JsaXRQcm9ncmFtLT5pbml0aWFsaXplKG1fY29udGV4dCwgbV91c2luZ0JpbmRV
bmlmb3Jtcyk7CiAKICAgICAvLyBUT0RPOiBVc2UgRVhUX2ZyYW1lYnVmZmVyX2JsaXQgaWYgYXZh
aWxhYmxlLgotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9ncmFtKG1fYmxpdFByb2dy
YW0tPnByb2dyYW0oKSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3Jh
bShtX2JsaXRQcm9ncmFtLT5wcm9ncmFtKCkpKTsKIAogICAgIGNvbnN0IGludCBrUG9zaXRpb25B
dHRyaWJ1dGUgPSAwOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIG1fcG9zaXRpb25CdWZmZXIpKTsKLSAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihrUG9zaXRpb25BdHRyaWJ1dGUs
IDQsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2UsIDAsIDApKTsKLSAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoa1Bvc2l0aW9uQXR0cmlidXRl
KSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkFSUkFZX0JVRkZFUiwgMCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Ymlu
ZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX3Bvc2l0aW9uQnVmZmVy
KSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGtQ
b3NpdGlvbkF0dHJpYnV0ZSwgNCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwgMCwg
MCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoa1Bvc2l0aW9uQXR0cmlidXRlKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5i
aW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIDApKTsKIAotICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT52aWV3cG9ydCgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRl
eHQzRDo6QkxFTkQpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZHJhd0FycmF5cyhHcmFw
aGljc0NvbnRleHQzRDo6VFJJQU5HTEVfRkFOLCAwLCA0KSk7CisgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsK
KyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6
OkJMRU5EKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kcmF3QXJyYXlzKEdyYXBo
aWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIDAsIDQpKTsKIAotICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElO
RUFSKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGtQb3NpdGlvbkF0dHJpYnV0ZSkpOworICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGtQb3Np
dGlvbkF0dHJpYnV0ZSkpOwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVzZVByb2dyYW0o
MCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dXNlUHJvZ3JhbSgwKSk7CiAKLSAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwKSk7Ci0gICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IDApKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIDApKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCwgMCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOworICAgIEdMQyhtX2NvbnRl
eHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IDApKTsKK30KKwordm9pZCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmZsdXNoKCkKK3sKKyAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZsdXNoKCkpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29w
aWVyLmgKaW5kZXggYzJiY2Q0MjdjMzEwMGMyYTU0OGE4MTIzMjhhYTc3MmFlYTRmYWEzNC4uYjM4
NWY0NWU1NDNhNzQzNmU1NTc4MDMyMmJhMWQyYjE0ZTI3N2FlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIu
aApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5j
bHVkZSAiUHJvZ3JhbUJpbmRpbmcuaCIKICNpbmNsdWRlICJTaGFkZXJDaHJvbWl1bS5oIgotI2lu
Y2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CkBAIC00Miw3ICs0MSw4IEBAIHB1YmxpYzoKICAgICAv
LyBDb3B5IHRoZSBiYXNlIGxldmVsIGNvbnRlbnRzIG9mIHxzb3VyY2VUZXh0dXJlSWR8IHRvIHxk
ZXN0VGV4dHVyZUlkfC4gQm90aCB0ZXh0dXJlIG9iamVjdHMKICAgICAvLyBtdXN0IGJlIGNvbXBs
ZXRlIGFuZCBoYXZlIGEgYmFzZSBsZXZlbCBvZiB8c2l6ZXwgZGltZW5zaW9ucy4gVGhlIGNvbG9y
IGZvcm1hdHMgZG8gbm90IG5lZWQKICAgICAvLyB0byBtYXRjaCwgYnV0IHxkZXN0VGV4dHVyZUlk
fCBtdXN0IGhhdmUgYSByZW5kZXJhYmxlIGZvcm1hdC4KLSAgICB2aXJ0dWFsIHZvaWQgY29weVRl
eHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqLCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2ln
bmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGNvcHlUZXh0dXJlKHVuc2lnbmVkIHNvdXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1
cmVJZCwgY29uc3QgSW50U2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2goKSA9IDA7
CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5UZXh0dXJlQ29waWVyKCkgeyB9CkBAIC01OSw3
ICs1OSw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+QWNjZWxlcmF0ZWRUZXh0dXJl
Q29waWVyKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUoQ0NHcmFwaGljc0NvbnRl
eHQqLCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNv
bnN0IEludFNpemUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUodW5zaWduZWQgc291
cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJik7Cisg
ICAgdmlydHVhbCB2b2lkIGZsdXNoKCk7CiAKIHByb3RlY3RlZDoKICAgICBBY2NlbGVyYXRlZFRl
eHR1cmVDb3BpZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIGJvb2wgdXNpbmdCaW5k
VW5pZm9ybXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4IDQ4NWM3MjIyOGVjMDM3ZmNj
ZTVmM2ZlYzQwMDkyNDg1MjM3YzA2YmMuLjk2ZjdhNmYwOGQwNjU1MTNhOWU4MGRiOTQzY2VjZWYy
YWYzMDgyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKQEAgLTkwLDExICs5MCwxMyBAQCBz
aXplX3QgVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKGNvbnN0IEludFNpemUmIHNpemUs
IEdDM0RlbnVtIHRleHR1cmVGb3JtYQogfQogCiAKLVRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFu
YWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxp
bWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSkKK1RleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFu
YWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxp
bWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSwgaW50IHJlc291cmNlUG9vbCwgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VIaW50IHVzYWdlSGludCkKICAgICA6IG1fbWF4TWVtb3J5
TGltaXRCeXRlcyhtYXhNZW1vcnlMaW1pdEJ5dGVzKQogICAgICwgbV9wcmVmZXJyZWRNZW1vcnlM
aW1pdEJ5dGVzKHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMpCiAgICAgLCBtX21lbW9yeVVzZUJ5
dGVzKDApCiAgICAgLCBtX21heFRleHR1cmVTaXplKG1heFRleHR1cmVTaXplKQorICAgICwgbV9y
ZXNvdXJjZVBvb2wocmVzb3VyY2VQb29sKQorICAgICwgbV91c2FnZUhpbnQodXNhZ2VIaW50KQog
ICAgICwgbV9uZXh0VG9rZW4oMSkKIHsKIH0KQEAgLTIyNywzNSArMjI5LDIxIEBAIHZvaWQgVGV4
dHVyZU1hbmFnZXI6OmFkZFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBUZXh0dXJlSW5mbyBp
bmZvKQogICAgIG1fdGV4dHVyZUxSVVNldC5hZGQodG9rZW4pOwogfQogCi12b2lkIFRleHR1cmVN
YW5hZ2VyOjpkZWxldGVFdmljdGVkVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
KQordm9pZCBUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlRXZpY3RlZFRleHR1cmVzKENDUmVzb3VyY2VQ
cm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKLSAgICBpZiAoYWxsb2NhdG9yKSB7CisgICAg
aWYgKHJlc291cmNlUHJvdmlkZXIpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2V2aWN0ZWRUZXh0dXJlcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKG1fZXZpY3Rl
ZFRleHR1cmVzW2ldLnRleHR1cmVJZCkgeworICAgICAgICAgICAgaWYgKG1fZXZpY3RlZFRleHR1
cmVzW2ldLnJlc291cmNlSWQpIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICAgICAgQVNT
RVJUKG1fZXZpY3RlZFRleHR1cmVzW2ldLmFsbG9jYXRvciA9PSBhbGxvY2F0b3IpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2V2aWN0ZWRUZXh0dXJlc1tpXS5yZXNvdXJjZVByb3ZpZGVyID09
IHJlc291cmNlUHJvdmlkZXIpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgYWxsb2NhdG9yLT5k
ZWxldGVUZXh0dXJlKG1fZXZpY3RlZFRleHR1cmVzW2ldLnRleHR1cmVJZCwgbV9ldmljdGVkVGV4
dHVyZXNbaV0uc2l6ZSwgbV9ldmljdGVkVGV4dHVyZXNbaV0uZm9ybWF0KTsKKyAgICAgICAgICAg
ICAgICByZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShtX2V2aWN0ZWRUZXh0dXJlc1tp
XS5yZXNvdXJjZUlkKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBtX2V2
aWN0ZWRUZXh0dXJlcy5jbGVhcigpOwogfQogCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpldmljdEFu
ZFJlbW92ZUFsbERlbGV0ZWRUZXh0dXJlcygpCi17Ci0gICAgdW5wcm90ZWN0QWxsVGV4dHVyZXMo
KTsKLSAgICByZWR1Y2VNZW1vcnlUb0xpbWl0KDApOwotICAgIG1fZXZpY3RlZFRleHR1cmVzLmNs
ZWFyKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVy
ZXMoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotewotICAgIHVucHJvdGVjdEFsbFRleHR1
cmVzKCk7Ci0gICAgcmVkdWNlTWVtb3J5VG9MaW1pdCgwKTsKLSAgICBkZWxldGVFdmljdGVkVGV4
dHVyZXMoYWxsb2NhdG9yKTsKLX0KLQogdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVGV4dHVy
ZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCiB7CiAgICAgQVNTRVJUKG1f
dGV4dHVyZUxSVVNldC5jb250YWlucyh0b2tlbikpOwpAQCAtMjY1LDI4ICsyNTMsMjggQEAgdm9p
ZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1
cmVJbmZvIGluZm8pCiAgICAgQVNTRVJUKG1fdGV4dHVyZUxSVVNldC5jb250YWlucyh0b2tlbikp
OwogICAgIG1fdGV4dHVyZUxSVVNldC5yZW1vdmUodG9rZW4pOwogICAgIEV2aWN0aW9uRW50cnkg
ZW50cnk7Ci0gICAgZW50cnkudGV4dHVyZUlkID0gaW5mby50ZXh0dXJlSWQ7CisgICAgZW50cnku
cmVzb3VyY2VJZCA9IGluZm8ucmVzb3VyY2VJZDsKICAgICBlbnRyeS5zaXplID0gaW5mby5zaXpl
OwogICAgIGVudHJ5LmZvcm1hdCA9IGluZm8uZm9ybWF0OwogI2lmbmRlZiBOREVCVUcKLSAgICBl
bnRyeS5hbGxvY2F0b3IgPSBpbmZvLmFsbG9jYXRvcjsKKyAgICBlbnRyeS5yZXNvdXJjZVByb3Zp
ZGVyID0gaW5mby5yZXNvdXJjZVByb3ZpZGVyOwogI2VuZGlmCiAgICAgbV9ldmljdGVkVGV4dHVy
ZXMuYXBwZW5kKGVudHJ5KTsKIH0KIAotdW5zaWduZWQgVGV4dHVyZU1hbmFnZXI6OmFsbG9jYXRl
VGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmVUb2tlbiB0b2tlbikK
K0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdGVU
ZXh0dXJlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgVGV4dHVyZVRva2Vu
IHRva2VuKQogewogICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5maW5k
KHRva2VuKTsKICAgICBBU1NFUlQoaXQgIT0gbV90ZXh0dXJlcy5lbmQoKSk7CiAgICAgVGV4dHVy
ZUluZm8qIGluZm8gPSAmaXQuZ2V0KCktPnNlY29uZDsKICAgICBBU1NFUlQoaW5mby0+aXNQcm90
ZWN0ZWQpOwogCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkID0gYWxsb2NhdG9yLT5jcmVhdGVUZXh0
dXJlKGluZm8tPnNpemUsIGluZm8tPmZvcm1hdCk7Ci0gICAgaW5mby0+dGV4dHVyZUlkID0gdGV4
dHVyZUlkOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkID0g
cmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UobV9yZXNvdXJjZVBvb2wsIGluZm8tPnNp
emUsIGluZm8tPmZvcm1hdCwgbV91c2FnZUhpbnQpOworICAgIGluZm8tPnJlc291cmNlSWQgPSBy
ZXNvdXJjZUlkOwogI2lmbmRlZiBOREVCVUcKLSAgICBpbmZvLT5hbGxvY2F0b3IgPSBhbGxvY2F0
b3I7CisgICAgaW5mby0+cmVzb3VyY2VQcm92aWRlciA9IHJlc291cmNlUHJvdmlkZXI7CiAjZW5k
aWYKLSAgICByZXR1cm4gdGV4dHVyZUlkOworICAgIHJldHVybiByZXNvdXJjZUlkOwogfQogCiBi
b29sIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIElu
dFNpemUgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQpAQCAtMzExLDEwICsyOTksMTAgQEAgYm9vbCBU
ZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBJbnRTaXpl
IHNpemUsIHVuc2lnbmVkIGYKICAgICBUZXh0dXJlSW5mbyBpbmZvOwogICAgIGluZm8uc2l6ZSA9
IHNpemU7CiAgICAgaW5mby5mb3JtYXQgPSBmb3JtYXQ7Ci0gICAgaW5mby50ZXh0dXJlSWQgPSAw
OworICAgIGluZm8ucmVzb3VyY2VJZCA9IDA7CiAgICAgaW5mby5pc1Byb3RlY3RlZCA9IHRydWU7
CiAjaWZuZGVmIE5ERUJVRwotICAgIGluZm8uYWxsb2NhdG9yID0gMDsKKyAgICBpbmZvLnJlc291
cmNlUHJvdmlkZXIgPSAwOwogI2VuZGlmCiAgICAgYWRkVGV4dHVyZSh0b2tlbiwgaW5mbyk7CiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaAppbmRleCA0N2ExODliY2NkMzQwZTNl
YzliNDczZWE4ZThmZTJiOTUxOGJhYTU3Li5lZDNhNjFjYzI2YTA3ZjgyNDRiMmExMjRiZTY3ODE5
YThkNDUwN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCisjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0zOSwyMiArNDAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgTWFuYWdlZFRleHR1cmU7CiB0eXBlZGVmIGludCBUZXh0dXJlVG9rZW47CiAKLWNs
YXNzIFRleHR1cmVBbGxvY2F0b3IgewotcHVibGljOgotICAgIHZpcnR1YWwgdW5zaWduZWQgY3Jl
YXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYs
IEdDM0RlbnVtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbFRleHR1cmVzKCkgPSAw
OwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+VGV4dHVyZUFsbG9jYXRvcigpIHsgfQotfTsK
LQogY2xhc3MgVGV4dHVyZU1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHR1
cmVNYW5hZ2VyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJlTWFuYWdl
cj4gY3JlYXRlKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBzaXplX3QgcHJlZmVycmVkTWVt
b3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKQorICAgIHN0YXRpYyBQYXNzT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiBjcmVhdGUoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVf
dCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUsIGludCByZXNv
dXJjZVBvb2wsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlSGludCB1c2FnZUhpbnQp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVNYW5hZ2VyKG1heE1l
bW9yeUxpbWl0Qnl0ZXMsIHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIG1heFRleHR1cmVTaXpl
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZU1hbmFnZXIobWF4TWVtb3J5
TGltaXRCeXRlcywgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcywgbWF4VGV4dHVyZVNpemUsIHJl
c291cmNlUG9vbCwgdXNhZ2VIaW50KSk7CiAgICAgfQogICAgIH5UZXh0dXJlTWFuYWdlcigpOwog
CkBAIC04NSwyNSArNzYsMjIgQEAgcHVibGljOgogICAgIHZvaWQgdW5wcm90ZWN0QWxsVGV4dHVy
ZXMoKTsKICAgICBib29sIGlzUHJvdGVjdGVkKFRleHR1cmVUb2tlbik7CiAKLSAgICB1bnNpZ25l
ZCBhbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVUb2tlbik7Ci0gICAg
dm9pZCBkZWxldGVFdmljdGVkVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciopOwotCi0gICAgdm9p
ZCBldmljdEFuZFJlbW92ZUFsbERlbGV0ZWRUZXh0dXJlcygpOwotICAgIHZvaWQgZXZpY3RBbmRE
ZWxldGVBbGxUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIGFsbG9jYXRlVGV4dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBUZXh0
dXJlVG9rZW4pOworICAgIHZvaWQgZGVsZXRlRXZpY3RlZFRleHR1cmVzKENDUmVzb3VyY2VQcm92
aWRlciopOwogCiAgICAgdm9pZCByZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCk7CiAgICAgc2l6
ZV90IGN1cnJlbnRNZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNlQnl0
ZXM7IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGlt
aXRCeXRlcywgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJl
U2l6ZSk7CisgICAgVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNp
emVfdCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUsIGludCBy
ZXNvdXJjZVBvb2wsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlSGludCk7CiAKICAg
ICBzdHJ1Y3QgVGV4dHVyZUluZm8gewogICAgICAgICBJbnRTaXplIHNpemU7CiAgICAgICAgIEdD
M0RlbnVtIGZvcm1hdDsKLSAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkOworICAgICAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZDsKICAgICAgICAgYm9vbCBpc1By
b3RlY3RlZDsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvcjsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyOwogI2Vu
ZGlmCiAgICAgfTsKIApAQCAtMTIxLDE0ICsxMDksMTYgQEAgcHJpdmF0ZToKICAgICBzaXplX3Qg
bV9wcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzOwogICAgIHNpemVfdCBtX21lbW9yeVVzZUJ5dGVz
OwogICAgIGludCBtX21heFRleHR1cmVTaXplOworICAgIGludCBtX3Jlc291cmNlUG9vbDsKKyAg
ICBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUhpbnQgbV91c2FnZUhpbnQ7CiAgICAg
VGV4dHVyZVRva2VuIG1fbmV4dFRva2VuOwogCiAgICAgc3RydWN0IEV2aWN0aW9uRW50cnkgewot
ICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCByZXNvdXJjZUlkOwogICAgICAgICBJbnRTaXplIHNpemU7CiAgICAgICAgIEdD
M0RlbnVtIGZvcm1hdDsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcjsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVy
OwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaAppbmRleCAwZWFlMmU2NWRk
MDI0NjRjZDIwZmJmMzhmZGJiNzhlY2NkZGM4OTFiLi45Mjg3MGNiNWE1YmZkOTBlYWZjMjg3M2Q3
MGNjMGNmMTBkMWJlMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaApAQCAtMzYsNyArMzYsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5VcGxvYWRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRS
ZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBsb2FkVGV4dHVyZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgQ0NSZXNv
dXJjZVByb3ZpZGVyKiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRl
c3RSZWN0KSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyLmNwcAppbmRleCBhODI1M2QwNjU1MTYyNWYwYjA3M2FlY2Y1ZGVmNzVjZGFlMDJhZmJkLi4y
ODFlMDhmZjA0OTg3ODEyOGE4NDMyNzA5ZWZmZTY5NjkxYjgwZDJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBs
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKQEAgLTEyMCw5ICsxMjAsOSBAQCB2b2lkIFRo
cm90dGxlZFRleHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2FkcygpCiAgICAgbV9wZW5kaW5nUXVlcmll
cy5hcHBlbmQobV9hdmFpbGFibGVRdWVyaWVzLnRha2VGaXJzdCgpKTsKIH0KIAotdm9pZCBUaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
IGRlc3RSZWN0KQordm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgQ0NSZXNvdXJjZVByb3ZpZGVy
KiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QgZGVzdFJlY3QpCiB7Ci0gICAgdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBhbGxvY2F0
b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KHJlc291
cmNlUHJvdmlkZXIsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogdm9pZCBUaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXI6OnByb2Nlc3NRdWVyaWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyLmgKaW5kZXggYWU1Yjc0OTFmMjg0ODQ0MGY0MTMxY2U2YmIxNDNlNzVhNGQ2
YzlkYS4uZjhjNDNkYzJkNDMwMzlmMmZkMjc4Y2ZhN2M3MTdjYWEyOTBiYTRjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5VcGxvYWRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4
dCosIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29u
c3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiwgQ0NSZXNvdXJjZVByb3ZpZGVyKiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBRdWVy
eSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCBlNzVkZDQwZjZhZThhNmJl
Yjc2ZjMwZDJkOGIxZmM0ODNjOWVlNzhkLi5lNGQ0YmFlNDBjODJiMjU1Zjk2MWQzOWFkOWIyM2I4
NjNiMjNiOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTIyNyw3ICsy
MjcsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVy
SW1wbCogbGF5ZXIpCiAgICAgICAgIGlmICh0aWxlLT5pc0RpcnR5Rm9yQ3VycmVudEZyYW1lKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB0aWxlZExheWVyLT5wdXNoVGlsZVBy
b3BlcnRpZXMoaSwgaiwgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+dGV4dHVyZUlkKCksIHRpbGUt
Pm9wYXF1ZVJlY3QoKSk7CisgICAgICAgIHRpbGVkTGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhp
LCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5yZXNvdXJjZUlkKCksIHRpbGUtPm9wYXF1ZVJl
Y3QoKSk7CiAgICAgICAgIHRpbGUtPmlzSW5Vc2VPbkltcGwgPSB0cnVlOwogICAgIH0KICAgICBm
b3IgKFZlY3RvcjxVcGRhdGFibGVUaWxlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBpbnZhbGlk
VGlsZXMuYmVnaW4oKTsgaXRlciAhPSBpbnZhbGlkVGlsZXMuZW5kKCk7ICsraXRlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5n
VGV4dHVyZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjNTg5YTNjNmVkM2QwMGFmZjFmYmEwZDdkNDM1OTRmM2FhYzkxZTgzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgotCi0j
aW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hy
b21pdW0uaCIgLy8gRm9yIHRoZSBHTEMoKSBtYWNybwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKFdlYktp
dDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGludCBtYXhUZXh0dXJlU2l6ZSkKLSAg
ICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9tYXhUZXh0dXJlU2l6ZShtYXhUZXh0dXJl
U2l6ZSkKLSAgICAsIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzKDApCi0gICAgLCBtX3RleHR1cmVV
c2FnZUhpbnQoQW55KQotICAgICwgbV91c2VUZXh0dXJlU3RvcmFnZUV4dChmYWxzZSkKLXsKLSAg
ICBBU1NFUlQobV9jb250ZXh0KTsKLX0KLQotVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjp+VHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yKCkKLXsKLSAgICBBU1NFUlQoIW1fY3VycmVudE1lbW9yeVVz
ZUJ5dGVzKTsKLX0KLQotc3RhdGljIEdDM0RlbnVtIHRleHR1cmVUb1N0b3JhZ2VGb3JtYXQoR0Mz
RGVudW0gdGV4dHVyZUZvcm1hdCkKLXsKLSAgICBHQzNEZW51bSBzdG9yYWdlRm9ybWF0ID0gRXh0
ZW5zaW9uczNEOjpSR0JBOF9PRVM7Ci0gICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0KSB7Ci0gICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBF
eHRlbnNpb25zM0Q6OkJHUkFfRVhUOgotICAgICAgICBzdG9yYWdlRm9ybWF0ID0gRXh0ZW5zaW9u
czNEQ2hyb21pdW06OkJHUkE4X0VYVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAg
IHJldHVybiBzdG9yYWdlRm9ybWF0OwotfQotCi1zdGF0aWMgYm9vbCBpc1RleHR1cmVGb3JtYXRT
dXBwb3J0ZWRGb3JTdG9yYWdlKEdDM0RlbnVtIGZvcm1hdCkKLXsKLSAgICByZXR1cm4gKGZvcm1h
dCA9PSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSB8fCBmb3JtYXQgPT0gRXh0ZW5zaW9uczNEOjpC
R1JBX0VYVCk7Ci19Ci0KLXVuc2lnbmVkIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRl
VGV4dHVyZShjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQpCi17Ci0gICAgaWYg
KHNpemUud2lkdGgoKSA+IG1fbWF4VGV4dHVyZVNpemUgfHwgc2l6ZS5oZWlnaHQoKSA+IG1fbWF4
VGV4dHVyZVNpemUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgbV9jdXJyZW50TWVtb3J5VXNl
Qnl0ZXMgKz0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNpemUsIGZvcm1hdCk7Ci0K
LSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSAwOwotICAgIEdMQyhtX2NvbnRleHQsIHRleHR1cmVJ
ZCA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJl
SWQpKTsKLSAgICAvLyBEbyBiYXNpYyBsaW5lYXIgZmlsdGVyaW5nIG9uIHJlc2l6ZS4KLSAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRl
eFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAg
ICAvLyBOUE9UIHRleHR1cmVzIGluIEdMIEVTIG9ubHkgd29yayB3aGVuIHRoZSB3cmFwIG1vZGUg
aXMgc2V0IHRvIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFLgotICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQz
RDo6Q0xBTVBfVE9fRURHRSkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotCi0g
ICAgaWYgKG1fdGV4dHVyZVVzYWdlSGludCA9PSBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQpCi0gICAg
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX1RFWFRVUkVfVVNBR0Vf
QU5HTEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FO
R0xFKSk7Ci0gICAgaWYgKG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQgJiYgaXNUZXh0dXJlRm9ybWF0
U3VwcG9ydGVkRm9yU3RvcmFnZShmb3JtYXQpKSB7Ci0gICAgICAgIEdDM0RlbnVtIHN0b3JhZ2VG
b3JtYXQgPSB0ZXh0dXJlVG9TdG9yYWdlRm9ybWF0KGZvcm1hdCk7Ci0gICAgICAgIG1fY29udGV4
dC0+dGV4U3RvcmFnZTJERVhUKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAxLCBzdG9y
YWdlRm9ybWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotICAgIH0gZWxzZQotICAg
ICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCAw
LCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAwKSk7Ci0gICAgbV9h
bGxvY2F0ZWRUZXh0dXJlSWRzLmFkZCh0ZXh0dXJlSWQpOwotICAgIHJldHVybiB0ZXh0dXJlSWQ7
Ci19Ci0KLXZvaWQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpkZWxldGVUZXh0dXJlKHVuc2ln
bmVkIHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQotewot
ICAgIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzIC09IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VC
eXRlcyhzaXplLCBmb3JtYXQpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRl
VGV4dHVyZSh0ZXh0dXJlSWQpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0
ZVRleHR1cmUodGV4dHVyZUlkKSk7Ci0gICAgQVNTRVJUKG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5j
b250YWlucyh0ZXh0dXJlSWQpKTsKLSAgICBtX2FsbG9jYXRlZFRleHR1cmVJZHMucmVtb3ZlKHRl
eHR1cmVJZCk7Ci19Ci0KLXZvaWQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpkZWxldGVBbGxU
ZXh0dXJlcygpCi17Ci0gICAgZm9yIChIYXNoU2V0PHVuc2lnbmVkPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX2FsbG9jYXRlZFRleHR1cmVJZHMuYmVnaW4oKTsgaXQgIT0gbV9hbGxvY2F0ZWRUZXh0
dXJlSWRzLmVuZCgpOyArK2l0KQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRl
bGV0ZVRleHR1cmUoKml0KSk7Ci0gICAgbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMgPSAwOwotICAg
IG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5jbGVhcigpOwotfQotCi19Ci0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFs
bG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4
ZWY0MGQxYjQzZTdiMzQyNDU0YTUyYTE0MDAyNGM1OTE4MTlmZTIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3JfaAotI2RlZmluZSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3JfaAotCi0jaW5jbHVk
ZSAiVGV4dHVyZU1hbmFnZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViR3JhcGhp
Y3NDb250ZXh0M0Q7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRleHR1cmVBbGxvY2F0b3IgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcik7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBjcmVhdGUoV2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgaW50IG1heFRleHR1cmVTaXplKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IoY29u
dGV4dCwgbWF4VGV4dHVyZVNpemUpKTsKLSAgICB9Ci0gICAgdmlydHVhbCB+VHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yKCk7Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29u
c3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IGRlbGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVt
IGZvcm1hdCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbFRleHR1cmVzKCkg
T1ZFUlJJREU7Ci0KLSAgICBzaXplX3QgY3VycmVudE1lbW9yeVVzZUJ5dGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXM7IH0KLQotICAgIGVudW0gVGV4dHVyZVVzYWdl
SGludCB7IEFueSwgRnJhbWVidWZmZXJBdHRhY2htZW50IH07Ci0KLSAgICB2b2lkIHNldFRleHR1
cmVVc2FnZUhpbnQoVGV4dHVyZVVzYWdlSGludCBoaW50KSB7IG1fdGV4dHVyZVVzYWdlSGludCA9
IGhpbnQ7IH0KLSAgICB2b2lkIHNldFVzZVRleHR1cmVTdG9yYWdlRXh0KGJvb2wgdXNlU3RvcmFn
ZUV4dCkgeyBtX3VzZVRleHR1cmVTdG9yYWdlRXh0ID0gdXNlU3RvcmFnZUV4dDsgfQotCi1wcm90
ZWN0ZWQ6Ci0gICAgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqLCBpbnQgbWF4VGV4dHVyZVNpemUpOwotCi0gICAgV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCogbV9jb250ZXh0OwotICAgIGludCBtX21heFRleHR1cmVTaXplOwotICAgIHNp
emVfdCBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlczsKLSAgICBUZXh0dXJlVXNhZ2VIaW50IG1fdGV4
dHVyZVVzYWdlSGludDsKLSAgICBib29sIG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQ7Ci0gICAgSGFz
aFNldDx1bnNpZ25lZD4gbV9hbGxvY2F0ZWRUZXh0dXJlSWRzOwotfTsKLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKaW5kZXggNzMxZjc3MGMwOTY2MzE4NThh
MGFjM2M0YmM4ZjNkNzEzZjY3MTI2OC4uZGM5MGQzNGE4YjY4OTQ1MTdiMWQzMTg4NWE3N2M1NWVj
YWFmZTE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKQEAgLTM1LDcgKzM1
LDYgQEAKICNpbmNsdWRlICJjYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCIKICNpbmNsdWRlICJjYy9D
Q0ZyYW1lUmF0ZUNvdW50ZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgi
Ci0jaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY5LDEzICs2OCw4
IEBAIGJvb2wgQ0NIZWFkc1VwRGlzcGxheTo6c2hvd0RlYnVnUmVjdHMoY29uc3QgQ0NMYXllclRy
ZWVTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0CiB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXco
Q0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiB7CiAgICAgQ0NSZW5kZXJl
ciogbGF5ZXJSZW5kZXJlciA9IGxheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCk7Ci0g
ICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZXh0KCktPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dCkgewotICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcu
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgaWYgKCFtX2h1ZFRleHR1cmUpCi0gICAgICAg
IG1faHVkVGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXItPmlt
cGxUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBtX2h1ZFRleHR1cmUgPSBDQ1Njb3BlZFRl
eHR1cmU6OmNyZWF0ZShsYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKIAog
ICAgIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzID0gbGF5ZXJUcmVlSG9zdElt
cGwtPnNldHRpbmdzKCk7CiAgICAgLy8gVXNlIGEgZnVsbHNjcmVlbiB0ZXh0dXJlIG9ubHkgaWYg
d2UgbmVlZCB0by4uLgpAQCAtODgsNyArODIsNyBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRy
YXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAgICAgIGh1ZFNp
emUuc2V0SGVpZ2h0KDEyOCk7CiAgICAgfQogCi0gICAgaWYgKCFtX2h1ZFRleHR1cmUtPmlkKCkg
JiYgIW1faHVkVGV4dHVyZS0+YWxsb2NhdGUoaHVkU2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEpKQorICAgIGlmICghbV9odWRUZXh0dXJlLT5pZCgpICYmICFtX2h1ZFRleHR1cmUtPmFsbG9j
YXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBodWRTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpBbnkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBS
ZW5kZXIgcGl4ZWxzIGludG8gdGhlIHRleHR1cmUuCkBAIC0xMDMsMjIgKzk3LDggQEAgdm9pZCBD
Q0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJ
bXBsKQogICAgIC8vIFVwbG9hZCB0byBHTC4KICAgICB7CiAgICAgICAgIFBsYXRmb3JtQ2FudmFz
OjpBdXRvTG9ja2VyIGxvY2tlcigmY2FudmFzKTsKLQotICAgICAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1faHVkVGV4
dHVyZS0+aWQoKSkpOwotICAgICAgICBib29sIHVwbG9hZGVkVmlhTWFwID0gZmFsc2U7Ci0gICAg
ICAgIGlmIChsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1YikgewotICAg
ICAgICAgICAgdWludDhfdCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGNvbnRl
eHQtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgMCwgMCwgMCwgaHVkU2l6ZS53aWR0aCgpLCBodWRTaXplLmhlaWdodCgpLCBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lv
bnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7Ci0KLSAgICAgICAgICAgIGlmIChwaXhlbERlc3Qp
IHsKLSAgICAgICAgICAgICAgICB1cGxvYWRlZFZpYU1hcCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgbWVtY3B5KHBpeGVsRGVzdCwgbG9ja2VyLnBpeGVscygpLCBodWRTaXplLndpZHRoKCkgKiBo
dWRTaXplLmhlaWdodCgpICogNCk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+dW5tYXBUZXhT
dWJJbWFnZTJEQ0hST01JVU0ocGl4ZWxEZXN0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICghdXBsb2FkZWRWaWFNYXApIHsKLSAgICAgICAgICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBH
cmFwaGljc0NvbnRleHQzRDo6UkdCQSwgY2FudmFzLnNpemUoKS53aWR0aCgpLCBjYW52YXMuc2l6
ZSgpLmhlaWdodCgpLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlVOU0lHTkVEX0JZVEUsIGxvY2tlci5waXhlbHMoKSkpOwotICAgICAgICB9CisgICAgICAg
IEludFJlY3QgcmVjdChJbnRQb2ludCgwLCAwKSwgaHVkU2l6ZSk7CisgICAgICAgIGxheWVyVHJl
ZUhvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCktPnVwbG9hZChtX2h1ZFRleHR1cmUtPmlkKCks
IGxvY2tlci5waXhlbHMoKSwgcmVjdCwgcmVjdCwgcmVjdCk7CiAgICAgfQogCiAgICAgbGF5ZXJS
ZW5kZXJlci0+ZHJhd0hlYWRzVXBEaXNwbGF5KG1faHVkVGV4dHVyZS5nZXQoKSwgaHVkU2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKaW5kZXggY2UzYjM4ZTk2
NGE0NWMxZGExODU5M2NmNjJmYmYyOTYwM2I5ZTYwYi4uZDdhYmE0OWRlYjM1YzI4ZTQ3ZjE3Y2Vk
NjI0NTFmMTZhZTkyMGJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBs
LmNwcApAQCAtNjAsMTIgKzYwLDEyIEBAIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjp+Q0NJT1N1cmZh
Y2VMYXllckltcGwoKQogICAgICAgICBjb250ZXh0M2QtPmRlbGV0ZVRleHR1cmUobV9pb1N1cmZh
Y2VUZXh0dXJlSWQpOwogfQogCi12b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjp3aWxsRHJhdyhD
Q1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3Zv
aWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OndpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVz
b3VyY2VQcm92aWRlcikKIHsKLSAgICBDQ0xheWVySW1wbDo6d2lsbERyYXcobGF5ZXJSZW5kZXJl
ciwgY29udGV4dCk7CisgICAgQ0NMYXllckltcGw6OndpbGxEcmF3KHJlc291cmNlUHJvdmlkZXIp
OwogCiAgICAgaWYgKG1faW9TdXJmYWNlQ2hhbmdlZCkgewotICAgICAgICBXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICAg
ICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gcmVzb3VyY2VQcm92
aWRlci0+Z3JhcGhpY3NDb250ZXh0M0QoKTsKICAgICAgICAgaWYgKCFjb250ZXh0M2QpIHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21w
b3NpdGluZy4KICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxh
eWVySW1wbC5oCmluZGV4IDI4YTM1Y2QwZjIwODNhODYyMTAxNzE4NzljMWI5MjZiNTJiZDA0ZTIu
LjQyMzY4ODA5YzEzNDM2YzA2YTRiNzIwNGFlZDE0YmNiZmU5YWM0NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCB2b2lkIHdpbGxEcmF3KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKIAogICAgIHZp
cnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBj
b25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCA5YTg4Mzc2YzJkNjE1
ZDg3MGFhZWVlYzdmNDJhNjcwYjA5ODQ5OTBkLi5jYjc1ODViNjczNWRiYTg5NzQ2NTAwNmNlN2Qz
M2M5NGY3YTQ4ZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0xNTAsNyArMTUwLDcg
QEAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NMYXllckltcGw6OmNyZWF0ZVNoYXJl
ZFF1YWRTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUo
cXVhZFRyYW5zZm9ybSgpLCBtX3Zpc2libGVDb250ZW50UmVjdCwgbV9zY2lzc29yUmVjdCwgbV9k
cmF3T3BhY2l0eSwgbV9vcGFxdWUpOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhD
Q1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKQordm9pZCBDQ0xheWVySW1wbDo6d2lsbERy
YXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gd2lsbERy
YXcvZGlkRHJhdyBtdXN0IGJlIG1hdGNoZWQuCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBDQ0xh
eWVySW1wbDo6d2lsbERyYXcoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0KikKICNlbmRp
ZgogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpkaWREcmF3KCkKK3ZvaWQgQ0NMYXllckltcGw6OmRp
ZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJU
KG1fYmV0d2VlbldpbGxEcmF3QW5kRGlkRHJhdyk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBD
Q0xheWVySW1wbDo6YXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZEN1bGxlciYgcXVhZExpc3Qs
IGNvbnN0IENDU2hhcmVkUXUKICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdR
dWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCwgZGVidWdCb3JkZXJDb2xv
cigpLCBkZWJ1Z0JvcmRlcldpZHRoKCkpKTsKIH0KIAotdW5zaWduZWQgQ0NMYXllckltcGw6OmNv
bnRlbnRzVGV4dHVyZUlkKCkgY29uc3QKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBD
Q0xheWVySW1wbDo6Y29udGVudHNSZXNvdXJjZUlkKCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDJiOWE0
OWJkMzAzNmZkZmY0YjhjOTcxZDYyZjAzMTlkNTY3ODEzNTMuLmRlZDI4MDFkYWU1M2ZhODhiNWNm
ODE5YjY3Zjk0YzIwNGEwNTNjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2UuaCIK
KyNpbmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJl
ZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CkBAIC00NCw3ICs0NSw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBj
bGFzcyBDQ0xheWVyU29ydGVyOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIEND
UXVhZEN1bGxlcjsKQEAgLTg4LDEyICs4OCwxMiBAQCBwdWJsaWM6CiAgICAgLy8gZGlkRHJhdyBp
cyBndWFyYW50ZWVkIHRvIGJlIGNhbGxlZCBiZWZvcmUgYW5vdGhlciB3aWxsRHJhdyBvciBiZWZv
cmUKICAgICAvLyB0aGUgbGF5ZXIgaXMgZGVzdHJveWVkLiBUbyBlbmZvcmNlIHRoaXMsIGFueSBj
bGFzcyB0aGF0IG92ZXJyaWRlcwogICAgIC8vIHdpbGxEcmF3L2RpZERyYXcgbXVzdCBjYWxsIHRo
ZSBiYXNlIGNsYXNzIHZlcnNpb24uCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVuZGVy
ZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jl
c291cmNlUHJvdmlkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3Vs
bGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZERyYXco
Q0NSZXNvdXJjZVByb3ZpZGVyKik7CiAgICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NR
dWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKSBjb25zdDsKIAotICAgIHZpcnR1
YWwgdW5zaWduZWQgY29udGVudHNUZXh0dXJlSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBjb250ZW50c1Jlc291cmNlSWQoKSBjb25zdDsKIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxheWVyIGhhcyBjb250ZW50IHRvIGRyYXcuCiAg
ICAgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcAppbmRleCBkNjUzOTdlZWQxOTMzNThjYmRkNDNjYzE1MDUyY2FmZmQ3MjNiYTFkLi4wMDky
ZmE2M2Q2ZjZkZjUxOTg4M2VlZDkwNzkzNzY4ZWM1NDQ4MWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKQogICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2Vk
IG9uIHBhcnRpYWwgdXBkYXRlIGNhcGFiaWxpdHkuCiAgICAgbV9zZXR0aW5ncy5tYXhQYXJ0aWFs
VGV4dHVyZVVwZGF0ZXMgPSBtaW4obV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMs
IG1fcHJveHktPm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKTsKIAotICAgIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDAsIG1f
cHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAg
bV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpj
cmVhdGUoMCwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVT
aXplLCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAKICAgICBtX2xheWVyUmVuZGVyZXJJbml0
aWFsaXplZCA9IHRydWU7CiAKQEAgLTE5NywxMSArMTk3LDExIEBAIENDTGF5ZXJUcmVlSG9zdDo6
UmVjcmVhdGVSZXN1bHQgQ0NMYXllclRyZWVIb3N0OjpyZWNyZWF0ZUNvbnRleHQoKQogICAgIHJl
dHVybiBSZWNyZWF0ZUZhaWxlZEFuZEdhdmVVcDsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbklt
cGxUaHJlYWQoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewogICAgIEFT
U0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcklu
aXRpYWxpemVkKQotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVt
b3J5KGFsbG9jYXRvcik7CisgICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+Y2xlYXJB
bGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcik7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojph
Y3F1aXJlTGF5ZXJUZXh0dXJlcygpCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJ
bXBsKQogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgVFJBQ0VfRVZF
TlQwKCJjYyIsICJDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvIik7CiAKLSAgICBtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeShob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxs
b2NhdG9yKCkpOworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KGhv
c3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpOwogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNvbW1p
dHMgdGhlIENDTGF5ZXJUcmVlSG9zdCB0byBhbiBpbXBsIHRyZWUuIFdoZW4gbW9kaWZ5aW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDk3MDYwZjczN2E2OTViZGE5ODM2YmZlYmM0
N2U4YThlZTQ2MmM1MGIuLjBkYjAyMTBjYzZiMzcwOGQxOWJmMTkzOTAyNzcxYzMxZmVhYTc2MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC01Myw3ICs1Myw2IEBAIGNsYXNzIEND
TGF5ZXJUcmVlSG9zdEltcGxDbGllbnQ7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3Mg
TWFuYWdlZFRleHR1cmU7CiBjbGFzcyBSZWdpb247Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwog
Y2xhc3MgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOwogc3RydWN0IENDUmVuZGVyaW5nU3Rh
dHM7CiBzdHJ1Y3QgQ0NTY3JvbGxBbmRTY2FsZVNldDsKQEAgLTE4Myw3ICsxODIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3aWxsQ29tbWl0KCkgeyBtX2NsaWVudC0+d2lsbENvbW1pdCgpOyB9CiAg
ICAgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSB7IG1fY2xpZW50LT5kaWRDb21taXRBbmRE
cmF3RnJhbWUoKTsgfQogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgbV9jbGll
bnQtPmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQotICAgIHZvaWQgZGVsZXRlQ29udGVudHNU
ZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBkZWxldGVD
b250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKENDUmVzb3VyY2VQcm92aWRlciopOwogICAgIHZp
cnR1YWwgdm9pZCBhY3F1aXJlTGF5ZXJUZXh0dXJlcygpOwogICAgIC8vIFJldHVybnMgZmFsc2Ug
aWYgd2Ugc2hvdWxkIGFib3J0IHRoaXMgZnJhbWUgZHVlIHRvIGluaXRpYWxpemF0aW9uIGZhaWx1
cmUuCiAgICAgYm9vbCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcklmTmVlZGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDc4ZTcwOTE0ZGExMjhhN2Q4MjYw
ZTUwZDNlOWIzMGI1ODkyYzhmNDMuLjg1NTU3OGY4YTIwMTdmMzYwMDhhZTJlNTU2NWRiZGM3NmYx
MDllNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yOSw3
ICsyOSw2IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAi
VGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKLSNpbmNsdWRlICJUcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRp
b24uaCIKICNpbmNsdWRlICJjYy9DQ0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ0Rl
YnVnUmVjdEhpc3RvcnkuaCIKQEAgLTMzMCw3ICszMjksNyBAQCBib29sIENDTGF5ZXJUcmVlSG9z
dEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhGcmFtZURhdGEmIGZyYW1lKQogICAgICAgICAg
ICAgQ0NSZW5kZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzID0gc3VyZmFjZVBhc3NNYXAu
Z2V0KGl0LT5yZW5kZXJTdXJmYWNlKCkpOwogICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNG
b3JSZW5kZXJTdXJmYWNlTGF5ZXIoKml0LCBjb250cmlidXRpbmdSZW5kZXJQYXNzLCAmb2NjbHVz
aW9uVHJhY2tlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0c2VsZigpICYm
ICFvY2NsdXNpb25UcmFja2VyLm9jY2x1ZGVkKCppdCwgaXQtPnZpc2libGVDb250ZW50UmVjdCgp
KSAmJiAhaXQtPnZpc2libGVDb250ZW50UmVjdCgpLmlzRW1wdHkoKSAmJiAhaXQtPnNjaXNzb3JS
ZWN0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpdC0+d2lsbERyYXcobV9sYXllclJlbmRl
cmVyLmdldCgpLCBjb250ZXh0KCkpOworICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fcmVzb3Vy
Y2VQcm92aWRlci5nZXQoKSk7CiAgICAgICAgICAgICBmcmFtZS53aWxsRHJhd0xheWVycy5hcHBl
bmQoKml0KTsKIAogICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZv
Y2NsdXNpb25UcmFja2VyLCBoYWRNaXNzaW5nVGlsZXMpOwpAQCAtNTE2LDcgKzUxNSw3IEBAIGJv
b2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6cHJlcGFyZVRvRHJhdyhGcmFtZURhdGEmIGZyYW1lKQog
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnJlbGVhc2VDb250ZW50c1RleHR1cmVzKCkKIHsK
LSAgICBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKS0+ZGVsZXRlQWxsVGV4dHVyZXMoKTsKKyAg
ICBtX3Jlc291cmNlUHJvdmlkZXItPmRlbGV0ZU93bmVkUmVzb3VyY2VzKENDUmVuZGVyZXI6OkNv
bnRlbnRQb29sKTsKICAgICBtX2NvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29t
bWl0ID0gdHJ1ZTsKICAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsK
IH0KQEAgLTU3Myw3ICs1NzIsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXll
cnMoY29uc3QgRnJhbWVEYXRhJiBmcmFtZSkKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZGlk
RHJhd0FsbExheWVycyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZnJhbWUud2lsbERyYXdMYXllcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGZy
YW1lLndpbGxEcmF3TGF5ZXJzW2ldLT5kaWREcmF3KCk7CisgICAgICAgIGZyYW1lLndpbGxEcmF3
TGF5ZXJzW2ldLT5kaWREcmF3KG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CiB9CiAKIHZvaWQg
Q0NMYXllclRyZWVIb3N0SW1wbDo6ZmluaXNoQWxsUmVuZGVyaW5nKCkKQEAgLTU5MiwxMSArNTkx
LDYgQEAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgQ0NMYXllclRyZWVIb3N0SW1w
bDo6bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygKICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVy
LT5jYXBhYmlsaXRpZXMoKTsKIH0KIAotVGV4dHVyZUFsbG9jYXRvciogQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9s
YXllclJlbmRlcmVyID8gbV9sYXllclJlbmRlcmVyLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3Io
KSA6IDA7Ci19Ci0KIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3dhcEJ1ZmZlcnMoKQogewog
ICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIpOwpAQCAtNzAyLDggKzY5NiwxMSBAQCBib29sIEND
TGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NPd25QdHI8Q0NH
cmFwaGljc0NvbnRleHQ+CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBPd25Q
dHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHRSZWYoY29udGV4dCk7CisgICAgT3duUHRyPEND
UmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlciA9IENDUmVzb3VyY2VQcm92aWRlcjo6
Y3JlYXRlKGNvbnRleHRSZWYuZ2V0KCkpOwogICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21p
dW0+IGxheWVyUmVuZGVyZXI7Ci0gICAgbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Y3JlYXRlKHRoaXMsIGNvbnRleHQzZCwgdGV4dHVyZVVwbG9hZGVyKTsKKyAgICBpZiAo
cmVzb3VyY2VQcm92aWRlci5nZXQoKSkKKyAgICAgICAgbGF5ZXJSZW5kZXJlciA9IExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIHJlc291cmNlUHJvdmlkZXIuZ2V0KCksIHRleHR1
cmVVcGxvYWRlcik7CiAKICAgICAvLyBTaW5jZSB3ZSBub3cgaGF2ZSBhIG5ldyBjb250ZXh0L2xh
eWVyUmVuZGVyZXIsIHdlIGNhbm5vdCBjb250aW51ZSB0byB1c2UgdGhlIG9sZAogICAgIC8vIHJl
c291cmNlcyAoaS5lLiByZW5kZXJTdXJmYWNlcyBhbmQgdGV4dHVyZSBJRHMpLgpAQCAtNzEzLDgg
KzcxMCw5IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoUGFzc093blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4KICAgICB9CiAKICAgICBtX2xheWVyUmVu
ZGVyZXIgPSBsYXllclJlbmRlcmVyLnJlbGVhc2UoKTsKKyAgICBtX3Jlc291cmNlUHJvdmlkZXIg
PSByZXNvdXJjZVByb3ZpZGVyLnJlbGVhc2UoKTsKICAgICBpZiAobV9sYXllclJlbmRlcmVyKQot
ICAgICAgICBtX2NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBtX2NvbnRleHQgPSBjb250ZXh0
UmVmLnJlbGVhc2UoKTsKIAogICAgIGlmICghbV92aXNpYmxlICYmIG1fbGF5ZXJSZW5kZXJlcikK
ICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0VmlzaWJsZShtX3Zpc2libGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDQ5ZjJmYzYyYjk3MGQwNGNlYTQ4NmQz
MjYxOWZhN2Q2OGU5ZDg4OWQuLjcxMjcwYjZiNjViZDcxYTkwMTFiN2EwOTZkY2MzYTUzNmVkY2Zm
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTQ2LDggKzQ2LDgg
QEAgY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJj
ZUFkYXB0ZXI7CiBjbGFzcyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjsKIGNsYXNzIENDUmVuZGVyUGFz
c0RyYXdRdWFkOworY2xhc3MgQ0NSZXNvdXJjZVByb3ZpZGVyOwogY2xhc3MgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOwotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIHN0cnVjdCBMYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzOwogCiAvLyBDQ0xheWVyVHJlZUhvc3QtPkNDUHJveHkgY2FsbGJhY2sgaW50
ZXJmYWNlLgpAQCAtMTI3LDcgKzEyNyw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udGV4dExv
c3QoKTsKICAgICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyKCkgeyByZXR1cm4gbV9sYXllclJl
bmRlcmVyLmdldCgpOyB9CiAgICAgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpIGNvbnN0OwotICAgIFRleHR1cmVBbGxvY2F0b3IqIGNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0OwogCiAgICAgYm9vbCBzd2FwQnVmZmVycygp
OwogCkBAIC0xNzcsNiArMTc2LDcgQEAgcHVibGljOgogCiAgICAgQ0NGcmFtZVJhdGVDb3VudGVy
KiBmcHNDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9mcHNDb3VudGVyLmdldCgpOyB9CiAgICAg
Q0NEZWJ1Z1JlY3RIaXN0b3J5KiBkZWJ1Z1JlY3RIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9k
ZWJ1Z1JlY3RIaXN0b3J5LmdldCgpOyB9CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJj
ZVByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpOyB9CiAK
ICAgICBjbGFzcyBDdWxsUmVuZGVyUGFzc2VzV2l0aENhY2hlZFRleHR1cmVzIHsKICAgICBwdWJs
aWM6CkBAIC0yNTQsNiArMjU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGR1bXBSZW5kZXJTdXJm
YWNlcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCwgY29uc3QgQ0NMYXllckltcGwqKSBjb25zdDsK
IAogICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxD
Q1Jlc291cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKICAgICBPd25QdHI8Q0NSZW5k
ZXJlcj4gbV9sYXllclJlbmRlcmVyOwogICAgIE93blB0cjxDQ0xheWVySW1wbD4gbV9yb290TGF5
ZXJJbXBsOwogICAgIENDTGF5ZXJJbXBsKiBtX3Jvb3RTY3JvbGxMYXllckltcGw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAKaW5kZXggZDhjYzE3NDg1YTkwZjkyMDJk
MTdhNmYxODUyMjBhYTYyZTc2NzQzZi4uODE3MDg5NTMzNzQ5OTEzMmU3YWZlZmJkMzg2YWRiZGQ5
ZGY3NGE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcApAQCAt
ODgsNDggKzg4LDUwIEBAIGJvb2wgQ0NQcmlvcml0aXplZFRleHR1cmU6OnJlcXVlc3RMYXRlKCkK
ICAgICByZXR1cm4gbV9tYW5hZ2VyLT5yZXF1ZXN0TGF0ZSh0aGlzKTsKIH0KIAotdm9pZCBDQ1By
aW9yaXRpemVkVGV4dHVyZTo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlKFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OmFjcXVpcmVCYWNraW5nVGV4
dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgQVNTRVJU
KG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKICAgICBpZiAobV9pc0Fib3ZlUHJpb3JpdHlDdXRv
ZmYpCi0gICAgICAgIG1fbWFuYWdlci0+YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQodGhp
cywgYWxsb2NhdG9yKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5hY3F1aXJlQmFja2luZ1RleHR1cmVJ
Zk5lZWRlZCh0aGlzLCByZXNvdXJjZVByb3ZpZGVyKTsKIH0KIAotdW5zaWduZWQgQ0NQcmlvcml0
aXplZFRleHR1cmU6OnRleHR1cmVJZCgpCitDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQg
Q0NQcmlvcml0aXplZFRleHR1cmU6OnJlc291cmNlSWQoKSBjb25zdAogewogICAgIGlmIChtX2N1
cnJlbnRCYWNraW5nKQotICAgICAgICByZXR1cm4gbV9jdXJyZW50QmFja2luZy0+dGV4dHVyZUlk
KCk7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRCYWNraW5nLT5yZXNvdXJjZUlkKCk7CiAgICAg
cmV0dXJuIDA7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OmJpbmRUZXh0dXJlKEND
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2
b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjp1cGxvYWQoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNv
dXJjZVByb3ZpZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCiB7CiAgICAgQVNTRVJUKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKICAg
ICBpZiAobV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpCi0gICAgICAgIGFjcXVpcmVCYWNraW5nVGV4
dHVyZShhbGxvY2F0b3IpOworICAgICAgICBhY3F1aXJlQmFja2luZ1RleHR1cmUocmVzb3VyY2VQ
cm92aWRlcik7CiAgICAgQVNTRVJUKG1fY3VycmVudEJhY2tpbmcpOwotICAgIFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwotICAg
IGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRo
IGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
b250ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0
dXJlSWQoKSk7CisKKyAgICByZXNvdXJjZVByb3ZpZGVyLT51cGxvYWQocmVzb3VyY2VJZCgpLCBp
bWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgQ0NQcmlv
cml0aXplZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKENDR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit1bnNpZ25lZCBDQ1ByaW9yaXRp
emVkVGV4dHVyZTo6YmVnaW5SZW5kZXJUbyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIpCiB7CiAgICAgQVNTRVJUKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKICAgICBpZiAo
bV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpCi0gICAgICAgIGFjcXVpcmVCYWNraW5nVGV4dHVyZShh
bGxvY2F0b3IpOworICAgICAgICBhY3F1aXJlQmFja2luZ1RleHR1cmUocmVzb3VyY2VQcm92aWRl
cik7CiAgICAgQVNTRVJUKG1fY3VycmVudEJhY2tpbmcpOwotICAgIFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICgh
Y29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBz
b2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb250ZXh0
M2QtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgdGV4dHVyZUlkKCksIDApOworICAgIGlmICghbV9jdXJyZW50QmFja2luZykK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJlc291cmNlUHJvdmlkZXItPmJlZ2luUmVu
ZGVyVG8ocmVzb3VyY2VJZCgpKTsKIH0KIAordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6ZW5k
UmVuZGVyVG8oQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQoreworICAgIEFT
U0VSVChtX2N1cnJlbnRCYWNraW5nKTsKKyAgICByZXNvdXJjZVByb3ZpZGVyLT5lbmRSZW5kZXJU
byhyZXNvdXJjZUlkKCkpOworfQorCisKIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OnNldEN1
cnJlbnRCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nKQogewog
ICAgIGlmIChtX2N1cnJlbnRCYWNraW5nID09IGJhY2tpbmcpCkBAIC0xMzgsNCArMTQwLDMgQEAg
dm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0Q3VycmVudEJhY2tpbmcoQ0NQcmlvcml0aXpl
ZFRleHR1cmU6OkJhY2tpbmcqIGJhY2sKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaAppbmRleCA5ZWEyZmIxZTQxNTc5ZjY0
NTA0ZjZhM2M5YmIwZDdiZTBiMzJlMWYyLi5kODc3NjUxYzM0ODcwZTBlM2Y3MzRjOGVkYjdmYjg5
OGExNTc3MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKQEAgLTI1
LDE3ICsyNSwxNyBAQAogI2lmbmRlZiBDQ1ByaW9yaXRpemVkVGV4dHVyZV9oCiAjZGVmaW5lIEND
UHJpb3JpdGl6ZWRUZXh0dXJlX2gKIAotI2luY2x1ZGUgIkNDUHJpb3JpdHlDYWxjdWxhdG9yLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAj
aW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiY2MvQ0NQcmlvcml0eUNhbGN1bGF0b3IuaCIKKyNpbmNsdWRlICJjYy9DQ1Jlc291cmNlUHJv
dmlkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI7CiBjbGFzcyBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjsKLWNsYXNzIENDR3JhcGhp
Y3NDb250ZXh0OwogCiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ0NQcmlvcml0aXplZFRleHR1cmUpOwpAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBJZiBjYW5BcXVpcmVCYWNraW5nVGV4dHVyZSgpIGlzIHRydWUgYWNxdWly
ZUJhY2tpbmdUZXh0dXJlKCkgd2lsbCBhY3F1aXJlCiAgICAgLy8gYSBiYWNraW5nIHRleHR1cmUg
Zm9yIHVzZS4gQ2FsbCB0aGlzIHdoZW5ldmVyIHRoZSB0ZXh0dXJlIGlzIGFjdHVhbGx5IG5lZWRl
ZC4KLSAgICB2b2lkIGFjcXVpcmVCYWNraW5nVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKik7Cisg
ICAgdm9pZCBhY3F1aXJlQmFja2luZ1RleHR1cmUoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAKICAg
ICAvLyBGSVhNRTogUmVxdWVzdCBsYXRlIGlzIHJlYWxseSBhIGhhY2sgZm9yIHdoZW4gd2UgYXJl
IHRvdGFsbHkgb3V0IG9mIG1lbW9yeQogICAgIC8vICAgICAgICAoYWxsIHRleHR1cmVzIGFyZSB2
aXNpYmxlKSBidXQgd2UgY2FuIHN0aWxsIHNxdWVlemUgaW50byB0aGUgbGltaXQKQEAgLTg4LDkg
Kzg4LDExIEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFxdWlyZSB0
aGUgdGV4dHVyZSBpZiBwb3NzaWJsZS4gSWYgbmVpdGhlciBoYXZlQmFja2luZ1RleHR1cmUoKQog
ICAgIC8vIG5vciBjYW5BcXVpcmVCYWNraW5nVGV4dHVyZSgpIGlzIHRydWUsIGFuIElEIG9mIHpl
cm8gd2lsbCBiZSB1c2VkL3JldHVybmVkLgotICAgIHZvaWQgYmluZFRleHR1cmUoQ0NHcmFwaGlj
c0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKik7Ci0gICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1
cmUyRChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqKTsKLSAgICB1bnNpZ25l
ZCB0ZXh0dXJlSWQoKTsKKyAgICB2b2lkIHVwbG9hZChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25z
dCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdW5zaWduZWQgYmVn
aW5SZW5kZXJUbyhDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICB2b2lkIGVuZFJlbmRlclRvKEND
UmVzb3VyY2VQcm92aWRlciopOworCisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
IHJlc291cmNlSWQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOwpAQCAtMTAxLDE4ICsxMDMsMTggQEAgcHJpdmF0ZToKICAg
ICAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgICAgIEdD
M0RlbnVtIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAgICAgICAgIHNpemVf
dCBtZW1vcnlTaXplQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeVNpemVCeXRlczsgfQot
ICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsg
fQorICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VJZDsgfQogICAgICAgICBDQ1ByaW9yaXRpemVkVGV4dHVy
ZSogY3VycmVudFRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUZXh0dXJlOyB9CiAg
ICAgICAgIHZvaWQgc2V0Q3VycmVudFRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqIGN1cnJl
bnQpIHsgbV9jdXJyZW50VGV4dHVyZSA9IGN1cnJlbnQ7IH0KIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI7CiAKLSAgICAgICAg
QmFja2luZyhJbnRTaXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwgdW5zaWduZWQgdGV4dHVyZUlk
KQorICAgICAgICBCYWNraW5nKEludFNpemUgc2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBDQ1Jlc291
cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCkKICAgICAgICAgICAgIDogbV9zaXpl
KHNpemUpCiAgICAgICAgICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKICAgICAgICAgICAgICwgbV9t
ZW1vcnlTaXplQnl0ZXMoVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNpemUsIGZvcm1h
dCkpCi0gICAgICAgICAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKKyAgICAgICAgICAgICwg
bV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCiAgICAgICAgICAgICAsIG1fcHJpb3JpdHkoQ0NQcmlv
cml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCkpCiAgICAgICAgICAgICAsIG1fY3VycmVu
dFRleHR1cmUoMCkgeyB9CiAgICAgICAgIH5CYWNraW5nKCkgeyBBU1NFUlQoIW1fY3VycmVudFRl
eHR1cmUpOyB9CkBAIC0xMjAsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgSW50U2l6ZSBt
X3NpemU7CiAgICAgICAgIEdDM0RlbnVtIG1fZm9ybWF0OwogICAgICAgICBzaXplX3QgbV9tZW1v
cnlTaXplQnl0ZXM7Ci0gICAgICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgICAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlkOwogICAgICAgICBpbnQgbV9w
cmlvcml0eTsKICAgICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUqIG1fY3VycmVudFRleHR1cmU7
CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXIuY3BwCmluZGV4IDVhZjUzZGYwNGJkZWI2N2UyYTBlY2MxYTM0YTllYTZiY2U5OWYzMjUuLmMx
MTc4ZWMzZTZmNTgxNzk4NGJmZjlhNTUyNTY2ODAwMGM4MGM3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcApAQCAtMzYsMTEgKzM2LDEy
IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIoc2l6ZV90
IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIGludCkKK0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBp
bnQsIGludCBwb29sKQogICAgIDogbV9tYXhNZW1vcnlMaW1pdEJ5dGVzKG1heE1lbW9yeUxpbWl0
Qnl0ZXMpCiAgICAgLCBtX21lbW9yeVVzZUJ5dGVzKDApCiAgICAgLCBtX21lbW9yeUFib3ZlQ3V0
b2ZmQnl0ZXMoMCkKICAgICAsIG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMoMCkKKyAgICAsIG1fcG9v
bChwb29sKQogewogfQogCkBAIC00OSw3ICs1MCw3IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6fkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcigpCiAgICAgd2hpbGUgKG1fdGV4dHVy
ZXMuc2l6ZSgpID4gMCkKICAgICAgICAgdW5yZWdpc3RlclRleHR1cmUoKm1fdGV4dHVyZXMuYmVn
aW4oKSk7CiAKLSAgICAvLyBFYWNoIHJlbWFpbmluZyBiYWNraW5nIGlzIGEgbGVha2VkIG9wZW5n
bCB0ZXh0dXJlLiBXZSBkb24ndCBoYXZlIHRoZSBhbGxvY2F0b3IKKyAgICAvLyBFYWNoIHJlbWFp
bmluZyBiYWNraW5nIGlzIGEgbGVha2VkIG9wZW5nbCB0ZXh0dXJlLiBXZSBkb24ndCBoYXZlIHRo
ZSByZXNvdXJjZVByb3ZpZGVyCiAgICAgLy8gdG8gZGVsZXRlIHRoZSB0ZXh0dXJlcyBhdCB0aGlz
IHRpbWUgc28gY2xlYXJNZW1vcnkoKSBuZWVkcyB0byBiZSBjYWxsZWQgYmVmb3JlIHRoaXMuCiAg
ICAgd2hpbGUgKG1fYmFja2luZ3Muc2l6ZSgpID4gMCkKICAgICAgICAgZGVzdHJveUJhY2tpbmco
Km1fYmFja2luZ3MuYmVnaW4oKSwgMCk7CkBAIC0xNzAsNyArMTcxLDcgQEAgYm9vbCBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RMYXRlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0
ZXh0dXJlKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQoQ0NQcmlvcml0aXplZFRleHR1
cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9y
aXRpemVkVGV4dHVyZSogdGV4dHVyZSwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3Zp
ZGVyKQogewogICAgIEFTU0VSVCh0ZXh0dXJlLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSk7CiAg
ICAgaWYgKHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkgfHwgIXRleHR1cmUtPmlzQWJvdmVQcmlv
cml0eUN1dG9mZigpKQpAQCAtMTkxLDggKzE5Miw4IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4
CiAKICAgICAvLyBPdGhlcndpc2UgcmVkdWNlIG1lbW9yeSBhbmQganVzdCBhbGxvY2F0ZSBhIG5l
dyBiYWNraW5nIHRleHVyZXMuCiAgICAgaWYgKCFiYWNraW5nKSB7Ci0gICAgICAgIHJlZHVjZU1l
bW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+bWVtb3J5U2l6ZUJ5dGVzKCks
IGFsbG9jYXRvcik7Ci0gICAgICAgIGJhY2tpbmcgPSBjcmVhdGVCYWNraW5nKHRleHR1cmUtPnNp
emUoKSwgdGV4dHVyZS0+Zm9ybWF0KCksIGFsbG9jYXRvcik7CisgICAgICAgIHJlZHVjZU1lbW9y
eShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+bWVtb3J5U2l6ZUJ5dGVzKCksIHJl
c291cmNlUHJvdmlkZXIpOworICAgICAgICBiYWNraW5nID0gY3JlYXRlQmFja2luZyh0ZXh0dXJl
LT5zaXplKCksIHRleHR1cmUtPmZvcm1hdCgpLCByZXNvdXJjZVByb3ZpZGVyKTsKICAgICB9CiAK
ICAgICAvLyBNb3ZlIHRoZSB1c2VkIGJhY2tpbmcgdGV4dHVyZSB0byB0aGUgZW5kIG9mIHRoZSBl
dmljdGlvbiBsaXN0LgpAQCAtMjAzLDcgKzIwNCw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4
CiAgICAgbV9iYWNraW5ncy5hZGQoYmFja2luZyk7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoc2l6ZV90IGxpbWl0Qnl0ZXMsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1
Y2VNZW1vcnkoc2l6ZV90IGxpbWl0Qnl0ZXMsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlcikKIHsKICAgICBpZiAobWVtb3J5VXNlQnl0ZXMoKSA8PSBsaW1pdEJ5dGVzKQogICAg
ICAgICByZXR1cm47CkBAIC0yMTMsMTMgKzIxNCwxMyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdEJ5dGVzLCBUZXh0dXJlQWxsb2Nh
dAogICAgICAgICBCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsK
ICAgICAgICAgaWYgKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpICYmICgqaXQpLT5jdXJyZW50VGV4
dHVyZSgpLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBkZXN0cm95QmFja2luZygoKml0KSwgYWxsb2NhdG9yKTsKKyAgICAgICAgZGVzdHJveUJh
Y2tpbmcoKCppdCksIHJlc291cmNlUHJvdmlkZXIpOwogICAgIH0KIH0KIAotdm9pZCBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KEND
UmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKLSAgICByZWR1Y2VNZW1vcnko
bV9tZW1vcnlBdmFpbGFibGVCeXRlcywgYWxsb2NhdG9yKTsKKyAgICByZWR1Y2VNZW1vcnkobV9t
ZW1vcnlBdmFpbGFibGVCeXRlcywgcmVzb3VyY2VQcm92aWRlcik7CiAgICAgQVNTRVJUKG1lbW9y
eVVzZUJ5dGVzKCkgPD0gbWF4TWVtb3J5TGltaXRCeXRlcygpKTsKIAogICAgIC8vIFdlIGN1cnJl
bnRseSBjb2xsZWN0IGJhY2tpbmdzIGZyb20gZGVsZXRlZCB0ZXh0dXJlcyBmb3IgbGF0ZXIgcmVj
eWNsaW5nLgpAQCAtMjM2LDE3ICsyMzcsMTcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OnJlZHVjZU1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiAgICAgc2l6
ZV90IHRlblBlcmNlbnRPZk1lbW9yeSA9IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLyAxMDsKICAg
ICBpZiAod2FzdGVkTWVtb3J5IDw9IHRlblBlcmNlbnRPZk1lbW9yeSkKICAgICAgICAgcmV0dXJu
OwotICAgIHJlZHVjZU1lbW9yeShtZW1vcnlVc2VCeXRlcygpIC0gKHdhc3RlZE1lbW9yeSAtIHRl
blBlcmNlbnRPZk1lbW9yeSksIGFsbG9jYXRvcik7CisgICAgcmVkdWNlTWVtb3J5KG1lbW9yeVVz
ZUJ5dGVzKCkgLSAod2FzdGVkTWVtb3J5IC0gdGVuUGVyY2VudE9mTWVtb3J5KSwgcmVzb3VyY2VQ
cm92aWRlcik7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjbGVhckFs
bE1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6Y2xlYXJBbGxNZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJj
ZVByb3ZpZGVyKQogewogICAgIC8vIFVubGluayBhbmQgZGVzdHJveSBhbGwgYmFja2luZyB0ZXh0
dXJlcy4KICAgICB3aGlsZSAobV9iYWNraW5ncy5zaXplKCkgPiAwKSB7CiAgICAgICAgIEJhY2tp
bmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigpOwogICAgICAgICBpZiAoKCpp
dCktPmN1cnJlbnRUZXh0dXJlKCkpCiAgICAgICAgICAgICB1bmxpbmsoKCppdCktPmN1cnJlbnRU
ZXh0dXJlKCksICgqaXQpKTsKLSAgICAgICAgZGVzdHJveUJhY2tpbmcoKCppdCksIGFsbG9jYXRv
cik7CisgICAgICAgIGRlc3Ryb3lCYWNraW5nKCgqaXQpLCByZXNvdXJjZVByb3ZpZGVyKTsKICAg
ICB9CiB9CiAKQEAgLTI1NCw3ICsyNTUsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6YWxsQmFja2luZ1RleHR1cmVzV2VyZURlbGV0ZWQoKQogewogICAgIC8vIFNhbWUgYXMg
Y2xlYXJBbGxNZW1vcnksIGV4Y2VwdCBhbGwgb3VyIHRleHR1cmVzIHdlcmUgYWxyZWFkeQogICAg
IC8vIGRlbGV0ZWQgZXh0ZXJuYWxseSwgc28gd2UgZG9uJ3QgZGVsZXRlIHRoZW0uIFBhc3Npbmcg
bm8KLSAgICAvLyBhbGxvY2F0b3IgcmVzdWx0cyBpbiBsZWFraW5nIHRoZSAobm93IGludmFsaWQp
IHRleHR1cmUgaWRzLgorICAgIC8vIHJlc291cmNlUHJvdmlkZXIgcmVzdWx0cyBpbiBsZWFraW5n
IHRoZSAobm93IGludmFsaWQpIHRleHR1cmUgaWRzLgogICAgIGNsZWFyQWxsTWVtb3J5KDApOwog
fQogCkBAIC0zMTMsMjYgKzMxNCwyNiBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6cmV0dXJuQmFja2luZ1RleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleAogICAgIH0K
IH0KIAotQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlQmFja2luZyhJbnRTaXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQorQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcq
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlQmFja2luZyhJbnRTaXplIHNpemUs
IEdDM0RlbnVtIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQog
ewotICAgIEFTU0VSVChhbGxvY2F0b3IpOworICAgIEFTU0VSVChyZXNvdXJjZVByb3ZpZGVyKTsK
IAotICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IGFsbG9jYXRvci0+Y3JlYXRlVGV4dHVyZShzaXpl
LCBmb3JtYXQpOwotICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nID0g
bmV3IENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKHNpemUsIGZvcm1hdCwgdGV4dHVyZUlk
KTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCA9IHJlc291
cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlKG1fcG9vbCwgc2l6ZSwgZm9ybWF0LCBDQ1Jlc291
cmNlUHJvdmlkZXI6OkFueSk7CisgICAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJh
Y2tpbmcgPSBuZXcgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcoc2l6ZSwgZm9ybWF0LCBy
ZXNvdXJjZUlkKTsKICAgICBtX21lbW9yeVVzZUJ5dGVzICs9IGJhY2tpbmctPm1lbW9yeVNpemVC
eXRlcygpOwogICAgIC8vIFB1dCBiYWNraW5nIHRleHR1cmUgYXQgdGhlIGZyb250IGZvciBldmlj
dGlvbiwgc2luY2UgaXQgaXNuJ3QgaW4gdXNlIHlldC4KICAgICBtX2JhY2tpbmdzLmluc2VydEJl
Zm9yZShtX2JhY2tpbmdzLmJlZ2luKCksIGJhY2tpbmcpOwogICAgIHJldHVybiBiYWNraW5nOwog
fQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVzdHJveUJhY2tpbmcoQ0NQ
cmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvcikKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZXN0cm95QmFja2lu
ZyhDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZywgQ0NSZXNvdXJjZVByb3Zp
ZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewogICAgIEFTU0VSVChiYWNraW5nKTsKICAgICBBU1NF
UlQoIWJhY2tpbmctPmN1cnJlbnRUZXh0dXJlKCkgfHwgIWJhY2tpbmctPmN1cnJlbnRUZXh0dXJl
KCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKTsKICAgICBBU1NFUlQobV9iYWNraW5ncy5maW5k
KGJhY2tpbmcpICE9IG1fYmFja2luZ3MuZW5kKCkpOwogCi0gICAgaWYgKGFsbG9jYXRvcikKLSAg
ICAgICAgYWxsb2NhdG9yLT5kZWxldGVUZXh0dXJlKGJhY2tpbmctPnRleHR1cmVJZCgpLCBiYWNr
aW5nLT5zaXplKCksIGJhY2tpbmctPmZvcm1hdCgpKTsKKyAgICBpZiAocmVzb3VyY2VQcm92aWRl
cikKKyAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlUmVzb3VyY2UoYmFja2luZy0+cmVz
b3VyY2VJZCgpKTsKICAgICBpZiAoYmFja2luZy0+Y3VycmVudFRleHR1cmUoKSkKICAgICAgICAg
dW5saW5rKGJhY2tpbmctPmN1cnJlbnRUZXh0dXJlKCksIGJhY2tpbmcpOwogICAgIG1fbWVtb3J5
VXNlQnl0ZXMgLT0gYmFja2luZy0+bWVtb3J5U2l6ZUJ5dGVzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oCmluZGV4IDNjNzBiMmIyYTAyMzA5Y2Ex
NjRkNmRjYTkxY2Q5MGJjNDJhZmU2ZWQuLjhhZTZkZmVmYTc0OTBmODE2MDBmZDViZjZlOTkyNTA1
NzkyNDVlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlci5oCkBAIC00MCw5ICs0MCw5IEBAIGNsYXNzIENDUHJpb3JpdHlDYWxjdWxhdG9yOwogY2xh
c3MgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gY3JlYXRlKHNpemVfdCBtYXhNZW1v
cnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCisgICAgc3RhdGljIFBhc3NPd25QdHI8
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiBjcmVhdGUoc2l6ZV90IG1heE1lbW9yeUxpbWl0
Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSwgaW50IHBvb2wpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcihtYXhNZW1vcnlMaW1p
dEJ5dGVzLCBtYXhUZXh0dXJlU2l6ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcihtYXhNZW1vcnlMaW1pdEJ5dGVzLCBtYXhUZXh0dXJl
U2l6ZSwgcG9vbCkpOwogICAgIH0KICAgICBQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJl
PiBjcmVhdGVUZXh0dXJlKEludFNpemUgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQogICAgIHsKQEAg
LTY2LDExICs2NiwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIHJlcXVlc3RMYXRlKENDUHJpb3Jp
dGl6ZWRUZXh0dXJlKik7CiAKLSAgICB2b2lkIHJlZHVjZU1lbW9yeShUZXh0dXJlQWxsb2NhdG9y
Kik7Ci0gICAgdm9pZCBjbGVhckFsbE1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9p
ZCByZWR1Y2VNZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CisgICAgdm9pZCBjbGVhckFsbE1l
bW9yeShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKICAgICB2b2lkIGFsbEJhY2tpbmdUZXh0dXJlc1dl
cmVEZWxldGVkKCk7CiAKLSAgICB2b2lkIGFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKEND
UHJpb3JpdGl6ZWRUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgYWNxdWly
ZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQoQ0NQcmlvcml0aXplZFRleHR1cmUqLCBDQ1Jlc291cmNl
UHJvdmlkZXIqKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0
dXJlKik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSop
OwpAQCAtOTgsMjEgKzk4LDIyIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBDQ1ByaW9yaXR5
Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0xvd2VyKHByaW9yaXR5QSwgcHJpb3JpdHlCKTsKICAgICB9
CiAKLSAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0
Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUsIGludCBw
b29sKTsKIAotICAgIHZvaWQgcmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdCwgVGV4dHVyZUFsbG9j
YXRvciopOworICAgIHZvaWQgcmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdCwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKik7CiAKICAgICB2b2lkIGxpbmsoQ0NQcmlvcml0aXplZFRleHR1cmUqLCBDQ1ByaW9y
aXRpemVkVGV4dHVyZTo6QmFja2luZyopOwogICAgIHZvaWQgdW5saW5rKENDUHJpb3JpdGl6ZWRU
ZXh0dXJlKiwgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqKTsKIAotICAgIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBjcmVhdGVCYWNraW5nKEludFNpemUsIEdDM0RlbnVtIGZv
cm1hdCwgVGV4dHVyZUFsbG9jYXRvciopOwotICAgIHZvaWQgZGVzdHJveUJhY2tpbmcoQ0NQcmlv
cml0aXplZFRleHR1cmU6OkJhY2tpbmcqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgQ0NQcmlv
cml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGNyZWF0ZUJhY2tpbmcoSW50U2l6ZSwgR0MzRGVudW0g
Zm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICB2b2lkIGRlc3Ryb3lCYWNraW5nKEND
UHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiwgQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAKICAg
ICBzaXplX3QgbV9tYXhNZW1vcnlMaW1pdEJ5dGVzOwogICAgIHVuc2lnbmVkIG1fcHJpb3JpdHlD
dXRvZmY7CiAgICAgc2l6ZV90IG1fbWVtb3J5VXNlQnl0ZXM7CiAgICAgc2l6ZV90IG1fbWVtb3J5
QWJvdmVDdXRvZmZCeXRlczsKICAgICBzaXplX3QgbV9tZW1vcnlBdmFpbGFibGVCeXRlczsKKyAg
ICBpbnQgbV9wb29sOwogCiAgICAgdHlwZWRlZiBIYXNoU2V0PENDUHJpb3JpdGl6ZWRUZXh0dXJl
Kj4gVGV4dHVyZVNldDsKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PENDUHJpb3JpdGl6ZWRUZXh0
dXJlOjpCYWNraW5nKj4gQmFja2luZ1NldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0Ry
YXdRdWFkLmNwcAppbmRleCA2NjA4ODliYzQzZjE1ZDIwZDA1NmY4OTczMDE5ZTExM2MwM2NlOTQw
Li41MDgyYWNjOTJlYzk3NzUwYjY3ZTk3MDZmOWY1ZTNhYjYzZTM2ZWEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NE
cmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAgdXNpbmcg
V2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
T3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRl
KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQ
YXNzLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJz
LCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRT
aW5jZUxhc3RGcmFtZSkKK1Bhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IENDUmVuZGVy
UGFzc0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBD
Q1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6OldlYkZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9u
cyYgYmFja2dyb3VuZEZpbHRlcnMsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNr
UmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3NEcmF3UXVhZChzaGFyZWRR
dWFkU3RhdGUsIHF1YWRSZWN0LCByZW5kZXJQYXNzLCBpc1JlcGxpY2EsIGRyYXdUcmFuc2Zvcm0s
IGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrVGV4dHVyZUlkLCBjb250ZW50c0NoYW5n
ZWRTaW5jZUxhc3RGcmFtZSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJQYXNz
RHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFzcywgaXNSZXBsaWNh
LCBkcmF3VHJhbnNmb3JtLCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmlsdGVycywgbWFza1Jlc291cmNl
SWQsIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKSk7CiB9CiAKLUNDUmVuZGVyUGFzc0Ry
YXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3Qs
IGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IFdlYktp
dDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJP
cGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwgY29u
c3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpCitDQ1JlbmRlclBhc3NE
cmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0
LCBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVy
T3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3Vy
Y2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VM
YXN0RnJhbWUpCiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6
UmVuZGVyUGFzcywgcXVhZFJlY3QpCiAgICAgLCBtX3JlbmRlclBhc3MocmVuZGVyUGFzcykKICAg
ICAsIG1fcmVuZGVyUGFzc0lkKHJlbmRlclBhc3MtPmlkKCkpCkBAIC00Niw3ICs0Niw3IEBAIEND
UmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JTaGFyZWRRdWFkCiAgICAgLCBtX2RyYXdUcmFuc2Zvcm0oZHJhd1RyYW5zZm9y
bSkKICAgICAsIG1fZmlsdGVycyhmaWx0ZXJzKQogICAgICwgbV9iYWNrZ3JvdW5kRmlsdGVycyhi
YWNrZ3JvdW5kRmlsdGVycykKLSAgICAsIG1fbWFza1RleHR1cmVJZChtYXNrVGV4dHVyZUlkKQor
ICAgICwgbV9tYXNrUmVzb3VyY2VJZChtYXNrUmVzb3VyY2VJZCkKICAgICAsIG1fY29udGVudHND
aGFuZ2VkU2luY2VMYXN0RnJhbWUoY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpCiB7CiAg
ICAgQVNTRVJUKG1fcmVuZGVyUGFzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1
YWQuaAppbmRleCA0MTZiZDM0ZTMzOTMzZGQ2YjEyNTczNTAxZTcxODJiNTFkMDU3NDE5Li41ZjBm
ZmYwMDFlNjM0OWQyZmE0NjBjNWE2MGM0OTU2ODU1NDQ3NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzc0RyYXdRdWFkLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ0NSZW5kZXJQ
YXNzRHJhd1F1YWRfaAogI2RlZmluZSBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCiAKKyNpbmNsdWRl
ICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRv
clF1YWQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgpAQCAtMzgsMTIgKzM5LDEyIEBA
IGNsYXNzIENDUmVuZGVyUGFzczsKIGNsYXNzIENDUmVuZGVyUGFzc0RyYXdRdWFkIDogcHVibGlj
IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEND
UmVuZGVyUGFzc0RyYXdRdWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Jl
bmRlclBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBDQ1JlbmRlclBhc3MqLCBib29sIGlz
UmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdl
YktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0
ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwg
Y29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOworICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDUmVu
ZGVyUGFzcyosIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25z
dCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCBDQ1Jlc291
cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNv
bnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKIAogICAgIGNvbnN0IENDUmVuZGVyUGFzcyog
cmVuZGVyUGFzcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzczsgfQogICAgIGludCByZW5k
ZXJQYXNzSWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBhc3NJZDsgfQogICAgIGJvb2wgaXNS
ZXBsaWNhKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGxpY2E7IH0KLSAgICB1bnNpZ25lZCBtYXNr
VGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrVGV4dHVyZUlkOyB9CisgICAgQ0NSZXNv
dXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4g
bV9tYXNrUmVzb3VyY2VJZDsgfQogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNp
bmNlTGFzdEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0NoYW5nZWRTaW5jZUxhc3RG
cmFtZTsgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgYW5kIHdlIHNo
b3VsZCBkcmF3IHRoZSBSZW5kZXJQYXNzIHdpdGggdGhlIHF1YWRUcmFuc2Zvcm0uCkBAIC01NCw3
ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVh
ZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQqKTsKIHByaXZh
dGU6Ci0gICAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDUmVuZGVyUGFzcyosIGJv
b2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29u
c3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6Oldl
YkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVy
ZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSk7CisgICAg
Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVh
ZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDUmVuZGVyUGFzcyosIGJvb2wgaXNSZXBs
aWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNl
SWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFz
dEZyYW1lKTsKIAogICAgIGNvbnN0IENDUmVuZGVyUGFzcyogbV9yZW5kZXJQYXNzOwogICAgIGlu
dCBtX3JlbmRlclBhc3NJZDsKQEAgLTYyLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsKICAgICBXZWJLaXQ6Oldl
YkZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOwogICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOwotICAgIHVuc2lnbmVkIG1fbWFza1RleHR1cmVJZDsK
KyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9tYXNrUmVzb3VyY2VJZDsKICAg
ICBJbnRSZWN0IG1fY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWU7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCA3YmUzNjhjY2U4NWZkZTc1MDQ1MTViMGJjYjAz
OTRmODI5NzA4NjQxLi4yMzIwYWZmZWEzNDdmODdjYjVkYTllNTRlOTczMzE0YTQ1MzRlZTA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTIzMSwxMSArMjMxLDExIEBAIHZv
aWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhCiAgICAgICAgICAgICBtYXNrTGF5ZXIgPSAwOwogICAgIH0K
IAotICAgIGludCBtYXNrVGV4dHVyZUlkID0gbWFza0xheWVyID8gbWFza0xheWVyLT5jb250ZW50
c1RleHR1cmVJZCgpIDogMDsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFz
a1Jlc291cmNlSWQgPSBtYXNrTGF5ZXIgPyBtYXNrTGF5ZXItPmNvbnRlbnRzUmVzb3VyY2VJZCgp
IDogMDsKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtID0gZm9yUmVw
bGljYSA/IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gOiBtX2RyYXdUcmFuc2Zvcm07CiAgICAgSW50
UmVjdCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSA9IGNvbnRlbnRzQ2hhbmdlZCgpID8g
bV9jb250ZW50UmVjdCA6IEludFJlY3QoKTsKIAotICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZhY2Uo
Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0
KCksIHJlbmRlclBhc3MsIGZvclJlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZpbHRlcnMoKSwgYmFj
a2dyb3VuZEZpbHRlcnMoKSwgbWFza1RleHR1cmVJZCwgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0
RnJhbWUpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmRTdXJmYWNlKENDUmVuZGVyUGFzc0RyYXdRdWFk
OjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCByZW5kZXJQYXNzLCBmb3JS
ZXBsaWNhLCBkcmF3VHJhbnNmb3JtLCBmaWx0ZXJzKCksIGJhY2tncm91bmRGaWx0ZXJzKCksIG1h
c2tSZXNvdXJjZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlcmVyLmgKaW5kZXggZGVkMGVmZGMzOGVmOTMxYWZiMzAxN2UyNzAyZjVjN2YyZDEw
NGY5MC4uNjVlZjJmMTBiYjJmOWQ3MDJhNmVlNmQ4NTA0NmYyNGQzZmUyOTc0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyZXIuaApAQCAtMzYsOSArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDQ1Njb3BlZFRleHR1cmU7Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgVGV4dHVy
ZUNvcGllcjsKLWNsYXNzIFRleHR1cmVNYW5hZ2VyOwogY2xhc3MgVGV4dHVyZVVwbG9hZGVyOwog
CiBlbnVtIFRleHR1cmVVcGxvYWRlck9wdGlvbiB7IFRocm90dGxlZFVwbG9hZGVyLCBVbnRocm90
dGxlZFVwbG9hZGVyIH07CkBAIC01Nyw2ICs1NSwxMSBAQCBwdWJsaWM6CiBjbGFzcyBDQ1JlbmRl
cmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlcmVyKTsKIHB1YmxpYzoKKyAg
ICBlbnVtIFJlc291cmNlUG9vbCB7CisgICAgICBJbXBsUG9vbCA9IDEsCisgICAgICBDb250ZW50
UG9vbAorICAgIH07CisKICAgICB2aXJ0dWFsIH5DQ1JlbmRlcmVyKCkgeyB9CiAKICAgICB2aXJ0
dWFsIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0
ID0gMDsKQEAgLTkyLDggKzk1LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBUZXh0dXJlQ29w
aWVyKiB0ZXh0dXJlQ29waWVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVGV4dHVyZVVwbG9h
ZGVyKiB0ZXh0dXJlVXBsb2FkZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBUZXh0dXJlQWxs
b2NhdG9yKiBpbXBsVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFRl
eHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0ID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmKSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVzb3VyY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczMGVhNGM0
NzY5OGU0OWVhMDA0NTE4YTUxMmIwZWNkNTY0YzhkNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlk
ZXIuY3BwCkBAIC0wLDAgKzEsMjI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJF
eHRlbnNpb25zM0RDaHJvbWl1bS5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJM
YXllclJlbmRlcmVyQ2hyb21pdW0uaCIgLy8gRm9yIHRoZSBHTEMoKSBtYWNybworI2luY2x1ZGUg
IkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKwordXNpbmcgV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgR0MzRGVudW0gdGV4dHVyZVRvU3RvcmFnZUZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0
KQoreworICAgIEdDM0RlbnVtIHN0b3JhZ2VGb3JtYXQgPSBFeHRlbnNpb25zM0Q6OlJHQkE4X09F
UzsKKyAgICBzd2l0Y2ggKHRleHR1cmVGb3JtYXQpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6QkdSQV9F
WFQ6CisgICAgICAgIHN0b3JhZ2VGb3JtYXQgPSBFeHRlbnNpb25zM0RDaHJvbWl1bTo6QkdSQThf
RVhUOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHN0b3JhZ2VGb3Jt
YXQ7Cit9CisKK3N0YXRpYyBib29sIGlzVGV4dHVyZUZvcm1hdFN1cHBvcnRlZEZvclN0b3JhZ2Uo
R0MzRGVudW0gZm9ybWF0KQoreworICAgIHJldHVybiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBIHx8IGZvcm1hdCA9PSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUKTsKK30KKworUGFz
c093blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKEND
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQoreworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlk
ZXI+IHJlc291cmNlUHJvdmlkZXIoYWRvcHRQdHIobmV3IENDUmVzb3VyY2VQcm92aWRlcihjb250
ZXh0KSkpOworICAgIGlmICghcmVzb3VyY2VQcm92aWRlci0+aW5pdGlhbGl6ZSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVzb3VyY2VQcm92aWRlci5yZWxlYXNlKCk7
Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6fkNDUmVzb3VyY2VQcm92aWRlcigpCit7Cit9CisK
K1dlYkdyYXBoaWNzQ29udGV4dDNEKiBDQ1Jlc291cmNlUHJvdmlkZXI6OmdyYXBoaWNzQ29udGV4
dDNEKCkKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKK30KKworYm9vbCBD
Q1Jlc291cmNlUHJvdmlkZXI6OmluVXNlQnlDb25zdW1lcihSZXNvdXJjZUlkIGlkKQoreworICAg
IFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOworICAgIEFT
U0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSk7CisgICAgcmV0dXJuICEhaXQtPnNlY29uZC5y
ZW5kZXJGcm9tQ291bnQ7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jl
c291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiBz
aXplLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVVc2FnZUhpbnQgaGludCkKK3sKKyAgICB1bnNp
Z25lZCB0ZXh0dXJlSWQgPSAwOworICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2Qg
PSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlmICghY29udGV4dDNkKSB7CisgICAgICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4K
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIEdMQyhjb250ZXh0M2QsIHRleHR1cmVJZCA9
IGNvbnRleHQzZC0+Y3JlYXRlVGV4dHVyZSgpKTsKKyAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0
M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQp
KTsKKyAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICBHTEMoY29udGV4dDNkLCBjb250
ZXh0M2QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIpKTsKKyAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBf
UywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKKyAgICBHTEMoY29udGV4dDNk
LCBjb250ZXh0M2QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNM
QU1QX1RPX0VER0UpKTsKKworICAgIGlmIChtX3VzZVRleHR1cmVVc2FnZUhpbnQgJiYgaGludCA9
PSBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQpCisgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQz
ZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgRXh0ZW5zaW9u
czNEQ2hyb21pdW06OkdMX1RFWFRVUkVfVVNBR0VfQU5HTEUsIEV4dGVuc2lvbnMzRENocm9taXVt
OjpHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFKSk7CisgICAgaWYgKG1fdXNlVGV4dHVy
ZVN0b3JhZ2VFeHQgJiYgaXNUZXh0dXJlRm9ybWF0U3VwcG9ydGVkRm9yU3RvcmFnZShmb3JtYXQp
KSB7CisgICAgICAgIEdDM0RlbnVtIHN0b3JhZ2VGb3JtYXQgPSB0ZXh0dXJlVG9TdG9yYWdlRm9y
bWF0KGZvcm1hdCk7CisgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4U3RvcmFn
ZTJERVhUKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAxLCBzdG9yYWdlRm9ybWF0LCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgR0xDKGNv
bnRleHQzZCwgY29udGV4dDNkLT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwLCBmb3JtYXQsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgZm9ybWF0LCBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgMCkpOworICAgIFJlc291cmNlSWQgaWQg
PSBtX25leHRJZCsrOworICAgIFJlc291cmNlIHJlc291cmNlID0ge3RleHR1cmVJZCwgcG9vbCwg
MCwgZmFsc2UsIGZhbHNlLCBzaXplLCBmb3JtYXR9OworICAgIG1fcmVzb3VyY2VzLmFkZChpZCwg
cmVzb3VyY2UpOworICAgIHJldHVybiBpZDsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0
dXJlKHVuc2lnbmVkIHRleHR1cmVJZCkKK3sKKyAgICBSZXNvdXJjZUlkIGlkID0gbV9uZXh0SWQr
KzsKKyAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHt0ZXh0dXJlSWQsIDAsIDAsIGZhbHNlLCB0cnVl
LCBJbnRTaXplKCksIDB9OworICAgIG1fcmVzb3VyY2VzLmFkZChpZCwgcmVzb3VyY2UpOworICAg
IHJldHVybiBpZDsKK30KKwordm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmRlbGV0ZVJlc291cmNl
KFJlc291cmNlSWQgaWQpCit7CisgICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9
IG1fY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0M2QpIHsKKyAgICAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1f
cmVzb3VyY2VzLmZpbmQoaWQpOworICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAm
JiAhaXQtPnNlY29uZC5yZW5kZXJUbyAmJiAhaXQtPnNlY29uZC5yZW5kZXJGcm9tQ291bnQpOwor
ICAgIGlmICghaXQtPnNlY29uZC5leHRlcm5hbCkKKyAgICAgICAgR0xDKGNvbnRleHQzZCwgY29u
dGV4dDNkLT5kZWxldGVUZXh0dXJlKGl0LT5zZWNvbmQuZ2xJZCkpOworICAgIG1fcmVzb3VyY2Vz
LnJlbW92ZShpdCk7Cit9CisKK3ZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpkZWxldGVPd25lZFJl
c291cmNlcyhpbnQgcG9vbCkKK3sKKyAgICBWZWN0b3I8UmVzb3VyY2VJZD4gdG9EZWxldGU7Cisg
ICAgZm9yIChSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBp
dCAhPSBtX3Jlc291cmNlcy5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQtPnNlY29uZC5w
b29sID09IHBvb2wgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpCisgICAgICAgICAgICB0b0RlbGV0
ZS5hcHBlbmQoaXQtPmZpcnN0KTsKKyAgICB9CisgICAgZm9yIChWZWN0b3I8UmVzb3VyY2VJZD46
Oml0ZXJhdG9yIGl0ID0gdG9EZWxldGUuYmVnaW4oKTsgaXQgIT0gdG9EZWxldGUuZW5kKCk7ICsr
aXQpCisgICAgICAgIGRlbGV0ZVJlc291cmNlKCppdCk7Cit9CisKK3ZvaWQgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjp1cGxvYWQoUmVzb3VyY2VJZCBpZCwgY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0
IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCit7CisgICAgQVNTRVJUKG1fdGV4U3ViSW1hZ2UuZ2V0KCkpOworICAg
IFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgp
OworICAgIGlmICghY29udGV4dDNkKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKKyAg
ICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQucmVuZGVyVG8g
JiYgIWl0LT5zZWNvbmQucmVuZGVyRnJvbUNvdW50ICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKTsK
KworICAgIGNvbnRleHQzZC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIGl0LT5zZWNvbmQuZ2xJZCk7CisgICAgbV90ZXhTdWJJbWFnZS0+dXBsb2FkKGltYWdlLCBp
bWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBpdC0+c2Vjb25kLmZvcm1hdCwgY29udGV4
dDNkKTsKK30KKwordW5zaWduZWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpiZWdpblJlbmRlclRvKFJl
c291cmNlSWQgaWQpCit7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJj
ZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+
c2Vjb25kLnJlbmRlclRvICYmICFpdC0+c2Vjb25kLnJlbmRlckZyb21Db3VudCAmJiAhaXQtPnNl
Y29uZC5leHRlcm5hbCk7CisgICAgaXQtPnNlY29uZC5yZW5kZXJUbyA9IHRydWU7CisgICAgcmV0
dXJuIGl0LT5zZWNvbmQuZ2xJZDsKK30KKwordm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmVuZFJl
bmRlclRvKFJlc291cmNlSWQgaWQpCit7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgp
ICYmIGl0LT5zZWNvbmQucmVuZGVyVG8gJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOworICAgIGl0
LT5zZWNvbmQucmVuZGVyVG8gPSBmYWxzZTsKK30KKwordW5zaWduZWQgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpiZWdpblJlbmRlckZyb20oUmVzb3VyY2VJZCBpZCkKK3sKKyAgICBSZXNvdXJjZU1hcDo6
aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9y
ZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQucmVuZGVyVG8pOworICAgICsrKGl0LT5zZWNv
bmQucmVuZGVyRnJvbUNvdW50KTsKKyAgICByZXR1cm4gaXQtPnNlY29uZC5nbElkOworfQorCit2
b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6ZW5kUmVuZGVyRnJvbShSZXNvdXJjZUlkIGlkKQorewor
ICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOworICAg
IEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiBpdC0+c2Vjb25kLnJlbmRlckZyb21D
b3VudCA+IDApOworICAgIC0tKGl0LT5zZWNvbmQucmVuZGVyRnJvbUNvdW50KTsKK30KKworQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpDQ1Jlc291cmNlUHJvdmlkZXIoQ0NHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fbmV4dElkKDEpCisgICAg
LCBtX3VzZVRleHR1cmVTdG9yYWdlRXh0KGZhbHNlKQorICAgICwgbV91c2VUZXh0dXJlVXNhZ2VI
aW50KGZhbHNlKQorICAgICwgbV9tYXhUZXh0dXJlU2l6ZSgwKQoreworfQorCitib29sIENDUmVz
b3VyY2VQcm92aWRlcjo6aW5pdGlhbGl6ZSgpCit7CisgICAgV2ViR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0M2Qg
fHwgIWNvbnRleHQzZC0+bWFrZUNvbnRleHRDdXJyZW50KCkpIHsKKyAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5nID0gY29udGV4
dDNkLT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0M0Q6OkVYVEVOU0lPTlMpOworICAgIFZlY3Rv
cjxTdHJpbmc+IGV4dGVuc2lvbnM7CisgICAgZXh0ZW5zaW9uc1N0cmluZy5zcGxpdCgnICcsIGV4
dGVuc2lvbnMpOworICAgIGJvb2wgdXNlTWFwU3ViID0gZmFsc2U7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChleHRlbnNp
b25zW2ldID09ICJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIikKKyAgICAgICAgICAgIG1fdXNlVGV4
dHVyZVN0b3JhZ2VFeHQgPSB0cnVlOworICAgICAgICBlbHNlIGlmIChleHRlbnNpb25zW2ldID09
ICJHTF9BTkdMRV90ZXh0dXJlX3VzYWdlIikKKyAgICAgICAgICAgIG1fdXNlVGV4dHVyZVVzYWdl
SGludCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbnNbaV0gPT0gIkdMX0NIUk9N
SVVNX21hcF9zdWIiKQorICAgICAgICAgICAgdXNlTWFwU3ViID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICBtX3RleFN1YkltYWdlID0gYWRvcHRQdHIobmV3IExheWVyVGV4dHVyZVN1YkltYWdlKHVzZU1h
cFN1YikpOworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+Z2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUsICZtX21heFRleHR1cmVTaXplKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWYwODk2MDg5YWU0NzZkZjM4NDQ3ZmE3MjIxNTMyMDE3ZWQzODM1OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVzb3VyY2VQcm92aWRlci5oCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVm
IENDUmVzb3VyY2VQcm92aWRlcl9oCisjZGVmaW5lIENDUmVzb3VyY2VQcm92aWRlcl9oCisKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdyYXBoaWNzQ29u
dGV4dDNEOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDR3JhcGhpY3NDb250
ZXh0OworY2xhc3MgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U7CisKK2NsYXNzIENDUmVzb3VyY2VQcm92
aWRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NSZXNvdXJjZVByb3ZpZGVyKTsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFJlc291cmNlSWQ7CisgICAgZW51bSBUZXh0dXJl
VXNhZ2VIaW50IHsgQW55LCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgfTsKKworICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gY3JlYXRlKENDR3JhcGhpY3NDb250ZXh0Kik7
CisKKyAgICB2aXJ0dWFsIH5DQ1Jlc291cmNlUHJvdmlkZXIoKTsKKworICAgIFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgaW50IG1heFRleHR1
cmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZTsgfQorICAgIHVuc2lnbmVk
IG51bVJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VzLnNpemUoKTsgfQorCisg
ICAgLy8gQ2hlY2tzIHdoZXRoZXIgYSByZXNvdXJjZSBpcyBpbiB1c2UgYnkgYSBjb25zdW1lci4K
KyAgICBib29sIGluVXNlQnlDb25zdW1lcihSZXNvdXJjZUlkKTsKKworCisgICAgLy8gUHJvZHVj
ZXIgaW50ZXJmYWNlLgorCisgICAgLy8gQ3JlYXRlcyBhIHJlc291cmNlIG9mIHRoZSBnaXZlbiBz
aXplL2Zvcm1hdCwgaW50byB0aGUgZ2l2ZW4gcG9vbC4KKyAgICBSZXNvdXJjZUlkIGNyZWF0ZVJl
c291cmNlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJl
VXNhZ2VIaW50KTsKKworICAgIC8vIFdyYXBzIGFuIGV4dGVybmFsIHRleHR1cmUgaW50byBhIHJl
c291cmNlLgorICAgIFJlc291cmNlSWQgY3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJl
KHVuc2lnbmVkIHRleHR1cmVJZCk7CisgICAgdm9pZCBkZWxldGVSZXNvdXJjZShSZXNvdXJjZUlk
KTsKKworICAgIC8vIERlbGV0ZXMgYWxsIHJlc291cmNlcyBvd25lZCBieSBhIGdpdmVuIHBvb2wu
CisgICAgdm9pZCBkZWxldGVPd25lZFJlc291cmNlcyhpbnQgcG9vbCk7CisKKyAgICAvLyBVcGxv
YWQgZGF0YSBmcm9tIGltYWdlLCBjb3B5aW5nIHNvdXJjZVJlY3QgKGluIGltYWdlKSBpbnRvIGRl
c3RSZWN0IChpbiB0aGUgcmVzb3VyY2UpLgorICAgIHZvaWQgdXBsb2FkKFJlc291cmNlSWQsIGNv
bnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIC8vIEdldHMg
YSBHTCB0ZXh0dXJlIGlkIHJlcHJlc2VudGluZyB0aGUgcmVzb3VyY2UsIHRoYXQgY2FuIGJlIHJl
bmRlcmVkIGludG8uCisgICAgdW5zaWduZWQgYmVnaW5SZW5kZXJUbyhSZXNvdXJjZUlkKTsKKyAg
ICB2b2lkIGVuZFJlbmRlclRvKFJlc291cmNlSWQpOworCisKKyAgICAvLyBDb25zdW1lciBpbnRl
cmZhY2UuCisKKyAgICAvLyBHZXRzIGEgR0wgdGV4dHVyZSBpZCByZXByZXNlbnRpbmcgdGhlIHJl
c291cmNlLCB0aGF0IGNhbiBiZSByZW5kZXJlZCB3aXRoLgorICAgIHVuc2lnbmVkIGJlZ2luUmVu
ZGVyRnJvbShSZXNvdXJjZUlkKTsKKyAgICB2b2lkIGVuZFJlbmRlckZyb20oUmVzb3VyY2VJZCk7
CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFJlc291cmNlIHsKKyAgICAgICAgdW5zaWduZWQgZ2xJ
ZDsKKyAgICAgICAgaW50IHBvb2w7CisgICAgICAgIGludCByZW5kZXJGcm9tQ291bnQ7CisgICAg
ICAgIGJvb2wgcmVuZGVyVG87CisgICAgICAgIGJvb2wgZXh0ZXJuYWw7CisgICAgICAgIEludFNp
emUgc2l6ZTsKKyAgICAgICAgR0MzRGVudW0gZm9ybWF0OworICAgIH07CisgICAgdHlwZWRlZiBI
YXNoTWFwPFJlc291cmNlSWQsIFJlc291cmNlPiBSZXNvdXJjZU1hcDsKKworICAgIGV4cGxpY2l0
IENDUmVzb3VyY2VQcm92aWRlcihDQ0dyYXBoaWNzQ29udGV4dCopOworICAgIGJvb2wgaW5pdGlh
bGl6ZSgpOworCisgICAgQ0NHcmFwaGljc0NvbnRleHQqIG1fY29udGV4dDsKKyAgICBSZXNvdXJj
ZUlkIG1fbmV4dElkOworICAgIFJlc291cmNlTWFwIG1fcmVzb3VyY2VzOworCisgICAgYm9vbCBt
X3VzZVRleHR1cmVTdG9yYWdlRXh0OworICAgIGJvb2wgbV91c2VUZXh0dXJlVXNhZ2VIaW50Owor
ICAgIE93blB0cjxMYXllclRleHR1cmVTdWJJbWFnZT4gbV90ZXhTdWJJbWFnZTsKKyAgICBpbnQg
bV9tYXhUZXh0dXJlU2l6ZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRU
ZXh0dXJlLmNwcAppbmRleCA4MGY4MzE1NDExYmU1NTFlYTZkY2E0MDM2ZWNiOWJlYjdkNjU2N2Yw
Li4xMjgwNmE1ZTBhNDU2MTcyMjVhM2RjMWM2NWM0ODZhODNlMWRhMjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NvcGVkVGV4dHVyZS5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUNDU2NvcGVkVGV4dHVyZTo6Q0NTY29wZWRUZXh0dXJlKFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvcikKLSAgICA6IG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKK0NDU2NvcGVkVGV4
dHVyZTo6Q0NTY29wZWRUZXh0dXJlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRl
cikKKyAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQogewotICAgIEFT
U0VSVChtX2FsbG9jYXRvcik7CisgICAgQVNTRVJUKG1fcmVzb3VyY2VQcm92aWRlcik7CiB9CiAK
IENDU2NvcGVkVGV4dHVyZTo6fkNDU2NvcGVkVGV4dHVyZSgpCkBAIC00MiwxMyArNDIsMTMgQEAg
Q0NTY29wZWRUZXh0dXJlOjp+Q0NTY29wZWRUZXh0dXJlKCkKICAgICBmcmVlKCk7CiB9CiAKLWJv
b2wgQ0NTY29wZWRUZXh0dXJlOjphbGxvY2F0ZShjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51
bSBmb3JtYXQpCitib29sIENDU2NvcGVkVGV4dHVyZTo6YWxsb2NhdGUoaW50IHBvb2wsIGNvbnN0
IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0
dXJlVXNhZ2VIaW50IGhpbnQpCiB7CiAgICAgQVNTRVJUKCFpZCgpKTsKICAgICBBU1NFUlQoIXNp
emUuaXNFbXB0eSgpKTsKIAogICAgIHNldERpbWVuc2lvbnMoc2l6ZSwgZm9ybWF0KTsKLSAgICBz
ZXRJZChtX2FsbG9jYXRvci0+Y3JlYXRlVGV4dHVyZShzaXplLCBmb3JtYXQpKTsKKyAgICBzZXRJ
ZChtX3Jlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlKHBvb2wsIHNpemUsIGZvcm1hdCwg
aGludCkpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIG1fYWxsb2NhdGVUaHJlYWRJZGVu
dGlmaWVyID0gV1RGOjpjdXJyZW50VGhyZWFkKCk7CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgQ0NT
Y29wZWRUZXh0dXJlOjpmcmVlKCkKIHsKICAgICBpZiAoaWQoKSkgewogICAgICAgICBBU1NFUlQo
bV9hbGxvY2F0ZVRocmVhZElkZW50aWZpZXIgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpOwotICAg
ICAgICBtX2FsbG9jYXRvci0+ZGVsZXRlVGV4dHVyZShpZCgpLCBzaXplKCksIGZvcm1hdCgpKTsK
KyAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShpZCgpKTsKICAgICB9
CiAgICAgc2V0SWQoMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCmluZGV4IDVhM2M0
ZTk2NGRkMmM2Y2VlNWE3NDFkZjMxZjNjZmU2YmQxZTI0YzAuLjFkYTA2ZTUxMWVmZGFmNGMxMGU2
YjBkYjMzNmZjNDI4YjFlYzQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCkBAIC0z
NCwxMiArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0dXJlQWxs
b2NhdG9yOwotCiBjbGFzcyBDQ1Njb3BlZFRleHR1cmUgOiBwcm90ZWN0ZWQgQ0NUZXh0dXJlIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Njb3BlZFRleHR1cmUpOwogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gY3JlYXRlKFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IENDU2NvcGVkVGV4dHVyZShhbGxv
Y2F0b3IpKTsgfQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gY3JlYXRl
KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikgeyByZXR1cm4gYWRvcHRQdHIo
bmV3IENDU2NvcGVkVGV4dHVyZShyZXNvdXJjZVByb3ZpZGVyKSk7IH0KICAgICB2aXJ0dWFsIH5D
Q1Njb3BlZFRleHR1cmUoKTsKIAogICAgIHVzaW5nIENDVGV4dHVyZTo6aWQ7CkBAIC00NywxNSAr
NDUsMTkgQEAgcHVibGljOgogICAgIHVzaW5nIENDVGV4dHVyZTo6Zm9ybWF0OwogICAgIHVzaW5n
IENDVGV4dHVyZTo6Ynl0ZXM7CiAKLSAgICBib29sIGFsbG9jYXRlKGNvbnN0IEludFNpemUmLCBH
QzNEZW51bSBmb3JtYXQpOworICAgIGJvb2wgYWxsb2NhdGUoaW50IHBvb2wsIGNvbnN0IEludFNp
emUmLCBHQzNEZW51bSBmb3JtYXQsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlSGlu
dCk7CiAgICAgdm9pZCBmcmVlKCk7CiAgICAgdm9pZCBsZWFrKCk7CisgICAgdW5zaWduZWQgYmVn
aW5SZW5kZXJUbygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VQcm92aWRlci0+YmVnaW5SZW5k
ZXJUbyhpZCgpKTsgfQorICAgIHZvaWQgZW5kUmVuZGVyVG8oKSBjb25zdCB7IG1fcmVzb3VyY2VQ
cm92aWRlci0+ZW5kUmVuZGVyVG8oaWQoKSk7IH0KKyAgICB1bnNpZ25lZCBiZWdpblJlbmRlckZy
b20oKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUHJvdmlkZXItPmJlZ2luUmVuZGVyRnJvbShp
ZCgpKTsgfQorICAgIHZvaWQgZW5kUmVuZGVyRnJvbSgpIGNvbnN0IHsgbV9yZXNvdXJjZVByb3Zp
ZGVyLT5lbmRSZW5kZXJGcm9tKGlkKCkpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBD
Q1Njb3BlZFRleHR1cmUoVGV4dHVyZUFsbG9jYXRvciopOworICAgIGV4cGxpY2l0IENDU2NvcGVk
VGV4dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKIAogcHJpdmF0ZToKLSAgICBUZXh0dXJlQWxs
b2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQ
cm92aWRlcjsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBUaHJlYWRJZGVudGlmaWVyIG1f
YWxsb2NhdGVUaHJlYWRJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXll
ckltcGwuY3BwCmluZGV4IGYzOGZiZGEwMWY2NmUzODA2MWQxMDZmYmMwYmMxYzA0MzYyODAzMTku
LjY1MGU3NTFmOGM4OTRlZmY1NjFjNGVmN2NjMTdkYjAxY2U5NGNiZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5
ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTQ1LDkgKzQ1LDkgQEAgQ0NTY3JvbGxi
YXJMYXllckltcGw6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsKGludCBpZCkKICAgICA6IENDTGF5ZXJJ
bXBsKGlkKQogICAgICwgbV9zY3JvbGxMYXllcigwKQogICAgICwgbV9zY3JvbGxiYXIodGhpcykK
LSAgICAsIG1fYmFja1RyYWNrVGV4dHVyZUlkKDApCi0gICAgLCBtX2ZvcmVUcmFja1RleHR1cmVJ
ZCgwKQotICAgICwgbV90aHVtYlRleHR1cmVJZCgwKQorICAgICwgbV9iYWNrVHJhY2tSZXNvdXJj
ZUlkKDApCisgICAgLCBtX2ZvcmVUcmFja1Jlc291cmNlSWQoMCkKKyAgICAsIG1fdGh1bWJSZXNv
dXJjZUlkKDApCiB7CiB9CiAKQEAgLTc2LDIzICs3NiwyMyBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5
ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJl
ZFF1YQogICAgIEludFJlY3QgdGh1bWJSZWN0LCBiYWNrVHJhY2tSZWN0LCBmb3JlVHJhY2tSZWN0
OwogICAgIHRoZW1lLT5zcGxpdFRyYWNrKCZtX3Njcm9sbGJhciwgdGhlbWUtPnRyYWNrUmVjdCgm
bV9zY3JvbGxiYXIpLCBiYWNrVHJhY2tSZWN0LCB0aHVtYlJlY3QsIGZvcmVUcmFja1JlY3QpOwog
Ci0gICAgaWYgKG1fdGh1bWJUZXh0dXJlSWQgJiYgdGhlbWUtPmhhc1RodW1iKCZtX3Njcm9sbGJh
cikgJiYgIXRodW1iUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgT3duUHRyPENDVGV4dHVyZURy
YXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUs
IHRodW1iUmVjdCwgbV90aHVtYlRleHR1cmVJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwg
ZmxpcHBlZCk7CisgICAgaWYgKG1fdGh1bWJSZXNvdXJjZUlkICYmIHRoZW1lLT5oYXNUaHVtYigm
bV9zY3JvbGxiYXIpICYmICF0aHVtYlJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIE93blB0cjxD
Q1RleHR1cmVEcmF3UXVhZD4gcXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVk
UXVhZFN0YXRlLCB0aHVtYlJlY3QsIG1fdGh1bWJSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBo
YSwgdXZSZWN0LCBmbGlwcGVkKTsKICAgICAgICAgcXVhZC0+c2V0TmVlZHNCbGVuZGluZygpOwog
ICAgICAgICBxdWFkTGlzdC5hcHBlbmQocXVhZC5yZWxlYXNlKCkpOwogICAgIH0KIAotICAgIGlm
ICghbV9iYWNrVHJhY2tUZXh0dXJlSWQpCisgICAgaWYgKCFtX2JhY2tUcmFja1Jlc291cmNlSWQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIG9ubHkgcGFpbnQgdGhlIHRyYWNrIGluIHR3
byBwYXJ0cyBpZiB3ZSB3ZXJlIGdpdmVuIGEgdGV4dHVyZSBmb3IgdGhlIGZvcndhcmQgdHJhY2sg
cGFydC4KLSAgICBpZiAobV9mb3JlVHJhY2tUZXh0dXJlSWQgJiYgIWZvcmVUcmFja1JlY3QuaXNF
bXB0eSgpKQotICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0
ZShzaGFyZWRRdWFkU3RhdGUsIGZvcmVUcmFja1JlY3QsIG1fZm9yZVRyYWNrVGV4dHVyZUlkLCBw
cmVtdWx0aXBsZWRBbHBoYSwgdG9VVlJlY3QoZm9yZVRyYWNrUmVjdCwgYm91bmRzUmVjdCksIGZs
aXBwZWQpKTsKKyAgICBpZiAobV9mb3JlVHJhY2tSZXNvdXJjZUlkICYmICFmb3JlVHJhY2tSZWN0
LmlzRW1wdHkoKSkKKyAgICAgICAgcXVhZExpc3QuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpj
cmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBmb3JlVHJhY2tSZWN0LCBtX2ZvcmVUcmFja1Jlc291cmNl
SWQsIHByZW11bHRpcGxlZEFscGhhLCB0b1VWUmVjdChmb3JlVHJhY2tSZWN0LCBib3VuZHNSZWN0
KSwgZmxpcHBlZCkpOwogCiAgICAgLy8gT3JkZXIgbWF0dGVycyBoZXJlOiBzaW5jZSB0aGUgYmFj
ayB0cmFjayB0ZXh0dXJlIGlzIGJlaW5nIGRyYXduIHRvIHRoZSBlbnRpcmUgY29udGVudHMgcmVj
dCwgd2UgbXVzdCBhcHBlbmQgaXQgYWZ0ZXIgdGhlIHRodW1iIGFuZAogICAgIC8vIGZvcmUgdHJh
Y2sgcXVhZHMuIFRoZSBiYWNrIHRyYWNrIHRleHR1cmUgY29udGFpbnMgKGFuZCBkaXNwbGF5cykg
dGhlIGJ1dHRvbnMuCiAgICAgaWYgKCFib3VuZHNSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcXVh
ZExpc3QuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBi
b3VuZHNSZWN0LCBtX2JhY2tUcmFja1RleHR1cmVJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVj
dCwgZmxpcHBlZCkpOworICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGJvdW5kc1JlY3QsIG1fYmFja1RyYWNrUmVzb3VyY2VJ
ZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOwogfQogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xs
YmFyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCmluZGV4IGVjZTJiOTU3MTQxNGJmNDI1NmZkYjRl
ZTRmZDVlYTFjN2MwNDZmMzEuLjMyYTgzNWQ5MDJhYzVjMzgxY2MwMjNlNDJkZjI4MDdmZTg0MDcw
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaApAQCAtNTMsOSArNTMs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5h
YmxlZCA9IGVuYWJsZWQ7IH0KIAotICAgIHZvaWQgc2V0QmFja1RyYWNrVGV4dHVyZUlkKHVuc2ln
bmVkIGlkKSB7IG1fYmFja1RyYWNrVGV4dHVyZUlkID0gaWQ7IH0KLSAgICB2b2lkIHNldEZvcmVU
cmFja1RleHR1cmVJZCh1bnNpZ25lZCBpZCkgeyBtX2ZvcmVUcmFja1RleHR1cmVJZCA9IGlkOyB9
Ci0gICAgdm9pZCBzZXRUaHVtYlRleHR1cmVJZCh1bnNpZ25lZCBpZCkgeyBtX3RodW1iVGV4dHVy
ZUlkID0gaWQ7IH0KKyAgICB2b2lkIHNldEJhY2tUcmFja1Jlc291cmNlSWQoQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZUlkIGlkKSB7IG1fYmFja1RyYWNrUmVzb3VyY2VJZCA9IGlkOyB9Cisg
ICAgdm9pZCBzZXRGb3JlVHJhY2tSZXNvdXJjZUlkKENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3Vy
Y2VJZCBpZCkgeyBtX2ZvcmVUcmFja1Jlc291cmNlSWQgPSBpZDsgfQorICAgIHZvaWQgc2V0VGh1
bWJSZXNvdXJjZUlkKENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZCkgeyBtX3RodW1i
UmVzb3VyY2VJZCA9IGlkOyB9CiAKICAgICBDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIoKSBjb25z
dCB7IHJldHVybiBtX3Njcm9sbExheWVyOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllcihDQ0xh
eWVySW1wbCogc2Nyb2xsTGF5ZXIpIHsgbV9zY3JvbGxMYXllciA9IHNjcm9sbExheWVyOyB9CkBA
IC0xMjQsOSArMTI0LDkgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIENDU2Nyb2xsYmFyIG1fc2Ny
b2xsYmFyOwogCi0gICAgdW5zaWduZWQgbV9iYWNrVHJhY2tUZXh0dXJlSWQ7Ci0gICAgdW5zaWdu
ZWQgbV9mb3JlVHJhY2tUZXh0dXJlSWQ7Ci0gICAgdW5zaWduZWQgbV90aHVtYlRleHR1cmVJZDsK
KyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9iYWNrVHJhY2tSZXNvdXJjZUlk
OworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX2ZvcmVUcmFja1Jlc291cmNl
SWQ7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fdGh1bWJSZXNvdXJjZUlk
OwogCiAgICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwog
ICAgIFZlY3RvcjxJbnRSZWN0PiBtX3RpY2ttYXJrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKaW5kZXggNjc4ZWZkZmYwYTM1OGEyZDI5ZmIyYTg3YTc4MmQ1N2JmN2Uz
NjdjOC4uMDAyYzdhN2JmYWVhNTA1ZDRkNDRlNzVjNmUzN2FlZjcwMWQ2ZGM0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBib29s
IENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgYm9vbCBpbml0aWFs
aXplZDsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9s
YXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKICAgICAgICAgaW5pdGlhbGl6
ZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0
LnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgICAgIGlmIChpbml0aWFsaXpl
ZCkgewogICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVh
ZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKQEAg
LTIxMyw3ICsyMTMsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KENDVGV4
dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiAgICAgICAgIC8vIGhlcmUgYXMgdGhlIHRocm90dGxlZCB1
cGxvYWRlciBpc24ndCB1c2VkIGluIHNpbmdsZSB0aHJlYWQgbW9kZS4KICAgICAgICAgLy8gRm9y
IGNvcnJlY3RuZXNzLCBsb29wIHVudGlsIG5vIG1vcmUgdXBkYXRlcyBhcmUgcGVuZGluZy4KICAg
ICAgICAgd2hpbGUgKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSkKLSAgICAgICAgICAgIHVwZGF0
ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxh
eWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXll
clJlbmRlcmVyKCktPnRleHR1cmVVcGxvYWRlcigpLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMo
KSk7CisgICAgICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5yZXNv
dXJjZVByb3ZpZGVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4
dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1
cmVVcGxvYWRlcigpLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSk7CiAKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1w
bC5nZXQoKSk7CiAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6
OnN0b3AoKQogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKIAogICAgICAg
ICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2lu
Y2VMYXN0Q29tbWl0KCkpCi0gICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRl
bnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkpOworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250
ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJv
dmlkZXIoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsKICAgICB9CiAg
ICAgbV9sYXllclRyZWVIb3N0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKaW5kZXggYTI5NjEwNDY5M2Rk
NDUyZjJiOTg1NzgyMDQ1ZWYwY2E3NmMxMmU4Mi4uMzdlZmQ4NTJmOWNmZmY0ODFhZGIyYTU1Yjk1
NjAwNWM1Y2YwNTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1
ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiwxMSArMzcsMTEgQEAgY2xhc3MgQ0NUZXh0dXJl
IHsKIHB1YmxpYzoKICAgICBDQ1RleHR1cmUoKSA6IG1faWQoMCkgeyB9CiAKLSAgICB1bnNpZ25l
ZCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgSW50U2l6ZSYg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIEdDM0RlbnVtIGZvcm1hdCgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAKLSAgICB2b2lkIHNldElkKHVuc2lnbmVkIGlkKSB7
IG1faWQgPSBpZDsgfQorICAgIHZvaWQgc2V0SWQoQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJj
ZUlkIGlkKSB7IG1faWQgPSBpZDsgfQogICAgIHZvaWQgc2V0RGltZW5zaW9ucyhjb25zdCBJbnRT
aXplJiwgR0MzRGVudW0gZm9ybWF0KTsKIAogICAgIHNpemVfdCBieXRlcygpIGNvbnN0OwpAQCAt
NDgsNyArNDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBtZW1vcnlTaXplQnl0ZXMo
Y29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CiAKIHByaXZhdGU6Ci0gICAgdW5zaWdu
ZWQgbV9pZDsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9pZDsKICAgICBJ
bnRTaXplIG1fc2l6ZTsKICAgICBHQzNEZW51bSBtX2Zvcm1hdDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlTGF5ZXJJbXBsLmNwcAppbmRleCBjYWQzNzYwNzZlM2ZlNTk5MWU1ZTEwNjdmOTEw
NzdiZDFkZDQ2NDAzLi5lZTI3ZDg5OTFmNGE4MDdjM2JiODU4ZjBlNGJmZDRiZTc0MGJiNzE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
IAogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIK
KyNpbmNsdWRlICJjYy9DQ1JlbmRlcmVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJhd1F1
YWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBDQ1RleHR1cmVMYXllckltcGw6OkNDVGV4dHVyZUxheWVySW1wbChpbnQgaWQp
CiAgICAgOiBDQ0xheWVySW1wbChpZCkKICAgICAsIG1fdGV4dHVyZUlkKDApCisgICAgLCBtX2V4
dGVybmFsVGV4dHVyZVJlc291cmNlKDApCiAgICAgLCBtX3ByZW11bHRpcGxpZWRBbHBoYSh0cnVl
KQogICAgICwgbV9mbGlwcGVkKHRydWUpCiAgICAgLCBtX3V2UmVjdCgwLCAwLCAxLCAxKQpAQCAt
NDgsMTAgKzUwLDI4IEBAIENDVGV4dHVyZUxheWVySW1wbDo6fkNDVGV4dHVyZUxheWVySW1wbCgp
CiB7CiB9CiAKK3ZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJv
dmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCit7CisgICAgQVNTRVJUKCFtX2V4dGVybmFsVGV4dHVy
ZVJlc291cmNlKTsKKyAgICBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlID0gcmVzb3VyY2VQcm92
aWRlci0+Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlkKTsKK30K
Kwogdm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVh
ZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQog
eworICAgIEFTU0VSVChtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKTsKICAgICBJbnRSZWN0IHF1
YWRSZWN0KEludFBvaW50KCksIGJvdW5kcygpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUZXh0
dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX3RleHR1cmVJ
ZCwgbV9wcmVtdWx0aXBsaWVkQWxwaGEsIG1fdXZSZWN0LCBtX2ZsaXBwZWQpKTsKKyAgICBxdWFk
TGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1
YWRSZWN0LCBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlLCBtX3ByZW11bHRpcGxpZWRBbHBoYSwg
bV91dlJlY3QsIG1fZmxpcHBlZCkpOworfQorCit2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6ZGlk
RHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCit7CisgICAgQVNTRVJU
KG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UpOworICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5n
IGFzc2VydCB3aWxsIG5vdCBiZSB0cnVlIHdoZW4gc2VuZGluZyByZXNvdXJjZXMgdG8gYQorICAg
IC8vIHBhcmVudCBjb21wb3NpdG9yLiBBIHN5bmNocm9uaXphdGlvbiBzY2hlbWUgKGRvdWJsZS1i
dWZmZXJpbmcgb3IKKyAgICAvLyBwaXBlbGluaWcgb2YgdXBkYXRlcykgZm9yIHRoZSBjbGllbnQg
d2lsbCBuZWVkIHRvIGV4aXN0IHRvIHNvbHZlIHRoaXMuCisgICAgQVNTRVJUKCFyZXNvdXJjZVBy
b3ZpZGVyLT5pblVzZUJ5Q29uc3VtZXIobV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSkpOworICAg
IHJlc291cmNlUHJvdmlkZXItPmRlbGV0ZVJlc291cmNlKG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3Vy
Y2UpOworICAgIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UgPSAwOwogfQogCiB2b2lkIENDVGV4
dHVyZUxheWVySW1wbDo6ZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGlu
ZGVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKaW5kZXggNGFiZGI1
MWZmOTI5OTM5MzE4MDk5Y2ZkYzhhMGRkNTFmZmU2ZmNiYi4uZTc0OGIwMTMwOGE4ZWRiOTYyYTM4
Zjk1NGRhMGQxYmRmOTY3OTM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgK
QEAgLTM4LDcgKzM4LDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1RleHR1cmVM
YXllckltcGwoKTsKIAorICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlk
ZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVy
JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CiAKQEAg
LTU2LDYgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlw
ZUFzU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlRleHR1cmVMYXllciI7IH0KIAog
ICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3Vy
Y2VJZCBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlOwogICAgIGJvb2wgbV9wcmVtdWx0aXBsaWVk
QWxwaGE7CiAgICAgYm9vbCBtX2ZsaXBwZWQ7CiAgICAgRmxvYXRSZWN0IG1fdXZSZWN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCAzMTkwZDgyZmZjN2JhZTc5ZTU1ZWZm
YmM1MDJiODQ0OTA3NGI2NjI2Li5mZWE3ZmViYmQyZWRmMTJhMzI3NjQzYTEwZTY2MjMyYzk1YWYx
YzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtODMsNyArODMsNyBA
QCBib29sIENDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKICAgICByZXR1
cm4gbV9mdWxsRW50cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCkgfHwgbV9j
b3B5RW50cmllcy5zaXplKCk7CiB9CiAKLXZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEND
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRl
eHR1cmVDb3BpZXIqIGNvcGllciwgVGV4dHVyZVVwbG9hZGVyKiB1cGxvYWRlciwgc2l6ZV90IGNv
dW50KQordm9pZCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoQ0NSZXNvdXJjZVByb3ZpZGVyKiBy
ZXNvdXJjZVByb3ZpZGVyLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciog
dXBsb2FkZXIsIHNpemVfdCBjb3VudCkKIHsKICAgICBzaXplX3QgaW5kZXg7CiAKQEAgLTk2LDcg
Kzk2LDcgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoQ0NHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG8KICAgICAgICAgc2l6ZV90IG1heEluZGV4
ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2Z1bGxFbnRyaWVzLnNpemUoKSk7CiAgICAg
ICAgIGZvciAoaW5kZXggPSBtX2VudHJ5SW5kZXg7IGluZGV4IDwgbWF4SW5kZXg7ICsraW5kZXgp
IHsKICAgICAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZnVsbEVudHJpZXNbaW5kZXhd
OwotICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoY29udGV4dCwgZW50cnkudGV4
dHVyZSwgYWxsb2NhdG9yLCBlbnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CisgICAg
ICAgICAgICB1cGxvYWRlci0+dXBsb2FkVGV4dHVyZShlbnRyeS50ZXh0dXJlLCByZXNvdXJjZVBy
b3ZpZGVyLCBlbnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBib29sIG1vcmVVcGxvYWRzID0gbWF4SW5kZXggPCBtX2Z1bGxFbnRyaWVzLnNpemUo
KTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShDQ0dy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsbwogCiAgICAgICAg
IGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOyArK2luZGV4
KSB7CiAgICAgICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX3BhcnRpYWxFbnRyaWVzW2lu
ZGV4XTsKLSAgICAgICAgICAgIHVwbG9hZGVyLT51cGxvYWRUZXh0dXJlKGNvbnRleHQsIGVudHJ5
LnRleHR1cmUsIGFsbG9jYXRvciwgZW50cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJlY3QpOwor
ICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoZW50cnkudGV4dHVyZSwgcmVzb3Vy
Y2VQcm92aWRlciwgZW50cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJlY3QpOwogICAgICAgICB9
CiAKICAgICAgICAgdXBsb2FkZXItPmVuZFVwbG9hZHMoKTsKQEAgLTEyMywxOCArMTIzLDE0IEBA
IHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvCiAKICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBt
X2NvcHlFbnRyaWVzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBDb3B5RW50cnkmIGNvcHlF
bnRyeSA9IG1fY29weUVudHJpZXNbaW5kZXhdOwotICAgICAgICBjb3BpZXItPmNvcHlUZXh0dXJl
KGNvbnRleHQsIGNvcHlFbnRyeS5zb3VyY2VUZXh0dXJlLCBjb3B5RW50cnkuZGVzdFRleHR1cmUs
IGNvcHlFbnRyeS5zaXplKTsKKyAgICAgICAgY29waWVyLT5jb3B5VGV4dHVyZShjb3B5RW50cnku
c291cmNlVGV4dHVyZSwgY29weUVudHJ5LmRlc3RUZXh0dXJlLCBjb3B5RW50cnkuc2l6ZSk7CiAg
ICAgfQogCiAgICAgLy8gSWYgd2UndmUgcGVyZm9ybWVkIGFueSB0ZXh0dXJlIGNvcGllcywgd2Ug
bmVlZCB0byBpbnNlcnQgYSBmbHVzaCBoZXJlIGludG8gdGhlIGNvbXBvc2l0b3IgY29udGV4dAog
ICAgIC8vIGJlZm9yZSBsZXR0aW5nIHRoZSBtYWluIHRocmVhZCBwcm9jZWVkIGFzIGl0IG1heSBt
YWtlIGRyYXcgY2FsbHMgdG8gdGhlIHNvdXJjZSB0ZXh0dXJlIG9mIG9uZSBvZgogICAgIC8vIG91
ciBjb3B5IG9wZXJhdGlvbnMuCi0gICAgaWYgKG1fY29weUVudHJpZXMuc2l6ZSgpKSB7Ci0gICAg
ICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNv
bnRleHQzRCgpOwotICAgICAgICBpZiAoY29udGV4dDNkKQotICAgICAgICAgICAgY29udGV4dDNk
LT5mbHVzaCgpOwotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29m
dHdhcmUgY29tcG9zaXRpbmcuCi0gICAgfQorICAgIGlmIChtX2NvcHlFbnRyaWVzLnNpemUoKSkK
KyAgICAgICAgY29waWVyLT5mbHVzaCgpOwogCiAgICAgLy8gSWYgbm8gZW50cmllcyBsZWZ0IHRv
IHByb2Nlc3MsIGF1dG8tY2xlYXIuCiAgICAgY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuaAppbmRleCA4YTQzNzk0MmI0YjA0MjJlMDUwOWMxNDg2NTFkYjMwYjFiYWM5MWFlLi45
NzJhMWMwZWM3ZTQ4MTIxMzgxZDRlNGZlNmM5OTA3MGE5NGI4MjU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKK2NsYXNzIENDUmVzb3VyY2VQcm92aWRlcjsKIGNs
YXNzIFRleHR1cmVDb3BpZXI7CiBjbGFzcyBUZXh0dXJlVXBsb2FkZXI7CiAKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTW9yZVVwZGF0ZXMoKSBjb25zdDsKIAogICAgIC8v
IFVwZGF0ZSBzb21lIHRleHR1cmVzLgotICAgIHZvaWQgdXBkYXRlKENDR3JhcGhpY3NDb250ZXh0
KiwgVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVDb3BpZXIqLCBUZXh0dXJlVXBsb2FkZXIqLCBz
aXplX3QgY291bnQpOworICAgIHZvaWQgdXBkYXRlKENDUmVzb3VyY2VQcm92aWRlciosIFRleHR1
cmVDb3BpZXIqLCBUZXh0dXJlVXBsb2FkZXIqLCBzaXplX3QgY291bnQpOwogCiAgICAgdm9pZCBj
bGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDk5NzNhOTc0YjE1Njdi
YjY2ODMxMjYwMzZlY2Q0MDQzMWYwMTFmY2MuLjQ0NTA3YzZmM2M2N2Y3NGRkMWM0OGY0ODkxNGVm
YjdmMDA5ZWI4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC02MDAsNyArNjAw
LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzKCkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxl
ZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiKTsKICAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1w
bC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCksIHRleHR1cmVVcGRhdGVzUGVyRnJh
bWUpOworICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9s
YXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpLCBtX2xheWVyVHJlZUhvc3RJbXBs
LT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+
bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIoKSwgdGV4dHVyZVVwZGF0ZXNQZXJGcmFt
ZSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKQEAg
LTg0OSw3ICs4NDksNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRP
bkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpbwogICAgIFRSQUNFX0VWRU5U
MCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZCIp
OwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdCgpKQotICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXll
clRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKICAgICBtX2lucHV0SGFuZGxlck9u
SW1wbFRocmVhZC5jbGVhcigpOwogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsKICAg
ICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC5jbGVhcigpOwpAQCAtODg0LDcgKzg4NCw3IEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkKENDQ29tcGxldGlv
bkV2ZW50KiBjb21wbGV0aW9uLCBDCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVh
ZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQiKTsKICAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09u
SW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3Io
KSk7CisgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhy
ZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7CiAgICAgKnJlY3Jl
YXRlU3VjY2VlZGVkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoYWRvcHRQdHIoY29udGV4dFB0ciksIHRleHR1cmVVcGxvYWRlcik7CiAgICAgaWYgKCpyZWNy
ZWF0ZVN1Y2NlZWRlZCkgewogICAgICAgICAqY2FwYWJpbGl0aWVzID0gbV9sYXllclRyZWVIb3N0
SW1wbC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5
ZXJJbXBsLmNwcAppbmRleCBjYzc5MGU1NTM5YWQ4MzYzMGJkYjRkZTExNTMwYWEzN2M1Mjc3MWYz
Li4zMjhjOTc2ZmNlY2UxYTk3MWM5OWIzZTRlZGY0ZWVhN2UyYzEwMWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtNjEsMTMgKzYxLDEzIEBAIGNsYXNzIERyYXdhYmxl
VGlsZSA6IHB1YmxpYyBDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8RHJhd2FibGVUaWxlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihu
ZXcgRHJhd2FibGVUaWxlKCkpOyB9CiAKLSAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9Ci0gICAgdm9pZCBzZXRUZXh0dXJlSWQoUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7IH0KKyAg
ICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VJZDsgfQorICAgIHZvaWQgc2V0UmVzb3VyY2VJZChDQ1Jlc291cmNlUHJv
dmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCkgeyBtX3Jlc291cmNlSWQgPSByZXNvdXJjZUlk
OyB9CiAKIHByaXZhdGU6Ci0gICAgRHJhd2FibGVUaWxlKCkgOiBtX3RleHR1cmVJZCgwKSB7IH0K
KyAgICBEcmF3YWJsZVRpbGUoKSA6IG1fcmVzb3VyY2VJZCgwKSB7IH0KIAotICAgIFBsYXRmb3Jt
M0RPYmplY3QgbV90ZXh0dXJlSWQ7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
IG1fcmVzb3VyY2VJZDsKIH07CiAKIENDVGlsZWRMYXllckltcGw6OkNDVGlsZWRMYXllckltcGwo
aW50IGlkKQpAQCAtODEsNyArODEsNyBAQCBDQ1RpbGVkTGF5ZXJJbXBsOjp+Q0NUaWxlZExheWVy
SW1wbCgpCiB7CiB9CiAKLXVuc2lnbmVkIENDVGlsZWRMYXllckltcGw6OmNvbnRlbnRzVGV4dHVy
ZUlkKCkgY29uc3QKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1RpbGVkTGF5ZXJJ
bXBsOjpjb250ZW50c1Jlc291cmNlSWQoKSBjb25zdAogewogICAgIC8vIFRoaXMgZnVuY3Rpb24g
aXMgb25seSB2YWxpZCBmb3Igc2luZ2xlIHRleHR1cmUgbGF5ZXJzLCBlLmcuIG1hc2tzLgogICAg
IEFTU0VSVChtX3RpbGVyKTsKQEAgLTg5LDEwICs4OSwxMCBAQCB1bnNpZ25lZCBDQ1RpbGVkTGF5
ZXJJbXBsOjpjb250ZW50c1RleHR1cmVJZCgpIGNvbnN0CiAgICAgQVNTRVJUKG1fdGlsZXItPm51
bVRpbGVzWSgpID09IDEpOwogCiAgICAgRHJhd2FibGVUaWxlKiB0aWxlID0gdGlsZUF0KDAsIDAp
OwotICAgIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkID0gdGlsZSA/IHRpbGUtPnRleHR1cmVJ
ZCgpIDogMDsKLSAgICBBU1NFUlQodGV4dHVyZUlkKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6
OlJlc291cmNlSWQgcmVzb3VyY2VJZCA9IHRpbGUgPyB0aWxlLT5yZXNvdXJjZUlkKCkgOiAwOwor
ICAgIEFTU0VSVChyZXNvdXJjZUlkKTsKIAotICAgIHJldHVybiB0ZXh0dXJlSWQ7CisgICAgcmV0
dXJuIHJlc291cmNlSWQ7CiB9CiAKIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHVtcExheWVyUHJv
cGVydGllcyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKQEAgLTEwOSw3ICsxMDks
NyBAQCBib29sIENDVGlsZWRMYXllckltcGw6Omhhc1RpbGVBdChpbnQgaSwgaW50IGopIGNvbnN0
CiAKIGJvb2wgQ0NUaWxlZExheWVySW1wbDo6aGFzVGV4dHVyZUlkRm9yVGlsZUF0KGludCBpLCBp
bnQgaikgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzVGlsZUF0KGksIGopICYmIHRpbGVBdChpLCBq
KS0+dGV4dHVyZUlkKCk7CisgICAgcmV0dXJuIGhhc1RpbGVBdChpLCBqKSAmJiB0aWxlQXQoaSwg
aiktPnJlc291cmNlSWQoKTsKIH0KIAogRHJhd2FibGVUaWxlKiBDQ1RpbGVkTGF5ZXJJbXBsOjp0
aWxlQXQoaW50IGksIGludCBqKSBjb25zdApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgQ0NUaWxl
ZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhCiAgICAgICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXIt
PnRpbGVCb3VuZHMoaSwgaik7CiAgICAgICAgICAgICAgICAgU2tDb2xvciBib3JkZXJDb2xvcjsK
IAotICAgICAgICAgICAgICAgIGlmIChtX3NraXBzRHJhdyB8fCAhdGlsZSB8fCAhdGlsZS0+dGV4
dHVyZUlkKCkpCisgICAgICAgICAgICAgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICF0aWxlIHx8ICF0
aWxlLT5yZXNvdXJjZUlkKCkpCiAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yID0gU2tD
b2xvclNldEFSR0IoZGVidWdUaWxlQm9yZGVyQWxwaGEsIGRlYnVnVGlsZUJvcmRlck1pc3NpbmdU
aWxlQ29sb3JSZWQsIGRlYnVnVGlsZUJvcmRlck1pc3NpbmdUaWxlQ29sb3JHcmVlbiwgZGVidWdU
aWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvckJsdWUpOwogICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3IgPSBTa0NvbG9yU2V0QVJHQihkZWJ1Z1RpbGVC
b3JkZXJBbHBoYSwgZGVidWdUaWxlQm9yZGVyQ29sb3JSZWQsIGRlYnVnVGlsZUJvcmRlckNvbG9y
R3JlZW4sIGRlYnVnVGlsZUJvcmRlckNvbG9yQmx1ZSk7CkBAIC0xODAsNyArMTgwLDcgQEAgdm9p
ZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGEKICAgICAgICAgICAgIGlmICh0aWxlUmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmICghdGlsZSB8fCAh
dGlsZS0+dGV4dHVyZUlkKCkpIHsKKyAgICAgICAgICAgIGlmICghdGlsZSB8fCAhdGlsZS0+cmVz
b3VyY2VJZCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGRyYXdDaGVja2VyYm9hcmRGb3JNaXNz
aW5nVGlsZXMoKSkKICAgICAgICAgICAgICAgICAgICAgaGFkTWlzc2luZ1RpbGVzIHw9IHF1YWRM
aXN0LmFwcGVuZChDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCB0aWxlUmVjdCkpOwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTIwNyw3ICsyMDcsNyBAQCB2
b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3Qs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YQogICAgICAgICAgICAgYm9vbCBib3R0b21FZGdlQUEgPSBq
ID09IG1fdGlsZXItPm51bVRpbGVzWSgpIC0gMSAmJiB1c2VBQTsKIAogICAgICAgICAgICAgY29u
c3QgR0MzRGludCB0ZXh0dXJlRmlsdGVyID0gbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBH
cmFwaGljc0NvbnRleHQzRDo6TElORUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0g
ICAgICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRR
dWFkU3RhdGUsIHRpbGVSZWN0LCB0aWxlT3BhcXVlUmVjdCwgdGlsZS0+dGV4dHVyZUlkKCksIHRl
eHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBjb250ZW50c1N3aXp6bGVk
KCksIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwor
ICAgICAgICAgICAgcXVhZExpc3QuYXBwZW5kKENDVGlsZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVk
UXVhZFN0YXRlLCB0aWxlUmVjdCwgdGlsZU9wYXF1ZVJlY3QsIHRpbGUtPnJlc291cmNlSWQoKSwg
dGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIGNvbnRlbnRzU3dpenps
ZWQoKSwgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7
CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yMjEsMTIgKzIyMSwxMiBAQCB2b2lkIENDVGlsZWRM
YXllckltcGw6OnNldFRpbGluZ0RhdGEoY29uc3QgQ0NMYXllclRpbGluZ0RhdGEmIHRpbGVyKQog
ICAgICptX3RpbGVyID0gdGlsZXI7CiB9CiAKLXZvaWQgQ0NUaWxlZExheWVySW1wbDo6cHVzaFRp
bGVQcm9wZXJ0aWVzKGludCBpLCBpbnQgaiwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0KQordm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpwdXNoVGlsZVByb3BlcnRp
ZXMoaW50IGksIGludCBqLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJ
ZCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKIHsKICAgICBEcmF3YWJsZVRpbGUqIHRpbGUg
PSB0aWxlQXQoaSwgaik7CiAgICAgaWYgKCF0aWxlKQogICAgICAgICB0aWxlID0gY3JlYXRlVGls
ZShpLCBqKTsKLSAgICB0aWxlLT5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKKyAgICB0aWxlLT5z
ZXRSZXNvdXJjZUlkKHJlc291cmNlSWQpOwogICAgIHRpbGUtPnNldE9wYXF1ZVJlY3Qob3BhcXVl
UmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAppbmRleCA0YzgyY2RjOGNh
ZjdlNzFiOTY5NzE2YzRhZjVlMTk2YzI3OTEwNDg1Li5kOWEwMzc5NDhmYjNkNTY2MzdhODlmMTQ4
NmYwYTQxN2E1M2I5ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCkBAIC00NCwx
MyArNDQsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVh
ZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVz
KSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgY29udGVudHNUZXh0dXJlSWQoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJ
ZCBjb250ZW50c1Jlc291cmNlSWQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdCBPVkVS
UklERTsKIAogICAgIHZvaWQgc2V0U2tpcHNEcmF3KGJvb2wgc2tpcHNEcmF3KSB7IG1fc2tpcHNE
cmF3ID0gc2tpcHNEcmF3OyB9CiAgICAgdm9pZCBzZXRUaWxpbmdEYXRhKGNvbnN0IENDTGF5ZXJU
aWxpbmdEYXRhJiB0aWxlcik7Ci0gICAgdm9pZCBwdXNoVGlsZVByb3BlcnRpZXMoaW50LCBpbnQs
IHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCk7CisgICAgdm9p
ZCBwdXNoVGlsZVByb3BlcnRpZXMoaW50LCBpbnQsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3Vy
Y2VJZCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCk7CiAKICAgICB2b2lkIHNldENvbnRlbnRz
U3dpenpsZWQoYm9vbCBjb250ZW50c1N3aXp6bGVkKSB7IG1fY29udGVudHNTd2l6emxlZCA9IGNv
bnRlbnRzU3dpenpsZWQ7IH0KICAgICBib29sIGNvbnRlbnRzU3dpenpsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRzU3dpenpsZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5j
cHAKaW5kZXggM2UxZjU4MTM1M2YwMmNhYjNhMTU2MDQzZTAyOWYxOGYzZGU0MDJlNi4uZjAyMjBl
NDU3NjIxMWRhMTE4ODY0YTFkMDRhNzk1YWI0MWMwN2FhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRl
b0xheWVySW1wbC5jcHAKQEAgLTMxLDE1ICszMSwxMiBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9u
czNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBGb3IgR0xDIG1hY3JvCi0jaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlRleHRTdHJlYW0uaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIiAvLyBGb3IgVGV4
dHVyZUFsbG9jYXRvcgotI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNp
bmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1N0cmVhbVZpZGVvRHJhd1F1YWQuaCIKICNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDWVVWVmlkZW9EcmF3UXVhZC5o
IgpAQCAtNTIsNiArNDksNyBAQCBDQ1ZpZGVvTGF5ZXJJbXBsOjpDQ1ZpZGVvTGF5ZXJJbXBsKGlu
dCBpZCwgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZAogICAgIDogQ0NMYXll
ckltcGwoaWQpCiAgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQogICAgICwgbV9mcmFtZSgwKQor
ICAgICwgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSgwKQogewogICAgIC8vIFRoaXMgbWF0cml4
IGlzIHRoZSBkZWZhdWx0IHRyYW5zZm9ybWF0aW9uIGZvciBzdHJlYW0gdGV4dHVyZXMsIGFuZCBm
bGlwcyBvbiB0aGUgWSBheGlzLgogICAgIG1fc3RyZWFtVGV4dHVyZU1hdHJpeCA9IFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoCkBAIC03NiwxMSArNzQsMTIgQEAgQ0NWaWRlb0xheWVy
SW1wbDo6fkNDVmlkZW9MYXllckltcGwoKQogICAgICAgICBtX3Byb3ZpZGVyLT5zZXRWaWRlb0Zy
YW1lUHJvdmlkZXJDbGllbnQoMCk7CiAgICAgICAgIG1fcHJvdmlkZXIgPSAwOwogICAgIH0KLSAg
ICBmcmVlUGxhbmVEYXRhKGxheWVyVHJlZUhvc3RJbXBsKCktPmNvbnRleHQoKSk7CisgICAgZnJl
ZVBsYW5lRGF0YShsYXllclRyZWVIb3N0SW1wbCgpLT5yZXNvdXJjZVByb3ZpZGVyKCkpOwogCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXZWJLaXQ6
OldlYlZpZGVvRnJhbWU6Om1heFBsYW5lczsgKytpKQotICAgICAgICBBU1NFUlQoIW1fZnJhbWVQ
bGFuZXNbaV0udGV4dHVyZUlkKTsKKyAgICAgICAgQVNTRVJUKCFtX2ZyYW1lUGxhbmVzW2ldLnJl
c291cmNlSWQpOworICAgIEFTU0VSVCghbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSk7CiAjZW5k
aWYKIH0KIApAQCAtMTExLDEwICsxMTAsMTAgQEAgc3RhdGljIEdDM0RlbnVtIGNvbnZlcnRWRkNG
b3JtYXRUb0dDM0RGb3JtYXQoY29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiBmcmFtZSkKICAg
ICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUU7CiB9CiAKLXZvaWQgQ0NW
aWRlb0xheWVySW1wbDo6d2lsbERyYXcoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KEND
UmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKICAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhsYXllclJlbmRl
cmVyLCBjb250ZXh0KTsKKyAgICBDQ0xheWVySW1wbDo6d2lsbERyYXcocmVzb3VyY2VQcm92aWRl
cik7CiAKICAgICAvLyBFeHBsaWNpdGx5IGxvY2sgYW5kIHVubG9jayB0aGUgcHJvdmlkZXIgbXV0
ZXggc28gaXQgY2FuIGJlIGhlbGQgZnJvbQogICAgIC8vIHdpbGxEcmF3IHRvIGRpZERyYXcuIFNp
bmNlIHRoZSBjb21wb3NpdG9yIHRocmVhZCBpcyBpbiB0aGUgbWlkZGxlIG9mCkBAIC0xMjUsMTYg
KzEyNCwxNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqIGxh
eWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0KiBjbwogICAgIC8vIGxvY2sgc2hvdWxkIG5v
dCBjYXVzZSBhIGRlYWRsb2NrLgogICAgIG1fcHJvdmlkZXJNdXRleC5sb2NrKCk7CiAKLSAgICB3
aWxsRHJhd0ludGVybmFsKGxheWVyUmVuZGVyZXIsIGNvbnRleHQpOwotICAgIGZyZWVVbnVzZWRQ
bGFuZURhdGEoY29udGV4dCk7CisgICAgd2lsbERyYXdJbnRlcm5hbChyZXNvdXJjZVByb3ZpZGVy
KTsKKyAgICBmcmVlVW51c2VkUGxhbmVEYXRhKHJlc291cmNlUHJvdmlkZXIpOwogCiAgICAgaWYg
KCFtX2ZyYW1lKQogICAgICAgICBtX3Byb3ZpZGVyTXV0ZXgudW5sb2NrKCk7CiB9CiAKLXZvaWQg
Q0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXdJbnRlcm5hbChDQ1JlbmRlcmVyKiBsYXllclJlbmRl
cmVyLCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6
d2lsbERyYXdJbnRlcm5hbChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7
CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICBBU1NFUlQoIW1fZXh0
ZXJuYWxUZXh0dXJlUmVzb3VyY2UpOwogCiAgICAgaWYgKCFtX3Byb3ZpZGVyKSB7CiAgICAgICAg
IG1fZnJhbWUgPSAwOwpAQCAtMTYwLDE3ICsxNjAsMjAgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBs
Ojp3aWxsRHJhd0ludGVybmFsKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3ND
b24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghYWxsb2NhdGVQbGFuZURhdGEo
bGF5ZXJSZW5kZXJlciwgY29udGV4dCkpIHsKKyAgICBpZiAoIWFsbG9jYXRlUGxhbmVEYXRhKHJl
c291cmNlUHJvdmlkZXIpKSB7CiAgICAgICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZSht
X2ZyYW1lKTsKICAgICAgICAgbV9mcmFtZSA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpZiAoIWNvcHlQbGFuZURhdGEobGF5ZXJSZW5kZXJlciwgY29udGV4dCkpIHsKKyAgICBp
ZiAoIWNvcHlQbGFuZURhdGEocmVzb3VyY2VQcm92aWRlcikpIHsKICAgICAgICAgbV9wcm92aWRl
ci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUpOwogICAgICAgICBtX2ZyYW1lID0gMDsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKworICAgIGlmIChtX2Zvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCkKKyAgICAgICAgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSA9IHJlc291
cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4dHVyZShtX2ZyYW1lLT50
ZXh0dXJlSWQoKSk7CiB9CiAKIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NR
dWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgYm9vbCYpCkBAIC0yMDMsNyArMjA2LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEK
ICAgICAgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOwogICAgICAgICBGbG9hdFJl
Y3QgdXZSZWN0KDAsIDAsIHdpZHRoU2NhbGVGYWN0b3IsIDEpOwogICAgICAgICBib29sIGZsaXBw
ZWQgPSBmYWxzZTsKLSAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJlUXVh
ZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwg
cGxhbmUudGV4dHVyZUlkLCBwcmVtdWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7Cisg
ICAgICAgIE93blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gdGV4dHVyZVF1YWQgPSBDQ1RleHR1cmVE
cmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHBsYW5lLnJlc291cmNl
SWQsIHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKICAgICAgICAgcXVhZExp
c3QuYXBwZW5kKHRleHR1cmVRdWFkLnJlbGVhc2UoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTIxOCw3ICsyMjEsNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKEND
UXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YQogI2Vsc2UKICAgICAg
ICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7IC8vIExpYlZBIChjcm9zL2ludGVsKSwgTWFjT1MuCiAj
ZW5kaWYKLSAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJlUXVhZCA9IEND
VGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9mcmFt
ZS0+dGV4dHVyZUlkKCksIHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKKyAg
ICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVyZURy
YXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9leHRlcm5hbFRleHR1
cmVSZXNvdXJjZSwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOwogICAgICAg
ICBxdWFkTGlzdC5hcHBlbmQodGV4dHVyZVF1YWQucmVsZWFzZSgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtMjMzLDE0ICsyMzYsMjAgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEKICAg
ICB9CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZGlkRHJhdygpCit2b2lkIENDVmlkZW9M
YXllckltcGw6OmRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQog
ewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgQ0NMYXllckltcGw6
OmRpZERyYXcoKTsKKyAgICBDQ0xheWVySW1wbDo6ZGlkRHJhdyhyZXNvdXJjZVByb3ZpZGVyKTsK
IAogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fZm9ybWF0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKSB7CisgICAgICAgIEFTU0VSVChtX2V4
dGVybmFsVGV4dHVyZVJlc291cmNlKTsKKyAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRl
UmVzb3VyY2UobV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSk7CisgICAgICAgIG1fZXh0ZXJuYWxU
ZXh0dXJlUmVzb3VyY2UgPSAwOworICAgIH0KKwogICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRG
cmFtZShtX2ZyYW1lKTsKICAgICBtX2ZyYW1lID0gMDsKIApAQCAtMjgzLDQ1ICsyOTIsMjcgQEAg
SW50U2l6ZSBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb21wdXRlVmlzaWJsZVNpemUoY29uc3QgV2ViS2l0
OjpXZWJWaWRlb0ZyYW1lJiBmcmFtZSwKICAgICByZXR1cm4gSW50U2l6ZSh2aXNpYmxlV2lkdGgs
IHZpc2libGVIZWlnaHQpOwogfQogCi1ib29sIENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmU6
OmFsbG9jYXRlRGF0YShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK2Jvb2wgQ0NWaWRlb0xh
eWVySW1wbDo6RnJhbWVQbGFuZTo6YWxsb2NhdGVEYXRhKENDUmVzb3VyY2VQcm92aWRlciogcmVz
b3VyY2VQcm92aWRlcikKIHsKLSAgICBpZiAodGV4dHVyZUlkKQorICAgIGlmIChyZXNvdXJjZUlk
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQzRCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dDNE
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHTEMoY29udGV4dDNELCB0ZXh0dXJlSWQg
PSBjb250ZXh0M0QtPmNyZWF0ZVRleHR1cmUoKSk7Ci0gICAgR0xDKGNvbnRleHQzRCwgY29udGV4
dDNELT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlk
KSk7Ci0gICAgLy8gRG8gYmFzaWMgbGluZWFyIGZpbHRlcmluZyBvbiByZXNpemUuCi0gICAgR0xD
KGNvbnRleHQzRCwgY29udGV4dDNELT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6TElORUFSKSk7Ci0gICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT50ZXhQ
YXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7Ci0gICAg
Ly8gTlBPVCB0ZXh0dXJlcyBpbiBHTCBFUyBvbmx5IHdvcmsgd2hlbiB0aGUgd3JhcCBtb2RlIGlz
IHNldCB0byBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRS4KLSAgICBHTEMoY29udGV4
dDNELCBjb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6
OkNMQU1QX1RPX0VER0UpKTsKLSAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKLQotICAg
IEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAsIGZv
cm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApKTsKLQotICAgIHJldHVy
biB0ZXh0dXJlSWQ7CisgICAgcmVzb3VyY2VJZCA9IHJlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJl
c291cmNlKENDUmVuZGVyZXI6OkltcGxQb29sLCBzaXplLCBmb3JtYXQsIENDUmVzb3VyY2VQcm92
aWRlcjo6QW55KTsKKyAgICByZXR1cm4gcmVzb3VyY2VJZDsKIH0KIAotdm9pZCBDQ1ZpZGVvTGF5
ZXJJbXBsOjpGcmFtZVBsYW5lOjpmcmVlRGF0YShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkK
K3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6ZnJlZURhdGEoQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewotICAgIGlmICghdGV4dHVyZUlkKQorICAgIGlm
ICghcmVzb3VyY2VJZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dDNEID0gY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFj
b250ZXh0M0QpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQz
RC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSWQpKTsKLSAgICB0ZXh0dXJlSWQgPSAwOworICAgIHJl
c291cmNlUHJvdmlkZXItPmRlbGV0ZVJlc291cmNlKHJlc291cmNlSWQpOworICAgIHJlc291cmNl
SWQgPSAwOwogfQogCi1ib29sIENDVmlkZW9MYXllckltcGw6OmFsbG9jYXRlUGxhbmVEYXRhKEND
UmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorYm9v
bCBDQ1ZpZGVvTGF5ZXJJbXBsOjphbGxvY2F0ZVBsYW5lRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIq
IHJlc291cmNlUHJvdmlkZXIpCiB7Ci0gICAgaW50IG1heFRleHR1cmVTaXplID0gbGF5ZXJSZW5k
ZXJlci0+Y2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemU7CisgICAgaW50IG1heFRleHR1cmVT
aXplID0gcmVzb3VyY2VQcm92aWRlci0+bWF4VGV4dHVyZVNpemUoKTsKICAgICBmb3IgKHVuc2ln
bmVkIHBsYW5lSW5kZXggPSAwOyBwbGFuZUluZGV4IDwgbV9mcmFtZS0+cGxhbmVzKCk7ICsrcGxh
bmVJbmRleCkgewogICAgICAgICBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiBwbGFuZSA9
IG1fZnJhbWVQbGFuZXNbcGxhbmVJbmRleF07CiAKQEAgLTMzMSwxMyArMzIyLDEzIEBAIGJvb2wg
Q0NWaWRlb0xheWVySW1wbDo6YWxsb2NhdGVQbGFuZURhdGEoQ0NSZW5kZXJlciogbGF5ZXJSZW5k
ZXJlciwgQ0NHcmFwaGljc0NvCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
aWYgKHBsYW5lLnNpemUgIT0gcmVxdWlyZWRUZXh0dXJlU2l6ZSB8fCBwbGFuZS5mb3JtYXQgIT0g
bV9mb3JtYXQpIHsKLSAgICAgICAgICAgIHBsYW5lLmZyZWVEYXRhKGNvbnRleHQpOworICAgICAg
ICAgICAgcGxhbmUuZnJlZURhdGEocmVzb3VyY2VQcm92aWRlcik7CiAgICAgICAgICAgICBwbGFu
ZS5zaXplID0gcmVxdWlyZWRUZXh0dXJlU2l6ZTsKICAgICAgICAgICAgIHBsYW5lLmZvcm1hdCA9
IG1fZm9ybWF0OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFwbGFuZS50ZXh0dXJlSWQpIHsK
LSAgICAgICAgICAgIGlmICghcGxhbmUuYWxsb2NhdGVEYXRhKGNvbnRleHQpKQorICAgICAgICBp
ZiAoIXBsYW5lLnJlc291cmNlSWQpIHsKKyAgICAgICAgICAgIGlmICghcGxhbmUuYWxsb2NhdGVE
YXRhKHJlc291cmNlUHJvdmlkZXIpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIHBsYW5lLnZpc2libGVTaXplID0gY29tcHV0ZVZpc2libGVTaXplKCptX2ZyYW1l
LCBwbGFuZUluZGV4KTsKICAgICAgICAgfQpAQCAtMzQ1LDQyICszMzYsMzIgQEAgYm9vbCBDQ1Zp
ZGVvTGF5ZXJJbXBsOjphbGxvY2F0ZVBsYW5lRGF0YShDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVy
LCBDQ0dyYXBoaWNzQ28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjpjb3B5UGxhbmVEYXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KQorYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb3B5UGxhbmVEYXRhKEND
UmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKICAgICBzaXplX3Qgc29mdHdh
cmVQbGFuZUNvdW50ID0gbV9mcmFtZS0+cGxhbmVzKCk7CiAgICAgaWYgKCFzb2Z0d2FyZVBsYW5l
Q291bnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250
ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3
YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgTGF5
ZXJUZXh0dXJlU3ViSW1hZ2UgdXBsb2FkZXIodHJ1ZSk7CiAgICAgZm9yIChzaXplX3Qgc29mdHdh
cmVQbGFuZUluZGV4ID0gMDsgc29mdHdhcmVQbGFuZUluZGV4IDwgc29mdHdhcmVQbGFuZUNvdW50
OyArK3NvZnR3YXJlUGxhbmVJbmRleCkgewogICAgICAgICBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFt
ZVBsYW5lJiBwbGFuZSA9IG1fZnJhbWVQbGFuZXNbc29mdHdhcmVQbGFuZUluZGV4XTsKICAgICAg
ICAgY29uc3QgdWludDhfdCogc29mdHdhcmVQbGFuZVBpeGVscyA9IHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihtX2ZyYW1lLT5kYXRhKHNvZnR3YXJlUGxhbmVJbmRleCkpOwogICAgICAgICBJ
bnRSZWN0IHBsYW5lUmVjdChJbnRQb2ludCgpLCBwbGFuZS5zaXplKTsKLQotICAgICAgICBjb250
ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBwbGFuZS50
ZXh0dXJlSWQpOwotICAgICAgICB1cGxvYWRlci5zZXRTdWJJbWFnZVNpemUocGxhbmUuc2l6ZSk7
Ci0gICAgICAgIHVwbG9hZGVyLnVwbG9hZChzb2Z0d2FyZVBsYW5lUGl4ZWxzLCBwbGFuZVJlY3Qs
IHBsYW5lUmVjdCwgcGxhbmVSZWN0LCBwbGFuZS5mb3JtYXQsIGNvbnRleHQpOworICAgICAgICBy
ZXNvdXJjZVByb3ZpZGVyLT51cGxvYWQocGxhbmUucmVzb3VyY2VJZCwgc29mdHdhcmVQbGFuZVBp
eGVscywgcGxhbmVSZWN0LCBwbGFuZVJlY3QsIHBsYW5lUmVjdCk7CiAgICAgfQogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIENDVmlkZW9MYXllckltcGw6OmZyZWVQbGFuZURhdGEoQ0NHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIENDVmlkZW9MYXllckltcGw6OmZyZWVQbGFuZURh
dGEoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBXZWJLaXQ6OldlYlZpZGVvRnJhbWU6Om1heFBsYW5lczsgKytpKQot
ICAgICAgICBtX2ZyYW1lUGxhbmVzW2ldLmZyZWVEYXRhKGNvbnRleHQpOworICAgICAgICBtX2Zy
YW1lUGxhbmVzW2ldLmZyZWVEYXRhKHJlc291cmNlUHJvdmlkZXIpOwogfQogCi12b2lkIENDVmlk
ZW9MYXllckltcGw6OmZyZWVVbnVzZWRQbGFuZURhdGEoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQpCit2b2lkIENDVmlkZW9MYXllckltcGw6OmZyZWVVbnVzZWRQbGFuZURhdGEoQ0NSZXNvdXJj
ZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewogICAgIHVuc2lnbmVkIGZpcnN0VW51c2Vk
UGxhbmUgPSBtX2ZyYW1lID8gbV9mcmFtZS0+cGxhbmVzKCkgOiAwOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IGZpcnN0VW51c2VkUGxhbmU7IGkgPCBXZWJLaXQ6OldlYlZpZGVvRnJhbWU6Om1heFBs
YW5lczsgKytpKQotICAgICAgICBtX2ZyYW1lUGxhbmVzW2ldLmZyZWVEYXRhKGNvbnRleHQpOwor
ICAgICAgICBtX2ZyYW1lUGxhbmVzW2ldLmZyZWVEYXRhKHJlc291cmNlUHJvdmlkZXIpOwogfQog
CiB2b2lkIENDVmlkZW9MYXllckltcGw6OmRpZFJlY2VpdmVGcmFtZSgpCkBAIC00MDAsNyArMzgx
LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRVcGRhdGVNYXRyaXgoY29uc3QgZmxvYXQg
bWF0cml4WzE2XSkKIAogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRMb3NlQ29udGV4dCgpCiB7
Ci0gICAgZnJlZVBsYW5lRGF0YShsYXllclRyZWVIb3N0SW1wbCgpLT5jb250ZXh0KCkpOworICAg
IGZyZWVQbGFuZURhdGEobGF5ZXJUcmVlSG9zdEltcGwoKS0+cmVzb3VyY2VQcm92aWRlcigpKTsK
IH0KIAogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpzZXROZWVkc1JlZHJhdygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5
ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggY2Q1ZGIwOWJjZDA1NmQ5MDNiNWY1YzdiZDMyMzgwM2Q4
M2Y1N2MyMi4uNGNmN2NhYmI3NmQ5M2NlZTg5MmY1NDNlMjViYzQ5ZTk4MTRlYjRiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRl
b0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApAQCAtNTAsOSArNTAsOSBAQCBwdWJsaWM6CiAgICAg
fQogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXllckltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3
aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkRHJhdygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KENDUmVzb3Vy
Y2VQcm92aWRlciopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclByb3Bl
cnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IE9WRVJSSURFOwogCkBAIC02OCwx
NSArNjgsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKIAogICAgIHN0
cnVjdCBGcmFtZVBsYW5lIHsKLSAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkOworICAgICAgICBD
Q1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZDsKICAgICAgICAgSW50U2l6
ZSBzaXplOwogICAgICAgICBHQzNEZW51bSBmb3JtYXQ7CiAgICAgICAgIEludFNpemUgdmlzaWJs
ZVNpemU7CiAKLSAgICAgICAgRnJhbWVQbGFuZSgpIDogdGV4dHVyZUlkKDApIHsgfQorICAgICAg
ICBGcmFtZVBsYW5lKCkgOiByZXNvdXJjZUlkKDApIHsgfQogCi0gICAgICAgIGJvb2wgYWxsb2Nh
dGVEYXRhKENDR3JhcGhpY3NDb250ZXh0Kik7Ci0gICAgICAgIHZvaWQgZnJlZURhdGEoQ0NHcmFw
aGljc0NvbnRleHQqKTsKKyAgICAgICAgYm9vbCBhbGxvY2F0ZURhdGEoQ0NSZXNvdXJjZVByb3Zp
ZGVyKik7CisgICAgICAgIHZvaWQgZnJlZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAgICAg
fTsKIAogcHJpdmF0ZToKQEAgLTg1LDExICs4NSwxMSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBJ
bnRTaXplIGNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUmLCB1
bnNpZ25lZCBwbGFuZSk7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBsYXllclR5cGVBc1N0cmlu
ZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJWaWRlb0xheWVyIjsgfQogCi0gICAgdm9pZCB3
aWxsRHJhd0ludGVybmFsKENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopOwotICAgIGJv
b2wgYWxsb2NhdGVQbGFuZURhdGEoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0Kik7Ci0g
ICAgYm9vbCBjb3B5UGxhbmVEYXRhKENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopOwot
ICAgIHZvaWQgZnJlZVBsYW5lRGF0YShDQ0dyYXBoaWNzQ29udGV4dCopOwotICAgIHZvaWQgZnJl
ZVVudXNlZFBsYW5lRGF0YShDQ0dyYXBoaWNzQ29udGV4dCopOworICAgIHZvaWQgd2lsbERyYXdJ
bnRlcm5hbChDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICBib29sIGFsbG9jYXRlUGxhbmVEYXRh
KENDUmVzb3VyY2VQcm92aWRlciopOworICAgIGJvb2wgY29weVBsYW5lRGF0YShDQ1Jlc291cmNl
UHJvdmlkZXIqKTsKKyAgICB2b2lkIGZyZWVQbGFuZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKik7
CisgICAgdm9pZCBmcmVlVW51c2VkUGxhbmVEYXRhKENDUmVzb3VyY2VQcm92aWRlciopOwogCiAg
ICAgLy8gR3VhcmRzIHRoZSBkZXN0cnVjdGlvbiBvZiBtX3Byb3ZpZGVyIGFuZCB0aGUgZnJhbWUg
dGhhdCBpdCBwcm92aWRlcwogICAgIE11dGV4IG1fcHJvdmlkZXJNdXRleDsKQEAgLTk5LDYgKzk5
LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYktpdDo6V2ViVmlkZW9GcmFtZSogbV9mcmFtZTsKICAg
ICBHQzNEZW51bSBtX2Zvcm1hdDsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQg
bV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZTsKIAogICAgIC8vIEVhY2ggaW5kZXggaW4gdGhpcyBh
cnJheSBjb3JyZXNwb25kcyB0byBhIHBsYW5lIGluIFdlYktpdDo6V2ViVmlkZW9GcmFtZS4KICAg
ICBGcmFtZVBsYW5lIG1fZnJhbWVQbGFuZXNbV2ViS2l0OjpXZWJWaWRlb0ZyYW1lOjptYXhQbGFu
ZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggYmVkZTJiMWUzMWRjMGNiZWM5
OGFkMjkyMjlmNGJkZWIwNzc3MDE5Yy4uNjdiZmViMmUzOTY4ZWYwZTkxZmU5ZjkxMzlmN2Y5ZWE1
NzZhMTdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC03OCw2ICs3OCw3IEBA
CiAgICAgICAgICAgICAndGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdENvbW1vbi5oJywKICAg
ICAgICAgICAgICd0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0NDUmVzb3Vy
Y2VQcm92aWRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21t
b24uaCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwCmluZGV4IGFiZjFlZmY4ZTExMTM0YTAzMjcyZDY1ZjU5MDcyMDcwZDQ0NWQwOTguLjEw
NzI4MGZkNDgwYjQwMGU4NmM3Yzg1OGFiYWQ2NzY5ODYzZmI1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
CkBAIC01OTksMTIgKzU5OSwxMiBAQCBjbGFzcyBEaWREcmF3Q2hlY2tMYXllciA6IHB1YmxpYyBD
Q1RpbGVkTGF5ZXJJbXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxEaWREcmF3
Q2hlY2tMYXllcj4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IERpZERyYXdD
aGVja0xheWVyKGlkKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCkKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERQogICAgIHsKICAg
ICAgICAgbV9kaWREcmF3Q2FsbGVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbERyYXcoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0KikKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREUKICAgICB7CiAgICAgICAg
IG1fd2lsbERyYXdDYWxsZWQgPSB0cnVlOwogICAgIH0KQEAgLTc1NCwxOCArNzU0LDIwIEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZGlkRHJhd0NhbGxlZE9uQWxsTGF5ZXJzKQog
CiBjbGFzcyBNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyIDogcHVibGljIERpZERyYXdDaGVj
a0xheWVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNaXNzaW5nVGV4dHVyZUFu
aW1hdGluZ0xheWVyPiBjcmVhdGUoaW50IGlkLCBib29sIHRpbGVNaXNzaW5nLCBib29sIHNraXBz
RHJhdywgYm9vbCBhbmltYXRpbmcpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBNaXNzaW5nVGV4dHVy
ZUFuaW1hdGluZ0xheWVyKGlkLCB0aWxlTWlzc2luZywgc2tpcHNEcmF3LCBhbmltYXRpbmcpKTsg
fQorICAgIHN0YXRpYyBQYXNzT3duUHRyPE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI+IGNy
ZWF0ZShpbnQgaWQsIGJvb2wgdGlsZU1pc3NpbmcsIGJvb2wgc2tpcHNEcmF3LCBib29sIGFuaW1h
dGluZywgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKSB7IHJldHVybiBhZG9w
dFB0cihuZXcgTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcihpZCwgdGlsZU1pc3NpbmcsIHNr
aXBzRHJhdywgYW5pbWF0aW5nLCByZXNvdXJjZVByb3ZpZGVyKSk7IH0KIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKGludCBpZCwgYm9vbCB0aWxl
TWlzc2luZywgYm9vbCBza2lwc0RyYXcsIGJvb2wgYW5pbWF0aW5nKQorICAgIGV4cGxpY2l0IE1p
c3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIoaW50IGlkLCBib29sIHRpbGVNaXNzaW5nLCBib29s
IHNraXBzRHJhdywgYm9vbCBhbmltYXRpbmcsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlcikKICAgICAgICAgOiBEaWREcmF3Q2hlY2tMYXllcihpZCkKICAgICB7CiAgICAgICAg
IE93blB0cjxDQ0xheWVyVGlsaW5nRGF0YT4gdGlsaW5nRGF0YSA9IENDTGF5ZXJUaWxpbmdEYXRh
OjpjcmVhdGUoSW50U2l6ZSgxMCwgMTApLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhl
bHMpOwogICAgICAgICB0aWxpbmdEYXRhLT5zZXRCb3VuZHMoYm91bmRzKCkpOwogICAgICAgICBz
ZXRUaWxpbmdEYXRhKCp0aWxpbmdEYXRhLmdldCgpKTsKICAgICAgICAgc2V0U2tpcHNEcmF3KHNr
aXBzRHJhdyk7Ci0gICAgICAgIGlmICghdGlsZU1pc3NpbmcpCi0gICAgICAgICAgICBwdXNoVGls
ZVByb3BlcnRpZXMoMCwgMCwgMSwgSW50UmVjdCgpKTsKKyAgICAgICAgaWYgKCF0aWxlTWlzc2lu
ZykgeworICAgICAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNl
ID0gcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UoQ0NSZW5kZXJlcjo6Q29udGVudFBv
b2wsIEludFNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRl
cjo6QW55KTsKKyAgICAgICAgICAgIHB1c2hUaWxlUHJvcGVydGllcygwLCAwLCByZXNvdXJjZSwg
SW50UmVjdCgpKTsKKyAgICAgICAgfQogICAgICAgICBpZiAoYW5pbWF0aW5nKQogICAgICAgICAg
ICAgYWRkQW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVyKCp0aGlzLCAxMCwgMywgMCk7CiAgICAgfQpA
QCAtNzc2LDcgKzc3OCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcHJlcGFy
ZVRvRHJhd0ZhaWxzV2hlbkFuaW1hdGlvblVzZXNDaGVja2VyYm9hcmQpCiAgICAgLy8gV2hlbiB0
aGUgdGV4dHVyZSBpcyBub3QgbWlzc2luZywgd2UgZHJhdyBhcyB1c3VhbC4KICAgICBtX2hvc3RJ
bXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgxKSk7CiAgICAgRGlk
RHJhd0NoZWNrTGF5ZXIqIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1f
aG9zdEltcGwtPnJvb3RMYXllcigpKTsKLSAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVy
ZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMiwgZmFsc2UsIGZhbHNlLCB0cnVlKSk7CisgICAgcm9v
dC0+YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6Y3JlYXRlKDIsIGZhbHNl
LCBmYWxzZSwgdHJ1ZSwgbV9ob3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKSk7CiAKICAgICBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CiAKQEAgLTc4Nyw3ICs3ODksNyBA
QCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHByZXBhcmVUb0RyYXdGYWlsc1doZW5B
bmltYXRpb25Vc2VzQ2hlY2tlcmJvYXJkKQogICAgIC8vIFdoZW4gYSB0ZXh0dXJlIGlzIG1pc3Np
bmcgYW5kIHdlJ3JlIG5vdCBhbmltYXRpbmcsIHdlIGRyYXcgYXMgdXN1YWwgd2l0aCBjaGVja2Vy
Ym9hcmRpbmcuCiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVy
OjpjcmVhdGUoMSkpOwogICAgIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+
KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKLSAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4
dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSk7CisgICAg
cm9vdC0+YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6Y3JlYXRlKDIsIHRy
dWUsIGZhbHNlLCBmYWxzZSwgbV9ob3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKSk7CiAKICAg
ICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CiAgICAgbV9o
b3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CkBAIC03OTYsNyArNzk4LDcgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNl
c0NoZWNrZXJib2FyZCkKICAgICAvLyBXaGVuIGEgdGV4dHVyZSBpcyBtaXNzaW5nIGFuZCB3ZSdy
ZSBhbmltYXRpbmcsIHdlIGRvbid0IHdhbnQgdG8gZHJhdyBhbnl0aGluZy4KICAgICBtX2hvc3RJ
bXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgxKSk7CiAgICAgcm9v
dCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVy
KCkpOwotICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNy
ZWF0ZSgyLCB0cnVlLCBmYWxzZSwgdHJ1ZSkpOworICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdU
ZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgyLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgbV9ob3N0
SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKSk7CiAKICAgICBFWFBFQ1RfRkFMU0UobV9ob3N0SW1w
bC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJh
bWUpOwpAQCAtODA1LDcgKzgwNyw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
cHJlcGFyZVRvRHJhd0ZhaWxzV2hlbkFuaW1hdGlvblVzZXNDaGVja2VyYm9hcmQpCiAgICAgLy8g
V2hlbiB0aGUgbGF5ZXIgc2tpcHMgZHJhdyBhbmQgd2UncmUgYW5pbWF0aW5nLCB3ZSBzdGlsbCBk
cmF3IHRoZSBmcmFtZS4KICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNr
TGF5ZXI6OmNyZWF0ZSgxKSk7CiAgICAgcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xh
eWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwotICAgIHJvb3QtPmFkZENoaWxkKE1pc3Np
bmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgyLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSkpOwor
ICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgy
LCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgbV9ob3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKSk7CiAK
ICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CiAgICAg
bV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CkBAIC0xMTMwLDcgKzExMzIsNyBAQCBwcml2
YXRlOgogCiBjbGFzcyBCbGVuZFN0YXRlQ2hlY2tMYXllciA6IHB1YmxpYyBDQ0xheWVySW1wbCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+IGNy
ZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBCbGVuZFN0YXRlQ2hlY2tMYXllcihp
ZCkpOyB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+IGNyZWF0
ZShpbnQgaWQsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikgeyByZXR1cm4g
YWRvcHRQdHIobmV3IEJsZW5kU3RhdGVDaGVja0xheWVyKGlkLCByZXNvdXJjZVByb3ZpZGVyKSk7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0
LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikgT1ZFUlJJ
REUKICAgICB7CkBAIC0xMTQxLDcgKzExNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvcGFx
dWVSZWN0ID0gbV9xdWFkUmVjdDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3BhcXVlUmVj
dCA9IG1fb3BhcXVlQ29udGVudFJlY3Q7Ci0gICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0
QmxlbmRpbmdEcmF3UXVhZCA9IENDVGlsZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBtX3F1YWRSZWN0LCBvcGFxdWVSZWN0LCAwLCBJbnRQb2ludCgpLCBJbnRTaXplKDEsIDEpLCAw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICBPd25QdHI8Q0NE
cmF3UXVhZD4gdGVzdEJsZW5kaW5nRHJhd1F1YWQgPSBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgbV9xdWFkUmVjdCwgb3BhcXVlUmVjdCwgbV9yZXNvdXJjZUlkLCBJbnRQ
b2ludCgpLCBJbnRTaXplKDEsIDEpLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpOwogICAgICAgICB0ZXN0QmxlbmRpbmdEcmF3UXVhZC0+c2V0UXVhZFZpc2libGVSZWN0KG1f
cXVhZFZpc2libGVSZWN0KTsKICAgICAgICAgRVhQRUNUX0VRKG1fYmxlbmQsIHRlc3RCbGVuZGlu
Z0RyYXdRdWFkLT5uZWVkc0JsZW5kaW5nKCkpOwogICAgICAgICBFWFBFQ1RfRVEobV9oYXNSZW5k
ZXJTdXJmYWNlLCAhIXJlbmRlclN1cmZhY2UoKSk7CkBAIC0xMTYzLDcgKzExNjUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRPcGFxdWVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSB7
IG1fb3BhcXVlQ29udGVudFJlY3QgPSByZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
QmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaW50IGlkKQorICAgIGV4cGxpY2l0IEJsZW5kU3RhdGVDaGVj
a0xheWVyKGludCBpZCwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAg
ICAgICA6IENDTGF5ZXJJbXBsKGlkKQogICAgICAgICAsIG1fYmxlbmQoZmFsc2UpCiAgICAgICAg
ICwgbV9oYXNSZW5kZXJTdXJmYWNlKGZhbHNlKQpAQCAtMTE3MSw2ICsxMTczLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgLCBtX29wYXF1ZUNvbnRlbnRzKGZhbHNlKQogICAgICAgICAsIG1fcXVhZFJl
Y3QoNSwgNSwgNSwgNSkKICAgICAgICAgLCBtX3F1YWRWaXNpYmxlUmVjdCg1LCA1LCA1LCA1KQor
ICAgICAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShD
Q1JlbmRlcmVyOjpDb250ZW50UG9vbCwgSW50U2l6ZSgxLCAxKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6QW55KSkKICAgICB7CiAgICAgICAgIHNldEFuY2hv
clBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwg
MTApKTsKQEAgLTExODUsNiArMTE4OCw3IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX3F1YWRS
ZWN0OwogICAgIEludFJlY3QgbV9vcGFxdWVDb250ZW50UmVjdDsKICAgICBJbnRSZWN0IG1fcXVh
ZFZpc2libGVSZWN0OworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291
cmNlSWQ7CiB9OwogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2Zm
V2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCkBAIC0xMTk5LDcgKzEyMDMsNyBAQCBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMp
CiAgICAgfQogICAgIENDTGF5ZXJJbXBsKiByb290ID0gbV9ob3N0SW1wbC0+cm9vdExheWVyKCk7
CiAKLSAgICByb290LT5hZGRDaGlsZChCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDIpKTsK
KyAgICByb290LT5hZGRDaGlsZChCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDIsIG1faG9z
dEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSkpOwogICAgIEJsZW5kU3RhdGVDaGVja0xheWVyKiBs
YXllcjEgPSBzdGF0aWNfY2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KHJvb3QtPmNoaWxkcmVu
KClbMF0uZ2V0KCkpOwogICAgIGxheWVyMS0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgyLCAyKSk7
CiAKQEAgLTEyNTIsNyArMTI1Niw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
YmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICBFWFBFQ1RfVFJVRShsYXll
cjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAgICAgbV9ob3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhm
cmFtZSk7CiAKLSAgICBsYXllcjEtPmFkZENoaWxkKEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVh
dGUoMykpOworICAgIGxheWVyMS0+YWRkQ2hpbGQoQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0
ZSgzLCBtX2hvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpKTsKICAgICBCbGVuZFN0YXRlQ2hl
Y2tMYXllciogbGF5ZXIyID0gc3RhdGljX2Nhc3Q8QmxlbmRTdGF0ZUNoZWNrTGF5ZXIqPihsYXll
cjEtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOwogICAgIGxheWVyMi0+c2V0UG9zaXRpb24oRmxvYXRQ
b2ludCg0LCA0KSk7CiAKQEAgLTE0MTMsNyArMTQxNyw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgdmlld3BvcnRDb3ZlcmVkKQogICAgIEludFNpemUgdmlld3BvcnRTaXplKDEw
MDAsIDEwMDApOwogICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUp
OwogCi0gICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKEJsZW5kU3RhdGVDaGVja0xheWVyOjpj
cmVhdGUoMSkpOworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihCbGVuZFN0YXRlQ2hlY2tM
YXllcjo6Y3JlYXRlKDEsIG1faG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSkpOwogICAgIEJs
ZW5kU3RhdGVDaGVja0xheWVyKiByb290ID0gc3RhdGljX2Nhc3Q8QmxlbmRTdGF0ZUNoZWNrTGF5
ZXIqPihtX2hvc3RJbXBsLT5yb290TGF5ZXIoKSk7CiAgICAgcm9vdC0+c2V0RXhwZWN0YXRpb24o
ZmFsc2UsIHRydWUpOwogICAgIHJvb3QtPnNldE9wYXF1ZSh0cnVlKTsKQEAgLTI4OTgsOSArMjkw
Miw5IEBAIHByb3RlY3RlZDoKIAogY2xhc3MgQ0NUZXN0UmVuZGVyZXIgOiBwdWJsaWMgTGF5ZXJS
ZW5kZXJlckNocm9taXVtLCBwdWJsaWMgQ0NSZW5kZXJlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8Q0NUZXN0UmVuZGVyZXI+IGNyZWF0ZShXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGVzdFJlbmRl
cmVyPiBjcmVhdGUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgIHsK
LSAgICAgICAgT3duUHRyPENDVGVzdFJlbmRlcmVyPiByZW5kZXJlcihhZG9wdFB0cihuZXcgQ0NU
ZXN0UmVuZGVyZXIoY29udGV4dCkpKTsKKyAgICAgICAgT3duUHRyPENDVGVzdFJlbmRlcmVyPiBy
ZW5kZXJlcihhZG9wdFB0cihuZXcgQ0NUZXN0UmVuZGVyZXIocmVzb3VyY2VQcm92aWRlcikpKTsK
ICAgICAgICAgaWYgKCFyZW5kZXJlci0+aW5pdGlhbGl6ZSgpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTI5MjIsNyArMjkyNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90KSBPVkVSUklERSB7IH0KIAog
cHJvdGVjdGVkOgotICAgIENDVGVzdFJlbmRlcmVyKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQpIDogTGF5ZXJSZW5kZXJlckNocm9taXVtKHRoaXMsIGNvbnRleHQsIFVudGhy
b3R0bGVkVXBsb2FkZXIpIHsgfQorICAgIENDVGVzdFJlbmRlcmVyKENDUmVzb3VyY2VQcm92aWRl
ciogcmVzb3VyY2VQcm92aWRlcikgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0odGhpcywgcmVzb3Vy
Y2VQcm92aWRlciwgVW50aHJvdHRsZWRVcGxvYWRlcikgeyB9CiAKIHByaXZhdGU6CiAgICAgQ0NM
YXllclRyZWVTZXR0aW5ncyBtX3NldHRpbmdzOwpAQCAtMzIxNSw5ICszMjE5LDEwIEBAIHN0YXRp
YyB2b2lkIHZlcmlmeVJlbmRlclBhc3NUZXN0RGF0YShUZXN0Q2FzZSYgdGVzdENhc2UsIFJlbmRl
clBhc3NSZW1vdmFsVGVzdERhCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRlc3RS
ZW1vdmVSZW5kZXJQYXNzZXMpCiB7CiAgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250
ZXh0KGNyZWF0ZUNvbnRleHQoKSk7Ci0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgQVNTRVJUX1RSVUUoY29udGV4
dDNkKTsKLSAgICBPd25QdHI8Q0NUZXN0UmVuZGVyZXI+IHJlbmRlcmVyKENDVGVzdFJlbmRlcmVy
OjpjcmVhdGUoY29udGV4dDNkKSk7CisgICAgQVNTRVJUX1RSVUUoY29udGV4dC0+Y29udGV4dDNE
KCkpOworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IHJlc291cmNlUHJvdmlkZXIoQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSkpOworCisgICAgT3duUHRyPEND
VGVzdFJlbmRlcmVyPiByZW5kZXJlcihDQ1Rlc3RSZW5kZXJlcjo6Y3JlYXRlKHJlc291cmNlUHJv
dmlkZXIuZ2V0KCkpKTsKIAogICAgIGludCB0ZXN0Q2FzZUluZGV4ID0gMDsKICAgICB3aGlsZSAo
cmVtb3ZlUmVuZGVyUGFzc2VzQ2FzZXNbdGVzdENhc2VJbmRleF0ubmFtZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRl
c3QuY3BwCmluZGV4IDQ2OGFmMzZiYmE1MGUzZWU4MTY1ZjNhY2FjNzRlMWU0OWY2Zjk1NTkuLjlk
NTA0ODc5NmE1YmYxNDNiYTA4NmU0NmYwYTQ3MWZlZjhmNTYyODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5o
IgogCiAjaW5jbHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkZha2VD
Q0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlci5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKQEAgLTQxLDYgKzQyLDggQEAgcHVi
bGljOgogICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCgpCiAgICAgICAgIDogbV90ZXh0dXJl
U2l6ZSgyNTYsIDI1NikKICAgICAgICAgLCBtX3RleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEpCisgICAgICAgICwgbV9jb250ZXh0KFdlYktpdDo6Y3JlYXRlRmFrZUNDR3JhcGhp
Y3NDb250ZXh0KCkpCisgICAgICAgICwgbV9yZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92
aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSkpCiAgICAgewogICAgIH0KIApAQCAtNTUsNyAr
NTgsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcj4gY3JlYXRlTWFuYWdlcihzaXplX3QgbWF4VGV4dHVyZXMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUodGV4dHVyZXNNZW1vcnlT
aXplKG1heFRleHR1cmVzKSwgMTAyNCk7CisgICAgICAgIHJldHVybiBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCAxMDI0
LCAwKTsKICAgICB9CiAKICAgICBib29sIHZhbGlkYXRlVGV4dHVyZShPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmU+JiB0ZXh0dXJlLCBib29sIHJlcXVlc3RMYXRlKQpAQCAtNjcsMTkgKzcwLDIw
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHRleHR1cmUtPnJlcXVlc3RMYXRlKCk7CiAgICAgICAg
IGJvb2wgc3VjY2VzcyA9IHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpOwogICAg
ICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgICAgIHRleHR1cmUtPmFjcXVpcmVCYWNraW5nVGV4
dHVyZShhbGxvY2F0b3IoKSk7CisgICAgICAgICAgICB0ZXh0dXJlLT5hY3F1aXJlQmFja2luZ1Rl
eHR1cmUocmVzb3VyY2VQcm92aWRlcigpKTsKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CiAgICAg
fQogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcigpCisgICAgQ0NSZXNvdXJj
ZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKCkKICAgICB7Ci0gICAgICAgcmV0dXJuICZtX2Zh
a2VUZXh0dXJlQWxsb2NhdG9yOworICAgICAgIHJldHVybiBtX3Jlc291cmNlUHJvdmlkZXIuZ2V0
KCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgbV9mYWtl
VGV4dHVyZUFsbG9jYXRvcjsKICAgICBjb25zdCBJbnRTaXplIG1fdGV4dHVyZVNpemU7CiAgICAg
Y29uc3QgR0MzRGVudW0gbV90ZXh0dXJlRm9ybWF0OworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29u
dGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1fcmVzb3Vy
Y2VQcm92aWRlcjsKIH07CiAKIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlcXVl
c3RUZXh0dXJlRXhjZWVkaW5nTWF4TGltaXQpCkBAIC0xMTgsNyArMTIyLDcgQEAgVEVTVF9GKEND
UHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRpbmdNYXhMaW1pdCkK
ICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1h
bmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVN
YW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRv
ZmZCeXRlcygpKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0
b3IoKSk7CisgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlk
ZXIoKSk7CiB9CiAKIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIGNoYW5nZU1lbW9y
eUxpbWl0cykKQEAgLTEzNyw3ICsxNDEsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVU
ZXN0LCBjaGFuZ2VNZW1vcnlMaW1pdHMpCiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygwKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kp
CiAgICAgICAgIHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSwgZmFsc2UpOwotICAgIHRleHR1
cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIHRleHR1cmVNYW5hZ2Vy
LT5yZWR1Y2VNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKIAogICAgIEVYUEVDVF9FUSh0ZXh0
dXJlc01lbW9yeVNpemUoOCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVz
KCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4
dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CkBAIC0xNDcsNyArMTUxLDcg
QEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5TGltaXRzKQog
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKQogICAgICAgICBFWFBFQ1RfRVEodmFsaWRh
dGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSksIGkgPCA1KTsKLSAgICB0ZXh0dXJlTWFuYWdl
ci0+cmVkdWNlTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNl
TWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiAKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1v
cnlTaXplKDUpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKICAg
ICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5h
Z2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwpAQCAtMTU3LDEyICsxNjEsMTIgQEAgVEVT
VF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5TGltaXRzKQogICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKQogICAgICAgICBFWFBFQ1RfRVEodmFsaWRhdGVUZXh0
dXJlKHRleHR1cmVzW2ldLCBmYWxzZSksIGkgPCA0KTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVk
dWNlTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5
KHJlc291cmNlUHJvdmlkZXIoKSk7CiAKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXpl
KDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKICAgICBFWFBF
Q1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5t
ZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxs
TWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnko
cmVzb3VyY2VQcm92aWRlcigpKTsKIH0KIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVz
dCwgdGV4dHVyZU1hbmFnZXJQYXJ0aWFsVXBkYXRlVGV4dHVyZXMpCkBAIC0yMjEsNyArMjI1LDcg
QEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJQYXJ0aWFs
VXBkYXRlVGV4dHVyZXMpCiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVzWzJdLT5oYXZlQmFja2lu
Z1RleHR1cmUoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVzWzNdLT5oYXZlQmFja2luZ1Rl
eHR1cmUoKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9y
KCkpOworICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVy
KCkpOwogfQogCiBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdl
clByaW9yaXRpZXNBcmVFcXVhbCkKQEAgLTI2MCw3ICsyNjQsNyBAQCBURVNUX0YoQ0NQcmlvcml0
aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlclByaW9yaXRpZXNBcmVFcXVhbCkKICAgICBF
WFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDgpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJv
dmVDdXRvZmZCeXRlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVz
ZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0g
ICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICB0ZXh0
dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKIH0KIAogVEVT
VF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJEZXN0cm95ZWRGaXJz
dCkKQEAgLTI3OCw3ICsyODIsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0
ZXh0dXJlTWFuYWdlckRlc3Ryb3llZEZpcnN0KQogICAgIEVYUEVDVF9UUlVFKHRleHR1cmUtPmNh
bkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlLT5oYXZl
QmFja2luZ1RleHR1cmUoKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnko
YWxsb2NhdG9yKCkpOworICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJj
ZVByb3ZpZGVyKCkpOwogICAgIHRleHR1cmVNYW5hZ2VyLmNsZWFyKCk7CiAKICAgICBFWFBFQ1Rf
RkFMU0UodGV4dHVyZS0+Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkpOwpAQCAtMzAzLDcgKzMw
Nyw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNb3ZlZFRvTmV3
TWFuYWdlcikKIAogICAgIHRleHR1cmUtPnNldFRleHR1cmVNYW5hZ2VyKDApOwogCi0gICAgdGV4
dHVyZU1hbmFnZXJPbmUtPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICB0ZXh0dXJl
TWFuYWdlck9uZS0+Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKICAgICB0ZXh0
dXJlTWFuYWdlck9uZS5jbGVhcigpOwogCiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmUtPmNhbkFj
cXVpcmVCYWNraW5nVGV4dHVyZSgpKTsKQEAgLTMxNyw3ICszMjEsNyBAQCBURVNUX0YoQ0NQcmlv
cml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTW92ZWRUb05ld01hbmFnZXIpCiAgICAgRVhQRUNU
X1RSVUUodGV4dHVyZS0+Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkpOwogICAgIEVYUEVDVF9U
UlVFKHRleHR1cmUtPmhhdmVCYWNraW5nVGV4dHVyZSgpKTsKIAotICAgIHRleHR1cmVNYW5hZ2Vy
VHdvLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CisgICAgdGV4dHVyZU1hbmFnZXJUd28t
PmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKIFRFU1RfRihDQ1ByaW9y
aXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1cmZhY2VzUmVkdWNlTWVtb3J5QXZhaWxhYmxlT3V0
c2lkZVJvb3RTdXJmYWNlKQpAQCAtMzYwLDcgKzM2NCw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVk
VGV4dHVyZVRlc3QsIHJlbmRlclN1cmZhY2VzUmVkdWNlTWVtb3J5QXZhaWxhYmxlT3V0c2lkZVJv
b3RTCiAgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXIt
Pm1lbW9yeUZvclJlbmRlclN1cmZhY2VzQnl0ZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVN
YW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRv
ZmZCeXRlcygpKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0
b3IoKSk7CisgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlk
ZXIoKSk7CiB9CiAKIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1cmZh
Y2VzUmVkdWNlTWVtb3J5QXZhaWxhYmxlRm9yUmVxdWVzdExhdGUpCkBAIC0zOTQsNyArMzk4LDcg
QEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VN
ZW1vcnlBdmFpbGFibGVGb3JSZXF1ZXN0TGEKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlT
aXplKDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yUmVuZGVyU3VyZmFjZXNCeXRlcygpKTsK
ICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVN
YW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAgdGV4dHVyZU1hbmFnZXIt
PmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJB
bGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKIH0KIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRU
ZXh0dXJlVGVzdCwgd2hlblJlbmRlclN1cmZhY2VOb3RBdmFpbGFibGVUZXh0dXJlc0Fsc29Ob3RB
dmFpbGFibGUpCkBAIC00MzEsNyArNDM1LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJl
VGVzdCwgd2hlblJlbmRlclN1cmZhY2VOb3RBdmFpbGFibGVUZXh0dXJlc0Fsc29Ob3RBdmEKICAg
ICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDIpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5
Rm9yUmVuZGVyU3VyZmFjZXNCeXRlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXIt
Pm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVz
KCkpOwogCi0gICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsK
KyAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUXVhZEN1bGxlclRlc3QuY3BwCmluZGV4IDYyNGQyNDcxMTQ5YWIwNmM2ODgyZDhkNmJjOGI5
OWM4ZjhlZjkyOWQuLjY3MzljYTMwNTkwNzRkNTA5Mzk2NDZkN2MxNmZkMGNmNzI1ZWI4M2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNw
cApAQCAtNzEsMTEgKzcxLDExIEBAIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+
IG1ha2VMYXllcihDQ1RpbGVkTGF5ZXJJbXBsKiBwYXJlbnQsIGNvbnN0IFdlCiAgICAgbGF5ZXIt
PnNldERyYXdPcGFjaXR5KG9wYWNpdHkpOwogICAgIGxheWVyLT5zZXRPcGFxdWUob3BhcXVlKTsK
IAotICAgIGludCB0ZXh0dXJlSWQgPSAxOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3Vy
Y2VJZCByZXNvdXJjZUlkID0gMTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbGVyLT5udW1U
aWxlc1goKTsgKytpKQogICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHRpbGVyLT5udW1UaWxl
c1koKTsgKytqKSB7CiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVPcGFxdWVSZWN0ID0gb3BhcXVl
ID8gdGlsZXItPnRpbGVCb3VuZHMoaSwgaikgOiBpbnRlcnNlY3Rpb24odGlsZXItPnRpbGVCb3Vu
ZHMoaSwgaiksIGxheWVyT3BhcXVlUmVjdCk7Ci0gICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQ
cm9wZXJ0aWVzKGksIGosIHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KHRleHR1cmVJZCsr
KSwgdGlsZU9wYXF1ZVJlY3QpOworICAgICAgICAgICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGll
cyhpLCBqLCByZXNvdXJjZUlkKyssIHRpbGVPcGFxdWVSZWN0KTsKICAgICAgICAgfQogCiAgICAg
aWYgKCFwYXJlbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0YWQ5OGVmMmRmYWQ4M2Q0
OGZmNDY0M2FlNDZlNmNkZGVlZjI5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwCkBAIC0wLDAgKzEsMzA0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9D
Q1Jlc291cmNlUHJvdmlkZXIuaCIKKworI2luY2x1ZGUgIkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhp
Y3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgorI2luY2x1
ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCituYW1lc3BhY2UgeworCitjbGFzcyBSZXNvdXJjZVByb3ZpZGVyQ29udGV4dCA6IHB1Ymxp
YyBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxSZXNvdXJjZVByb3ZpZGVyQ29udGV4dD4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRQdHIobmV3IFJlc291cmNlUHJvdmlkZXJDb250ZXh0KEF0dHJpYnV0ZXMoKSkpOyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgYmluZFRleHR1cmUoV0dDM0RlbnVtIHRhcmdldCwgV2ViR0xJZCB0
ZXh0dXJlKQorICAgIHsKKyAgICAgIEFTU0VSVCh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQpOworICAgICAgQVNTRVJUKCF0ZXh0dXJlIHx8IG1fdGV4dHVyZXMuZmluZCh0
ZXh0dXJlKSAhPSBtX3RleHR1cmVzLmVuZCgpKTsKKyAgICAgIG1fY3VycmVudFRleHR1cmUgPSB0
ZXh0dXJlOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIFdlYkdMSWQgY3JlYXRlVGV4dHVyZSgp
CisgICAgeworICAgICAgICBXZWJHTElkIGlkID0gQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBtX3RleHR1cmVzLmFkZChpZCwgbnVs
bHB0cik7CisgICAgICAgIHJldHVybiBpZDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlVGV4dHVyZShXZWJHTElkIGlkKQorICAgIHsKKyAgICAgICAgVGV4dHVyZU1hcDo6aXRlcmF0
b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQoaWQpOworICAgICAgICBBU1NFUlQoaXQgIT0gbV90ZXh0
dXJlcy5lbmQoKSk7CisgICAgICAgIG1fdGV4dHVyZXMucmVtb3ZlKGl0KTsKKyAgICAgICAgaWYg
KG1fY3VycmVudFRleHR1cmUgPT0gaWQpCisgICAgICAgICAgICBtX2N1cnJlbnRUZXh0dXJlID0g
MDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3RvcmFnZTJERVhUKFdHQzNEZW51bSB0
YXJnZXQsIFdHQzNEaW50IGxldmVscywgV0dDM0R1aW50IGludGVybmFsZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV0dDM0RpbnQgd2lkdGgsIFdHQzNEaW50IGhlaWdo
dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlKTsKKyAgICAgICAgQVNT
RVJUKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCk7CisgICAgICAgIEFT
U0VSVChsZXZlbHMgPT0gMSk7CisgICAgICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQTsgCisgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpIHsKKyAgICAg
ICAgY2FzZSBFeHRlbnNpb25zM0Q6OlJHQkE4X09FUzoKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEV4dGVuc2lvbnMzRENocm9taXVtOjpCR1JBOF9FWFQ6CisgICAgICAgICAgICBm
b3JtYXQgPSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBhbGxvY2F0ZVRleHR1cmUo
SW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgZm9ybWF0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgdGV4SW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVt
IGludGVybmFsZm9ybWF0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dD
M0RpbnQgYm9yZGVyLCBXR0MzRGVudW0gZm9ybWF0LCBXR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9p
ZCogcGl4ZWxzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmUpOworICAg
ICAgICBBU1NFUlQodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKTsKKyAg
ICAgICAgQVNTRVJUKCFsZXZlbCk7CisgICAgICAgIEFTU0VSVChpbnRlcm5hbGZvcm1hdCA9PSBm
b3JtYXQpOworICAgICAgICBBU1NFUlQoIWJvcmRlcik7CisgICAgICAgIEFTU0VSVCh0eXBlID09
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgYWxsb2NhdGVUZXh0
dXJlKEludFNpemUod2lkdGgsIGhlaWdodCksIGZvcm1hdCk7CisgICAgICAgIGlmIChwaXhlbHMp
CisgICAgICAgICAgICBzZXRQaXhlbHMoMCwgMCwgd2lkdGgsIGhlaWdodCwgcGl4ZWxzKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBX
R0MzRGludCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNldCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0Rz
aXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEZW51bSBmb3JtYXQsIFdHQzNEZW51
bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCisgICAgeworICAgICAgICBBU1NFUlQobV9jdXJy
ZW50VGV4dHVyZSk7CisgICAgICAgIEFTU0VSVCh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQpOworICAgICAgICBBU1NFUlQoIWxldmVsKTsKKyAgICAgICAgQVNTRVJUKG1f
dGV4dHVyZXMuZ2V0KG1fY3VycmVudFRleHR1cmUpKTsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVy
ZXMuZ2V0KG1fY3VycmVudFRleHR1cmUpLT5mb3JtYXQgPT0gZm9ybWF0KTsKKyAgICAgICAgQVNT
RVJUKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpOworICAgICAgICBB
U1NFUlQocGl4ZWxzKTsKKyAgICAgICAgc2V0UGl4ZWxzKHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIHBpeGVscyk7CisgICAgfQorCisgICAgdm9pZCBnZXRQaXhlbHMoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgV0dDM0RlbnVtIGZvcm1hdCwgdWludDhfdCogcGl4ZWxzKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmUpOworICAgICAgICBUZXh0dXJlKiB0ZXh0dXJl
ID0gbV90ZXh0dXJlcy5nZXQobV9jdXJyZW50VGV4dHVyZSk7CisgICAgICAgIEFTU0VSVCh0ZXh0
dXJlKTsKKyAgICAgICAgQVNTRVJUKHRleHR1cmUtPnNpemUgPT0gc2l6ZSk7CisgICAgICAgIEFT
U0VSVCh0ZXh0dXJlLT5mb3JtYXQgPT0gZm9ybWF0KTsKKyAgICAgICAgbWVtY3B5KHBpeGVscywg
dGV4dHVyZS0+ZGF0YS5nZXQoKSwgdGV4dHVyZVNpemUoc2l6ZSwgZm9ybWF0KSk7CisgICAgfQor
CisgICAgaW50IHRleHR1cmVDb3VudCgpCisgICAgeworICAgICAgICByZXR1cm4gbV90ZXh0dXJl
cy5zaXplKCk7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCB0ZXh0dXJlU2l6ZShjb25zdCBJ
bnRTaXplJiBzaXplLCBXR0MzRGVudW0gZm9ybWF0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQg
aW50IGNvbXBvbmVudHNQZXJQaXhlbCA9IDQ7CisgICAgICAgIHVuc2lnbmVkIGludCBieXRlc1Bl
ckNvbXBvbmVudCA9IDE7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0
QW5kVHlwZVBhcmFtZXRlcnMoZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllU
RSwgJmNvbXBvbmVudHNQZXJQaXhlbCwgJmJ5dGVzUGVyQ29tcG9uZW50KTsKKyAgICAgICAgcmV0
dXJuIHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgKiBjb21wb25lbnRzUGVyUGl4ZWwgKiBi
eXRlc1BlckNvbXBvbmVudDsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSZXNv
dXJjZVByb3ZpZGVyQ29udGV4dChjb25zdCBBdHRyaWJ1dGVzJiBhdHRycykKKyAgICAgICAgOiBD
b21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEKGF0dHJzKQorICAgICAgICAsIG1fY3Vy
cmVudFRleHR1cmUoMCkKKyAgICB7IH0KKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgVGV4dHVyZSB7
CisgICAgICAgIFRleHR1cmUoY29uc3QgSW50U2l6ZSYgc2l6ZV8sIFdHQzNEZW51bSBmb3JtYXRf
KQorICAgICAgICAgICAgOiBzaXplKHNpemVfKQorICAgICAgICAgICAgLCBmb3JtYXQoZm9ybWF0
XykKKyAgICAgICAgICAgICwgZGF0YShhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W3RleHR1cmVT
aXplKHNpemUsIGZvcm1hdCldKSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgSW50
U2l6ZSBzaXplOworICAgICAgICBXR0MzRGVudW0gZm9ybWF0OworICAgICAgICBPd25BcnJheVB0
cjx1aW50OF90PiBkYXRhOworICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB2
b2lkIGFsbG9jYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiBzaXplLCBXR0MzRGVudW0gZm9ybWF0
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmUpOworICAgICAgICBtX3Rl
eHR1cmVzLnNldChtX2N1cnJlbnRUZXh0dXJlLCBhZG9wdFB0cihuZXcgVGV4dHVyZShzaXplLCBm
b3JtYXQpKSk7CisgICAgfQorCisgICAgdm9pZCBzZXRQaXhlbHMoaW50IHhvZmZzZXQsIGludCB5
b2Zmc2V0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IHZvaWQqIHBpeGVscykKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlKTsKKyAgICAgICAgVGV4dHVyZSogdGV4
dHVyZSA9IG1fdGV4dHVyZXMuZ2V0KG1fY3VycmVudFRleHR1cmUpOworICAgICAgICBBU1NFUlQo
dGV4dHVyZSk7CisgICAgICAgIEFTU0VSVCh4b2Zmc2V0ID49IDAgJiYgeG9mZnNldCt3aWR0aCA8
PSB0ZXh0dXJlLT5zaXplLndpZHRoKCkpOworICAgICAgICBBU1NFUlQoeW9mZnNldCA+PSAwICYm
IHlvZmZzZXQraGVpZ2h0IDw9IHRleHR1cmUtPnNpemUuaGVpZ2h0KCkpOworICAgICAgICBBU1NF
UlQocGl4ZWxzKTsKKyAgICAgICAgc2l6ZV90IGluUGl0Y2ggPSB0ZXh0dXJlU2l6ZShJbnRTaXpl
KHdpZHRoLCAxKSwgdGV4dHVyZS0+Zm9ybWF0KTsKKyAgICAgICAgc2l6ZV90IG91dFBpdGNoID0g
dGV4dHVyZVNpemUoSW50U2l6ZSh0ZXh0dXJlLT5zaXplLndpZHRoKCksIDEpLCB0ZXh0dXJlLT5m
b3JtYXQpOworICAgICAgICB1aW50OF90KiBkZXN0ID0gdGV4dHVyZS0+ZGF0YS5nZXQoKSArIHlv
ZmZzZXQgKiBvdXRQaXRjaCArIHRleHR1cmVTaXplKEludFNpemUoeG9mZnNldCwgMSksIHRleHR1
cmUtPmZvcm1hdCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHNyYyA9IHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihwaXhlbHMpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdo
dDsgKytpKSB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwgc3JjLCBpblBpdGNoKTsKKyAgICAg
ICAgICAgIGRlc3QgKz0gb3V0UGl0Y2g7CisgICAgICAgICAgICBzcmMgKz0gaW5QaXRjaDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJHTElkLCBPd25QdHI8VGV4
dHVyZT4gPiBUZXh0dXJlTWFwOworICAgIFdlYkdMSWQgbV9jdXJyZW50VGV4dHVyZTsKKyAgICBU
ZXh0dXJlTWFwIG1fdGV4dHVyZXM7Cit9OworCitjbGFzcyBDQ1Jlc291cmNlUHJvdmlkZXJUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIENDUmVzb3VyY2VQcm92aWRl
clRlc3QoKQorICAgICAgICA6IG1fY29udGV4dChDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0Qo
UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OmNyZWF0ZSgpKSkKKyAgICAgICAgLCBtX3Jlc291cmNl
UHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKSkKKyAg
ICB7CisgICAgfQorCisgICAgUmVzb3VyY2VQcm92aWRlckNvbnRleHQqIGNvbnRleHQoKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxSZXNvdXJjZVByb3ZpZGVyQ29udGV4dCo+KG1fY29udGV4dC0+Y29u
dGV4dDNEKCkpOyB9CisKKyAgICB2b2lkIGdldFJlc291cmNlUGl4ZWxzKENDUmVzb3VyY2VQcm92
aWRlcjo6UmVzb3VyY2VJZCBpZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgV0dDM0RlbnVtIGZvcm1h
dCwgdWludDhfdCogcGl4ZWxzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgdGV4dHVyZSA9IG1f
cmVzb3VyY2VQcm92aWRlci0+YmVnaW5SZW5kZXJGcm9tKGlkKTsKKyAgICAgICAgQVNTRVJUX05F
KDBVLCB0ZXh0dXJlKTsKKyAgICAgICAgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAgIGNvbnRleHQoKS0+Z2V0UGl4
ZWxzKHNpemUsIGZvcm1hdCwgcGl4ZWxzKTsKKyAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5l
bmRSZW5kZXJGcm9tKGlkKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBPd25QdHI8Q0NHcmFw
aGljc0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBt
X3Jlc291cmNlUHJvdmlkZXI7Cit9OworCitURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwg
QmFzaWMpCit7CisgICAgSW50U2l6ZSBzaXplKDEsIDEpOworICAgIFdHQzNEZW51bSBmb3JtYXQg
PSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKKyAgICBpbnQgcG9vbCA9IDE7CisgICAgc2l6ZV90
IHBpeGVsU2l6ZSA9IFJlc291cmNlUHJvdmlkZXJDb250ZXh0Ojp0ZXh0dXJlU2l6ZShzaXplLCBm
b3JtYXQpOworICAgIEFTU0VSVF9FUSg0VSwgcGl4ZWxTaXplKTsKKworICAgIENDUmVzb3VyY2VQ
cm92aWRlcjo6UmVzb3VyY2VJZCBpZCA9IG1fcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3Vy
Y2UocG9vbCwgc2l6ZSwgZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OkFueSk7CisgICAgRVhQ
RUNUX0VRKDEsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworCisgICAgdWludDhfdCBkYXRh
WzRdID0gezEsIDIsIDMsIDR9OworICAgIEludFJlY3QgcmVjdChJbnRQb2ludCgpLCBzaXplKTsK
KyAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVwbG9hZChpZCwgZGF0YSwgcmVjdCwgcmVjdCwgcmVj
dCk7CisKKyAgICB1aW50OF90IHJlc3VsdFs0XSA9IHswfTsKKyAgICBnZXRSZXNvdXJjZVBpeGVs
cyhpZCwgc2l6ZSwgZm9ybWF0LCByZXN1bHQpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZGF0
YSwgcmVzdWx0LCBwaXhlbFNpemUpKTsKKworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRl
UmVzb3VyY2UoaWQpOworICAgIEVYUEVDVF9FUSgwLCBjb250ZXh0KCktPnRleHR1cmVDb3VudCgp
KTsKK30KKworVEVTVF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIERlbGV0ZU93bmVkUmVzb3Vy
Y2VzKQoreworICAgIEludFNpemUgc2l6ZSgxLCAxKTsKKyAgICBXR0MzRGVudW0gZm9ybWF0ID0g
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CisgICAgaW50IHBvb2wgPSAxOworCisgICAgY29uc3Qg
aW50IGNvdW50ID0gMzsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWRzW2Nv
dW50XSA9IHswfTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAg
IGlkc1tpXSA9IG1fcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UocG9vbCwgc2l6ZSwg
Zm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OkFueSk7CisgICAgRVhQRUNUX0VRKDMsIGNvbnRl
eHQoKS0+dGV4dHVyZUNvdW50KCkpOworCisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVP
d25lZFJlc291cmNlcyhwb29sKzEpOworICAgIEVYUEVDVF9FUSgzLCBjb250ZXh0KCktPnRleHR1
cmVDb3VudCgpKTsKKworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlT3duZWRSZXNvdXJj
ZXMocG9vbCk7CisgICAgRVhQRUNUX0VRKDAsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOwor
fQorCitURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVXBsb2FkKQoreworICAgIEludFNp
emUgc2l6ZSgyLCAyKTsKKyAgICBXR0MzRGVudW0gZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkE7CisgICAgaW50IHBvb2wgPSAxOworICAgIHNpemVfdCBwaXhlbFNpemUgPSBSZXNvdXJj
ZVByb3ZpZGVyQ29udGV4dDo6dGV4dHVyZVNpemUoc2l6ZSwgZm9ybWF0KTsKKyAgICBBU1NFUlRf
RVEoMTZVLCBwaXhlbFNpemUpOworCisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
IGlkID0gbV9yZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShwb29sLCBzaXplLCBmb3Jt
YXQsIENDUmVzb3VyY2VQcm92aWRlcjo6QW55KTsKKworICAgIHVpbnQ4X3QgaW1hZ2VbMTZdID0g
ezB9OworICAgIEludFJlY3QgaW1hZ2VSZWN0KEludFBvaW50KCksIHNpemUpOworICAgIG1fcmVz
b3VyY2VQcm92aWRlci0+dXBsb2FkKGlkLCBpbWFnZSwgaW1hZ2VSZWN0LCBpbWFnZVJlY3QsIGlt
YWdlUmVjdCk7CisKKyAgICBmb3IgKHVpbnQ4X3QgaSA9IDAgOyBpIDwgcGl4ZWxTaXplOyArK2kp
CisgICAgICAgIGltYWdlW2ldID0gaTsKKworICAgIHVpbnQ4X3QgcmVzdWx0WzE2XSA9IHswfTsK
KyAgICB7CisgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCgwLCAwLCAxLCAxKTsKKyAgICAgICAg
SW50UmVjdCBkZXN0UmVjdCgwLCAwLCAxLCAxKTsKKyAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVy
LT51cGxvYWQoaWQsIGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKwor
ICAgICAgICB1aW50OF90IGV4cGVjdGVkWzE2XSA9IHswLCAxLCAyLCAzLCAgIDAsIDAsIDAsIDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsICAgMCwgMCwgMCwg
MH07CisgICAgICAgIGdldFJlc291cmNlUGl4ZWxzKGlkLCBzaXplLCBmb3JtYXQsIHJlc3VsdCk7
CisgICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWQsIHJlc3VsdCwgcGl4ZWxTaXpl
KSk7CisgICAgfQorICAgIHsKKyAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0KDAsIDAsIDEsIDEp
OworICAgICAgICBJbnRSZWN0IGRlc3RSZWN0KDEsIDEsIDEsIDEpOworICAgICAgICBtX3Jlc291
cmNlUHJvdmlkZXItPnVwbG9hZChpZCwgaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVz
dFJlY3QpOworCisgICAgICAgIHVpbnQ4X3QgZXhwZWN0ZWRbMTZdID0gezAsIDEsIDIsIDMsICAg
MCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwg
ICAwLCAxLCAyLCAzfTsKKyAgICAgICAgZ2V0UmVzb3VyY2VQaXhlbHMoaWQsIHNpemUsIGZvcm1h
dCwgcmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZCwgcmVzdWx0
LCBwaXhlbFNpemUpKTsKKyAgICB9CisgICAgeworICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Qo
MSwgMCwgMSwgMSk7CisgICAgICAgIEludFJlY3QgZGVzdFJlY3QoMCwgMSwgMSwgMSk7CisgICAg
ICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dXBsb2FkKGlkLCBpbWFnZSwgaW1hZ2VSZWN0LCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCk7CisKKyAgICAgICAgdWludDhfdCBleHBlY3RlZFsxNl0gPSB7MCwg
MSwgMiwgMywgICAwLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
LCA1LCA2LCA3LCAgIDAsIDEsIDIsIDN9OworICAgICAgICBnZXRSZXNvdXJjZVBpeGVscyhpZCwg
c2l6ZSwgZm9ybWF0LCByZXN1bHQpOworICAgICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVj
dGVkLCByZXN1bHQsIHBpeGVsU2l6ZSkpOworICAgIH0KKworICAgIG1fcmVzb3VyY2VQcm92aWRl
ci0+ZGVsZXRlUmVzb3VyY2UoaWQpOworfQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Njb3BlZFRleHR1cmVUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY29wZWRUZXh0dXJlVGVzdC5jcHAKaW5kZXgg
NGQ0NjRlYTUxNDM4ZWE4M2Y3MDJlOWY1NjYzMGY1ZGIxZjdiNjZmYS4uOGEyNTgwNWRiNDI0ZTcy
OGNhYzY4ZTA3OTliNzczM2U5YjJhODJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1Njb3BlZFRleHR1cmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDU2NvcGVkVGV4dHVyZVRlc3QuY3BwCkBAIC0yNyw3ICsyNyw5IEBACiAj
aW5jbHVkZSAiY2MvQ0NTY29wZWRUZXh0dXJlLmgiCiAKICNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJU
ZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiRmFrZUNDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmVyLmgiCiAKICNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC0zOSw4ICs0MSw5IEBAIG5hbWVzcGFjZSB7CiAK
IFRFU1QoQ0NTY29wZWRUZXh0dXJlVGVzdCwgTmV3U2NvcGVkVGV4dHVyZSkKIHsKLSAgICBGYWtl
VGV4dHVyZUFsbG9jYXRvciBhbGxvY2F0b3I7Ci0gICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4g
dGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKCZhbGxvY2F0b3IpOworICAgIE93blB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dChjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRleHQo
KSk7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jl
c291cmNlUHJvdmlkZXI6OmNyZWF0ZShjb250ZXh0LmdldCgpKSk7CisgICAgT3duUHRyPENDU2Nv
cGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKHJlc291cmNlUHJv
dmlkZXIuZ2V0KCkpOwogCiAgICAgLy8gTmV3IHNjb3BlZCB0ZXh0dXJlcyBkbyBub3QgaG9sZCBh
IHRleHR1cmUgeWV0LgogICAgIEVYUEVDVF9FUSgwdSwgdGV4dHVyZS0+aWQoKSk7CkBAIC01Miw5
ICs1NSwxMCBAQCBURVNUKENDU2NvcGVkVGV4dHVyZVRlc3QsIE5ld1Njb3BlZFRleHR1cmUpCiAK
IFRFU1QoQ0NTY29wZWRUZXh0dXJlVGVzdCwgQ3JlYXRlU2NvcGVkVGV4dHVyZSkKIHsKLSAgICBG
YWtlVGV4dHVyZUFsbG9jYXRvciBhbGxvY2F0b3I7Ci0gICAgT3duUHRyPENDU2NvcGVkVGV4dHVy
ZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKCZhbGxvY2F0b3IpOwotICAgIHRl
eHR1cmUtPmFsbG9jYXRlKEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEp
OworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dChjcmVhdGVGYWtlQ0NHcmFw
aGljc0NvbnRleHQoKSk7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQ
cm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShjb250ZXh0LmdldCgpKSk7CisgICAg
T3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRl
KHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpOworICAgIHRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVy
ZXI6OkltcGxQb29sLCBJbnRTaXplKDMwLCAzMCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBD
Q1Jlc291cmNlUHJvdmlkZXI6OkFueSk7CiAKICAgICAvLyBUaGUgdGV4dHVyZSBoYXMgYW4gYWxs
b2NhdGVkIGJ5dGUtc2l6ZSBub3cuCiAgICAgc2l6ZV90IGV4cGVjdGVkQnl0ZXMgPSAzMCAqIDMw
ICogNDsKQEAgLTY1LDk1ICs2OSw1NiBAQCBURVNUKENDU2NvcGVkVGV4dHVyZVRlc3QsIENyZWF0
ZVNjb3BlZFRleHR1cmUpCiAgICAgRVhQRUNUX0VRKEludFNpemUoMzAsIDMwKSwgdGV4dHVyZS0+
c2l6ZSgpKTsKIH0KIAotLy8gRmFrZSBUZXh0dXJlQWxsb2NhdG9yIHRoYXQgdHJhY2tzIHRoZSBu
dW1iZXIgb2YgdGV4dHVyZXMgaW4gdXNlLgotY2xhc3MgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9y
IDogcHVibGljIFRleHR1cmVBbGxvY2F0b3IgewotcHVibGljOgotICAgIFRyYWNraW5nVGV4dHVy
ZUFsbG9jYXRvcigpCi0gICAgICAgIDogbV9uZXh0VGV4dHVyZUlkKDEpCi0gICAgICAgICwgbV9u
dW1UZXh0dXJlcygwKQotICAgIHsgfQotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0
dXJlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBHQzNEZW51bSkgT1ZFUlJJREUKLSAgICB7Ci0g
ICAgICAgIHVuc2lnbmVkIGlkID0gbV9uZXh0VGV4dHVyZUlkOwotICAgICAgICArK21fbmV4dFRl
eHR1cmVJZDsKLQotICAgICAgICBtX3RleHR1cmVzLnNldChpZCwgdHJ1ZSk7Ci0gICAgICAgICsr
bV9udW1UZXh0dXJlczsKLSAgICAgICAgcmV0dXJuIGlkOwotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
R0MzRGVudW0pIE9WRVJSSURFCi0gICAgewotICAgICAgICBpZiAoIW1fdGV4dHVyZXMuZ2V0KGlk
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX3RleHR1cmVzLnNldChpZCwgZmFs
c2UpOwotICAgICAgICAtLW1fbnVtVGV4dHVyZXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUFsbFRleHR1cmVzKCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIG1fdGV4dHVyZXMu
Y2xlYXIoKTsKLSAgICAgICAgbV9udW1UZXh0dXJlcyA9IDA7Ci0gICAgfQotCi0gICAgdW5zaWdu
ZWQgbnVtVGV4dHVyZXMoKSBjb25zdCB7IHJldHVybiBtX251bVRleHR1cmVzOyB9Ci0KLXByaXZh
dGU6Ci0gICAgdW5zaWduZWQgbV9uZXh0VGV4dHVyZUlkOwotICAgIEhhc2hNYXA8dW5zaWduZWQs
IGJvb2w+IG1fdGV4dHVyZXM7Ci0gICAgdW5zaWduZWQgbV9udW1UZXh0dXJlczsKLX07Ci0KIFRF
U1QoQ0NTY29wZWRUZXh0dXJlVGVzdCwgU2NvcGVkVGV4dHVyZUlzRGVsZXRlZCkKIHsKLSAgICBU
cmFja2luZ1RleHR1cmVBbGxvY2F0b3IgYWxsb2NhdG9yOworICAgIE93blB0cjxDQ0dyYXBoaWNz
Q29udGV4dD4gY29udGV4dChjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRleHQoKSk7CisgICAgT3du
UHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlk
ZXI6OmNyZWF0ZShjb250ZXh0LmdldCgpKSk7CiAKICAgICB7Ci0gICAgICAgIE93blB0cjxDQ1Nj
b3BlZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZSgmYWxsb2NhdG9y
KTsKKyAgICAgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4
dHVyZTo6Y3JlYXRlKHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogCi0gICAgICAgIEVYUEVDVF9F
USgwdSwgYWxsb2NhdG9yLm51bVRleHR1cmVzKCkpOwotICAgICAgICB0ZXh0dXJlLT5hbGxvY2F0
ZShJbnRTaXplKDMwLCAzMCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDB1LCByZXNvdXJjZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CisgICAgICAgIHRl
eHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBJbnRTaXplKDMwLCAzMCksIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBDQ1Jlc291cmNlUHJvdmlkZXI6OkFueSk7CiAgICAgICAg
IEVYUEVDVF9MVCgwdSwgdGV4dHVyZS0+aWQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgYWxs
b2NhdG9yLm51bVRleHR1cmVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIHJlc291cmNlUHJv
dmlkZXItPm51bVJlc291cmNlcygpKTsKICAgICB9CiAKLSAgICBFWFBFQ1RfRVEoMHUsIGFsbG9j
YXRvci5udW1UZXh0dXJlcygpKTsKKyAgICBFWFBFQ1RfRVEoMHUsIHJlc291cmNlUHJvdmlkZXIt
Pm51bVJlc291cmNlcygpKTsKIAogICAgIHsKLSAgICAgICAgT3duUHRyPENDU2NvcGVkVGV4dHVy
ZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKCZhbGxvY2F0b3IpOwotICAgICAg
ICBFWFBFQ1RfRVEoMHUsIGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKLSAgICAgICAgdGV4dHVy
ZS0+YWxsb2NhdGUoSW50U2l6ZSgzMCwgMzApLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7Cisg
ICAgICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6
OmNyZWF0ZShyZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDB1LCBy
ZXNvdXJjZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CisgICAgICAgIHRleHR1cmUtPmFsbG9j
YXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBJbnRTaXplKDMwLCAzMCksIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBLCBDQ1Jlc291cmNlUHJvdmlkZXI6OkFueSk7CiAgICAgICAgIEVYUEVDVF9MVCgw
dSwgdGV4dHVyZS0+aWQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgYWxsb2NhdG9yLm51bVRl
eHR1cmVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIHJlc291cmNlUHJvdmlkZXItPm51bVJl
c291cmNlcygpKTsKICAgICAgICAgdGV4dHVyZS0+ZnJlZSgpOwotICAgICAgICBFWFBFQ1RfRVEo
MHUsIGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDB1LCByZXNv
dXJjZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CiAgICAgfQogfQogCiBURVNUKENDU2NvcGVk
VGV4dHVyZVRlc3QsIExlYWtTY29wZWRUZXh0dXJlKQogewotICAgIFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvciBhbGxvY2F0b3I7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0
KGNyZWF0ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpKTsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVBy
b3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRl
eHQuZ2V0KCkpKTsKIAogICAgIHsKLSAgICAgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4
dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKCZhbGxvY2F0b3IpOworICAgICAgICBPd25Q
dHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUocmVz
b3VyY2VQcm92aWRlci5nZXQoKSk7CiAKLSAgICAgICAgRVhQRUNUX0VRKDB1LCBhbGxvY2F0b3Iu
bnVtVGV4dHVyZXMoKSk7Ci0gICAgICAgIHRleHR1cmUtPmFsbG9jYXRlKEludFNpemUoMzAsIDMw
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICBFWFBFQ1RfRVEoMHUsIHJlc291
cmNlUHJvdmlkZXItPm51bVJlc291cmNlcygpKTsKKyAgICAgICAgdGV4dHVyZS0+YWxsb2NhdGUo
Q0NSZW5kZXJlcjo6SW1wbFBvb2wsIEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6QW55KTsKICAgICAgICAgRVhQRUNUX0xUKDB1LCB0
ZXh0dXJlLT5pZCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBhbGxvY2F0b3IubnVtVGV4dHVy
ZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3Vy
Y2VzKCkpOwogCiAgICAgICAgIHRleHR1cmUtPmxlYWsoKTsKICAgICAgICAgRVhQRUNUX0VRKDB1
LCB0ZXh0dXJlLT5pZCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBhbGxvY2F0b3IubnVtVGV4
dHVyZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVz
b3VyY2VzKCkpOwogCiAgICAgICAgIHRleHR1cmUtPmZyZWUoKTsKICAgICAgICAgRVhQRUNUX0VR
KDB1LCB0ZXh0dXJlLT5pZCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBhbGxvY2F0b3IubnVt
VGV4dHVyZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgcmVzb3VyY2VQcm92aWRlci0+bnVt
UmVzb3VyY2VzKCkpOwogICAgIH0KIAotICAgIEVYUEVDVF9FUSgxdSwgYWxsb2NhdG9yLm51bVRl
eHR1cmVzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3Vy
Y2VzKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDVGlsZWRMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaWxlZExheWVySW1wbFRlc3QuY3BwCmluZGV4IDU4OGMwZmYwODMxYTI4OTM5M2Q5NzdiYTM4
NDZmOGEzMTg2MDIwYTQuLjFiMzg4OTg1MzJjNDkwMGQ4MmViMDdlYjk3Njk5ZDU3NWI5MTFhNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1w
bFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVy
SW1wbFRlc3QuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gY3JlYXRlTGF5ZXIoY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEkK
ICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5
ZXJTaXplKSk7CiAgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5KDEpOwogCi0gICAgaW50IHRleHR1
cmVJZCA9IDE7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQg
PSAxOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGlsZXItPm51bVRpbGVzWCgpOyArK2kpCiAg
ICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdGlsZXItPm51bVRpbGVzWSgpOyArK2opCi0gICAg
ICAgICAgICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHN0YXRpY19jYXN0PFBsYXRm
b3JtM0RPYmplY3Q+KHRleHR1cmVJZCsrKSwgSW50UmVjdCgwLCAwLCAxLCAxKSk7CisgICAgICAg
ICAgICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHJlc291cmNlSWQrKywgSW50UmVj
dCgwLCAwLCAxLCAxKSk7CiAKICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOwogfQpAQCAtMTQ0
LDcgKzE0NCw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykK
IAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXNYOyArK2kpCiAgICAgICAgIGZvciAo
aW50IGogPSAwOyBqIDwgbnVtVGlsZXNZOyArK2opCi0gICAgICAgICAgICBsYXllci0+cHVzaFRp
bGVQcm9wZXJ0aWVzKGksIGosIHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KDApLCBJbnRS
ZWN0KCkpOworICAgICAgICAgICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCAwLCBJ
bnRSZWN0KCkpOwogCiAgICAgLy8gQWxsIGNoZWNrZXJib2FyZGluZwogICAgIHsKQEAgLTIzOCw3
ICsyMzgsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCB0ZXh0dXJlSW5mb0ZvckxheWVy
Tm9Cb3JkZXJzKQogICAgICAgICBBU1NFUlRfRVEocXVhZHNbaV0tPm1hdGVyaWFsKCksIENDRHJh
d1F1YWQ6OlRpbGVkQ29udGVudCkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgICAgICBDQ1RpbGVE
cmF3UXVhZCogcXVhZCA9IHN0YXRpY19jYXN0PENDVGlsZURyYXdRdWFkKj4ocXVhZHNbaV0uZ2V0
KCkpOwogCi0gICAgICAgIEVYUEVDVF9ORShxdWFkLT50ZXh0dXJlSWQoKSwgMHUpIDw8IHF1YWRT
dHJpbmcgPDwgaTsKKyAgICAgICAgRVhQRUNUX05FKHF1YWQtPnJlc291cmNlSWQoKSwgMHUpIDw8
IHF1YWRTdHJpbmcgPDwgaTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWQtPnRleHR1cmVPZmZzZXQo
KSwgSW50UG9pbnQoKSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgICAgICBFWFBFQ1RfRVEocXVh
ZC0+dGV4dHVyZVNpemUoKSwgdGlsZVNpemUpIDw8IHF1YWRTdHJpbmcgPDwgaTsKICAgICAgICAg
RVhQRUNUX0VRKEludFJlY3QoMCwgMCwgMSwgMSksIHF1YWQtPm9wYXF1ZVJlY3QoKSkgPDwgcXVh
ZFN0cmluZyA8PCBpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKaW5kZXggMmQxNjAzZTQ4ODQyNGFlYzU3NDhlZWI0
NDdkMTk2MzQyNDhhMDM1OS4uNGVlMDU4MzIwMTBlZjkwM2Y2YmFiZGFiZjExYWVmZmRmN2JjMjhm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJU
ZXN0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRM
YXllclRlc3RDb21tb24uY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgRmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBGYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKQordm9p
ZCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ1Jlc291cmNl
UHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0
JikKIHsKLSAgICBpZiAoYWxsb2NhdG9yKQotICAgICAgICB0ZXh0dXJlKCktPmFjcXVpcmVCYWNr
aW5nVGV4dHVyZShhbGxvY2F0b3IpOworICAgIHRleHR1cmUoKS0+YmVnaW5SZW5kZXJUbyhyZXNv
dXJjZVByb3ZpZGVyKTsKKyAgICB0ZXh0dXJlKCktPmVuZFJlbmRlclRvKHJlc291cmNlUHJvdmlk
ZXIpOwogICAgIG1fbGF5ZXItPnVwZGF0ZVJlY3QoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaAppbmRleCBkZmQ0
NmQ5YzIzYjQ0NDhlNDZkZTlmMzhjMTg2ZGY2MjU3YzVkMzQ5Li5iZTY4MWQ3MWM5MjdlZTk4ZThj
ZTU5MTNmNzM5NDE2ZDM0NGNkMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIlRpbGVkTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaCIKKyNpbmNsdWRlICJj
Yy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgi
CiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogCkBAIC00OCw3ICs0OSw3IEBAIHB1
YmxpYzoKICAgICAgICAgVGV4dHVyZShGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25Q
dHI8V2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4
dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KFdlYkNvcmU6OkNDR3Jh
cGhpY3NDb250ZXh0KiwgV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvciogLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXIqICwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBPVkVSUklERTsKIAogICAgIHByaXZhdGU6CkBAIC0xNTAsMTcgKzE1MSwxMCBAQCBwcm90ZWN0
ZWQ6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2ZvcmNlZENvbnRlbnRCb3VuZHM7CiB9OwogCi1j
bGFzcyBGYWtlVGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlQWxsb2Nh
dG9yIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIEdDM0RlbnVtKSBPVkVSUklERSB7IHJldHVybiAxOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBHQzNEZW51bSkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbFRl
eHR1cmVzKCkgT1ZFUlJJREUgeyB9Ci19OwotCiBjbGFzcyBGYWtlVGV4dHVyZUNvcGllciA6IHB1
YmxpYyBXZWJDb3JlOjpUZXh0dXJlQ29waWVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQg
Y29weVRleHR1cmUoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQqLCB1bnNpZ25lZCwgdW5zaWdu
ZWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29weVRv
VGV4dHVyZShXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dCosIGNvbnN0IHZvaWQqLCB1bnNpZ25l
ZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEdDM0RlbnVtKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgY29weVRleHR1cmUodW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGZsdXNoKCkgeyB9CiB9OwogCiBjbGFzcyBGYWtlVGV4
dHVyZVVwbG9hZGVyIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVVcGxvYWRlciB7CkBAIC0xNjgs
NyArMTYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZW5kVXBsb2FkcygpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKFdl
YkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBXZWJDb3JlOjpMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBXZWJDb3JlOjpUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRv
ciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1
cmUoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgV2ViQ29y
ZTo6Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QgZGVzdFJlY3QpIHsgdGV4
dHVyZS0+dXBkYXRlUmVjdChyZXNvdXJjZVByb3ZpZGVyLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7
IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ29u
dGVudExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q29udGVudExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA3NTA0MTg1MzU2MGY1YzViMWZjMDJl
M2U4ZjZiZjgzZjUxZTBjZDQzLi5mY2ZjY2UxMTRjMWZmMDdjYTI0ZGQ3NzkzMjZhMjI3YWZhNDQy
MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NvbnRlbnRMYXll
ckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Db250
ZW50TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC05OSw3ICs5OSw3IEBAIFRFU1QoQ29udGVudExh
eWVyQ2hyb21pdW1UZXN0LCBDb250ZW50TGF5ZXJQYWludGVyV2l0aERldmljZVNjYWxlKQogICAg
IE9wYXF1ZVJlY3REcmF3aW5nR3JhcGhpY3NDb250ZXh0UGFpbnRlciBwYWludGVyKG9wYXF1ZVJl
Y3RJbkxheWVyU3BhY2UsIGNvbnRlbnRSZWN0KTsKICAgICBPcGFxdWVSZWN0VHJhY2tpbmdDb250
ZW50TGF5ZXJEZWxlZ2F0ZSBvcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZSgm
cGFpbnRlcik7CiAgICAgTW9ja0NvbnRlbnRMYXllckRlbGVnYXRlIGRlbGVnYXRlKCZvcGFxdWVS
ZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZSk7Ci0gICAgUmVmUHRyPEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI+IHVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKCZkZWxlZ2F0ZSksIGZh
bHNlKTsKKyAgICBSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gdXBkYXRl
ciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQ
YWludGVyOjpjcmVhdGUoJmRlbGVnYXRlKSk7CiAKICAgICBJbnRSZWN0IHJlc3VsdGluZ09wYXF1
ZVJlY3Q7CiAgICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRSZWN0LCBJbnRTaXpl
KDI1NiwgMjU2KSwgY29udGVudHNTY2FsZSwgY29udGVudHNTY2FsZSwgcmVzdWx0aW5nT3BhcXVl
UmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlQ0NHcmFw
aGljc0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMmY3MThmM2VjMjE1YjQ5ZjYzMjZhOTgwZGY1ODJm
YTg0MzFiZGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9GYWtlQ0NHcmFwaGljc0NvbnRleHQuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBGYWtlQ0NHcmFwaGljc0NvbnRleHRfaAorI2RlZmluZSBGYWtlQ0NHcmFwaGljc0NvbnRleHRf
aAorCisjaW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgorI2lu
Y2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dGF0aWMgaW5saW5lIFBhc3NPd25QdHI8V2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0
ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNDR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGUzRChDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpj
cmVhdGUoV2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEZha2VDQ0dyYXBoaWNzQ29udGV4dF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hy
b21pdW1UZXN0LmNwcAppbmRleCA5YzllYzI1YjAzZWQxMGI1MjkxMThmZTdjZTEwYmMzZDE0ZTFl
NDcxLi43OGFmZDZkYmE2NDc2ZWQwMzY0MDU5MDk1ZDI5OWUyNTBmNDg4YWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9t
aXVtVGVzdC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBGYWtlTGF5
ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIExheWVyUmVuZGVyZXJDaHJvbWl1bSB7CiBwdWJs
aWM6Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50KiBjbGll
bnQsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KSA6IExheWVyUmVuZGVyZXJDaHJvbWl1
bShjbGllbnQsIGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpIHsgfQorICAgIEZha2VMYXll
clJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBDQ1Jlc291cmNlUHJv
dmlkZXIqIHJlc291cmNlUHJvdmlkZXIpIDogTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwg
cmVzb3VyY2VQcm92aWRlciwgVW50aHJvdHRsZWRVcGxvYWRlcikgeyB9CiAKICAgICAvLyBMYXll
clJlbmRlcmVyQ2hyb21pdW0gbWV0aG9kcy4KIApAQCAtMTIyLDggKzEyMiw5IEBAIHByb3RlY3Rl
ZDoKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0KCkKICAgICAgICAgOiBtX3N1Z2dlc3RI
YXZlQmFja2J1ZmZlclllcygxLCB0cnVlKQogICAgICAgICAsIG1fc3VnZ2VzdEhhdmVCYWNrYnVm
ZmVyTm8oMSwgZmFsc2UpCi0gICAgICAgICwgbV9jb250ZXh0KGFkb3B0UHRyKG5ldyBGcmFtZUNv
dW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0KSkKLSAgICAgICAgLCBtX2xheWVy
UmVuZGVyZXJDaHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX2NvbnRleHQuZ2V0KCkpCisgICAgICAg
ICwgbV9jb250ZXh0KENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgRnJh
bWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCgpKSkpCisgICAgICAgICwg
bV9yZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5n
ZXQoKSkpCisgICAgICAgICwgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0oJm1fbW9ja0NsaWVudCwg
bV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKQogICAgIHsKICAgICB9CiAKQEAgLTE0MywxMSArMTQ0
LDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0uc3dhcEJ1
ZmZlcnMoSW50UmVjdCgpKTsKICAgICB9CiAKKyAgICBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2Nh
dGlvblNldHRpbmdDb250ZXh0KiBjb250ZXh0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RnJhbWVD
b3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCo+KG1fY29udGV4dC0+Y29udGV4
dDNEKCkpOyB9CisKICAgICBXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb24gbV9zdWdnZXN0SGF2
ZUJhY2tidWZmZXJZZXM7CiAgICAgV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9uIG1fc3VnZ2Vz
dEhhdmVCYWNrYnVmZmVyTm87CiAKLSAgICBPd25QdHI8RnJhbWVDb3VudGluZ01lbW9yeUFsbG9j
YXRpb25TZXR0aW5nQ29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29u
dGV4dD4gbV9jb250ZXh0OwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1fbW9ja0NsaWVudDsK
KyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBtX3Jlc291cmNlUHJvdmlkZXI7CiAgICAg
RmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bTsKICAgICBD
Q1Njb3BlZFNldHRpbmdzIG1fc2NvcGVkU2V0dGluZ3M7CiB9OwpAQCAtMTU3LDEyICsxNjEsMTIg
QEAgcHJvdGVjdGVkOgogLy8gRXhwZWN0ZWQ6IGl0IGRvZXMgbm90aGluZy4KIFRFU1RfRihMYXll
clJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlclllc1doZW5JdEFscmVhZHlF
eGlzdHNTaG91bGREb05vdGhpbmcpCiB7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0
aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyWWVzKTsKKyAgICBjb250ZXh0KCktPnNldE1lbW9y
eUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJZZXMpOwogICAgIEVYUEVDVF9FUSgw
LCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogICAgIEVYUEVD
VF9GQUxTRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkp
OwogCiAgICAgc3dhcEJ1ZmZlcnMoKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9jb250ZXh0LT5mcmFt
ZUNvdW50KCkpOworICAgIEVYUEVDVF9FUSgxLCBjb250ZXh0KCktPmZyYW1lQ291bnQoKSk7CiB9
CiAKIC8vIFRlc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtIGRpc2NhcmRGcmFtZWJ1ZmZlciBmdW5j
dGlvbmFsaXR5OgpAQCAtMTcxLDcgKzE3NSw3IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21p
dW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlclllc1doZW5JdEFscmVhZHlFeGlzdHNTaG91bGRECiBU
RVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb1Nob3Vs
ZERpc2NhcmRCYWNrYnVmZmVyQW5kRGFtYWdlUm9vdExheWVyV2hpbGVOb3RWaXNpYmxlKQogewog
ICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUoZmFsc2UpOwotICAgIG1fY29u
dGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAg
ICBjb250ZXh0KCktPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJO
byk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdl
Q291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFt
ZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIH0KQEAgLTE4Miw3ICsxODYsNyBAQCBURVNUX0YoTGF5ZXJS
ZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb1Nob3VsZERpc2NhcmRCYWNr
YnVmZmVyQW5kRAogVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RCYWNr
YnVmZmVyTm9Eb05vdGhpbmdXaGVuVmlzaWJsZSkKIHsKICAgICBtX2xheWVyUmVuZGVyZXJDaHJv
bWl1bS5zZXRWaXNpYmxlKHRydWUpOwotICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlv
bihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAgICBjb250ZXh0KCktPnNldE1lbW9yeUFs
bG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CiAgICAgRVhQRUNUX0VRKDAsIG1f
bW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAgICAgRVhQRUNUX0ZB
TFNFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiB9
CkBAIC0xOTQsMTEgKzE5OCwxMSBAQCBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwg
U3VnZ2VzdEJhY2tidWZmZXJOb0RvTm90aGluZ1doZW5WaXNpYmxlKQogVEVTVF9GKExheWVyUmVu
ZGVyZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RCYWNrYnVmZmVyTm9XaGVuSXREb2VzbnRFeGlzdFNo
b3VsZERvTm90aGluZykKIHsKICAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5zZXRWaXNpYmxl
KGZhbHNlKTsKLSAgICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2
ZUJhY2tidWZmZXJObyk7CisgICAgY29udGV4dCgpLT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3Vn
Z2VzdEhhdmVCYWNrYnVmZmVyTm8pOwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDbGllbnQuc2V0
RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5k
ZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAKLSAgICBtX2NvbnRleHQt
PnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CisgICAgY29u
dGV4dCgpLT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOwog
ICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50
KCkpOwogICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmlzRnJhbWVidWZm
ZXJEaXNjYXJkZWQoKSk7CiB9CkBAIC0yMDksNyArMjEzLDcgQEAgVEVTVF9GKExheWVyUmVuZGVy
ZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RCYWNrYnVmZmVyTm9XaGVuSXREb2VzbnRFeGlzdFNob3Vs
ZERvTm8KIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBEaXNjYXJkZWRCYWNrYnVm
ZmVySXNSZWNyZWF0ZWRGb3JTY29wZUR1cmF0aW9uKQogewogICAgIG1fbGF5ZXJSZW5kZXJlckNo
cm9taXVtLnNldFZpc2libGUoZmFsc2UpOwotICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2Nh
dGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAgICBjb250ZXh0KCktPnNldE1lbW9y
eUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CiAgICAgRVhQRUNUX1RSVUUo
bV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKICAgICBF
WFBFQ1RfRVEoMSwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsK
IApAQCAtMjE4LDEzICsyMjIsMTMgQEAgVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Qs
IERpc2NhcmRlZEJhY2tidWZmZXJJc1JlY3JlYXRlZEZvclNjb3BlRHVyYXRpb24KICAgICBFWFBF
Q1RfRkFMU0UobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgp
KTsKIAogICAgIHN3YXBCdWZmZXJzKCk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fY29udGV4dC0+ZnJh
bWVDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMSwgY29udGV4dCgpLT5mcmFtZUNvdW50KCkpOwog
fQogCiBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgRnJhbWVidWZmZXJEaXNjYXJk
ZWRBZnRlclJlYWRiYWNrV2hlbk5vdFZpc2libGUpCiB7CiAgICAgbV9sYXllclJlbmRlcmVyQ2hy
b21pdW0uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0
aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOworICAgIGNvbnRleHQoKS0+c2V0TWVtb3J5
QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfVFJVRSht
X2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogICAgIEVY
UEVDVF9FUSgxLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwog
CkBAIC0zMDgsOCArMzEyLDkgQEAgVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5p
dGlhbGl6YXRpb25Eb2VzTm90TWFrZVN5bmNocm9ub3VzQ2FsbHMpCiB7CiAgICAgQ0NTY29wZWRT
ZXR0aW5ncyBzY29wZWRTZXR0aW5nczsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xp
ZW50OwotICAgIE93blB0cjxXZWJHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChhZG9wdFB0cihu
ZXcgRm9yYmlkU3luY2hyb25vdXNDYWxsQ29udGV4dCkpOwotICAgIEZha2VMYXllclJlbmRlcmVy
Q2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0LmdldCgp
KTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQoQ0NHcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0NhbGxDb250ZXh0KSkp
OworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IHJlc291cmNlUHJvdmlkZXIoQ0NSZXNv
dXJjZVByb3ZpZGVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSkpOworICAgIEZha2VMYXllclJlbmRl
cmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCByZXNvdXJjZVBy
b3ZpZGVyLmdldCgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGxheWVyUmVuZGVyZXJDaHJvbWl1bS5p
bml0aWFsaXplKCkpOwogfQpAQCAtMzUxLDggKzM1Niw5IEBAIFRFU1QoTGF5ZXJSZW5kZXJlckNo
cm9taXVtVGVzdDIsIGluaXRpYWxpemF0aW9uV2l0aFF1aWNrbHlMb3N0Q29udGV4dERvZXNOb3RB
c3NlCiB7CiAgICAgQ0NTY29wZWRTZXR0aW5ncyBzY29wZWRTZXR0aW5nczsKICAgICBGYWtlQ0NS
ZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwotICAgIE93blB0cjxXZWJHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dChhZG9wdFB0cihuZXcgTG9zZUNvbnRleHRPbkZpcnN0R2V0Q29udGV4dCkpOwot
ICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2Nr
Q2xpZW50LCBjb250ZXh0LmdldCgpKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNv
bnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBMb3NlQ29udGV4
dE9uRmlyc3RHZXRDb250ZXh0KSkpOworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IHJl
c291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSkp
OworICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZt
b2NrQ2xpZW50LCByZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKIAogICAgIGxheWVyUmVuZGVyZXJD
aHJvbWl1bS5pbml0aWFsaXplKCk7CiB9CkBAIC0zNzIsOCArMzc4LDkgQEAgcHVibGljOgogVEVT
VChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlhbGl6YXRpb25XaXRob3V0R3B1TWVt
b3J5TWFuYWdlckV4dGVuc2lvblN1cHBvcnRTaG91bGREZWZhdWx0VG9Ob25aZXJvQWxsb2NhdGlv
bikKIHsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwotICAgIE93blB0cjxX
ZWJHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChhZG9wdFB0cihuZXcgQ29udGV4dFRoYXREb2Vz
Tm90U3VwcG9ydE1lbW9yeU1hbmFnbWVudEV4dGVuc2lvbnMpKTsKLSAgICBGYWtlTGF5ZXJSZW5k
ZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgY29udGV4dC5n
ZXQoKSk7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KENDR3JhcGhpY3ND
b250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgQ29udGV4dFRoYXREb2VzTm90U3VwcG9ydE1l
bW9yeU1hbmFnbWVudEV4dGVuc2lvbnMpKSk7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRl
cj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShjb250ZXh0Lmdl
dCgpKSk7CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21p
dW0oJm1vY2tDbGllbnQsIHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogCiAgICAgbGF5ZXJSZW5k
ZXJlckNocm9taXVtLmluaXRpYWxpemUoKTsKIApAQCAtMzk4LDggKzQwNSwxMCBAQCBwcml2YXRl
OgogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0Miwgb3BhcXVlQmFja2dyb3VuZCkKIHsK
ICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwotICAgIE93blB0cjxDbGVhckNv
dW50aW5nQ29udGV4dD4gY29udGV4dChhZG9wdFB0cihuZXcgQ2xlYXJDb3VudGluZ0NvbnRleHQp
KTsKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgm
bW9ja0NsaWVudCwgY29udGV4dC5nZXQoKSk7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0
PiBjY0NvbnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBDbGVh
ckNvdW50aW5nQ29udGV4dCkpKTsKKyAgICBDbGVhckNvdW50aW5nQ29udGV4dCogY29udGV4dCA9
IHN0YXRpY19jYXN0PENsZWFyQ291bnRpbmdDb250ZXh0Kj4oY2NDb250ZXh0LT5jb250ZXh0M0Qo
KSk7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jl
c291cmNlUHJvdmlkZXI6OmNyZWF0ZShjY0NvbnRleHQuZ2V0KCkpKTsKKyAgICBGYWtlTGF5ZXJS
ZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgcmVzb3Vy
Y2VQcm92aWRlci5nZXQoKSk7CiAKICAgICBtb2NrQ2xpZW50LnJvb3RSZW5kZXJQYXNzKCktPnNl
dEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChmYWxzZSk7CiAKQEAgLTQyMSw4ICs0MzAsMTAgQEAg
VEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0Miwgb3BhcXVlQmFja2dyb3VuZCkKIFRFU1Qo
TGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIHRyYW5zcGFyZW50QmFja2dyb3VuZCkKIHsKICAg
ICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwotICAgIE93blB0cjxDbGVhckNvdW50
aW5nQ29udGV4dD4gY29udGV4dChhZG9wdFB0cihuZXcgQ2xlYXJDb3VudGluZ0NvbnRleHQpKTsK
LSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9j
a0NsaWVudCwgY29udGV4dC5nZXQoKSk7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBj
Y0NvbnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBDbGVhckNv
dW50aW5nQ29udGV4dCkpKTsKKyAgICBDbGVhckNvdW50aW5nQ29udGV4dCogY29udGV4dCA9IHN0
YXRpY19jYXN0PENsZWFyQ291bnRpbmdDb250ZXh0Kj4oY2NDb250ZXh0LT5jb250ZXh0M0QoKSk7
CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291
cmNlUHJvdmlkZXI6OmNyZWF0ZShjY0NvbnRleHQuZ2V0KCkpKTsKKyAgICBGYWtlTGF5ZXJSZW5k
ZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSk7CiAKICAgICBtb2NrQ2xpZW50LnJvb3RSZW5kZXJQYXNzKCktPnNldEhh
c1RyYW5zcGFyZW50QmFja2dyb3VuZCh0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcAppbmRleCBiM2VmNGMyZWJlZmI4NGQx
ZTcyMzRiNTM0NjUxOGMwNTZlOTk3YjNkLi4wZjU2ZWQ5Y2M1N2E2MDI3NjEwMzVhNjgxMDU3NjU1
ZGM0ZWJhN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1
cmVDb3BpZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1
cmVDb3BpZXJUZXN0LmNwcApAQCAtNTIsMzQgKzUyLDMzIEBAIHB1YmxpYzoKIFRFU1QoVGV4dHVy
ZUNvcGllclRlc3QsIHRlc3REcmF3QXJyYXlzQ29weSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyBhdHRyczsKLSAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29u
dGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgTW9ja0NvbnRl
eHQpKTsKLSAgICBNb2NrQ29udGV4dCYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nhc3Q8TW9ja0Nv
bnRleHQqPihjY0NvbnRleHQtPmNvbnRleHQzRCgpKTsKKyAgICBPd25QdHI8TW9ja0NvbnRleHQ+
IG1vY2tDb250ZXh0ID0gYWRvcHRQdHIobmV3IE1vY2tDb250ZXh0KTsKIAogICAgIHsKICAgICAg
ICAgSW5TZXF1ZW5jZSBzZXF1ZW5jZTsKIAogICAgICAgICAvLyBIZXJlIHdlIGNoZWNrIGp1c3Qg
c29tZSBlc3NlbnRpYWwgcHJvcGVydGllcyBvZiBjb3B5VGV4dHVyZSgpIHRvIGF2b2lkIG1pcnJv
cmluZyB0aGUgZnVsbCBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgRVhQRUNUX0NBTEwobW9ja0Nv
bnRleHQsIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIF8p
KTsKKyAgICAgICAgRVhQRUNUX0NBTEwoKm1vY2tDb250ZXh0LCBiaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBfKSk7CiAKICAgICAgICAgLy8gTWFrZSBzdXJl
IGxpbmVhciBmaWx0ZXJpbmcgaXMgZGlzYWJsZWQgZHVyaW5nIHRoZSBjb3B5LgotICAgICAgICBF
WFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKLSAgICAgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQs
IHRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7
CisgICAgICAgIEVYUEVDVF9DQUxMKCptb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKKyAgICAgICAgRVhQRUNUX0NBTEwo
Km1vY2tDb250ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQz
RDo6TkVBUkVTVCkpOwogCi0gICAgICAgIEVYUEVDVF9DQUxMKG1vY2tDb250ZXh0LCBkcmF3QXJy
YXlzKF8sIF8sIF8pKTsKKyAgICAgICAgRVhQRUNUX0NBTEwoKm1vY2tDb250ZXh0LCBkcmF3QXJy
YXlzKF8sIF8sIF8pKTsKIAogICAgICAgICAvLyBMaW5lYXIgZmlsdGVyaW5nIHNob3VsZCBiZSBy
ZXN0b3JlZC4KLSAgICAgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIHRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAgICAgRVhQRUNU
X0NBTEwobW9ja0NvbnRleHQsIHRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVIpKTsKKyAgICAgICAgRVhQRUNUX0NBTEwoKm1vY2tDb250ZXh0LCB0ZXhQ
YXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAg
ICAgIEVYUEVDVF9DQUxMKCptb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwogCiAgICAgICAgIC8vIERlZmF1bHQgZnJhbWVi
dWZmZXIgc2hvdWxkIGJlIHJlc3RvcmVkCi0gICAgICAgIEVYUEVDVF9DQUxMKG1vY2tDb250ZXh0
LCBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7Cisg
ICAgICAgIEVYUEVDVF9DQUxMKCptb2NrQ29udGV4dCwgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOwogICAgIH0KIAogICAgIGludCBzb3VyY2VUZXh0
dXJlSWQgPSAxOwogICAgIGludCBkZXN0VGV4dHVyZUlkID0gMjsKICAgICBJbnRTaXplIHNpemUo
MjU2LCAxMjgpOwotICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IGNvcGllcihB
Y2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShjY0NvbnRleHQtPmNvbnRleHQzRCgpLCBm
YWxzZSkpOwotICAgIGNvcGllci0+Y29weVRleHR1cmUoY2NDb250ZXh0LmdldCgpLCBzb3VyY2VU
ZXh0dXJlSWQsIGRlc3RUZXh0dXJlSWQsIHNpemUpOworICAgIE93blB0cjxBY2NlbGVyYXRlZFRl
eHR1cmVDb3BpZXI+IGNvcGllcihBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShtb2Nr
Q29udGV4dC5nZXQoKSwgZmFsc2UpKTsKKyAgICBjb3BpZXItPmNvcHlUZXh0dXJlKHNvdXJjZVRl
eHR1cmVJZCwgZGVzdFRleHR1cmVJZCwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5jcHAK
aW5kZXggZDUzMTNmNWRjMjM1MGExZTg4ODk2NGUxMmRlZWI1NTgzMmYyZjg3MC4uNTMwMTMxZjA0
NDZiZTMzYTM4M2YzMmZlNzU5MDgyMjZjMzg2YzNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlTWFuYWdlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNwcApAQCAtMjUsOCArMjUsMTAg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21t
b24uaCIKKyNpbmNsdWRlICJGYWtlQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJNYW5h
Z2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCisjaW5jbHVkZSAiY2Mv
Q0NSZW5kZXJlci5oIgogCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIApAQCAtNDEsNiArNDMs
OCBAQCBwdWJsaWM6CiAgICAgVGV4dHVyZU1hbmFnZXJUZXN0KCkKICAgICAgICAgOiBtX3RleHR1
cmVTaXplKDI1NiwgMjU2KQogICAgICAgICAsIG1fdGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSkKKyAgICAgICAgLCBtX2NvbnRleHQoV2ViS2l0OjpjcmVhdGVGYWtlQ0NHcmFw
aGljc0NvbnRleHQoKSkKKyAgICAgICAgLCBtX3Jlc291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKSkKICAgICB7CiAgICAgfQogCkBAIC01NSwy
MSArNTksMjIgQEAgcHVibGljOgogCiAgICAgUGFzc093blB0cjxUZXh0dXJlTWFuYWdlcj4gY3Jl
YXRlVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heFRleHR1cmVzLCBzaXplX3QgcHJlZmVycmVkVGV4
dHVyZXMpCiAgICAgewotICAgICAgICByZXR1cm4gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSh0ZXh0
dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVk
VGV4dHVyZXMpLCAxMDI0KTsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
dGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZXNNZW1vcnlTaXplKHByZWZl
cnJlZFRleHR1cmVzKSwgMTAyNCwgQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIENDUmVzb3VyY2VQcm92
aWRlcjo6QW55KTsKICAgICB9CiAKICAgICBib29sIHJlcXVlc3RUZXh0dXJlKFRleHR1cmVNYW5h
Z2VyKiBtYW5hZ2VyLCBUZXh0dXJlVG9rZW4gdG9rZW4pCiAgICAgewogICAgICAgICBib29sIHJl
c3VsdCA9IG1hbmFnZXItPnJlcXVlc3RUZXh0dXJlKHRva2VuLCBtX3RleHR1cmVTaXplLCBtX3Rl
eHR1cmVGb3JtYXQpOwogICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgbWFuYWdlci0+
YWxsb2NhdGVUZXh0dXJlKCZtX2Zha2VUZXh0dXJlQWxsb2NhdG9yLCB0b2tlbik7CisgICAgICAg
ICAgICBtYW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCB0
b2tlbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEZh
a2VUZXh0dXJlQWxsb2NhdG9yIG1fZmFrZVRleHR1cmVBbGxvY2F0b3I7CiAgICAgY29uc3QgSW50
U2l6ZSBtX3RleHR1cmVTaXplOwogICAgIGNvbnN0IEdDM0RlbnVtIG1fdGV4dHVyZUZvcm1hdDsK
KyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBPd25QdHI8Q0NS
ZXNvdXJjZVByb3ZpZGVyPiBtX3Jlc291cmNlUHJvdmlkZXI7CiB9OwogCiBURVNUX0YoVGV4dHVy
ZU1hbmFnZXJUZXN0LCByZXF1ZXN0VGV4dHVyZUluUHJlZmVycmVkTGltaXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNw
cAppbmRleCAzMWNmNjcyNWUxMzI4NGQwNGI3ZGZhMjc0YzgzYmVmNzVjOTZmMDZhLi40ZGViMmRm
MjNmYWJlMDRkZGEwY2JiM2Q5YWIyNTBkYjhmNWUzMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21tb24uaCIKICNpbmNsdWRl
ICJDQ0xheWVyVHJlZVRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29t
bW9uLmgiCisjaW5jbHVkZSAiRmFrZUNDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiRmFr
ZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVt
LmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgpAQCAtNzIsMjkgKzczLDMyIEBAIHByaXZh
dGU6CiAKIGNsYXNzIFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiBwdWJsaWM6Ci0gICAgVGlsZWRMYXllckNocm9taXVtVGVzdCgpIDogY2NDb250ZXh0KEND
R3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChXZWJLaXQ6OkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzKCkpKSkgeyB9CisgICAgVGlsZWRMYXllckNocm9taXVtVGVzdCgpCisgICAgICAgIDogbV9j
b250ZXh0KFdlYktpdDo6Y3JlYXRlRmFrZUNDR3JhcGhpY3NDb250ZXh0KCkpCisgICAgICAgICwg
bV9yZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5n
ZXQoKSkpCisgICAgeworICAgIH0KKwogICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QoKSB7IH0KIAogICAgIHZvaWQgdXBkYXRlVGV4dHVyZXMoaW50IGNvdW50ID0gNTAwKQogICAg
IHsKLSAgICAgICAgdXBkYXRlci51cGRhdGUoY2NDb250ZXh0LmdldCgpLCAmYWxsb2NhdG9yLCAm
Y29waWVyLCAmdXBsb2FkZXIsIGNvdW50KTsKKyAgICAgICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jl
c291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGNvdW50KTsKICAg
ICB9CiBwdWJsaWM6Ci0gICAgLy8gRklYTUU6IFJlbmFtZSB0aGVzZSB0byBhZGQgIm1fIi4KLSAg
ICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dDsKLSAgICBDQ1RleHR1cmVVcGRh
dGVyIHVwZGF0ZXI7Ci0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgYWxsb2NhdG9yOwotICAgIEZh
a2VUZXh0dXJlQ29waWVyIGNvcGllcjsKLSAgICBGYWtlVGV4dHVyZVVwbG9hZGVyIHVwbG9hZGVy
OwotICAgIENDUHJpb3JpdHlDYWxjdWxhdG9yIHByaW9yaXR5Q2FsY3VsYXRvcjsKKyAgICBPd25Q
dHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVBy
b3ZpZGVyPiBtX3Jlc291cmNlUHJvdmlkZXI7CisgICAgQ0NUZXh0dXJlVXBkYXRlciBtX3VwZGF0
ZXI7CisgICAgRmFrZVRleHR1cmVDb3BpZXIgbV9jb3BpZXI7CisgICAgRmFrZVRleHR1cmVVcGxv
YWRlciBtX3VwbG9hZGVyOworICAgIENDUHJpb3JpdHlDYWxjdWxhdG9yIG1fcHJpb3JpdHlDYWxj
dWxhdG9yOwogfTsKIAogCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGly
dHlUaWxlcykKIHsKLSAgICBDQ1ByaW9yaXR5Q2FsY3VsYXRvciBwcmlvcml0eUNhbGN1bGF0b3I7
Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7
CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwg
Q0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9t
aXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVN
YW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3
IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC0xMDQsMTAgKzEwOCwxMCBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPnNldFZp
c2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKLSAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsK
ICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CiAKQEAgLTExOCw5ICsxMjIsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgLy8gSW52YWxpZGF0ZXMgYm90aCB0aWxlcy4u
LgogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOwogICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KLSAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKKyAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7
CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8v
IFdlIHNob3VsZCBvbmx5IGhhdmUgdGhlIGZpcnN0IHRpbGUgc2luY2UgdGhlIG90aGVyIHRpbGUg
d2FzIGludmFsaWRhdGVkIGJ1dCBub3QgcGFpbnRlZC4KQEAgLTEzMCw4ICsxMzQsNyBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAKIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVkZWREaXJ0eVRpbGVzKQogewotICAgIENDUHJp
b3JpdHlDYWxjdWxhdG9yIHByaW9yaXR5Q2FsY3VsYXRvcjsKLSAgICBPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9v
bCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYo
bmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGls
ZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwo
MSkpKTsKQEAgLTE0MywxMCArMTQ2LDEwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwdXNoT2NjbHVkZWREaXJ0eVRpbGVzKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJl
Y3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVu
dFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKDApOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIs
IEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAmb2NjbHVkZWQp
OwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsLmdldCgpKTsKIApAQCAtMTYyLDcgKzE2NSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBwdXNoT2NjbHVkZWREaXJ0eVRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRl
Q29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICAvLyAuLi4uYnV0IHRoZSBh
cmVhIGlzIG9jY2x1ZGVkLgogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDUwLCA1MCkpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKICAgICB1
cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5n
ZXQoKSk7CiAKQEAgLTE3Nyw3ICsxODAsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hEZWxldGVkVGlsZXMpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJl
ZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGls
ZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC0x
ODcsMTAgKzE5MCwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0
ZWRUaWxlcykKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwg
MTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwg
MCwgMTAwLCAyMDApKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5
Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsK
IAotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5
ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMTk5LDcgKzIwMiw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAg
IEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsKIAogICAgIHRleHR1cmVN
YW5hZ2VyLT5jbGVhclByaW9yaXRpZXMoKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxN
ZW1vcnkoJmFsbG9jYXRvcik7CisgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KG1f
cmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9y
eUxpbWl0Qnl0ZXMoNCoxMDI0KjEwMjQpOwogCiAgICAgLy8gVGhpcyBzaG91bGQgZHJvcCB0aGUg
dGlsZXMgb24gdGhlIGltcGwgdGhyZWFkLgpAQCAtMjEwLDkgKzIxMyw5IEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAgIEVYUEVDVF9GQUxTRShs
YXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CiAKICAgICAvLyBUaGlzIHNob3VsZCByZWNyZWF0
ZSBhbmQgdXBkYXRlIHRoZSBkZWxldGVkIHRleHR1cmVzLgotICAgIGxheWVyLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygwKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICB1cGRhdGVUZXh0
dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAK
QEAgLTIyMyw3ICsyMjYsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERl
bGV0ZWRUaWxlcykKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFp
bnRUaWxlcykKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCox
MDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCox
MDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxl
ZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21p
dW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChh
ZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTIzOCwxMCArMjQxLDEw
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAg
ICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdCh2aXNpYmxlUmVjdCk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKLSAgICBsYXllci0+c2V0VGV4
dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoMCk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBk
YXRlciwgdmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3Vw
ZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogCiAgICAgLy8g
V2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRpbGVzIGluIHRoZSBjZW50ZXIu
CkBAIC0yNTQsMTAgKzI1NywxMCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVz
aElkbGVQYWludFRpbGVzKQogCiAgICAgLy8gRm9yIHRoZSBuZXh0IGZvdXIgdXBkYXRlcywgd2Ug
c2hvdWxkIGRldGVjdCB3ZSBzdGlsbCBuZWVkIGlkbGUgcGFpbnRpbmcuCiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCA0OyBpKyspIHsKLSAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoMCk7CiAKLSAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0
ZXIsIHZpc2libGVSZWN0LCAwKTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1f
dXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVl
ZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAg
ICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKQEAgLTI4MSw3
ICsyODQsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRp
bGVzKQogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBh
aW50RmFpbGVkKQogewogICAgIC8vIFN0YXJ0IHdpdGggMm1iIG9mIG1lbW9yeSwgYnV0IHRoZSB0
ZXN0IGlzIGdvaW5nIHRvIHRyeSB0byB1c2UganVzdCBtb3JlIHRoYW4gMW1iLCBzbyB3ZSByZWR1
Y2UgdG8gMW1iIGxhdGVyLgotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMiox
MDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMiox
MDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bT4gbGF5ZXIxID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVy
ZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVy
SW1wbDEoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC0zMDUsMTEg
KzMwOCwxMSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJ
ZGxlUGFpbnRGYWlsZWQpCiAgICAgbGF5ZXIxLT5pbnZhbGlkYXRlQ29udGVudFJlY3QobGF5ZXJS
ZWN0KTsKIAogICAgIC8vIFBhaW50IGEgc2luZ2xlIHRpbGUgaW4gbGF5ZXIyIHNvIHRoYXQgaXQg
d2lsbCBpZGxlIHBhaW50LgotICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3Jp
dHlDYWxjdWxhdG9yKTsKLSAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5
Q2FsY3VsYXRvcik7CisgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5
Q2FsY3VsYXRvcik7CisgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5
Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsK
LSAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGxheWVyUmVjdCwgMCk7Ci0g
ICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSwgMCk7CisgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGxheWVy
UmVjdCwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFp
bnRpbmcgZm9yIGJvdGggcmVtYWluaW5nIHRpbGVzIGluIGxheWVyMi4KICAgICBFWFBFQ1RfVFJV
RShsYXllcjItPm5lZWRzSWRsZVBhaW50KGxheWVyMlJlY3QpKTsKQEAgLTMyMywxMCArMzI2LDEw
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWlu
dEZhaWxlZCkKICAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcygxMDI0
ICogMTAyNCk7CiAKICAgICAvLyBOb3cgaWRsZSBwYWludCBsYXllcjIuIFdlIGFyZSBnb2luZyB0
byBydW4gb3V0IG9mIG1lbW9yeSB0aG91Z2ghCi0gICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVz
KG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVz
KG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKDApOwotICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCksIDApOworICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QobV91
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CiAKICAgICAvLyBPaCB3ZWxsLCBj
b21taXQgdGhlIGZyYW1lIGFuZCBwdXNoLgogICAgIHVwZGF0ZVRleHR1cmVzKCk7CkBAIC0zNDMs
MTEgKzM0NiwxMSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0
ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbDItPmhhc1RpbGVB
dCgwLCAyKSk7CiAKICAgICAvLyBOb3cgaWYgbGF5ZXIyIGJlY29tZXMgZnVsbHkgdmlzaWJsZSwg
d2Ugc2hvdWxkIGJlIGFibGUgdG8gcGFpbnQgaXQgYW5kIHB1c2ggdmFsaWQgdGV4dHVyZXMuCi0g
ICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAg
IGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBs
YXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBs
YXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwotICAgIGxheWVyMi0+dXBkYXRl
Q29udGVudFJlY3QodXBkYXRlciwgbGF5ZXIyUmVjdCwgMCk7Ci0gICAgbGF5ZXIxLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBsYXllclJlY3QsIDApOworICAgIGxheWVyMi0+dXBkYXRlQ29u
dGVudFJlY3QobV91cGRhdGVyLCBsYXllcjJSZWN0LCAwKTsKKyAgICBsYXllcjEtPnVwZGF0ZUNv
bnRlbnRSZWN0KG1fdXBkYXRlciwgbGF5ZXJSZWN0LCAwKTsKIAogICAgIHVwZGF0ZVRleHR1cmVz
KCk7CiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDEuZ2V0KCkpOwpAQCAt
MzYzLDcgKzM2Niw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNB
ZnRlcklkbGVQYWludEZhaWxlZCkKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hJZGxlUGFpbnRlZE9jY2x1ZGVkVGlsZXMpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwog
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBG
YWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7
CkBAIC0zNzcsOSArMzgwLDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJ
ZGxlUGFpbnRlZE9jY2x1ZGVkVGlsZXMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVj
dChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOwog
ICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsLmdldCgpKTsKIApAQCAtMzg5LDcgKzM5Miw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBwdXNoSWRsZVBhaW50ZWRPY2NsdWRlZFRpbGVzKQogCiBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTWFya2VkRGlydHlEdXJpbmdQYWludCkKIHsKLSAgICBP
d25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBP
d25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRl
cmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxh
eWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIu
Z2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBP
d25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUND
VGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTQwMiw5ICs0MDUsOSBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTWFya2VkRGlydHlEdXJpbmdQYWludCkKICAgICBsYXll
ci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRS
ZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwogCi0gICAgbGF5ZXItPnNldFRleHR1
cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKDApOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0ZVRl
eHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
IApAQCAtNDE1LDcgKzQxOCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNo
VGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiB7
Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7
CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwg
Q0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9t
aXVtPiBsYXllcjEgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJl
TWFuYWdlci5nZXQoKSkpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXll
cjIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5n
ZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwpAQCAtNDMw
LDE1ICs0MzMsMTUgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xh
eWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uTmV4dExheWVyKQogICAgIGxheWVyMi0+c2V0Vmlz
aWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllcjItPmlu
dmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKLSAgICBsYXll
cjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgbGF5ZXIy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyMS0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyMi0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CiAKLSAgICBsYXllcjEtPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXllcjEt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDAp
OwogCiAgICAgLy8gSW52YWxpZGF0ZSBhIHRpbGUgb24gbGF5ZXIxCiAgICAgbGF5ZXIyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAs
IDEwMCwgNTApLCBsYXllcjEuZ2V0KCkpOwotICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyMi0+dXBkYXRl
Q29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKICAg
ICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjFJ
bXBsLmdldCgpKTsKQEAgLTQ1Myw3ICs0NTYsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiAK
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5
RHVyaW5nUGFpbnRPblByZXZpb3VzTGF5ZXIpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwog
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllcjEgPSBhZG9wdFJlZihuZXcg
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFJlZlB0
cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllcjIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsVGhyZWFkOwpAQCAtNDY4LDE0ICs0NzEsMTQgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9u
UHJldmlvdXNMYXkKICAgICBsYXllcjItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwogCi0gICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhw
cmlvcml0eUNhbGN1bGF0b3IpOwotICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJp
b3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJp
b3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJp
b3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KDApOwogCiAgICAgLy8gSW52YWxpZGF0ZSBhIHRpbGUgb24gbGF5ZXIyCiAgICAgbGF5ZXIxLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwg
NTAsIDEwMCwgNTApLCBsYXllcjIuZ2V0KCkpOwotICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIGxheWVyMi0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAg
IGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVy
MS0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjFJbXBsLmdldCgpKTsKICAgICBsYXllcjItPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXIySW1wbC5nZXQoKSk7CkBAIC00OTcsNyArNTAwLDcgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIC8vIFdl
IGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSB0aGUgdmlzaWJsZSByZWN0LCBzbyB3ZSB3aWxs
IHJ1biBvdXQgb2YgbWVtb3J5IGluIGZpcnN0IGlkbGUgcGFpbnQuCiAgICAgaW50IG1lbW9yeUxp
bWl0ID0gNCAqIDEwMCAqIDEwMDsgLy8gMSB0aWxlcywgNCBieXRlcyBwZXIgcGl4ZWwuCiAKLSAg
ICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1lbW9yeUxpbWl0LCAxMDI0KTsKKyAg
ICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1lbW9yeUxpbWl0LCAxMDI0LCBDQ1Jl
bmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAg
ICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFr
ZUNDVGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTUwNyw5ICs1MTAsOSBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgbGF5ZXItPnNldFZp
c2libGVDb250ZW50UmVjdCh2aXNpYmxlUmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250
ZW50UmVjdChjb250ZW50UmVjdCk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMo
cHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9w
cmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0
LCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCB2aXNpYmxlUmVj
dCwgMCk7CiAKICAgICAvLyBJZGxlLXBhaW50aW5nIHNob3VsZCBzZWUgbm8gbW9yZSBwcmlvcml0
eSB0aWxlcyBmb3IgcGFpbnRpbmcuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQ
YWludCh2aXNpYmxlUmVjdCkpOwpAQCAtNTIwLDkgKzUyMyw5IEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICAvLyBXZSBzaG91bGQgaGF2
ZSBvbmUgdGlsZSBvbiB0aGUgaW1wbCBzaWRlLgogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+
aGFzVGlsZUF0KDEsIDEpKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9y
aXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygw
KTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDAp
OworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIHZpc2libGVSZWN0LCAw
KTsKIAogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlkbGUgcGFp
bnQuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkp
OwpAQCAtNTMwLDcgKzUzMyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxl
UGFpbnRPdXRPZk1lbW9yeSkKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQ
YWludFplcm9TaXplZExheWVyKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUoMjAwMDAsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMjAw
MDAsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFk
b3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwpAQCAtNTQ3LDExICs1NTAsMTEg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludFplcm9TaXplZExheWVy
KQogICAgICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKICAg
ICAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKLSAgICAg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAg
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAg
ICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CiAKICAgICAgICAg
Ly8gRW1wdHkgbGF5ZXJzIGRvbid0IHBhaW50IG9yIGlkbGUtcGFpbnQuCi0gICAgICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CisgICAgICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKIAogICAg
ICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxlcy4KICAgICAgICAgRVhQRUNUX0VR
KDB1LCBsYXllci0+bnVtUGFpbnRlZFRpbGVzKCkpOwpAQCAtNTcxLDcgKzU3NCw3IEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlTGF5ZXJzKQogICAg
IEludFNpemUgY29udGVudEJvdW5kcygxMDAsIDEwMCk7CiAgICAgSW50UmVjdCBjb250ZW50UmVj
dChJbnRQb2ludDo6emVybygpLCBjb250ZW50Qm91bmRzKTsKIAotICAgIE93blB0cjxDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpjcmVhdGUoMjAwMDAsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpjcmVhdGUoMjAwMDAsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBS
ZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1w
bD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwpAQCAt
NTg1LDkgKzU4OCw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRO
b25WaXNpYmxlTGF5ZXJzKQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKICAg
ICAgICAgLy8gUGFpbnQgLyBpZGxlLXBhaW50LgotICAgICAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICAgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygwKTsKLSAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAgICAgIC8vIE5vbi12aXNpYmxl
IGxheWVycyBkb24ndCBuZWVkIGlkbGUgcGFpbnQuCiAgICAgICAgIEVYUEVDVF9GQUxTRShsYXll
ci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKQEAgLTYxMSw3ICs2MTQsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0SGF2ZU91dGVyVGlsZXMoRmFrZUNDVGlsZWRMYXllckltcGwqIGxheWVySW1w
bCwgaW50IHdpZHRoLCBpbnQgaAogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRs
ZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xheWVycykKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDgwMDAqODAwMCo4LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDgwMDAqODAwMCo4LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9v
bCk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAKICAgICBpbnQg
dGlsZVdpZHRoID0gRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6dGlsZVNpemUoKS53aWR0aCgpOwpA
QCAtNjM1LDcgKzYzOCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFp
bnROb25WaXNpYmxlQW5pbWF0aW5nTGF5ZXJzKQogICAgICAgICAgICAgbGF5ZXItPnNldFZpc2li
bGVDb250ZW50UmVjdCh2aXNpYmxlUmVjdCk7CiAgICAgICAgICAgICBsYXllci0+aW52YWxpZGF0
ZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAotICAgICAgICAgICAgbGF5ZXItPnNldFRleHR1
cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgICAgICAgICBsYXllci0+c2V0
VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgICAgICAgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKIAogICAgICAgICAgICAgLy8gSWYg
aWRsZVBhaW50UmVjdCBnaXZlcyBiYWNrIGEgbm9uLWVtcHR5IHJlc3VsdCB0aGVuIHdlIHNob3Vs
ZCBwYWludCBpdC4gT3RoZXJ3aXNlLApAQCAtNjQ3LDEwICs2NTAsMTAgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAK
ICAgICAgICAgICAgIC8vIElmIHRoZSBsYXllciBpcyB0byBiZSBwcmVwYWludGVkIGF0IGFsbCwg
dGhlbiBhZnRlciBmb3VyIHVwZGF0ZXMgd2Ugc2hvdWxkIGhhdmUgdGhlIG91dGVyIHJvdy9jb2x1
bW5zIHBhaW50ZWQuCiAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7ICsraykgewot
ICAgICAgICAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOworICAgICAgICAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3By
aW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygwKTsKIAotICAgICAgICAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CisgICAgICAgICAgICAgICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICAgICAg
ICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgICAgICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAgICAgIH0KQEAgLTY2MCwxMCArNjYzLDEw
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlQW5p
bWF0aW5nTGF5ZXJzKQogICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGlkbGUgcGFp
bnQgcGFzdCB0aGUgb3V0ZXJtb3N0IHRpbGVzLgogICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGxh
eWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogICAgICAgICAgICAgZm9yIChpbnQg
ayA9IDA7IGsgPCA0OyArK2spIHsKLSAgICAgICAgICAgICAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICAgICAgICAgICAgICBsYXllci0+c2V0
VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgICAgICAgICAgICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CiAKLSAgICAgICAgICAgICAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOworICAg
ICAgICAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIHZpc2libGVS
ZWN0LCAwKTsKICAgICAgICAgICAgICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgICAgICAgICAg
ICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgICAgICAg
ICB9CkBAIC02NzUsMjQgKzY3OCwxOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
aWRsZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xheWVycykKIAogVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKIHsKLSAgICBPd25QdHI8Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50
UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRS
ZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUND
VGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllcklt
cGwoMSkpKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIGZha2VBbGxvY2F0b3I7Ci0gICAg
RmFrZVRleHR1cmVDb3BpZXIgZmFrZUNvcGllcjsKLSAgICBGYWtlVGV4dHVyZVVwbG9hZGVyIGZh
a2VVcGxvYWRlcjsKLSAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dCA9IEND
R3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChXZWJLaXQ6OkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzKCkpKTsKLQogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZh
bGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMo
SW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyht
X3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygwKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCksIDApOwotICAgIHVwZGF0ZXIudXBkYXRlKGNjQ29udGV4dC5nZXQoKSwg
JmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKKyAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSwgMCk7CisgICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGls
ZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTcwMiwyMSArNzAwLDIxIEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gSW52b2tl
IHVwZGF0ZUNvbnRlbnRSZWN0IGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQgdXBkYXRlQ29u
dGVudFJlY3Qgc2hvdWxkbid0IGJlIGludm9rZWQgb24KICAgICAvLyB0aGUgTGF5ZXJUZXh0dXJl
VXBkYXRlci4KLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCksIDApOwotICAgIHVwZGF0ZXIudXBkYXRlKGNjQ29udGV4dC5nZXQoKSwg
JmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKKyAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSwgMCk7CisgICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAKICAgICBsYXll
ci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8g
c2V0UmVjdFRvSW52YWxpZGF0ZSB0cmlnZ2VycyBpbnZhbGlkYXRlQ29udGVudFJlY3QoKSBiZWlu
ZyBpbnZva2VkIGZyb20gdXBkYXRlQ29udGVudFJlY3QuCiAgICAgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1
MCksIGxheWVyLmdldCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
Y2xlYXJQcmVwYXJlQ291bnQoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRl
ciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIHVwZGF0ZXIudXBkYXRlKGNjQ29u
dGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAx
MDAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSwgMCk7CisgICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CiAgICAgRVhQRUNU
X0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7
CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50
KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHVwZGF0ZUNv
bnRlbnRSZWN0IGludm9rZWQgaW52YWxpZGF0ZS4KLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIHVwZGF0ZXIudXBk
YXRlKGNjQ29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVw
bG9hZGVyLCAxMDAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CiAg
ICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
Q291bnQoKSk7CiB9CiAKQEAgLTcyNSw3ICs3MjMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogICAg
IC8vIFRoZSB1cGRhdGVSZWN0ICh0aGF0IGluZGljYXRlcyB3aGF0IHdhcyBhY3R1YWxseSBwYWlu
dGVkKSBzaG91bGQgYmUgaW4KICAgICAvLyBsYXllciBzcGFjZSwgbm90IHRoZSBjb250ZW50IHNw
YWNlLgogCi0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwg
MTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwg
MTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
cldpdGhTY2FsZWRCb3VuZHM+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyV2l0
aFNjYWxlZEJvdW5kcyh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogCiAgICAgSW50UmVjdCBsYXll
ckJvdW5kcygwLCAwLCAzMDAsIDIwMCk7CkBAIC03MzksMzIgKzczNywzMiBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJl
U2NhbGVkKQogICAgIC8vIEhvd2V2ZXIsIGl0IHNob3VsZCBzdGlsbCBiZSBpbiBsYXllciBzcGFj
ZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChj
b250ZW50Qm91bmRzKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5
Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsK
LSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7
CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywg
MCk7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDMwMCwgMzAwICog
MC44KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKIAogICAg
IC8vIEFmdGVyIHRoZSB0aWxlcyBhcmUgdXBkYXRlZCBvbmNlLCBhbm90aGVyIGludmFsaWRhdGUg
b25seSBuZWVkcyB0byB1cGRhdGUgdGhlIGJvdW5kcyBvZiB0aGUgbGF5ZXIuCi0gICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVu
dFJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0
ZXIsIGNvbnRlbnRCb3VuZHMsIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3Vw
ZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0
UmVjdChsYXllckJvdW5kcyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogICAgIHVwZGF0ZVRleHR1
cmVzKCk7CiAKICAgICAvLyBQYXJ0aWFsIHJlLXBhaW50IHNob3VsZCBhbHNvIGJlIHJlcHJlc2Vu
dGVkIGJ5IHRoZSB1cGRhdGVSZWN0IGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4K
ICAgICBJbnRSZWN0IHBhcnRpYWxEYW1hZ2UoMzAsIDEwMCwgMTAsIDEwKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KHBhcnRpYWxEYW1hZ2UpOwotICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygwKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRl
ciwgY29udGVudEJvdW5kcywgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBk
YXRlciwgY29udGVudEJvdW5kcywgMCk7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRS
ZWN0KDQ1LCA4MCwgMTUsIDgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIH0KIAogVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxl
Q2hhbmdlcykKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCox
MDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCox
MDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxl
ZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21p
dW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChh
ZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTc3OCw5ICs3NzYsOSBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNv
bnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgw
LCAwLCAxMDAsIDEwMCksIGxheWVyLT5sYXN0TmVlZHNEaXNwbGF5UmVjdCgpKTsKIAogICAgIC8v
IFB1c2ggdGhlIHRpbGVzIHRvIHRoZSBpbXBsIHNpZGUgYW5kIGNoZWNrIHRoYXQgdGhlcmUgaXMg
ZXhhY3RseSBvbmUuCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2Fs
Y3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxj
dWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwotICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcklt
cGwtPmhhc1RpbGVBdCgwLCAwKSk7CkBAIC03OTUsOSArNzkzLDkgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdl
cykKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwgMCwgMTAwLCAxMDApLCBs
YXllci0+bGFzdE5lZWRzRGlzcGxheVJlY3QoKSk7CiAKICAgICAvLyBUaGUgaW1wbCBzaWRlIHNo
b3VsZCBnZXQgMngyIHRpbGVzIG5vdy4KLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMo
cHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9w
cmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwg
MCwgMjAwLCAyMDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwgMCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAg
ICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIEVYUEVDVF9U
UlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKQEAgLTgwOCw4ICs4MDYsOCBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRz
U2NhbGVDaGFuZ2VzKQogICAgIC8vIEludmFsaWRhdGUgdGhlIGVudGlyZSBsYXllciBhZ2Fpbiwg
YnV0IGRvIG5vdCBwYWludC4gQWxsIHRpbGVzIHNob3VsZCBiZSBnb25lIG5vdyBmcm9tIHRoZQog
ICAgIC8vIGltcGwgc2lkZS4KICAgICBsYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0gICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMSwgMCwgMCwgMSksIDApOworICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgxLCAwLCAwLCAxKSwg
MCk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKIAogICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CkBAIC04NTAsNyArODQ4LDcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBzRHJhd0dldHNSZXNldCkKICAg
ICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgIGNjTGF5ZXJU
cmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAzMDApKTsKIAotICAgIGNjTGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIsIG1lbW9yeUxpbWl0KTsKKyAgICBjY0xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIG1lbW9yeUxpbWl0KTsKIAogICAg
IC8vIFdlJ2xsIHNraXAgdGhlIHJvb3QgbGF5ZXIuCiAgICAgRVhQRUNUX1RSVUUocm9vdExheWVy
LT5za2lwc0RyYXcoKSk7CkBAIC04NjEsMTAgKzg1OSwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIC8vIFJlbW92ZSB0aGUgY2hpbGQg
bGF5ZXIuCiAgICAgcm9vdExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwogCi0gICAgY2NMYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgbWVtb3J5TGltaXQpOworICAgIGNjTGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgbWVtb3J5TGltaXQpOwogICAgIEVY
UEVDVF9GQUxTRShyb290TGF5ZXItPnNraXBzRHJhdygpKTsKIAotICAgIGNjTGF5ZXJUcmVlSG9z
dC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jbGVhckFsbE1lbW9yeSgmYWxsb2NhdG9yKTsK
KyAgICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y2xlYXJBbGxN
ZW1vcnkobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnNl
dFJvb3RMYXllcigwKTsKICAgICBjY0xheWVyVHJlZUhvc3QuY2xlYXIoKTsKICAgICBXZWJLaXQ6
OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CkBAIC04NzIsMTYgKzg3MCwxNiBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogCiBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFsbGVyKQogewotICAgIE93blB0cjxDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDYwKjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29u
dGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7
CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNzAwLCA3MDApKTsKICAgICBsYXllci0+
c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNzAwLCA3MDApKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNzAwLCA3MDApKTsKIAotICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKLSAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOworICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNzAwLCA3MDApLCAw
KTsKIAogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgyMDAsIDIwMCkpOwogICAgIGxheWVy
LT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpOwpAQCAtODg5
LDcgKzg4Nyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCByZXNpemVUb1NtYWxs
ZXIpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBodWdlTGF5ZXJVcGRhdGVDcmFz
aCkKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFu
YWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDYwKjEwMjQqMTAyNCwg
MTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg2MCoxMDI0KjEwMjQs
IDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0
ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogCiAgICAgaW50IHNpemUgPSAxIDw8IDMwOwpAQCAtODk4
LDkgKzg5Niw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBodWdlTGF5ZXJVcGRh
dGVDcmFzaCkKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwg
c2l6ZSwgc2l6ZSkpOwogCiAgICAgLy8gRW5zdXJlIG5vIGNyYXNoIGZvciBib3VuZHMgd2hlcmUg
c2l6ZSAqIHNpemUgd291bGQgb3ZlcmZsb3cgYW4gaW50LgotICAgIGxheWVyLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygwKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNzAwLCA3MDApLCAwKTsKIH0KIAogVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQpAQCAtOTI5LDE3ICs5MjcsMTcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogICAgIGNj
TGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAyMDApKTsKIAogICAg
IC8vIEZ1bGwgdXBkYXRlIG9mIGFsbCA2IHRpbGVzLgotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBk
YXRlTGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwor
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CiAgICAg
ICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfVFJV
RSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShtX3VwZGF0
ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwog
ICAgICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVw
ZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRl
cygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsK
ICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291
bnQoKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
ICAgICB9CkBAIC05NDcsMTcgKzk0NSwxNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcGFydGlhbFVwZGF0ZXMpCiAKICAgICAvLyBGdWxsIHVwZGF0ZSBvZiAzIHRpbGVzIGFuZCBw
YXJ0aWFsIHVwZGF0ZSBvZiAzIHRpbGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJl
Y3QoSW50UmVjdCgwLCAwLCAzMDAsIDE1MCkpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAg
IGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CiAgICAgICAg
IHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRSh1
cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShtX3VwZGF0ZXIu
aGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAg
ICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0
ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAg
ICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQo
KTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAg
ICB9CkBAIC05NjgsMTQgKzk2NiwxNCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cGFydGlhbFVwZGF0ZXMpCiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllcklt
cGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7Ci0gICAgICAgIGNjTGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkpOworICAgICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3Vw
ZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICB1cGRh
dGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUodXBkYXRl
ci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUobV91cGRhdGVyLmhhc01v
cmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAg
RVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3Vu
dCgpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAg
ICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgfQpA
QCAtOTk1LDE0ICs5OTMsMTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRp
YWxVcGRhdGVzKQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxU
aHJlYWQ7CiAgICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFk
b3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwotICAgICAgICBjY0xheWVyVHJl
ZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpKTsKKyAgICAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVy
LCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgdXBkYXRlVGV4
dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFz
TW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fdXBkYXRlci5oYXNNb3JlVXBk
YXRlcygpKTsKICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
VXBkYXRlQ291bnQoKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7CiAgICAgICAgIEVYUEVD
VF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAg
ICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIH0KQEAgLTEw
MTMsMTYgKzEwMTEsMTYgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxV
cGRhdGVzKQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CiAgICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0
UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwotICAgICAgICBjY0xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKKyAgICAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgdXBkYXRlVGV4dHVy
ZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01v
cmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRh
dGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJV
cGRhdGVDb3VudCgpOwogICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwu
Z2V0KCkpOwogICAgIH0KICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAK
LSAgICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y2xlYXJBbGxN
ZW1vcnkoJmFsbG9jYXRvcik7CisgICAgY2NMYXllclRyZWVIb3N0LT5jb250ZW50c1RleHR1cmVN
YW5hZ2VyKCktPmNsZWFyQWxsTWVtb3J5KG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CiAgICAg
Y2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoMCk7CiAgICAgY2NMYXllclRyZWVIb3N0LmNs
ZWFyKCk7CiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwpAQCAtMTAzMCw3
ICsxMDI4LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVz
KQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aG91dE9j
Y2x1c2lvbikKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCox
MDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCox
MDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxl
ZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21p
dW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAw
eDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgpAQCAt
MTAzOCwxNSArMTAzNiwxNSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQ
YWludGVkV2l0aG91dE9jY2x1c2lvbikKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0
KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygwKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCht
X3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBFWFBFQ1RfRVEoMiwg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiB9
CiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVz
aW9uKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQs
IDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQs
IDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0
ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVk
ZWQ7CiAKQEAgLTEwNTksOSArMTA1Nyw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVu
dFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKIAotICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2Nj
bHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBA
IC0xMDcyLDcgKzEwNzAsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQ
YWludGVkV2l0aE9jY2x1c2lvbikKIAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0
KDI1MCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3Qo
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9j
Y2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYtMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5v
dmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwODMs
NyArMTA4MSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRX
aXRoT2NjbHVzaW9uKQogCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjUwLCAy
NTAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIs
IEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQp
OwogICAgIEVYUEVDVF9FUSgzNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnBy
ZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01l
dHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwOTMsNyArMTA5MSw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVz
aW9uKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9j
Y2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29s
KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihu
ZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAKQEAgLTExMDcsOSArMTEwNSw5IEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5k
VmlzaWJsaXR5Q29uc3RyYWludHMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJ
bnRSZWN0KDAsIDAsIDYwMCwgMzYwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVj
dChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgNjAwLCAzNjApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNjApLCAmb2NjbHVkZWQpOwogICAg
IEVYUEVDVF9FUSgyNC0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmlj
cygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTEyMiw5ICsxMTIwLDkgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25B
bmRWaXNpYmxpdHlDb25zdHJhaW50cykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVj
dCgyMDAsIDIwMCwgMzAwLCAxNTApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCAzNTApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgNjAwLCAzNTApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNTApLCAmb2NjbHVkZWQpOwogICAg
IEVYUEVDVF9FUSgyNC02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmlj
cygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTEzNyw5ICsxMTM1LDkgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25B
bmRWaXNpYmxpdHlDb25zdHJhaW50cykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVj
dCgyMDAsIDIwMCwgMzAwLCAxNTApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCAzNDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgNjAwLCAzNDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNDApLCAmb2NjbHVkZWQpOwogICAg
IEVYUEVDVF9FUSgyNC02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmlj
cygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTE1MCw3ICsxMTQ4LDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25B
bmRWaXNpYmxpdHlDb25zdHJhaW50cykKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlkYXRpb24pCiB7Ci0gICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVu
dFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0
UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIApAQCAtMTE2Miw5ICsxMTYwLDkg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJ
bnZhbGlkYXRpb24pCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAs
IDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9y
aXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3Jp
dHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDAp
OwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYw
MCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEo
MzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKIApAQCAtMTE3NSw3ICsxMTczLDcgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlkYXRp
b24pCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJl
Y3RDb3VudCgpOwogCiAgICAgLy8gUmVwYWludCB3aXRob3V0IG1hcmtpbmcgaXQgZGlydHkuIFRo
ZSAzIGN1bGxlZCB0aWxlcyB3aWxsIGJlIHByZS1wYWludGVkIG5vdy4KLSAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRl
ZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDMsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05F
QVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwg
MSk7CkBAIC0xMTg1LDcgKzExODMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKIAogVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRUcmFuc2Zvcm1zKQogewot
ICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0g
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOwor
ICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0g
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIEND
UmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFu
YWdlci5nZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAKQEAg
LTEyMDIsOSArMTIwMCw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1Bh
aW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3JtcykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNp
b24oSW50UmVjdCgxMDAsIDEwMCwgMTUwLCA1MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29u
dGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2
MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9j
Y2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpA
QCAtMTIxNCw3ICsxMjEyLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVz
UGFpbnRlZFdpdGhPY2NsdXNpb25BbmRUcmFuc2Zvcm1zKQogCiBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiB7Ci0gICAg
T3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAg
T3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5k
ZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBs
YXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2Vy
LmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIApAQCAtMTIz
MCw5ICsxMjI4LDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRl
ZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRS
ZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJl
Y3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52
YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0
VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAm
b2NjbHVkZWQpOwogICAgIC8vIFRoZSBjb250ZW50IGlzIGhhbGYgdGhlIHNpemUgb2YgdGhlIGxh
eWVyIChzbyB0aGUgbnVtYmVyIG9mIHRpbGVzIGlzIGZld2VyKS4KICAgICAvLyBJbiB0aGlzIGNh
c2UsIHRoZSBjb250ZW50IGlzIDMwMHgzMDAsIGFuZCBzaW5jZSB0aGUgdGlsZSBzaXplIGlzIDEw
MCwgdGhlCiAgICAgLy8gbnVtYmVyIG9mIHRpbGVzIDN4My4KQEAgLTEyNTAsOSArMTI0OCw5IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9u
QW5kU2NhbGluZykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwg
MzAwLCAyMDApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0
aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKDApOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAg
ICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmlj
cygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTI3MCw5ICsxMjY4LDkgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25B
bmRTY2FsaW5nKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDEwMCwgMTAwLCAx
NTAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAg
IEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
UmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMjgyLDcgKzEyODAsNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFu
ZFNjYWxpbmcpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVu
dE9wYXF1ZVJlZ2lvbikKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
Q2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1ZGVkOwogCkBAIC0xMjk5LDEzICsxMjk3LDEzIEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKICAgICBsYXllci0+c2V0
VmlzaWJsZUNvbnRlbnRSZWN0KHZpc2libGVCb3VuZHMpOwogICAgIGxheWVyLT5zZXREcmF3T3Bh
Y2l0eSgxKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3Vs
YXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKIAogICAg
IC8vIElmIHRoZSBsYXllciBkb2Vzbid0IHBhaW50IG9wYXF1ZSBjb250ZW50LCB0aGVuIHRoZSB2
aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbiBzaG91bGQgYmUgZW1wdHkuCiAgICAgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwog
ICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5
ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7
CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywg
Jm9jY2x1ZGVkKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9w
YXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7
CiAKQEAgLTEzMTgsNyArMTMxNiw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2
aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKICAgICBvcGFxdWVQYWludFJlY3QgPSBJbnRSZWN0
KDEwLCAxMCwgOTAsIDE5MCk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnNldE9wYXF1ZVBhaW50UmVjdChvcGFxdWVQYWludFJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlk
YXRlQ29udGVudFJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0
ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICB1
cGRhdGVUZXh0dXJlcygpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250
ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1
ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKQEAg
LTEzMzEsNyArMTMyOSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxl
Q29udGVudE9wYXF1ZVJlZ2lvbikKIAogICAgIC8vIElmIHdlIHBhaW50IGFnYWluIHdpdGhvdXQg
aW52YWxpZGF0aW5nLCB0aGUgc2FtZSBzdHVmZiBzaG91bGQgYmUgb3BhcXVlLgogICAgIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgp
KTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywg
Jm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250
ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgb3BhcXVl
Q29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBF
Q1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwg
b3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwpAQCAtMTM0Niw3ICsxMzQ0LDcgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIC8v
IG5vdCBiZSBhZmZlY3RlZC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250
ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEsIDEpKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIHVw
ZGF0ZVRleHR1cmVzKCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRl
bnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVl
UGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwpAQCAt
MTM2MSw3ICsxMzU5LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVD
b250ZW50T3BhcXVlUmVnaW9uKQogICAgIC8vIG5vdCBiZSBhZmZlY3RlZC4KICAgICBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDEwLCAxMCwgMSwgMSkp
OwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAm
b2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRl
bnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBvcGFxdWVD
b250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVD
VF9FUV9SRUNUKGludGVyc2VjdGlvbihJbnRSZWN0KDEwLCAxMDAsIDkwLCAxMDApLCB2aXNpYmxl
Qm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwpAQCAtMTM3NSw3ICsxMzczLDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9u
KQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4ZWxzUGFpbnRlZE1ldHJpY3Mp
CiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAy
NCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAy
NCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNo
cm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1
cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsK
IApAQCAtMTM5MiwxMyArMTM5MCwxMyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cGl4ZWxzUGFpbnRlZE1ldHJpY3MpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdCh2
aXNpYmxlQm91bmRzKTsKICAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7CiAKLSAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CiAKICAgICAvLyBJbnZhbGlkYXRlcyBhbmQg
cGFpbnRzIHRoZSB3aG9sZSBsYXllci4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVDb250ZW50UmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIHVw
ZGF0ZVRleHR1cmVzKCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRl
bnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250ZW50cy5pc0VtcHR5
KCkpOwpAQCAtMTQxMyw3ICsxNDExLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHBpeGVsc1BhaW50ZWRNZXRyaWNzKQogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0
ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMSwgMSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRl
Q29udGVudFJlY3QoSW50UmVjdCg1MCwgMjAwLCAxMCwgMTApKTsKLSAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQp
OwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlz
aWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250ZW50
cy5pc0VtcHR5KCkpOwpAQCAtMTQ3NCwxNCArMTQ3MiwxNCBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFs
bG9jYQogICAgIHJvb3QtPmludmFsaWRhdGVDb250ZW50UmVjdChyb290UmVjdCk7CiAgICAgY2hp
bGQtPmludmFsaWRhdGVDb250ZW50UmVjdChjaGlsZFJlY3QpOwogICAgIGNoaWxkMi0+aW52YWxp
ZGF0ZUNvbnRlbnRSZWN0KGNoaWxkMlJlY3QpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAg
IGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CiAgICAgICAg
IEVYUEVDVF9FUSg2LCByb290LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3Vu
dCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDMsIGNoaWxkLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDMsIGNoaWxkMi0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxT
RSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRh
dGVyLmhhc01vcmVVcGRhdGVzKCkpOwogCiAgICAgICAgIHJvb3QtPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKICAgICAgICAgY2hpbGQtPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKQEAgLTE1MDksMTQgKzE1MDcsMTQg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGRvbnRBbGxvY2F0ZUNvbnRlbnRzV2hl
blRhcmdldFN1cmZhY2VDYW50QmVBbGxvY2EKICAgICByb290LT5pbnZhbGlkYXRlQ29udGVudFJl
Y3Qocm9vdFJlY3QpOwogICAgIGNoaWxkLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY2hpbGRSZWN0
KTsKICAgICBjaGlsZDItPmludmFsaWRhdGVDb250ZW50UmVjdChjaGlsZDJSZWN0KTsKLSAgICBj
Y0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCAoMyAqIDIgKyAzICogMSkgKiAo
MTAwICogMTAwKSAqIDQpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBk
YXRlciwgKDMgKiAyICsgMyAqIDEpICogKDEwMCAqIDEwMCkgKiA0KTsKICAgICB7CiAgICAgICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgICAgICB1cGRhdGVUZXh0
dXJlcygxMDAwKTsKICAgICAgICAgRVhQRUNUX0VRKDYsIHJvb3QtPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMCwgY2hpbGQtPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMCwgY2hpbGQyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAKICAgICAgICAgcm9v
dC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAg
ICBjaGlsZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwpA
QCAtMTU0NSwxNCArMTU0MywxNCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgZG9u
dEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFsbG9jYQogICAgIHJvb3Qt
PmludmFsaWRhdGVDb250ZW50UmVjdChyb290UmVjdCk7CiAgICAgY2hpbGQtPmludmFsaWRhdGVD
b250ZW50UmVjdChjaGlsZFJlY3QpOwogICAgIGNoaWxkMi0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0
KGNoaWxkMlJlY3QpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIs
ICgzICogMSkgKiAoMTAwICogMTAwKSAqIDQpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKG1fdXBkYXRlciwgKDMgKiAxKSAqICgxMDAgKiAxMDApICogNCk7CiAgICAgewogICAg
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgdXBkYXRl
VGV4dHVyZXMoMTAwMCk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCByb290LT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDAsIGNoaWxk
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKDAsIGNoaWxkMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQo
KSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAg
ICAgICBFWFBFQ1RfRkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogCiAgICAgICAg
IHJvb3QtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKICAg
ICAgICAgY2hpbGQtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQo
KTsKQEAgLTE1NzQsNyArMTU3Miw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBk
b250QWxsb2NhdGVDb250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2NhCiAgICAgfQog
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAotICAgIGNjTGF5ZXJUcmVl
SG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jbGVhckFsbE1lbW9yeSgmYWxsb2NhdG9y
KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y2xlYXJB
bGxNZW1vcnkobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKICAgICBjY0xheWVyVHJlZUhvc3Qt
PnNldFJvb3RMYXllcigwKTsKICAgICBjY0xheWVyVHJlZUhvc3QuY2xlYXIoKTsKICAgICBXZWJL
aXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CkBAIC0xNjA1LDcgKzE2MDMsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBPd25QdHI8VHJhY2tpbmdMYXllclBhaW50ZXI+IHRyYWNraW5n
TGF5ZXJQYWludGVyKFRyYWNraW5nTGF5ZXJQYWludGVyOjpjcmVhdGUoKSk7CiAgICAgICAgIG1f
dHJhY2tpbmdMYXllclBhaW50ZXIgPSB0cmFja2luZ0xheWVyUGFpbnRlci5nZXQoKTsKLSAgICAg
ICAgbV9sYXllclRleHR1cmVVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKHRyYWNraW5nTGF5ZXJQYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOworICAgICAg
ICBtX2xheWVyVGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpjcmVhdGUodHJhY2tpbmdMYXllclBhaW50ZXIucmVsZWFzZSgpKTsKICAgICB9CiAgICAgdmly
dHVhbCB+VXBkYXRlVHJhY2tpbmdUaWxlZExheWVyQ2hyb21pdW0oKSB7IH0KIApAQCAtMTYyMSw4
ICsxNjE5LDcgQEAgcHJpdmF0ZToKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG5v
bkludGVnZXJDb250ZW50c1NjYWxlSXNOb3REaXN0b3J0ZWREdXJpbmdQYWludCkKIHsKLSAgICBP
d25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlcihDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0MDAwMDAwLCA0MDAwMDAwKSk7Ci0gICAgQ0NQ
cmlvcml0eUNhbGN1bGF0b3IgY2FsY3VsYXRvcjsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlcihDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZSg0MDAwMDAwLCA0MDAwMDAwLCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCkpOwogCiAg
ICAgUmVmUHRyPFVwZGF0ZVRyYWNraW5nVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0
UmVmKG5ldyBVcGRhdGVUcmFja2luZ1RpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5n
ZXQoKSkpOwogCkBAIC0xNjM1LDExICsxNjMyLDExIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBub25JbnRlZ2VyQ29udGVudHNTY2FsZUlzTm90RGlzdG9ydGVkRHVyaW5nUGFpbnQp
CiAgICAgRVhQRUNUX0VRKGNvbnRlbnRSZWN0LnNpemUoKSwgbGF5ZXItPmNvbnRlbnRCb3VuZHMo
KSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKLSAg
ICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMoY2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwogCiAgICAgLy8gVXBkYXRlIHRoZSB3aG9sZSB0
aWxlLgotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwg
MCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudFJlY3Qs
IDApOwogICAgIGxheWVyLT50cmFja2luZ0xheWVyUGFpbnRlcigpLT5yZXNldFBhaW50ZWRSZWN0
KCk7CiAKICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgpLCBsYXllci0+dHJhY2tpbmdM
YXllclBhaW50ZXIoKS0+cGFpbnRlZFJlY3QoKSk7CkBAIC0xNjQ4LDE1ICsxNjQ1LDE0IEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBub25JbnRlZ2VyQ29udGVudHNTY2FsZUlzTm90
RGlzdG9ydGVkRHVyaW5nUGFpbnQpCiAKICAgICAvLyBJbnZhbGlkYXRlIHRoZSBlbnRpcmUgbGF5
ZXIgaW4gY29udGVudCBzcGFjZS4gV2hlbiBwYWludGluZywgdGhlIHJlY3QgZ2l2ZW4gdG8gd2Vi
a2l0IHNob3VsZCBtYXRjaCB0aGUgbGF5ZXIncyBib3VuZHMuCiAgICAgbGF5ZXItPmludmFsaWRh
dGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
bV91cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CiAKICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEobGF5
ZXJSZWN0LCBsYXllci0+dHJhY2tpbmdMYXllclBhaW50ZXIoKS0+cGFpbnRlZFJlY3QoKSk7CiB9
CiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBub25JbnRlZ2VyQ29udGVudHNTY2Fs
ZUlzTm90RGlzdG9ydGVkRHVyaW5nSW52YWxpZGF0aW9uKQogewotICAgIE93blB0cjxDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyKENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDQwMDAwMDAsIDQwMDAwMDApKTsKLSAgICBDQ1ByaW9yaXR5Q2FsY3Vs
YXRvciBjYWxjdWxhdG9yOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQwMDAw
MDAsIDQwMDAwMDAsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKSk7CiAKICAgICBSZWZQdHI8VXBk
YXRlVHJhY2tpbmdUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IFVwZGF0
ZVRyYWNraW5nVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKQEAg
LTE2NjgsMTEgKzE2NjQsMTEgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG5vbklu
dGVnZXJDb250ZW50c1NjYWxlSXNOb3REaXN0b3J0ZWREdXJpbmdJbnZhbGkKICAgICBJbnRSZWN0
IGNvbnRlbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5jb250ZW50Qm91bmRzKCkpOwogICAgIGxh
eWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCi0gICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKGNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygwKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgd2hvbGUgdGlsZS4KLSAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudFJlY3QsIDApOworICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKICAgICBs
YXllci0+dHJhY2tpbmdMYXllclBhaW50ZXIoKS0+cmVzZXRQYWludGVkUmVjdCgpOwogCiAgICAg
RVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoKSwgbGF5ZXItPnRyYWNraW5nTGF5ZXJQYWludGVy
KCktPnBhaW50ZWRSZWN0KCkpOwpAQCAtMTY4MSw3ICsxNjc3LDcgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIG5vbkludGVnZXJDb250ZW50c1NjYWxlSXNOb3REaXN0b3J0ZWREdXJp
bmdJbnZhbGkKIAogICAgIC8vIEludmFsaWRhdGUgdGhlIGVudGlyZSBsYXllciBpbiBsYXllciBz
cGFjZS4gV2hlbiBwYWludGluZywgdGhlIHJlY3QgZ2l2ZW4gdG8gd2Via2l0IHNob3VsZCBtYXRj
aCB0aGUgbGF5ZXIncyBib3VuZHMuCiAgICAgbGF5ZXItPnNldE5lZWRzRGlzcGxheVJlY3QobGF5
ZXJSZWN0KTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudFJl
Y3QsIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRS
ZWN0LCAwKTsKIAogICAgIEVYUEVDVF9JTlRfUkVDVF9FUShsYXllclJlY3QsIGxheWVyLT50cmFj
a2luZ0xheWVyUGFpbnRlcigpLT5wYWludGVkUmVjdCgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152111</attachid>
            <date>2012-07-12 17:42:23 -0700</date>
            <delta_ts>2012-07-16 20:29:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91044-20120712174222.patch</filename>
            <type>text/plain</type>
            <size>349427</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxNjE2MzI1MDljZTk3
YTM0NmQyNTYzYTNiM2RjZWUxMGQ1MGQ2YjU0Li5lZmZmZDAxODRlYTVhOGMzMjA2NTMyY2VjYTcw
ZjU5YTZiMTdlZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0wNy0xMSAg
QW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBJbnRyb2R1Y2UgQ0NSZXNvdXJjZVByb3ZpZGVyLCByZXBsYWNpbmcgVGV4dHVyZUFsbG9jYXRv
ciBhbmQgaGlkaW5nIHRleHR1cmVzIGZyb20gY2xpZW50cyB0byBhbGxvdyB0cmFuc3BvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBkb2VzIHNl
dmVyYWwgdGhpbmdzOgorICAgICAgICAtIEFkZCBhIENDUmVzb3VyY2VQcm92aWRlciBjbGFzcywg
dGhhdCBoaWRlcyB0ZXh0dXJlcyBhbmQgdGhlIDNEIGNvbnRleHQKKyAgICAgICAgZnJvbSBsYXll
cnMgKGV4Y2VwdCB0aG9zZSB0aGF0IG5lZWQgaXQpLiBJbnN0ZWFkIGxheWVycyBtYW5hZ2UKKyAg
ICAgICAgInJlc291cmNlcyIuIEluIHRoZSBmdXR1cmUsIHJlc291cmNlcyBhcmUgZXhwZWN0ZWQg
dG8gYmUgdHJhbnNwb3J0YWJsZQorICAgICAgICB0byBhICJwYXJlbnQiIENDUmVzb3VyY2VQcm92
aWRlciB0byBhbGxvdyBmbGF0dGVuaW5nIG9mIG5lc3RlZAorICAgICAgICBjb21wb3NpdG9ycy4K
KyAgICAgICAgLSBSZXBsYWNlIHRleHR1cmUgaWRzIGJ5IHJlc291cmNlIGlkcyBpbiBEcmF3UXVh
ZHMgKGFsbG93aW5nIHRoZW0gdG8gYmUKKyAgICAgICAgc2VyaWFsaXphYmxlKS4KKyAgICAgICAg
LSBSZXBsYWNlIFRleHR1cmVBbGxvY2F0b3IgdXNlcyBieSB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVy
IGNsYXNzLgorICAgICAgICAtIFVwbG9hZCBvZiBkYXRhIGlzIGRvbmUgdGhyb3VnaCB0aGUgQ0NS
ZXNvdXJjZVByb3ZpZGVyIGluc3RlYWQgb2YKKyAgICAgICAgZXhwbGljaXQgR0wgY2FsbHMuCisg
ICAgICAgIC0gRXh0ZXJuYWwgdGV4dHVyZXMgYXJlIHdyYXBwZWQgaW50byBhIHJlc291cmNlIGF0
IGRyYXcgdGltZSAoc2VlCisgICAgICAgIGNhdmVhdC9GSVhNRSBpbiBDQ1RleHR1cmVMYXllcklt
cGwpLgorICAgICAgICAtIFJlbmRlcmluZyB3aXRoIHRoZSByZXNvdXJjZXMgaXMgZG9uZSB0aHJv
dWdoIGFuIGV4cGxpY2l0CisgICAgICAgIGJlZ2luUmVuZGVyRnJvbS9lbmRSZW5kZXJGcm9tIHRo
YXQgZXhwb3NlcyB0aGUgdGV4dHVyZSBvbmx5IGJldHdlZW4gdGhhdAorICAgICAgICBwYWlyLgor
ICAgICAgICAtIE1lcmdlIGFsbCB0aGUgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgaW5zdGFuY2VzIChv
bmUgcGVyIGxheWVyKSwgaW50byBhCisgICAgICAgIHNpbmdsZSBpbnN0YW5jZSBvbiB0aGUgQ0NS
ZXNvdXJjZVByb3ZpZGVyLgorCisgICAgICAgIEFkZGVkIENDUmVzb3VyY2VQcm92aWRlclRlc3Qs
IHRoZSByZWZhY3RvcmluZyBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oOgorICAgICAgICAo
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRv
clRleHR1cmVRdWFkOjpyZXNvdXJjZUlkKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvclRpbGVRdWFkLmg6CisgICAgICAgIChXZWJDb21wb3NpdG9yVGlsZVF1YWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OnJlc291cmNlSWQpOgorCiAy
MDEyLTA3LTExICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBbY2hyb21pdW1dIE1vdmUgY29tcG9zaXRvciBxdWFkcyB0byBQbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA5YTdlZjQ5MDlhYjA5YTQ4Yjk5YzNlZDgyMDEzOWU4YTNmYzVl
YjMyLi4zNmU0OGEwYTU2YTI4NTQ0MjhiMDZkNDUyOTJiYTFkOTZlMjgyMTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzEwIEBACisyMDEyLTA3LTExICBBbnRvaW5lIExhYm91ciAgPHBpbWFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEludHJvZHVjZSBDQ1Jlc291cmNlUHJv
dmlkZXIsIHJlcGxhY2luZyBUZXh0dXJlQWxsb2NhdG9yIGFuZCBoaWRpbmcgdGV4dHVyZXMgZnJv
bSBjbGllbnRzIHRvIGFsbG93IHRyYW5zcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEwNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGRvZXMgc2V2ZXJhbCB0aGluZ3M6CisgICAgICAgIC0g
QWRkIGEgQ0NSZXNvdXJjZVByb3ZpZGVyIGNsYXNzLCB0aGF0IGhpZGVzIHRleHR1cmVzIGFuZCB0
aGUgM0QgY29udGV4dAorICAgICAgICBmcm9tIGxheWVycyAoZXhjZXB0IHRob3NlIHRoYXQgbmVl
ZCBpdCkuIEluc3RlYWQgbGF5ZXJzIG1hbmFnZQorICAgICAgICAicmVzb3VyY2VzIi4gSW4gdGhl
IGZ1dHVyZSwgcmVzb3VyY2VzIGFyZSBleHBlY3RlZCB0byBiZSB0cmFuc3BvcnRhYmxlCisgICAg
ICAgIHRvIGEgInBhcmVudCIgQ0NSZXNvdXJjZVByb3ZpZGVyIHRvIGFsbG93IGZsYXR0ZW5pbmcg
b2YgbmVzdGVkCisgICAgICAgIGNvbXBvc2l0b3JzLgorICAgICAgICAtIFJlcGxhY2UgdGV4dHVy
ZSBpZHMgYnkgcmVzb3VyY2UgaWRzIGluIERyYXdRdWFkcyAoYWxsb3dpbmcgdGhlbSB0byBiZQor
ICAgICAgICBzZXJpYWxpemFibGUpLgorICAgICAgICAtIFJlcGxhY2UgVGV4dHVyZUFsbG9jYXRv
ciB1c2VzIGJ5IHRoZSBDQ1Jlc291cmNlUHJvdmlkZXIgY2xhc3MuCisgICAgICAgIC0gVXBsb2Fk
IG9mIGRhdGEgaXMgZG9uZSB0aHJvdWdoIHRoZSBDQ1Jlc291cmNlUHJvdmlkZXIgaW5zdGVhZCBv
ZgorICAgICAgICBleHBsaWNpdCBHTCBjYWxscy4KKyAgICAgICAgLSBFeHRlcm5hbCB0ZXh0dXJl
cyBhcmUgd3JhcHBlZCBpbnRvIGEgcmVzb3VyY2UgYXQgZHJhdyB0aW1lIChzZWUKKyAgICAgICAg
Y2F2ZWF0L0ZJWE1FIGluIENDVGV4dHVyZUxheWVySW1wbCkuCisgICAgICAgIC0gUmVuZGVyaW5n
IHdpdGggdGhlIHJlc291cmNlcyBpcyBkb25lIHRocm91Z2ggYW4gZXhwbGljaXQKKyAgICAgICAg
YmVnaW5SZW5kZXJGcm9tL2VuZFJlbmRlckZyb20gdGhhdCBleHBvc2VzIHRoZSB0ZXh0dXJlIG9u
bHkgYmV0d2VlbiB0aGF0CisgICAgICAgIHBhaXIuCisgICAgICAgIC0gTWVyZ2UgYWxsIHRoZSBM
YXllclRleHR1cmVTdWJJbWFnZSBpbnN0YW5jZXMgKG9uZSBwZXIgbGF5ZXIpLCBpbnRvIGEKKyAg
ICAgICAgc2luZ2xlIGluc3RhbmNlIG9uIHRoZSBDQ1Jlc291cmNlUHJvdmlkZXIuCisKKyAgICAg
ICAgQWRkZWQgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgdGhlIHJlZmFjdG9yaW5nIGlzIGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6V2ViQ29tcG9zaXRvclRl
eHR1cmVRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBv
c2l0b3JUaWxlUXVhZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUaWxlUXVh
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRpbGVRdWFkOjpXZWJD
b21wb3NpdG9yVGlsZVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZSk6
CisgICAgICAgIChCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaDoKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2NlbGVy
YXRlZENhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRh
dGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChU
ZXh0dXJlKToKKyAgICAgICAgKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVV
cGRhdGVyOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoSW1hZ2VMYXllclRl
eHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVvUXVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlUXVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdJT1N1cmZh
Y2VRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hl
YWRzVXBEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZmluaXNoRHJhd2luZ0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OnVzZVNjb3BlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2hDdXJyZW50RnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OnJlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZVN1YkltYWdlOjpMYXllclRleHR1cmVTdWJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRleHR1cmVTdWJJbWFnZTo6dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChMYXllclRleHR1cmVTdWJJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYW5h
Z2VkVGV4dHVyZTo6TWFuYWdlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRl
eHR1cmU6OnJlc2VydmUpOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OmFsbG9j
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpzdGVhbCk6CisgICAgICAg
IChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlOjpNYW5h
Z2VkVGV4dHVyZTo6cmVzb3VyY2VJZCk6CisgICAgICAgIChNYW5hZ2VkVGV4dHVyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0
ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVDb3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRU
ZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Zmx1c2gpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoKKyAgICAgICAgKFRleHR1
cmVDb3BpZXIpOgorICAgICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgIChUZXh0dXJlTWFu
YWdlcik6CisgICAgICAgIChUZXh0dXJlSW5mbyk6CisgICAgICAgIChFdmljdGlvbkVudHJ5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaDoK
KyAgICAgICAgKFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6CisgICAg
ICAgIChUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNw
bGF5OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lP
U3VyZmFjZUxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0lPU3VyZmFjZUxheWVy
SW1wbDo6d2lsbERyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ0lPU3VyZmFjZUxheWVySW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJJbXBsOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpjb250ZW50c1Jlc291cmNlSWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpkZWxldGVDb250ZW50c1RleHR1
cmVzT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YmVn
aW5Db21taXRPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
Q0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OnJlbGVhc2VDb250ZW50c1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRpZERyYXdBbGxMYXllcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
SW1wbDo6cmVzb3VyY2VQcm92aWRlcik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4
dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YWNxdWly
ZUJhY2tpbmdUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJl
OjpyZXNvdXJjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjp1
cGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmJlZ2luUmVu
ZGVyVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmVuZFJlbmRl
clRvKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKENDUHJpb3JpdGl6ZWRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3Jp
dGl6ZWRUZXh0dXJlOjpCYWNraW5nOjpyZXNvdXJjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nOjpCYWNraW5nKToKKyAgICAgICAgKEJhY2tpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6On5DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1
aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNsZWFyQWxsTWVtb3J5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWxsQmFja2luZ1RleHR1cmVzV2VyZURl
bGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpj
cmVhdGVCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6ZGVzdHJveUJhY2tpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29yZTo6
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clBhc3NEcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0Ry
YXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaDoKKyAgICAgICAgKENDUmVuZGVy
UGFzc0RyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpt
YXNrUmVzb3VyY2VJZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6
YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHR1
cmVUb1N0b3JhZ2VGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6aXNUZXh0dXJlRm9ybWF0U3Vw
cG9ydGVkRm9yU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6On5DQ1Jlc291
cmNlUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpncmFw
aGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6Omlu
VXNlQnlDb25zdW1lcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNy
ZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Y3Jl
YXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVz
b3VyY2VQcm92aWRlcjo6ZGVsZXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpkZWxldGVPd25lZFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1Jlc291cmNlUHJvdmlkZXI6OnVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNl
UHJvdmlkZXI6OmJlZ2luUmVuZGVyVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVBy
b3ZpZGVyOjplbmRSZW5kZXJUbyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlk
ZXI6OmJlZ2luUmVuZGVyRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlk
ZXI6OmVuZFJlbmRlckZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVy
OjpDQ1Jlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3Zp
ZGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Jlc291cmNlUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1Jlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjptYXhUZXh0dXJlU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6Om51bVJlc291cmNlcyk6CisgICAgICAgIChSZXNvdXJj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0
dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6Q0NTY29wZWRUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6YWxsb2NhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTY29wZWRUZXh0dXJlOjpmcmVlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKENDU2NvcGVkVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Njb3BlZFRleHR1cmU6OmJlZ2luUmVuZGVyVG8pOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTY29wZWRUZXh0dXJlOjplbmRSZW5kZXJUbyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1Njb3BlZFRleHR1cmU6OmJlZ2luUmVuZGVyRnJvbSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1Njb3BlZFRleHR1cmU6OmVuZFJlbmRlckZyb20pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpDQ1Njcm9sbGJhckxheWVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY3JvbGxiYXJMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5
ZXJJbXBsOjpzZXRCYWNrVHJhY2tSZXNvdXJjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Ny
b2xsYmFyTGF5ZXJJbXBsOjpzZXRGb3JlVHJhY2tSZXNvdXJjZUlkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpzZXRUaHVtYlJlc291cmNlSWQpOgorICAgICAgICAo
Q0NTY3JvbGxiYXJMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5n
bGVUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2lu
Z2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhy
ZWFkUHJveHk6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlOjppZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RleHR1cmU6OnNldElkKToKKyAgICAgICAgKENDVGV4dHVyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6Q0NUZXh0dXJlTGF5ZXJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6d2lsbERyYXcpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVMYXllckltcGw6
OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6ZGlk
RHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
TGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RleHR1cmVMYXllckltcGwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhy
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9u
SW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6OnJlc291
cmNlSWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2FibGVUaWxlOjpzZXRSZXNvdXJjZUlkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYXdhYmxlVGlsZTo6RHJhd2FibGVUaWxlKToKKyAgICAgICAg
KERyYXdhYmxlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpjb250
ZW50c1Jlc291cmNlSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6aGFz
VGV4dHVyZUlkRm9yVGlsZUF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6
OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OnB1c2hU
aWxlUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAoQ0NUaWxlZExheWVySW1wbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpDQ1ZpZGVvTGF5ZXJJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6On5DQ1ZpZGVvTGF5ZXJJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0xheWVySW1wbDo6ZGlkRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5
ZXJJbXBsOjpGcmFtZVBsYW5lOjphbGxvY2F0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NW
aWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6ZnJlZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0xheWVySW1wbDo6YWxsb2NhdGVQbGFuZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NWaWRlb0xheWVySW1wbDo6Y29weVBsYW5lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Zp
ZGVvTGF5ZXJJbXBsOjpmcmVlUGxhbmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9M
YXllckltcGw6OmZyZWVVbnVzZWRQbGFuZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRl
b0xheWVySW1wbDo6ZGlkTG9zZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaDoKKyAgICAgICAgKENDVmlkZW9MYXllcklt
cGwpOgorICAgICAgICAoRnJhbWVQbGFuZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5
ZXJJbXBsOjpGcmFtZVBsYW5lOjpGcmFtZVBsYW5lKToKKwogMjAxMi0wNy0xMiAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBMZXQgWENvZGUgaGF2ZSBpdHMgb3du
IHdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZTVjNTU0NmJjNTAzZGFlNjlmNTk4
MjFlNGEyNGE4MjRiY2IxOGJmYi4uYTIwMGZjOTAzYTFkYjYxOGI2MWVkNDkxODQ3MDRiMmU0MWY4
NWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAorMjAxMi0w
Ny0xMSAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBJbnRyb2R1Y2UgQ0NSZXNvdXJjZVByb3ZpZGVyLCByZXBsYWNpbmcgVGV4dHVyZUFs
bG9jYXRvciBhbmQgaGlkaW5nIHRleHR1cmVzIGZyb20gY2xpZW50cyB0byBhbGxvdyB0cmFuc3Bv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDQ0
CisKKyAgICAgICAgVGhpcyBkb2VzIHNldmVyYWwgdGhpbmdzOgorICAgICAgICAtIEFkZCBhIEND
UmVzb3VyY2VQcm92aWRlciBjbGFzcywgdGhhdCBoaWRlcyB0ZXh0dXJlcyBhbmQgdGhlIDNEIGNv
bnRleHQKKyAgICAgICAgZnJvbSBsYXllcnMgKGV4Y2VwdCB0aG9zZSB0aGF0IG5lZWQgaXQpLiBJ
bnN0ZWFkIGxheWVycyBtYW5hZ2UKKyAgICAgICAgInJlc291cmNlcyIuIEluIHRoZSBmdXR1cmUs
IHJlc291cmNlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgdHJhbnNwb3J0YWJsZQorICAgICAgICB0byBh
ICJwYXJlbnQiIENDUmVzb3VyY2VQcm92aWRlciB0byBhbGxvdyBmbGF0dGVuaW5nIG9mIG5lc3Rl
ZAorICAgICAgICBjb21wb3NpdG9ycy4KKyAgICAgICAgLSBSZXBsYWNlIHRleHR1cmUgaWRzIGJ5
IHJlc291cmNlIGlkcyBpbiBEcmF3UXVhZHMgKGFsbG93aW5nIHRoZW0gdG8gYmUKKyAgICAgICAg
c2VyaWFsaXphYmxlKS4KKyAgICAgICAgLSBSZXBsYWNlIFRleHR1cmVBbGxvY2F0b3IgdXNlcyBi
eSB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVyIGNsYXNzLgorICAgICAgICAtIFVwbG9hZCBvZiBkYXRh
IGlzIGRvbmUgdGhyb3VnaCB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVyIGluc3RlYWQgb2YKKyAgICAg
ICAgZXhwbGljaXQgR0wgY2FsbHMuCisgICAgICAgIC0gRXh0ZXJuYWwgdGV4dHVyZXMgYXJlIHdy
YXBwZWQgaW50byBhIHJlc291cmNlIGF0IGRyYXcgdGltZSAoc2VlCisgICAgICAgIGNhdmVhdC9G
SVhNRSBpbiBDQ1RleHR1cmVMYXllckltcGwpLgorICAgICAgICAtIFJlbmRlcmluZyB3aXRoIHRo
ZSByZXNvdXJjZXMgaXMgZG9uZSB0aHJvdWdoIGFuIGV4cGxpY2l0CisgICAgICAgIGJlZ2luUmVu
ZGVyRnJvbS9lbmRSZW5kZXJGcm9tIHRoYXQgZXhwb3NlcyB0aGUgdGV4dHVyZSBvbmx5IGJldHdl
ZW4gdGhhdAorICAgICAgICBwYWlyLgorICAgICAgICAtIE1lcmdlIGFsbCB0aGUgTGF5ZXJUZXh0
dXJlU3ViSW1hZ2UgaW5zdGFuY2VzIChvbmUgcGVyIGxheWVyKSwgaW50byBhCisgICAgICAgIHNp
bmdsZSBpbnN0YW5jZSBvbiB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVyLgorCisgICAgICAgIEFkZGVk
IENDUmVzb3VyY2VQcm92aWRlclRlc3QsIHRoZSByZWZhY3RvcmluZyBpcyBjb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDUHJpb3JpdGl6
ZWRUZXh0dXJlVGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlVGVz
dDo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0KToKKyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0OjpjcmVhdGVNYW5hZ2VyKToKKyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0Ojp2YWxpZGF0ZVRleHR1cmUpOgorICAgICAgICAoV1RGOjpDQ1ByaW9yaXRp
emVkVGV4dHVyZVRlc3Q6OnJlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAoQ0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0KToKKyAgICAgICAgKFdURjo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9D
Q1F1YWRDdWxsZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJU
ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUmVzb3VyY2VQcm92
aWRlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OmJpbmRU
ZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OmNyZWF0
ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6ZGVs
ZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlUHJvdmlkZXJDb250ZXh0Ojp0
ZXhTdG9yYWdlMkRFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4
dDo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlUHJvdmlkZXJDb250ZXh0
Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNvbnRl
eHQ6OmdldFBpeGVscyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlUHJvdmlkZXJDb250ZXh0
Ojp0ZXh0dXJlQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4
dDo6dGV4dHVyZVNpemUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4
dDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZVBy
b3ZpZGVyQ29udGV4dDo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChUZXh0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OmFsbG9jYXRlVGV4dHVyZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlUHJvdmlkZXJDb250ZXh0OjpzZXRQaXhlbHMpOgor
ICAgICAgICAoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OkNDUmVz
b3VyY2VQcm92aWRlclRlc3Q6OkNDUmVzb3VyY2VQcm92aWRlclRlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpDQ1Jlc291cmNlUHJvdmlkZXJUZXN0Ojpjb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6
Q0NSZXNvdXJjZVByb3ZpZGVyVGVzdDo6Z2V0UmVzb3VyY2VQaXhlbHMpOgorICAgICAgICAoV2Vi
S2l0OjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL0NDU2NvcGVkVGV4dHVyZVRlc3QuY3BwOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXll
ckltcGxUZXN0LmNwcDoKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpjcmVhdGVMYXllcik6
CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NU
aWxlZExheWVyVGVzdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAqIHRlc3RzL0ND
VGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OkZha2VUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSk6CisgICAgICAgIChXZWJL
aXRUZXN0czo6RmFrZVRleHR1cmVDb3BpZXI6OmZsdXNoKToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpGYWtlVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9D
b250ZW50TGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNUKToKKyAg
ICAgICAgKiB0ZXN0cy9GYWtlQ0NHcmFwaGljc0NvbnRleHQuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmguCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRl
eHQpOgorICAgICAgICAqIHRlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwOgorICAg
ICAgICAoRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bTo6RmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1
bSk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0OjpMYXllclJlbmRlcmVyQ2hy
b21pdW1UZXN0KToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Q6OmNvbnRleHQp
OgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCk6CisgICAgICAgIChURVNUX0Yp
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3Bw
OgorICAgICAgICAqIHRlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5jcHA6CisgICAgICAgIChXVEY6
OlRleHR1cmVNYW5hZ2VyVGVzdDo6VGV4dHVyZU1hbmFnZXJUZXN0KToKKyAgICAgICAgKFdURjo6
VGV4dHVyZU1hbmFnZXJUZXN0OjpjcmVhdGVUZXh0dXJlTWFuYWdlcik6CisgICAgICAgIChXVEY6
OlRleHR1cmVNYW5hZ2VyVGVzdDo6cmVxdWVzdFRleHR1cmUpOgorICAgICAgICAoVGV4dHVyZU1h
bmFnZXJUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoK
KwogMjAxMi0wNy0xMiAgUm9iZXJ0IFNlc2VrICA8cnNlc2VrQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dW01hY10gcjEyMjQwMCBicm9rZSAxMC42IGJ1aWxkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVh
ZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVy
ZVF1YWQuaAppbmRleCA5YmU2ZmQzZTZkMzE4MjZmMjUxMmE4MDI2MzcyNzlmNDMyNzI2MDYzLi42
Yjg4Njk1NjVjMTZhMjJhOTdmMjJlYWM2NTNkYzkwZGFiMzVmYzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oCisr
KyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkLmgKQEAgLTQzLDExICs0MywxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkNv
bXBvc2l0b3JUZXh0dXJlUXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVhZCB7CiBwdWJsaWM6
CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wg
cHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9v
bCBmbGlwcGVkKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1
YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHJlc291cmNlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFs
cGhhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKTsKICAg
ICBXZWJDb3JlOjpGbG9hdFJlY3QgdXZSZWN0KCkgY29uc3QgeyByZXR1cm4gbV91dlJlY3Q7IH0K
ICNlbmRpZgogCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlSWQ7IH0KKyAgICB1bnNpZ25lZCByZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
dXJjZUlkOyB9CiAgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEoKSBjb25zdCB7IHJldHVybiAg
bV9wcmVtdWx0aXBsaWVkQWxwaGE7IH0KICAgICBib29sIGZsaXBwZWQoKSBjb25zdCB7IHJldHVy
biBtX2ZsaXBwZWQ7IH0KIApAQCAtNTYsMTAgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29t
cG9zaXRvclF1YWQqKTsKIHByaXZhdGU6CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAg
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lk
LCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1dlJl
Y3QsIGJvb2wgZmxpcHBlZCk7CisgICAgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKGNvbnN0IFdl
YktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCB1bnNpZ25lZCByZXNvdXJjZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7CiAjZW5kaWYKIAotICAg
IHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIHVuc2lnbmVkIG1fcmVzb3VyY2VJZDsKICAgICBi
b29sIG1fcHJlbXVsdGlwbGllZEFscGhhOwogICAgIFdlYkZsb2F0UmVjdCBtX3V2UmVjdDsKICAg
ICBib29sIG1fZmxpcHBlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5oCmluZGV4IGUwYTI1NWJiMjVkYTM3OGJiYWY0
NTk5NjVlNjIyZDQyM2UyOTc4NmEuLmUyMGRlNzIzMzEwYTY4OTU3YTc5OWMyZWI5N2E4MDE1NGFi
MWJiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29t
cG9zaXRvclRpbGVRdWFkLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJDb21wb3NpdG9yVGlsZVF1YWQuaApAQCAtMzksOSArMzksOSBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYkNvbXBvc2l0b3JUaWxlUXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVh
ZCB7CiBwdWJsaWM6CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8V2ViQ29tcG9zaXRvclRpbGVRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNv
bnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFB
LCBib29sIGJvdHRvbUVkZ2VBQSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRv
clRpbGVRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBv
cGFxdWVSZWN0LCB1bnNpZ25lZCByZXNvdXJjZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
dGV4dHVyZU9mZnNldCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0Rp
bnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwg
Ym9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKIAot
ICAgIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJl
SWQ7IH0KKyAgICB1bnNpZ25lZCByZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZUlkOyB9CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZU9mZnNldDsgfQogICAgIFdlYkNvcmU6OkludFNpemUgdGV4dHVyZVNpemUo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVTaXplOyB9CiAgICAgR0MzRGludCB0ZXh0dXJlRmls
dGVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlRmlsdGVyOyB9CkBAIC01OCwxMCArNTgsMTAg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yVGlsZVF1YWQqIG1hdGVy
aWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCopOwogcHJpdmF0ZToKICNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KLSAgICAgV2ViQ29tcG9zaXRvclRpbGVRdWFkKGNvbnN0IFdlYkNvbXBv
c2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBxdWFkUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0
dXJlSWQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3
aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdo
dEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOworICAgICBXZWJDb21wb3NpdG9yVGlsZVF1YWQo
Y29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHF1YWRSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBvcGFxdWVSZWN0LCB1bnNpZ25l
ZCByZXNvdXJjZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwg
Ym9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJv
b2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKICNlbmRpZgogCi0gICAgUGxhdGZv
cm0zRE9iamVjdCBtX3RleHR1cmVJZDsKKyAgICB1bnNpZ25lZCBtX3Jlc291cmNlSWQ7CiAgICAg
V2ViUG9pbnQgbV90ZXh0dXJlT2Zmc2V0OwogICAgIFdlYlNpemUgbV90ZXh0dXJlU2l6ZTsKICAg
ICBHQzNEaW50IG1fdGV4dHVyZUZpbHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2MDhkYmJhNDQw
OTNhMDE0YTJhYzc4MjA3ZGIyNzZhOTNkMmIxZjJkLi5kZTJjNDAxZmFjODczYjY0MWQ5MDBlODMy
YTkwNjZjMmQ1ZTUxMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04Mjc5LDggKzgyNzksNiBAQAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVV
cGxvYWRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcCcsCi0gICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hy
b25pemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVv
TGF5ZXJDaHJvbWl1bS5jcHAnLApAQCAtODM2Miw2ICs4MzYwLDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlRmlsdGVycy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlcmluZ1N0YXRzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5jcHAKaW5k
ZXggZTVmNDVmZGM0Y2IyYTU4ZjcyODdmNWZhYzVkYzU2YmRkMjMwNDA3Yi4uZGQwYjY3YTQxYTIz
ZjZhMWI4MDgyNjk2NjMwMjBmMDdmZDYwNTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRv
clRleHR1cmVRdWFkLmNwcApAQCAtMzEsMTQgKzMxLDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQ+IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6
V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBo
YSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkKK1Bhc3NPd25QdHI8V2Vi
Q29tcG9zaXRvclRleHR1cmVRdWFkPiBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OmNyZWF0ZShj
b25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQsIGJvb2wgcHJl
bXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKQog
ewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKHNoYXJl
ZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJl
Y3QsIGZsaXBwZWQpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JUZXh0
dXJlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCByZXNvdXJjZUlkLCBwcmVtdWx0aXBs
aWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOwogfQogCi1XZWJDb21wb3NpdG9yVGV4dHVyZVF1
YWQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3Qs
IHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0
UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpCitXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6Oldl
YkNvbXBvc2l0b3JUZXh0dXJlUXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRR
dWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2ln
bmVkIHJlc291cmNlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3Qm
IHV2UmVjdCwgYm9vbCBmbGlwcGVkKQogICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVh
ZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6VGV4dHVyZUNvbnRlbnQsIHF1YWRSZWN0KQotICAg
ICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQp
CiAgICAgLCBtX3ByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBsaWVkQWxwaGEpCiAgICAgLCBt
X3V2UmVjdCh1dlJlY3QpCiAgICAgLCBtX2ZsaXBwZWQoZmxpcHBlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRpbGVR
dWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29t
cG9zaXRvclRpbGVRdWFkLmNwcAppbmRleCAyN2FhNzc1MDgxNzQxYjExNDE5YjgxMTc2ODdhOTk2
YWY5MmQxY2VjLi5kZTBlODFkZmNmZWNlMDIwMzg3N2E4MmM0ZmY2YmViNjgwM2QzMWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBv
c2l0b3JUaWxlUXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJDb21wb3NpdG9yVGlsZVF1YWQuY3BwCkBAIC0zMSwxNCArMzEsMTQgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzT3duUHRy
PFdlYkNvbXBvc2l0b3JUaWxlUXVhZD4gV2ViQ29tcG9zaXRvclRpbGVRdWFkOjpjcmVhdGUoY29u
c3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJ
bnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9i
amVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRT
aXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250
ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwg
Ym9vbCBib3R0b21FZGdlQUEpCitQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUaWxlUXVhZD4gV2Vi
Q29tcG9zaXRvclRpbGVRdWFkOjpjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50
UmVjdCYgb3BhcXVlUmVjdCwgdW5zaWduZWQgcmVzb3VyY2VJZCwgY29uc3QgSW50UG9pbnQmIHRl
eHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVG
aWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRn
ZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKIHsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JUaWxlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRS
ZWN0LCBvcGFxdWVSZWN0LCB0ZXh0dXJlSWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0
ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29udGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmln
aHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29t
cG9zaXRvclRpbGVRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIHJl
c291cmNlSWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBzd2l6
emxlQ29udGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVk
Z2VBQSkpOwogfQogCi1XZWJDb21wb3NpdG9yVGlsZVF1YWQ6OldlYkNvbXBvc2l0b3JUaWxlUXVh
ZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNv
bnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9y
bTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0
IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenps
ZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRn
ZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKK1dlYkNvbXBvc2l0b3JUaWxlUXVhZDo6V2ViQ29tcG9z
aXRvclRpbGVRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJl
Y3QsIHVuc2lnbmVkIHJlc291cmNlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBj
b25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3
aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdo
dEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCiAgICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFy
ZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpUaWxlZENvbnRlbnQsIHF1YWRSZWN0KQot
ICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNl
SWQpCiAgICAgLCBtX3RleHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkKICAgICAsIG1fdGV4dHVy
ZVNpemUodGV4dHVyZVNpemUpCiAgICAgLCBtX3RleHR1cmVGaWx0ZXIodGV4dHVyZUZpbHRlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggZjg2OWM1OGEyY2NjMGIwOWYyM2Y1MmM0NzFjMzJhOTA0OGVkY2U0NC4uZDI0NGRlNjc0
YTI2YmE0ZDdhZWM1YWFjZTZhMmFlZDE0YTFhZWE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNp
bmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3Iu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCi0jaW5jbHVkZSAiY2MvQ0NHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsMjAgKzQ3LDE5IEBAIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KENDR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVy
ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0
KTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChyZXNvdXJjZVByb3Zp
ZGVyLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAotUGFzc1JlZlB0cjxC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwg
Ym9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKK1Bhc3NSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcj4gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NP
d25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIsIHVzZU1hcFRl
eFN1YkltYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKHBhaW50ZXIpKTsKIH0KIAotQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQorQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQ
YXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQogICAgIDogQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyKQogICAgICwgbV9vcGFxdWUoZmFsc2UpCi0gICAgLCBt
X3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQogewogfQogCkBAIC04Myw4ICs4MSw2IEBA
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpzYW1wbGVkCiAKIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwgZmxvYXQgY29udGVudHNXaWR0aFNjYWxlLCBmbG9hdCBjb250
ZW50c0hlaWdodFNjYWxlLCBJbnRSZWN0JiByZXN1bHRpbmdPcGFxdWVSZWN0KQogewotICAgIG1f
dGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKLQogICAgIGlmIChtX2NhbnZh
c1NpemUgIT0gY29udGVudFJlY3Quc2l6ZSgpKSB7CiAgICAgICAgIG1fY2FudmFzU2l6ZSA9IGNv
bnRlbnRSZWN0LnNpemUoKTsKICAgICAgICAgbV9jYW52YXMgPSBhZG9wdFB0cihza2lhOjpDcmVh
dGVCaXRtYXBDYW52YXMobV9jYW52YXNTaXplLndpZHRoKCksIG1fY2FudmFzU2l6ZS5oZWlnaHQo
KSwgbV9vcGFxdWUpKTsKQEAgLTkzLDEzICs4OSwxMiBAQCB2b2lkIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dAogICAgIHBhaW50Q29udGVudHMobV9jYW52YXMuZ2V0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50
c1dpZHRoU2NhbGUsIGNvbnRlbnRzSGVpZ2h0U2NhbGUsIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwog
fQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVS
ZWN0KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJj
ZVByb3ZpZGVyLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgY29uc3QgU2tCaXRt
YXAmIGJpdG1hcCA9IG1fY2FudmFzLT5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZhbHNlKTsK
ICAgICBiaXRtYXAubG9ja1BpeGVscygpOwogCi0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29u
dGV4dCwgYWxsb2NhdG9yKTsKLSAgICBtX3RleFN1YkltYWdlLnVwbG9hZChzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYml0bWFwLmdldFBpeGVscygpKSwgY29udGVudFJlY3QoKSwgc291cmNl
UmVjdCwgZGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsKKyAgICB0ZXh0dXJl
LT51cGxvYWQocmVzb3VyY2VQcm92aWRlciwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJp
dG1hcC5nZXRQaXhlbHMoKSksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
ICAgICBiaXRtYXAudW5sb2NrUGl4ZWxzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBkOTc5NjhjMDM1NTYyNDMwNTUyY2Zk
OGJmNzk3NjA0MGZmOTM4ZDI2Li5hN2YxMWZhNTM2YzI5ODc5ZjQ5NzdjNGU0OWQ2MDQxN2U5OTM3
NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCkBAIC0zMCwxNCArMzAsMTIgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAKICNpbmNsdWRlICJDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCi0jaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKIAogY2xhc3MgU2tDYW52YXM7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07Ci1jbGFzcyBDQ0dyYXBoaWNzQ29u
dGV4dDsKIAogLy8gVGhpcyBjbGFzcyByYXN0ZXJpemVzIHRoZSBjb250ZW50UmVjdCBpbnRvIGEg
c2tpYSBiaXRtYXAgY2FudmFzLiBJdCB0aGVuIHVwZGF0ZXMKIC8vIHRleHR1cmVzIGJ5IGNvcHlp
bmcgZnJvbSB0aGUgY2FudmFzIGludG8gdGhlIHRleHR1cmUsIHVzaW5nIE1hcFN1YkltYWdlIGlm
CkBAIC00OSw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4pOwog
ICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIE9WRVJSSURFOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0
dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTU3LDIzICs1NSwy
MiBAQCBwdWJsaWM6CiAgICAgICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIG1f
dGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNo
cm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQ
YWludGVyQ2hyb21pdW0+KTsKICAgICB2aXJ0dWFsIH5CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKCk7CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIqKTsKICAg
ICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0g
dGV4dHVyZUZvcm1hdCk7CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGZsb2F0IGNvbnRl
bnRzV2lkdGhTY2FsZSwgZmxvYXQgY29udGVudHNIZWlnaHRTY2FsZSwgSW50UmVjdCYgcmVzdWx0
aW5nT3BhcXVlUmVjdCkgT1ZFUlJJREU7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChDQ0dy
YXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSos
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAg
ICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KENDUmVzb3VyY2VQcm92aWRlciosIENDUHJpb3JpdGl6
ZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSBPVkVSUklERTsKIAog
cHJpdmF0ZToKLSAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKKyAgICBleHBs
aWNpdCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+KTsKIAogICAgIE93blB0cjxTa0NhbnZhcz4gbV9jYW52YXM7CiAgICAgSW50
U2l6ZSBtX2NhbnZhc1NpemU7CiAgICAgYm9vbCBtX29wYXF1ZTsKLSAgICBMYXllclRleHR1cmVT
dWJJbWFnZSBtX3RleFN1YkltYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcAppbmRleCAyM2NmZmVhOTQyMGMxYjYwNjQ1N2JmZTFlZmYyNzJlZThjYWYz
NTQzLi4yODU5MjQyNTM5ODRlMjcyOGQ1ZGVkMWIzYWViZDFiODgyZjRlZjBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIK
ICNpbmNsdWRlICJTa0NhbnZhcy5oIgogI2luY2x1ZGUgIlNrRGV2aWNlLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCwy
NCArNTMsMjEgQEAgdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpwcmVwYXJlUmVjdChjb25zdCBJbnRSZWMKICAgICB0ZXh0dXJlVXBkYXRlcigp
LT5wYWludENvbnRlbnRzUmVjdCgmY2FudmFzLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0
KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9p
ZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRh
dGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgdGV4dHVyZSgp
LT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwotCiAgICAgbV9iaXRtYXAubG9ja1Bp
eGVscygpOwotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQs
IHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9i
aXRtYXAuZ2V0UGl4ZWxzKCkpKTsKKyAgICB0ZXh0dXJlKCktPnVwbG9hZChyZXNvdXJjZVByb3Zp
ZGVyLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxzKCkpLCBkZXN0UmVj
dCwgZGVzdFJlY3QsIGRlc3RSZWN0KTsKICAgICBtX2JpdG1hcC51bmxvY2tQaXhlbHMoKTsKICAg
ICBtX2JpdG1hcC5yZXNldCgpOwogfQogCi1QYXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBi
b29sIHVzZU1hcFRleFN1YkltYWdlKQorUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIocGFpbnRlciwgdXNlTWFwVGV4U3ViSW1hZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikp
OwogfQogCi1CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVy
Q2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCitCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAg
ICAgOiBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIpCi0gICAgLCBt
X3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQogewogfQogCkBAIC05MSwxMiArODcsNiBA
QCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcgogICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRU
ZXhlbEZvcm1hdEJHUkE7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgZmxvYXQgY29udGVudHNXaWR0aFNjYWxlLCBmbG9hdCBj
b250ZW50c0hlaWdodFNjYWxlLCBJbnRSZWN0JiByZXN1bHRpbmdPcGFxdWVSZWN0KQotewotICAg
IG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKLSAgICBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29udGVudFJlY3QsIHRp
bGVTaXplLCBjb250ZW50c1dpZHRoU2NhbGUsIGNvbnRlbnRzSGVpZ2h0U2NhbGUsIHJlc3VsdGlu
Z09wYXF1ZVJlY3QpOwotfQotCiB2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QpCiB7CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBvcmlnaW4gb2YgY29udGVu
dFJlY3QgdG8gdGhhdCBvZiBzb3VyY2VSZWN0LgpAQCAtMTA1LDEwICs5NSw1IEBAIHZvaWQgQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50c1JlY3Qo
U2tDYW52YXMqIGNhbnZhCiAgICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKIH0KIAotdm9pZCBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChD
Q0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgR0MzRGVudW0gZm9ybWF0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKQotewotICAgIG1fdGV4U3ViSW1hZ2Uu
dXBsb2FkKHBpeGVscywgZGVzdFJlY3QsIGRlc3RSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250
ZXh0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogI2VuZGlmIC8vIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA3ODdiMzk5MzdjOTllMTdhNjRh
ZWI0ZDA4OGE1Y2U4OThiZWVkYjZjLi44NTVkNDA1ODU2ZTQwZTU4NmE5YTgwNzFhMjc0NmRiYjM2
N2Q4M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjZGVmaW5lIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJfaAogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQotI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCiAjaW5j
bHVkZSAiU2tCaXRtYXAuaCIKICNpbmNsdWRlICJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmgiCiAKQEAgLTQzLDcgKzQyLDcgQEAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlPik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QpIE9WRVJSSURFOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSBPVkVSUklERTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpA
QCAtNTIsMTkgKzUxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKICAgICB9OwogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4g
Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1
YkltYWdlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyPiBjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4p
OwogICAgIHZpcnR1YWwgfkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIo
KTsKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
PiBjcmVhdGVUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51
bSB0ZXh0dXJlRm9ybWF0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
ZmxvYXQgY29udGVudHNXaWR0aFNjYWxlLCBmbG9hdCBjb250ZW50c0hlaWdodFNjYWxlLCBJbnRS
ZWN0JiByZXN1bHRpbmdPcGFxdWVSZWN0KSBPVkVSUklERTsKICAgICB2b2lkIHBhaW50Q29udGVu
dHNSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCosIEdDM0RlbnVtIGZvcm1hdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CiAKIHByaXZhdGU6
Ci0gICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7Ci0KLSAgICBM
YXllclRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOworICAgIGV4cGxpY2l0IEJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4pOwogfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggOWY0MGY3ZmUxODhiOTM5ZGQxNjRhZTRhNTJiZWQ3OTllNGJlODgxZi4uNzE5ZjlkODk5
MTE2ZTNhNDFhOTlhODdkNjdmODgyNjYyODEwNTRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcApAQCAtMTIyLDkgKzEyMiw5IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21p
dW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQogICAgIGlmIChsYXllclRyZWVIb3N0
KCktPnNldHRpbmdzKCkuYWNjZWxlcmF0ZVBhaW50aW5nKQogICAgICAgICBtX3RleHR1cmVVcGRh
dGVyID0gRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVh
dGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpKTsKICAgICBlbHNlIGlm
IChDQ1NldHRpbmdzOjpwZXJUaWxlUGFpbnRpbmdFbmFibGVkKCkpCi0gICAgICAgIG1fdGV4dHVy
ZVVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVh
dGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBsYXllclRyZWVIb3N0
KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7CisgICAgICAgIG1f
dGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpKTsKICAgICBl
bHNlCi0gICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBs
YXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7
CisgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpKTsKICAg
ICBtX3RleHR1cmVVcGRhdGVyLT5zZXRPcGFxdWUob3BhcXVlKCkpOwogCiAgICAgR0MzRGVudW0g
dGV4dHVyZUZvcm1hdCA9IGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpLmJlc3RUZXh0dXJlRm9ybWF0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXgg
N2U5YWMwYTZjNjVmYTAwZjU5ZTY4MDA0OWE1MmNkMDllNWZhZDY2Yy4uYTg0NzlmMTEyNWFlNWE2
YjkxOWZjOTgxNDBiYTc4Y2NjYjA3ZDJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CkBAIC0zOSwyMCArMzksMTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFBhc3NP
d25QdHI8U2tDYW52YXM+IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4
dHVyZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbnRTaXplIGNhbnZhc1NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkKQogewotICAgIC8vIEFsbG9jYXRl
IHNvIHRoYXQgd2UgaGF2ZSBhIHZhbGlkIHRleHR1cmUgaWQuCi0gICAgdGV4dHVyZS0+YWNxdWly
ZUJhY2tpbmdUZXh0dXJlKGFsbG9jYXRvcik7Ci0KICAgICBHckNvbnRleHQqIGdyQ29udGV4dCA9
IGNvbnRleHQtPmdyQ29udGV4dCgpOwotICAgIEludFNpemUgY2FudmFzU2l6ZSA9IHRleHR1cmUt
PnNpemUoKTsKICAgICBHclBsYXRmb3JtVGV4dHVyZURlc2MgdGV4dHVyZURlc2M7CiAgICAgdGV4
dHVyZURlc2MuZkZsYWdzID0ga1JlbmRlclRhcmdldF9HclBsYXRmb3JtVGV4dHVyZUZsYWc7CiAg
ICAgdGV4dHVyZURlc2MuZldpZHRoID0gY2FudmFzU2l6ZS53aWR0aCgpOwogICAgIHRleHR1cmVE
ZXNjLmZIZWlnaHQgPSBjYW52YXNTaXplLmhlaWdodCgpOwogICAgIHRleHR1cmVEZXNjLmZDb25m
aWcgPSBrU2tpYTg4ODhfUE1fR3JQaXhlbENvbmZpZzsKLSAgICB0ZXh0dXJlRGVzYy5mVGV4dHVy
ZUhhbmRsZSA9IHRleHR1cmUtPnRleHR1cmVJZCgpOworICAgIHRleHR1cmVEZXNjLmZUZXh0dXJl
SGFuZGxlID0gdGV4dHVyZUlkOwogICAgIFNrQXV0b1RVbnJlZjxHclRleHR1cmU+IHRhcmdldChn
ckNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtVGV4dHVyZSh0ZXh0dXJlRGVzYykpOwogICAgIFNrQXV0
b1RVbnJlZjxTa0RldmljZT4gZGV2aWNlKG5ldyBTa0dwdURldmljZShnckNvbnRleHQsIHRhcmdl
dC5nZXQoKSkpOwogICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2tDYW52YXMoZGV2aWNlLmdldCgp
KSk7CkBAIC02OCwxMiArNjQsMTIgQEAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0
KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBzaGFyZWRDb250ZXh0ID0gQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpID8g
U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZvckltcGxUaHJlYWQoKSA6IFNoYXJlZEdyYXBo
aWNzQ29udGV4dDNEOjpnZXQoKTsKICAgICBpZiAoIXNoYXJlZENvbnRleHQpCiAgICAgICAgIHJl
dHVybjsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChzaGFyZWRDb250
ZXh0LnJlbGVhc2UoKSwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0
KTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChzaGFyZWRDb250ZXh0
LnJlbGVhc2UoKSwgcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7CiB9CiAKIFBhc3NSZWZQdHI8RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyPiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQpAQCAt
MTAxLDcgKzk3LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEZy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXAKICAgICByZXR1cm4gTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQTsKIH0KIAotdm9pZCBGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IHBycENvbnRleHQsIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvciwgQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IHBycENvbnRleHQsIENDUmVzb3VyY2VQcm92aWRl
ciogcmVzb3VyY2VQcm92aWRlciwgQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChwcnBDb250ZXh0KTsKIApAQCAtMTA5LDcg
KzEwNSw3IEBAIHZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjp1cGRhdGVUZXh0dXJlUmVjdChQYXNzUmVmUHRyCiAgICAgY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAKICAgICAvLyBDcmVhdGUgYW4gYWNjZWxlcmF0ZWQgY2FudmFzIHRvIGRy
YXcgb24uCi0gICAgT3duUHRyPFNrQ2FudmFzPiBjYW52YXMgPSBjcmVhdGVBY2NlbGVyYXRlZENh
bnZhcyhjb250ZXh0LmdldCgpLCBhbGxvY2F0b3IsIHRleHR1cmUpOworICAgIE93blB0cjxTa0Nh
bnZhcz4gY2FudmFzID0gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoY29udGV4dC5nZXQoKSwgdGV4
dHVyZS0+c2l6ZSgpLCB0ZXh0dXJlLT5iZWdpblJlbmRlclRvKHJlc291cmNlUHJvdmlkZXIpKTsK
IAogICAgIC8vIFRoZSBjb21wb3NpdG9yIGV4cGVjdHMgdGhlIHRleHR1cmVzIHRvIGJlIHVwc2lk
ZS1kb3duIHNvIGl0IGNhbiBmbGlwCiAgICAgLy8gdGhlIGZpbmFsIGNvbXBvc2l0ZWQgaW1hZ2Uu
IEdhbmVzaCByZW5kZXJzIHRoZSBpbWFnZSB1cHJpZ2h0IHNvIHdlCkBAIC0xMjksNiArMTI1LDcg
QEAgdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZVRleHR1cmVSZWN0KFBhc3NSZWZQdHIKIAogICAgIC8vIEZsdXNoIHRoZSBHTCBjb250ZXh0
IHNvIHJlbmRlcmluZyByZXN1bHRzIGZyb20gdGhpcyBjb250ZXh0IGFyZSB2aXNpYmxlIGluIHRo
ZSBjb21wb3NpdG9yJ3MgY29udGV4dC4KICAgICBjb250ZXh0LT5mbHVzaCgpOworICAgIHRleHR1
cmUtPmVuZFJlbmRlclRvKHJlc291cmNlUHJvdmlkZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDhmNjMwYTkyMjgyNjQxMjNiZGZm
NWY3ZDg0ZDliODczYjhhYTI5NjkuLjQ0NjQ5ZTQ3M2M2OWQyNDRjOTFjMDlhNTZhYjcxOWMyMGUx
YTRlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgVGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIqLCBQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPik7CiAgICAgICAgIHZp
cnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dy
YXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSBPVkVSUklERTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciog
dGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBAIC01Niw3ICs1
Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZv
cm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KSBPVkVSUklERTsKLSAgICB2b2lkIHVwZGF0ZVRl
eHR1cmVSZWN0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBUZXh0dXJlQWxsb2NhdG9y
KiwgQ0NQcmlvcml0aXplZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChQYXNzUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgQ0NSZXNvdXJjZVByb3ZpZGVyKiwgQ0NQcmlvcml0aXpl
ZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDM3NjkzNjU4NmQ4YTkxYTgzNWZm
NmVjODNiNTNmYzgyYmE1NWMwYzcuLmVkZTA1NDMwNjUzYjQ2NmEyZmE5NzQwZGRkZDk4YjdiZmM0
MjA1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMzQsNyArMzQsNiBA
QAogCiAjaW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJMYXllclRl
eHR1cmVTdWJJbWFnZS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNs
dWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKQEAgLTUy
LDkgKzUxLDkgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREUKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3Qo
Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREUKICAgICAgICAgewotICAg
ICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxs
b2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIHRl
eHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KHJlc291cmNlUHJvdmlkZXIsIHRleHR1
cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpA
QCAtNjMsOSArNjIsOSBAQCBwdWJsaWM6CiAgICAgICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
ciogbV90ZXh0dXJlVXBkYXRlcjsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1h
Z2VMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUoYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZSgpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cih1c2VNYXBUZXhTdWJJbWFnZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTgxLDEwICs4MCw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKICAgICB9CiAKLSAgICB2
b2lkIHVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICB2b2lk
IHVwZGF0ZVRleHR1cmVSZWN0KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwg
Q0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogICAgIHsKLSAgICAgICAgdGV4dHVyZS0+YmluZFRl
eHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLQogICAgICAgICAvLyBTb3VyY2UgcmVjdCBzaG91
bGQgbmV2ZXIgZ28gb3V0c2lkZSB0aGUgaW1hZ2UgcGl4ZWxzLCBldmVuIGlmIHRoaXMKICAgICAg
ICAgLy8gaXMgcmVxdWVzdGVkIGJlY2F1c2UgdGhlIHRleHR1cmUgZXh0ZW5kcyBvdXRzaWRlIHRo
ZSBpbWFnZS4KICAgICAgICAgSW50UmVjdCBjbGlwcGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7
CkBAIC05Niw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xpcHBlZERlc3RSZWN0LnNldFNp
emUoY2xpcHBlZFNvdXJjZVJlY3Quc2l6ZSgpKTsKIAogICAgICAgICBTa0F1dG9Mb2NrUGl4ZWxz
IGxvY2sobV9iaXRtYXApOwotICAgICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxzKCkpLCBpbWFnZVJlY3QsIGNsaXBw
ZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0
KTsKKyAgICAgICAgdGV4dHVyZS0+dXBsb2FkKHJlc291cmNlUHJvdmlkZXIsIHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihtX2JpdG1hcC5nZXRQaXhlbHMoKSksIGltYWdlUmVjdCwgY2xpcHBl
ZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0UmVjdCk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRCaXRt
YXAoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCkKQEAgLTEwNSwxMyArMTAyLDkgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIo
Ym9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKLSAgICAgICAgOiBtX3RleFN1YkltYWdlKHVzZU1hcFRl
eFN1YkltYWdlKQotICAgIHsKLSAgICB9CisgICAgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKCkg
eyB9CiAKICAgICBTa0JpdG1hcCBtX2JpdG1hcDsKLSAgICBMYXllclRleHR1cmVTdWJJbWFnZSBt
X3RleFN1YkltYWdlOwogfTsKIAogUGFzc1JlZlB0cjxJbWFnZUxheWVyQ2hyb21pdW0+IEltYWdl
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKQEAgLTE2Nyw3ICsxNjAsNyBAQCB2b2lkIEltYWdlTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCiAgICAgaWYgKG1fdGV4
dHVyZVVwZGF0ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBJ
bWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShsYXllclRyZWVIb3N0KCktPmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7CisgICAgbV90ZXh0dXJlVXBkYXRlciA9
IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKCk7CiAgICAgR0MzRGVudW0gdGV4dHVy
ZUZvcm1hdCA9IGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLmJl
c3RUZXh0dXJlRm9ybWF0OwogICAgIHNldFRleHR1cmVGb3JtYXQodGV4dHVyZUZvcm1hdCk7CiAg
ICAgc2V0U2FtcGxlZFRleGVsRm9ybWF0KHRleHR1cmVVcGRhdGVyKCktPnNhbXBsZWRUZXhlbEZv
cm1hdCh0ZXh0dXJlRm9ybWF0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAppbmRleCBlNzU5ZjVjOGU3Mzk5NzA3ZjZkZWUxMjhmYzgxNmRlMjVhMGY5N2M3Li42NTgwYzUw
MmQxNTFkZGZjZGZkMTBmYmEzYmFkMzQ4MWVkNjBmOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFu
YWdlci5oIgogI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVVcGxvYWRlci5oIgogI2luY2x1ZGUg
IlRyYWNlRXZlbnQuaCIKLSNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKICNp
bmNsdWRlICJjYy9DQ0xheWVyUXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNp
bmNsdWRlICJjYy9DQ1Byb3h5LmgiCkBAIC0xMjYsNyArMTI1LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc0J1c3koKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBiZWdpblVwbG9hZHMoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZW5k
VXBsb2FkcygpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEND
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0
ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREUgeyB0ZXh0dXJlLT51cGRhdGVS
ZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CisgICAgdmly
dHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4
dHVyZSwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBJbnRSZWN0
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIE9WRVJSSURFIHsgdGV4dHVyZS0+
dXBkYXRlUmVjdChyZXNvdXJjZVByb3ZpZGVyLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KIAog
cHJvdGVjdGVkOgogICAgIFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkgeyB9CkBAIC0xMzQs
OSArMTMzLDkgQEAgcHJvdGVjdGVkOgogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotUGFz
c093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3Jl
YXRlKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQorUGFzc093
blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRl
KENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVBy
b3ZpZGVyLCBUZXh0dXJlVXBsb2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGluZykKIHsK
LSAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRy
KG5ldyBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0LCB0ZXh0dXJlVXBsb2Fk
ZXJTZXR0aW5nKSkpOworICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVu
ZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIHJlc291cmNl
UHJvdmlkZXIsIHRleHR1cmVVcGxvYWRlclNldHRpbmcpKSk7CiAgICAgaWYgKCFsYXllclJlbmRl
cmVyLT5pbml0aWFsaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNDQsMTQg
KzE0MywxNSBAQCBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVudAogfQogCiBMYXllclJlbmRlcmVyQ2hy
b21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0
ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogICAgIDogQ0NSZW5kZXJlcihjbGllbnQpCiAgICAgLCBt
X2N1cnJlbnRSZW5kZXJQYXNzKDApCiAgICAgLCBtX2N1cnJlbnRUZXh0dXJlKDApCiAgICAgLCBt
X29mZnNjcmVlbkZyYW1lYnVmZmVySWQoMCkKICAgICAsIG1fc2hhcmVkR2VvbWV0cnlRdWFkKEZs
b2F0UmVjdCgtMC41ZiwgLTAuNWYsIDEuMGYsIDEuMGYpKQotICAgICwgbV9jb250ZXh0KGNvbnRl
eHQpCisgICAgLCBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1f
Y29udGV4dChyZXNvdXJjZVByb3ZpZGVyLT5ncmFwaGljc0NvbnRleHQzRCgpKQogICAgICwgbV9k
ZWZhdWx0UmVuZGVyUGFzcygwKQogICAgICwgbV9pc1ZpZXdwb3J0Q2hhbmdlZChmYWxzZSkKICAg
ICAsIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZChmYWxzZSkKQEAgLTM0NCw3ICszNDQsNyBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9y
RnJhbWUoY29uc3QgQ0NSZW5kZXJQYQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW5k
ZXJQYXNzZXNJbkRyYXdPcmRlci5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIW1fcmVuZGVy
UGFzc1RleHR1cmVzLmNvbnRhaW5zKHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpKSkg
ewotICAgICAgICAgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVk
VGV4dHVyZTo6Y3JlYXRlKG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgICAgICAg
ICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3Jl
YXRlKG1fcmVzb3VyY2VQcm92aWRlcik7CiAgICAgICAgICAgICBtX3JlbmRlclBhc3NUZXh0dXJl
cy5zZXQocmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0tPmlkKCksIHRleHR1cmUucmVsZWFzZSgp
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTUxOCw3ICs1MTgsOSBAQCBzdGF0aWMgaW5saW5lIFNr
Qml0bWFwIGFwcGx5RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIs
IGNvbnN0CiAKICAgICBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPmZsdXNoKCk7CiAKLSAgICBy
ZXR1cm4gQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHkoZmlsdGVycywgc291cmNlVGV4dHVy
ZS0+aWQoKSwgc291cmNlVGV4dHVyZS0+c2l6ZSgpLCBmaWx0ZXJDb250ZXh0LmdldCgpKTsKKyAg
ICBTa0JpdG1hcCBzb3VyY2UgPSBDQ1JlbmRlclN1cmZhY2VGaWx0ZXJzOjphcHBseShmaWx0ZXJz
LCBzb3VyY2VUZXh0dXJlLT5iZWdpblJlbmRlclRvKCksIHNvdXJjZVRleHR1cmUtPnNpemUoKSwg
ZmlsdGVyQ29udGV4dC5nZXQoKSk7CisgICAgc291cmNlVGV4dHVyZS0+ZW5kUmVuZGVyVG8oKTsK
KyAgICByZXR1cm4gc291cmNlOwogfQogCiBQYXNzT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQqIHF1YWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb250ZW50
c0RldmljZVRyYW5zZm9ybSkKQEAgLTU1OCw3ICs1NjAsNyBAQCBQYXNzT3duUHRyPENDU2NvcGVk
VGV4dHVyZT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29u
c3QgQwogCiAgICAgZGV2aWNlUmVjdC5pbnRlcnNlY3QobV9jdXJyZW50UmVuZGVyUGFzcy0+ZnJh
bWVidWZmZXJPdXRwdXRSZWN0KCkpOwogCi0gICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gZGV2
aWNlQmFja2dyb3VuZFRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShtX2ltcGxUZXh0
dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBkZXZpY2VC
YWNrZ3JvdW5kVGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKG1fcmVzb3VyY2VQcm92
aWRlcik7CiAgICAgaWYgKCFnZXRGcmFtZWJ1ZmZlclRleHR1cmUoZGV2aWNlQmFja2dyb3VuZFRl
eHR1cmUuZ2V0KCksIGRldmljZVJlY3QpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAt
NTY5LDggKzU3MSw4IEBAIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDCiAgICAgR3JUZXh0dXJlKiB0
ZXh0dXJlID0gcmVpbnRlcnByZXRfY2FzdDxHclRleHR1cmUqPihmaWx0ZXJlZERldmljZUJhY2tn
cm91bmQuZ2V0VGV4dHVyZSgpKTsKICAgICBpbnQgZmlsdGVyZWREZXZpY2VCYWNrZ3JvdW5kVGV4
dHVyZUlkID0gdGV4dHVyZS0+Z2V0VGV4dHVyZUhhbmRsZSgpOwogCi0gICAgT3duUHRyPENDU2Nv
cGVkVGV4dHVyZT4gYmFja2dyb3VuZFRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZSht
X2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKLSAgICBpZiAoIWJhY2tncm91bmRUZXh0dXJl
LT5hbGxvY2F0ZShxdWFkLT5xdWFkUmVjdCgpLnNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEpKQorICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IGJhY2tncm91bmRUZXh0dXJlID0gQ0NT
Y29wZWRUZXh0dXJlOjpjcmVhdGUobV9yZXNvdXJjZVByb3ZpZGVyKTsKKyAgICBpZiAoIWJhY2tn
cm91bmRUZXh0dXJlLT5hbGxvY2F0ZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwgcXVhZC0+cXVhZFJl
Y3QoKS5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBDQ1Jlc291cmNlUHJvdmlkZXI6
OkZyYW1lYnVmZmVyQXR0YWNobWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Y29uc3QgQ0NSZW5kZXJQYXNzKiB0YXJnZXRSZW5kZXJQYXNzID0gbV9jdXJyZW50UmVuZGVyUGFz
czsKQEAgLTYxNSwxNiArNjE3LDE5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgLy8g
RklYTUU6IENhY2hlIHRoaXMgdmFsdWUgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGRvIGl0IGZv
ciBib3RoIHRoZSBzdXJmYWNlIGFuZCBpdHMgcmVwbGljYS4KICAgICAvLyBBcHBseSBmaWx0ZXJz
IHRvIHRoZSBjb250ZW50cyB0ZXh0dXJlLgogICAgIFNrQml0bWFwIGZpbHRlckJpdG1hcCA9IGFw
cGx5RmlsdGVycyh0aGlzLCBxdWFkLT5maWx0ZXJzKCksIGNvbnRlbnRzVGV4dHVyZSk7Ci0gICAg
aW50IGNvbnRlbnRzVGV4dHVyZUlkID0gY29udGVudHNUZXh0dXJlLT5pZCgpOworICAgIHVuc2ln
bmVkIGNvbnRlbnRzVGV4dHVyZUlkID0gMDsKICAgICBpZiAoZmlsdGVyQml0bWFwLmdldFRleHR1
cmUoKSkgewogICAgICAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJldF9jYXN0PEdy
VGV4dHVyZSo+KGZpbHRlckJpdG1hcC5nZXRUZXh0dXJlKCkpOwogICAgICAgICBjb250ZW50c1Rl
eHR1cmVJZCA9IHRleHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBjb250ZW50c1RleHR1cmVJZCA9IGNvbnRlbnRzVGV4dHVyZS0+YmVnaW5SZW5kZXJGcm9t
KCk7CiAgICAgfQogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZCB0ZXh0dXJlIGlmIHRoZXJl
IGlzIG9uZS4KICAgICBpZiAoYmFja2dyb3VuZFRleHR1cmUpIHsKICAgICAgICAgQVNTRVJUKGJh
Y2tncm91bmRUZXh0dXJlLT5zaXplKCkgPT0gcXVhZC0+cXVhZFJlY3QoKS5zaXplKCkpOwotICAg
ICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoYmFja2dyb3VuZFRleHR1cmUtPmlkKCksIHF1
YWQtPnF1YWRSZWN0KCkuc2l6ZSgpLCBxdWFkLT5kcmF3VHJhbnNmb3JtKCkpOworICAgICAgICBj
b3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoYmFja2dyb3VuZFRleHR1cmUtPmJlZ2luUmVuZGVyRnJv
bSgpLCBxdWFkLT5xdWFkUmVjdCgpLnNpemUoKSwgcXVhZC0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAg
ICAgICAgYmFja2dyb3VuZFRleHR1cmUtPmVuZFJlbmRlckZyb20oKTsKICAgICB9CiAKICAgICBi
b29sIGNsaXBwZWQgPSBmYWxzZTsKQEAgLTY0MCw3ICs2NDUsNyBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFk
KiBxdWFkKQogICAgICAgICBkZXZpY2VMYXllckVkZ2VzLmluZmxhdGVBbnRpQWxpYXNpbmdEaXN0
YW5jZSgpOwogICAgIH0KIAotICAgIGJvb2wgdXNlTWFzayA9IHF1YWQtPm1hc2tUZXh0dXJlSWQo
KTsKKyAgICB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkID0gcXVhZC0+bWFza1Jlc291cmNlSWQoKSA/
IG1fcmVzb3VyY2VQcm92aWRlci0+YmVnaW5SZW5kZXJGcm9tKHF1YWQtPm1hc2tSZXNvdXJjZUlk
KCkpIDogMDsKIAogICAgIC8vIEZJWE1FOiB1c2UgdGhlIGJhY2tncm91bmRUZXh0dXJlIGFuZCBi
bGVuZCB0aGUgYmFja2dyb3VuZCBpbiB3aXRoIHRoaXMgZHJhdyBpbnN0ZWFkIG9mIGhhdmluZyBh
IHNlcGFyYXRlIGNvcHkgb2YgdGhlIGJhY2tncm91bmQgdGV4dHVyZS4KIApAQCAtNjUyLDcgKzY1
Nyw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoY29u
c3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgaW50IHNoYWRlck1hc2tTYW1wbGVy
TG9jYXRpb24gPSAtMTsKICAgICBpbnQgc2hhZGVyTWF0cml4TG9jYXRpb24gPSAtMTsKICAgICBp
bnQgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IC0xOwotICAgIGlmICh1c2VBQSAmJiB1c2VNYXNrKSB7
CisgICAgaWYgKHVzZUFBICYmIG1hc2tUZXh0dXJlSWQpIHsKICAgICAgICAgY29uc3QgUmVuZGVy
UGFzc01hc2tQcm9ncmFtQUEqIHByb2dyYW0gPSByZW5kZXJQYXNzTWFza1Byb2dyYW1BQSgpOwog
ICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJv
Z3JhbSgpKSk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHBy
b2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKQEAgLTY2Miw3
ICs2NjcsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFk
KGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgICAgICBzaGFkZXJNYXNrU2Ft
cGxlckxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0
aW9uKCk7CiAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uID0gcHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkubWF0cml4TG9jYXRpb24oKTsKICAgICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IHBy
b2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOwotICAgIH0gZWxzZSBpZiAo
IXVzZUFBICYmIHVzZU1hc2spIHsKKyAgICB9IGVsc2UgaWYgKCF1c2VBQSAmJiBtYXNrVGV4dHVy
ZUlkKSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclBhc3NNYXNrUHJvZ3JhbSogcHJvZ3JhbSA9IHJl
bmRlclBhc3NNYXNrUHJvZ3JhbSgpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCkt
PnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgICAgIEdMQyhjb250ZXh0KCks
IGNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxv
Y2F0aW9uKCksIDApKTsKQEAgLTY3MCw3ICs2NzUsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFk
KQogICAgICAgICBzaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRT
aGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9uKCk7CiAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0
aW9uID0gcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKTsKICAgICAgICAg
c2hhZGVyQWxwaGFMb2NhdGlvbiA9IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2Nh
dGlvbigpOwotICAgIH0gZWxzZSBpZiAodXNlQUEgJiYgIXVzZU1hc2spIHsKKyAgICB9IGVsc2Ug
aWYgKHVzZUFBICYmICFtYXNrVGV4dHVyZUlkKSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclBhc3NQ
cm9ncmFtQUEqIHByb2dyYW0gPSByZW5kZXJQYXNzUHJvZ3JhbUFBKCk7CiAgICAgICAgIEdMQyhj
b250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAg
ICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwpAQCAtNjkxLDcgKzY5Niw3IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgaWYgKHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24g
IT0gLTEpIHsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSkpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBj
b250ZXh0KCktPnVuaWZvcm0xaShzaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uLCAxKSk7Ci0gICAg
ICAgIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHF1YWQtPm1hc2tUZXh0dXJlSWQoKSk7CisgICAgICAgIGNvbnRleHQoKS0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1hc2tUZXh0dXJlSWQpOwogICAgICAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkUwKSk7CiAgICAgfQogCkBAIC03MDgsNiArNzEzLDEyIEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1
YWQqIHF1YWQpCiAKICAgICBkcmF3VGV4dHVyZWRRdWFkKHF1YWQtPmRyYXdUcmFuc2Zvcm0oKSwg
cXVhZC0+cXVhZFJlY3QoKS53aWR0aCgpLCBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpLCBxdWFk
LT5vcGFjaXR5KCksIHN1cmZhY2VRdWFkLAogICAgICAgICAgICAgICAgICAgICAgc2hhZGVyTWF0
cml4TG9jYXRpb24sIHNoYWRlckFscGhhTG9jYXRpb24sIHNoYWRlclF1YWRMb2NhdGlvbik7CisK
KyAgICBpZiAocXVhZC0+bWFza1Jlc291cmNlSWQoKSkKKyAgICAgICAgbV9yZXNvdXJjZVByb3Zp
ZGVyLT5lbmRSZW5kZXJGcm9tKHF1YWQtPm1hc2tSZXNvdXJjZUlkKCkpOworCisgICAgaWYgKCFm
aWx0ZXJCaXRtYXAuZ2V0VGV4dHVyZSgpKQorICAgICAgICBjb250ZW50c1RleHR1cmUtPmVuZFJl
bmRlckZyb20oKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdTb2xpZENv
bG9yUXVhZChjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogcXVhZCkKQEAgLTgyNiw3ICs4Mzcs
OCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGls
ZURyYXdRdWFkKiBxdWFkKQogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3Jh
bSh1bmlmb3Jtcy5wcm9ncmFtKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlm
b3JtMWkodW5pZm9ybXMuc2FtcGxlckxvY2F0aW9uLCAwKSk7CiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwot
ICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHF1YWQtPnRleHR1cmVJZCgpKSk7CisgICAgdW5zaWduZWQgdGV4dHVy
ZUlkID0gbV9yZXNvdXJjZVByb3ZpZGVyLT5iZWdpblJlbmRlckZyb20ocXVhZC0+cmVzb3VyY2VJ
ZCgpKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQpKTsKICAgICBHTEMoY29udGV4dCgpLCBj
b250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIHF1YWQtPnRleHR1cmVGaWx0ZXIo
KSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgcXVhZC0+dGV4dHVyZUZpbHRlcigpKSk7CiAKQEAgLTkwNyw2ICs5MTksNyBAQCB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURyYXdRdWFk
KiBxdWFkKQogICAgIGxvY2FsUXVhZC5zY2FsZSgxLjBmIC8gdGlsZVJlY3Qud2lkdGgoKSwgMS4w
ZiAvIHRpbGVSZWN0LmhlaWdodCgpKTsKIAogICAgIGRyYXdUZXh0dXJlZFF1YWQocXVhZC0+cXVh
ZFRyYW5zZm9ybSgpLCB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgcXVhZC0+
b3BhY2l0eSgpLCBsb2NhbFF1YWQsIHVuaWZvcm1zLm1hdHJpeExvY2F0aW9uLCB1bmlmb3Jtcy5h
bHBoYUxvY2F0aW9uLCB1bmlmb3Jtcy5wb2ludExvY2F0aW9uKTsKKyAgICBtX3Jlc291cmNlUHJv
dmlkZXItPmVuZFJlbmRlckZyb20ocXVhZC0+cmVzb3VyY2VJZCgpKTsKIH0KIAogdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVZWaWRlb1F1YWQoY29uc3QgQ0NZVVZWaWRlb0RyYXdR
dWFkKiBxdWFkKQpAQCAtOTE4LDEyICs5MzEsMTUgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdZVVZWaWRlb1F1YWQoY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKiBxdWFkKQogICAg
IGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHVQbGFuZSA9IHF1YWQtPnVQbGFu
ZSgpOwogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSA9IHF1
YWQtPnZQbGFuZSgpOwogCisgICAgdW5zaWduZWQgeVRleHR1cmVJZCA9IG1fcmVzb3VyY2VQcm92
aWRlci0+YmVnaW5SZW5kZXJGcm9tKHlQbGFuZS5yZXNvdXJjZUlkKTsKKyAgICB1bnNpZ25lZCB1
VGV4dHVyZUlkID0gbV9yZXNvdXJjZVByb3ZpZGVyLT5iZWdpblJlbmRlckZyb20odVBsYW5lLnJl
c291cmNlSWQpOworICAgIHVuc2lnbmVkIHZUZXh0dXJlSWQgPSBtX3Jlc291cmNlUHJvdmlkZXIt
PmJlZ2luUmVuZGVyRnJvbSh2UGxhbmUucmVzb3VyY2VJZCk7CiAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSkpOwot
ICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHlQbGFuZS50ZXh0dXJlSWQpKTsKKyAgICBHTEMoY29udGV4dCgpLCBj
b250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB5VGV4
dHVyZUlkKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMikpOwotICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHVQbGFuZS50ZXh0
dXJlSWQpKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB1VGV4dHVyZUlkKSk7CiAgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMykp
OwotICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIHZQbGFuZS50ZXh0dXJlSWQpKTsKKyAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB2
VGV4dHVyZUlkKSk7CiAKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0o
cHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAKQEAgLTk2OCw2ICs5ODQsMTAgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdZVVZWaWRlb1F1YWQoY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFk
KiBxdWFkKQogCiAgICAgLy8gUmVzZXQgYWN0aXZlIHRleHR1cmUgYmFjayB0byB0ZXh0dXJlIDAu
CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFMCkpOworCisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5lbmRSZW5kZXJG
cm9tKHlQbGFuZS5yZXNvdXJjZUlkKTsKKyAgICBtX3Jlc291cmNlUHJvdmlkZXItPmVuZFJlbmRl
ckZyb20odVBsYW5lLnJlc291cmNlSWQpOworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZW5kUmVu
ZGVyRnJvbSh2UGxhbmUucmVzb3VyY2VJZCk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3U3RyZWFtVmlkZW9RdWFkKGNvbnN0IENDU3RyZWFtVmlkZW9EcmF3UXVhZCogcXVh
ZCkKQEAgLTEwMzQsNyArMTA1NCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
VGV4dHVyZVF1YWQoY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQqIHF1YWQpCiAgICAgR0xDKGNvbnRl
eHQoKSwgY29udGV4dCgpLT51bmlmb3JtNGYoYmluZGluZy50ZXhUcmFuc2Zvcm1Mb2NhdGlvbiwg
dXZSZWN0LngoKSwgdXZSZWN0LnkoKSwgdXZSZWN0LndpZHRoKCksIHV2UmVjdC5oZWlnaHQoKSkp
OwogCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFMCkpOwotICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+Ymlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHF1YWQtPnRleHR1cmVJZCgp
KSk7CisgICAgdW5zaWduZWQgdGV4dHVyZUlkID0gbV9yZXNvdXJjZVByb3ZpZGVyLT5iZWdpblJl
bmRlckZyb20ocXVhZC0+cmVzb3VyY2VJZCgpKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0
KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQp
KTsKIAogICAgIC8vIEZJWE1FOiBzZXR0aW5nIHRoZSB0ZXh0dXJlIHBhcmFtZXRlcnMgZXZlcnkg
dGltZSBpcyByZWR1bmRhbnQuIE1vdmUgdGhpcyBjb2RlIHNvbWV3aGVyZQogICAgIC8vIHdoZXJl
IGl0IHdpbGwgb25seSBoYXBwZW4gb25jZSBwZXIgdGV4dHVyZS4KQEAgLTEwNjMsNiArMTA4NCw3
IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZVF1YWQoY29uc3QgQ0NU
ZXh0dXJlRHJhd1F1YWQqIHF1YWQpCiAKICAgICBpZiAoIXF1YWQtPnByZW11bHRpcGxpZWRBbHBo
YSgpKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJsZW5kRnVuYyhHcmFwaGlj
c0NvbnRleHQzRDo6T05FLCBHcmFwaGljc0NvbnRleHQzRDo6T05FX01JTlVTX1NSQ19BTFBIQSkp
OworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZW5kUmVuZGVyRnJvbShxdWFkLT5yZXNvdXJjZUlk
KCkpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0lPU3VyZmFjZVF1YWQo
Y29uc3QgQ0NJT1N1cmZhY2VEcmF3UXVhZCogcXVhZCkKQEAgLTEwNzgsMTMgKzExMDAsNiBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0lPU3VyZmFjZVF1YWQoY29uc3QgQ0NJT1N1
cmZhY2VEcmF3UXVhZCogcXVhZCkKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShFeHRlbnNpb25zM0Q6OlRFWFRVUkVfUkVDVEFOR0xF
X0FSQiwgcXVhZC0+aW9TdXJmYWNlVGV4dHVyZUlkKCkpKTsKIAotICAgIC8vIEZJWE1FOiBzZXR0
aW5nIHRoZSB0ZXh0dXJlIHBhcmFtZXRlcnMgZXZlcnkgdGltZSBpcyByZWR1bmRhbnQuIE1vdmUg
dGhpcyBjb2RlIHNvbWV3aGVyZQotICAgIC8vIHdoZXJlIGl0IHdpbGwgb25seSBoYXBwZW4gb25j
ZSBwZXIgdGV4dHVyZS4KLSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRl
cmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICBHTEMoY29u
dGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVIpKTsKLSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKLSAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3ND
b250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKLQogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IHF1YWRUcmFuc2Zvcm0gPSBxdWFkLT5xdWFkVHJhbnNmb3JtKCk7CiAgICAgSW50UmVjdCBxdWFk
UmVjdCA9IHF1YWQtPnF1YWRSZWN0KCk7CiAgICAgcXVhZFRyYW5zZm9ybS50cmFuc2xhdGUocXVh
ZFJlY3QueCgpICsgcXVhZFJlY3Qud2lkdGgoKSAvIDIuMCwgcXVhZFJlY3QueSgpICsgcXVhZFJl
Y3QuaGVpZ2h0KCkgLyAyLjApOwpAQCAtMTEwNiw3ICsxMTIxLDcgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheShjb25zdCBDQ1Njb3BlZFRleHR1cmUqIGh1
ZFRleHR1cmUKICAgICBjb25zdCBIZWFkc1VwRGlzcGxheVByb2dyYW0qIHByb2dyYW0gPSBoZWFk
c1VwRGlzcGxheVByb2dyYW0oKTsKICAgICBBU1NFUlQocHJvZ3JhbSAmJiBwcm9ncmFtLT5pbml0
aWFsaXplZCgpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaHVkVGV4dHVy
ZS0+aWQoKSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGh1ZFRleHR1cmUtPmJlZ2luUmVuZGVyRnJvbSgp
KSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0tPnBy
b2dyYW0oKSkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKIApAQCAtMTExNiwx
MCArMTEzMSwxMiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNw
bGF5KGNvbnN0IENDU2NvcGVkVGV4dHVyZSogaHVkVGV4dHVyZQogICAgICAgICAgICAgICAgICAg
ICAgMSwgc2hhcmVkR2VvbWV0cnlRdWFkKCksIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJp
eExvY2F0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLmFscGhhTG9jYXRpb24oKSwKICAgICAgICAgICAgICAgICAgICAgIC0xKTsKKyAgICBodWRU
ZXh0dXJlLT5lbmRSZW5kZXJGcm9tKCk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpmaW5pc2hEcmF3aW5nRnJhbWUoKQogeworICAgIGZpbmlzaEN1cnJlbnRGcmFtZWJ1ZmZlcigp
OwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQz
RDo6U0NJU1NPUl9URVNUKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxl
KEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwogfQpAQCAtMTM1NCwxMiArMTM3MSwxMyBAQCBi
b29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKENDU2NvcGVk
VGV4dHVyZSogdGV4dHVyZSwgY29ucwogewogICAgIEFTU0VSVCghdGV4dHVyZS0+aWQoKSB8fCAo
dGV4dHVyZS0+c2l6ZSgpID09IGRldmljZVJlY3Quc2l6ZSgpICYmIHRleHR1cmUtPmZvcm1hdCgp
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpSR0IpKTsKIAotICAgIGlmICghdGV4dHVyZS0+aWQoKSAm
JiAhdGV4dHVyZS0+YWxsb2NhdGUoZGV2aWNlUmVjdC5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0IpKQorICAgIGlmICghdGV4dHVyZS0+aWQoKSAmJiAhdGV4dHVyZS0+YWxsb2NhdGUoQ0NS
ZW5kZXJlcjo6SW1wbFBvb2wsIGRldmljZVJlY3Quc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCLCBDQ1Jlc291cmNlUHJvdmlkZXI6OkFueSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUtPmlkKCkpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJl
LT5iZWdpblJlbmRlclRvKCkpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmNvcHlU
ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCB0ZXh0dXJlLT5mb3Jt
YXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmlj
ZVJlY3QueCgpLCBkZXZpY2VSZWN0LnkoKSwgZGV2aWNlUmVjdC53aWR0aCgpLCBkZXZpY2VSZWN0
LmhlaWdodCgpLCAwKSk7CisgICAgdGV4dHVyZS0+ZW5kUmVuZGVyVG8oKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMTM3MCw4ICsxMzg4LDggQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmlzQ3VycmVudFJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQog
CiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRl
clBhc3MqIHJlbmRlclBhc3MpCiB7CisgICAgZmluaXNoQ3VycmVudEZyYW1lYnVmZmVyKCk7CiAg
ICAgbV9jdXJyZW50UmVuZGVyUGFzcyA9IHJlbmRlclBhc3M7Ci0gICAgbV9jdXJyZW50VGV4dHVy
ZSA9IDA7CiAKICAgICBpZiAocmVuZGVyUGFzcyA9PSBtX2RlZmF1bHRSZW5kZXJQYXNzKSB7CiAg
ICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOwpAQCAtMTM4Miw3ICsxNDAwLDcgQEAgYm9vbCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiBy
ZW5kZXJQYXNzKQogICAgIENDU2NvcGVkVGV4dHVyZSogdGV4dHVyZSA9IG1fcmVuZGVyUGFzc1Rl
eHR1cmVzLmdldChyZW5kZXJQYXNzLT5pZCgpKTsKICAgICBBU1NFUlQodGV4dHVyZSk7CiAKLSAg
ICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKHJlbmRlclBhc3NUZXh0
dXJlU2l6ZShyZW5kZXJQYXNzKSwgcmVuZGVyUGFzc1RleHR1cmVGb3JtYXQocmVuZGVyUGFzcykp
KQorICAgIGlmICghdGV4dHVyZS0+aWQoKSAmJiAhdGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJl
cjo6SW1wbFBvb2wsIHJlbmRlclBhc3NUZXh0dXJlU2l6ZShyZW5kZXJQYXNzKSwgcmVuZGVyUGFz
c1RleHR1cmVGb3JtYXQocmVuZGVyUGFzcyksIENDUmVzb3VyY2VQcm92aWRlcjo6RnJhbWVidWZm
ZXJBdHRhY2htZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIGJpbmRG
cmFtZWJ1ZmZlclRvVGV4dHVyZSh0ZXh0dXJlLCByZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1
dFJlY3QoKSk7CkBAIC0xMzkxLDggKzE0MDksNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dXNlUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MpCiBib29sIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlU2NvcGVkVGV4dHVyZShjb25zdCBDQ1Njb3BlZFRleHR1
cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCkKIHsKICAgICBBU1NFUlQo
dGV4dHVyZS0+aWQoKSk7Ci0KLSAgICBtX2N1cnJlbnRSZW5kZXJQYXNzID0gMDsKKyAgICBmaW5p
c2hDdXJyZW50RnJhbWVidWZmZXIoKTsKICAgICBtX2N1cnJlbnRUZXh0dXJlID0gdGV4dHVyZTsK
IAogICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUodGV4dHVyZSwgdmlld3BvcnRS
ZWN0KTsKQEAgLTE0MDMsNyArMTQyMCw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpi
aW5kRnJhbWVidWZmZXJUb1RleHR1cmUoY29uc3QgQ0NTY29wZWRUZXh0dXJlKiB0ZXh0CiAgICAg
QVNTRVJUKHRleHR1cmUtPmlkKCkpOwogCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5i
aW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX29mZnNjcmVl
bkZyYW1lYnVmZmVySWQpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
dGV4dHVyZS0+aWQoKSwgMCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZnJhbWVi
dWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCB0ZXh0dXJlLT5iZWdpblJlbmRlclRvKCksIDApKTsKIAogI2lmICFkZWZpbmVkICggTkRFQlVH
ICkKICAgICBpZiAobV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NP
TVBMRVRFKSB7CkBAIC0xNDE3LDYgKzE0MzQsMTggQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZShjb25zdCBDQ1Njb3BlZFRleHR1cmUqIHRleHQK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlz
aEN1cnJlbnRGcmFtZWJ1ZmZlcigpCit7CisgICAgY29uc3QgQ0NTY29wZWRUZXh0dXJlKiB0ZXh0
dXJlID0gbV9jdXJyZW50VGV4dHVyZTsKKyAgICBpZiAoIXRleHR1cmUgJiYgbV9jdXJyZW50UmVu
ZGVyUGFzcyAmJiBtX2N1cnJlbnRSZW5kZXJQYXNzICE9IG1fZGVmYXVsdFJlbmRlclBhc3MpCisg
ICAgICAgIHRleHR1cmUgPSBtX3JlbmRlclBhc3NUZXh0dXJlcy5nZXQobV9jdXJyZW50UmVuZGVy
UGFzcy0+aWQoKSk7CisgICAgbV9jdXJyZW50UmVuZGVyUGFzcyA9IDA7CisgICAgbV9jdXJyZW50
VGV4dHVyZSA9IDA7CisgICAgaWYgKCF0ZXh0dXJlKQorICAgICAgICByZXR1cm47CisgICAgdGV4
dHVyZS0+ZW5kUmVuZGVyVG8oKTsKK30KKwogLy8gU2V0cyB0aGUgc2Npc3NvciByZWdpb24gdG8g
dGhlIGdpdmVuIHJlY3RhbmdsZS4gVGhlIGNvb3JkaW5hdGUgc3lzdGVtIGZvciB0aGUKIC8vIHNj
aXNzb3JSZWN0IGhhcyBpdHMgb3JpZ2luIGF0IHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGN1
cnJlbnQgdmlzaWJsZSByZWN0Lgogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNz
b3JUb1JlY3QoY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QpCkBAIC0xNDgwLDE0ICsxNTA5LDYg
QEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkK
ICAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNy
ZWF0ZShtX2NvbnRleHQpOwogICAgIGVsc2UKICAgICAgICAgbV90ZXh0dXJlVXBsb2FkZXIgPSBV
bnRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKCk7Ci0gICAgbV9jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZShtX2NvbnRleHQs
IG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKLSAgICBtX2ltcGxUZXh0dXJlQWxsb2Nh
dG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LCBtX2NhcGFi
aWxpdGllcy5tYXhUZXh0dXJlU2l6ZSk7Ci0gICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4
dHVyZVVzYWdlSGludCkKLSAgICAgICAgbV9pbXBsVGV4dHVyZUFsbG9jYXRvci0+c2V0VGV4dHVy
ZVVzYWdlSGludChUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OkZyYW1lYnVmZmVyQXR0YWNobWVu
dCk7Ci0gICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVN0b3JhZ2VFeHRlbnNpb24p
IHsKLSAgICAgICAgbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9y
YWdlRXh0KHRydWUpOwotICAgICAgICBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLT5zZXRVc2VUZXh0
dXJlU3RvcmFnZUV4dCh0cnVlKTsKLSAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggNDE1NTIwZDdmZDllOTM4MWU2NWU1MDNm
YTliNzNmYjVmOWQ5OGNjZC4uODYxNGI3OTY4MDFhMzk5MmUyZTU4Y2FhNWE4MzM4OGE4ZTgwZDgw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTM2LDcgKzM2LDYgQEAK
IAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiVGV4dHVyZUNv
cGllci5oIgotI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUg
ImNjL0NDQ2hlY2tlcmJvYXJkRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVy
RHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0lPU3VyZmFjZURyYXdRdWFkLmgiCkBAIC02Niw3
ICs2NSw3IEBAIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bSA6IHB1YmxpYyBDQ1JlbmRlcmVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYktpdDo6V2ViR3JhcGhp
Y3NDb250ZXh0M0Q6OldlYkdyYXBoaWNzQ29udGV4dExvc3RDYWxsYmFjayB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoTGF5ZXJSZW5kZXJlckNocm9taXVtKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGNyZWF0ZShDQ1JlbmRlcmVyQ2xp
ZW50KiwgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVVcGxvYWRlck9wdGlv
bik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUo
Q0NSZW5kZXJlckNsaWVudCosIENDUmVzb3VyY2VQcm92aWRlciosIFRleHR1cmVVcGxvYWRlck9w
dGlvbik7CiAKICAgICB2aXJ0dWFsIH5MYXllclJlbmRlcmVyQ2hyb21pdW0oKTsKIApAQCAtMTAz
LDggKzEwMiw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4dHVyZUNvcGllciogdGV4dHVy
ZUNvcGllcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdGV4dHVyZUNvcGllci5nZXQoKTsg
fQogICAgIHZpcnR1YWwgVGV4dHVyZVVwbG9hZGVyKiB0ZXh0dXJlVXBsb2FkZXIoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX3RleHR1cmVVcGxvYWRlci5nZXQoKTsgfQotICAgIHZpcnR1YWwg
VGV4dHVyZUFsbG9jYXRvciogaW1wbFRleHR1cmVBbGxvY2F0b3IoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yLmdldCgpOyB9Ci0gICAgdmlydHVhbCBUZXh0
dXJlQWxsb2NhdG9yKiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogCkBAIC0x
MTYsOSArMTEzLDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRRdWFkJiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hdHJpeExvY2F0aW9uLCBpbnQgYWxwaGFMb2Nh
dGlvbiwgaW50IHF1YWRMb2NhdGlvbik7CiAgICAgdm9pZCBjb3B5VGV4dHVyZVRvRnJhbWVidWZm
ZXIoaW50IHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBjb25zdCBXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4KTsKKyAgICBDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUHJvdmlkZXI7
IH0KIAogcHJvdGVjdGVkOgotICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xp
ZW50KiwgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVVcGxvYWRlck9wdGlv
bik7CisgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqLCBDQ1Jlc291
cmNlUHJvdmlkZXIqLCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOworCiAKICAgICBib29sIGlzRnJh
bWVidWZmZXJEaXNjYXJkZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnJhbWVidWZmZXJEaXNjYXJk
ZWQ7IH0KICAgICBib29sIGluaXRpYWxpemUoKTsKQEAgLTE0OCw2ICsxNDcsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNDdXJyZW50UmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqKTsKIAog
ICAgIGJvb2wgYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKGNvbnN0IENDU2NvcGVkVGV4dHVyZSos
IGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCk7CisgICAgdm9pZCBmaW5pc2hDdXJyZW50RnJh
bWVidWZmZXIoKTsKIAogICAgIHZvaWQgY2xlYXJSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFz
cyosIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWVidWZmZXJEYW1hZ2VSZWN0KTsKIApAQCAtMjYwLDEw
ICsyNjAsOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxTb2xpZENvbG9yUHJvZ3JhbT4gbV9zb2xp
ZENvbG9yUHJvZ3JhbTsKICAgICBPd25QdHI8SGVhZHNVcERpc3BsYXlQcm9ncmFtPiBtX2hlYWRz
VXBEaXNwbGF5UHJvZ3JhbTsKIAorICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVBy
b3ZpZGVyOwogICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IG1fdGV4dHVyZUNv
cGllcjsKICAgICBPd25QdHI8VGV4dHVyZVVwbG9hZGVyPiBtX3RleHR1cmVVcGxvYWRlcjsKLSAg
ICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRzVGV4dHVyZUFsbG9j
YXRvcjsKLSAgICBPd25QdHI8VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2ltcGxUZXh0dXJl
QWxsb2NhdG9yOwogCiAgICAgSGFzaE1hcDxpbnQsIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+ID4g
bV9yZW5kZXJQYXNzVGV4dHVyZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNw
cAppbmRleCBiODdiNDNkOTQwMWEwMWZkMTk5OGI3M2YyY2VmZWI2ZmMwMjRmNDVjLi5iNjZkNzll
MDRlYmRhZjhhNjQyNzlkOGEzMzdiZTgzZTQxZmFjNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0
dXJlU3ViSW1hZ2UuY3BwCkBAIC0zMiwxMiArMzIsMTUgQEAKICNpbmNsdWRlICJFeHRlbnNpb25z
M0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBGb3Ig
R0xDKCkgbWFjcm8KICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCi0jaW5jbHVkZSAiY2MvQ0NHcmFw
aGljc0NvbnRleHQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4K
KwordXNpbmcgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBMYXllclRleHR1cmVTdWJJbWFnZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2UoYm9vbCB1
c2VNYXBUZXhTdWJJbWFnZSkKICAgICA6IG1fdXNlTWFwVGV4U3ViSW1hZ2UodXNlTWFwVGV4U3Vi
SW1hZ2UpCisgICAgLCBtX3N1YkltYWdlU2l6ZSgwKQogewogfQogCkBAIC00NSwxOCArNDgsOSBA
QCBMYXllclRleHR1cmVTdWJJbWFnZTo6fkxheWVyVGV4dHVyZVN1YkltYWdlKCkKIHsKIH0KIAot
dm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6c2V0U3ViSW1hZ2VTaXplKGNvbnN0IEludFNpemUm
IHN1YkltYWdlU2l6ZSkKLXsKLSAgICBpZiAoc3ViSW1hZ2VTaXplID09IG1fc3ViSW1hZ2VTaXpl
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N1YkltYWdlU2l6ZSA9IHN1YkltYWdlU2l6ZTsK
LSAgICBtX3N1YkltYWdlLmNsZWFyKCk7Ci19Ci0KIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6
OnVwbG9hZChjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBpZiAobV91c2VNYXBUZXhTdWJJbWFnZSkKICAg
ICAgICAgdXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwpAQCAtNjYsMTEgKzYwLDkgQEAgdm9pZCBM
YXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJ
bnRSZWN0JiBpbWFnZVJlY3QKIAogdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0
aFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJl
Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0
LCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIFdlYkdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0KQogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJUZXh0dXJlU3Vi
SW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSIpOwotICAgIGlmICghbV9zdWJJbWFnZSkKLSAg
ICAgICAgbV9zdWJJbWFnZSA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbbV9zdWJJbWFnZVNp
emUud2lkdGgoKSAqIG1fc3ViSW1hZ2VTaXplLmhlaWdodCgpICogNF0pOwogCiAgICAgLy8gT2Zm
c2V0IGZyb20gaW1hZ2UtcmVjdCB0byBzb3VyY2UtcmVjdC4KICAgICBJbnRQb2ludCBvZmZzZXQo
c291cmNlUmVjdC54KCkgLSBpbWFnZVJlY3QueCgpLCBzb3VyY2VSZWN0LnkoKSAtIGltYWdlUmVj
dC55KCkpOwpAQCAtNzksNiArNzEsMTEgQEAgdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBs
b2FkV2l0aFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnQKICAgICBp
ZiAoaW1hZ2VSZWN0LndpZHRoKCkgPT0gc291cmNlUmVjdC53aWR0aCgpICYmICFvZmZzZXQueCgp
KQogICAgICAgICBwaXhlbFNvdXJjZSA9ICZpbWFnZVs0ICogb2Zmc2V0LnkoKSAqIGltYWdlUmVj
dC53aWR0aCgpXTsKICAgICBlbHNlIHsKKyAgICAgICAgc2l6ZV90IG5lZWRlZFNpemUgPSA0ICog
ZGVzdFJlY3Qud2lkdGgoKSAqIGRlc3RSZWN0LmhlaWdodCgpOworICAgICAgICBpZiAobV9zdWJJ
bWFnZVNpemUgPCBuZWVkZWRTaXplKSB7CisgICAgICAgICAgbV9zdWJJbWFnZSA9IGFkb3B0QXJy
YXlQdHIobmV3IHVpbnQ4X3RbbmVlZGVkU2l6ZV0pOworICAgICAgICAgIG1fc3ViSW1hZ2VTaXpl
ID0gbmVlZGVkU2l6ZTsKKyAgICAgICAgfQogICAgICAgICAvLyBTdHJpZGVzIG5vdCBlcXVhbCwg
c28gZG8gYSByb3ctYnktcm93IG1lbWNweSBmcm9tIHRoZQogICAgICAgICAvLyBwYWludCByZXN1
bHRzIGludG8gYSB0ZW1wIGJ1ZmZlciBmb3IgdXBsb2FkaW5nLgogICAgICAgICBmb3IgKGludCBy
b3cgPSAwOyByb3cgPCBkZXN0UmVjdC5oZWlnaHQoKTsgKytyb3cpCkBAIC04OSwzMCArODYsMTkg
QEAgdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlKGNvbnN0
IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnQKICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV9zdWJJ
bWFnZVswXTsKICAgICB9CiAKLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRp
bmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNk
LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVj
dC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCks
IGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHBpeGVsU291cmNlKSk7
CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53
aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfQllURSwgcGl4ZWxTb3VyY2UpKTsKIH0KIAogdm9pZCBMYXllclRleHR1cmVTdWJJbWFn
ZTo6dXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJ
bnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0MzRGVudW0gZm9ybWF0LCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBm
b3JtYXQsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAgIFRSQUNFX0VWRU5U
MCgiY2MiLCAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSIp
OwotICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQt
PmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQogICAgIC8vIE9mZnNldCBmcm9tIGltYWdlLXJlY3QgdG8gc291cmNlLXJl
Y3QuCiAgICAgSW50UG9pbnQgb2Zmc2V0KHNvdXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwg
c291cmNlUmVjdC55KCkgLSBpbWFnZVJlY3QueSgpKTsKIAogICAgIC8vIFVwbG9hZCB0aWxlIGRh
dGEgdmlhIGEgbWFwcGVkIHRyYW5zZmVyIGJ1ZmZlcgotICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9
IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb250ZXh0M2QtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlV
TShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVj
dC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVf
T05MWSkpOworICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihj
b250ZXh0LT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBk
ZXN0UmVjdC5oZWlnaHQoKSwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllU
RSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKIAogICAgIGlmICghcGl4ZWxE
ZXN0KSB7CiAgICAgICAgIHVwbG9hZFdpdGhUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKQEAgLTEzNiw3ICsxMjIsNyBA
QCB2b2lkIExheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29u
c3QgdWludDhfdCogaW1hZ2UsIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgJmltYWdlWzQgKiAo
b2Zmc2V0LngoKSArIChvZmZzZXQueSgpICsgcm93KSAqIGltYWdlUmVjdC53aWR0aCgpKV0sCiAg
ICAgICAgICAgICAgICAgICAgZGVzdFJlY3Qud2lkdGgoKSAqIGNvbXBvbmVudHNQZXJQaXhlbCAq
IGJ5dGVzUGVyQ29tcG9uZW50KTsKICAgICB9Ci0gICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNk
LT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3QpKTsKKyAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0ocGl4ZWxEZXN0KSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oCmlu
ZGV4IDRmMWM0MTUyMTRkMjMyOWFiNmU3MmNkZTFiMWYyZmUyMmYyOGEyNzAuLjM1N2I2NDEzNDRi
MmUwY2ZkZjVlM2FmZTkzMmM4ZDE4YWZhZTcxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3Vi
SW1hZ2UuaApAQCAtMzQsMzAgKzM0LDMxIEBACiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOworfQogCi1jbGFzcyBDQ0dyYXBo
aWNzQ29udGV4dDsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJUZXh0dXJlU3Vi
SW1hZ2UgewogcHVibGljOgogICAgIGV4cGxpY2l0IExheWVyVGV4dHVyZVN1YkltYWdlKGJvb2wg
dXNlTWFwU3ViRm9yVXBsb2FkKTsKICAgICB+TGF5ZXJUZXh0dXJlU3ViSW1hZ2UoKTsKIAotICAg
IHZvaWQgc2V0U3ViSW1hZ2VTaXplKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIHVwbG9hZChj
b25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAg
ICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
LAotICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqKTsK
KyAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIFdlYktpdDo6V2ViR3JhcGhpY3NDb250
ZXh0M0QqKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25z
dCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZv
cm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQzNEZW51bSBmb3JtYXQsIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2
b2lkIHVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0Nv
bnRleHQqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3Jt
YXQsIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsKIAogICAgIGJvb2wgbV91c2VNYXBU
ZXhTdWJJbWFnZTsKLSAgICBJbnRTaXplIG1fc3ViSW1hZ2VTaXplOworICAgIHNpemVfdCBtX3N1
YkltYWdlU2l6ZTsKICAgICBPd25BcnJheVB0cjx1aW50OF90PiBtX3N1YkltYWdlOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGZkOGVkODgzY2M3MzQwY2E5Yzc2ZDU2
M2NmZGU5OTkyNDM4NmYzODYuLjE4OTk0MmUyNTM0YjA2ODYzNzNiZTNjMTI0NDQ2YzA4NTYyZWVi
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTMwLDE2ICszMCwxMyBAQAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXMzRC5oIgotI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NQcmlvcml0aXplZFRleHR1cmUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50
UmVjdDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgVGV4
dHVyZU1hbmFnZXI7CiAKIGNsYXNzIExheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxMYXllclRleHR1cmVVcGRhdGVyPiB7CkBAIC01Miw3ICs0OSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUu
Z2V0KCk7IH0KICAgICAgICAgdm9pZCBzd2FwVGV4dHVyZVdpdGgoT3duUHRyPENDUHJpb3JpdGl6
ZWRUZXh0dXJlPiYgdGV4dHVyZSkgeyBtX3RleHR1cmUuc3dhcCh0ZXh0dXJlKTsgfQogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAq
LykgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0
KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEND
UmVzb3VyY2VQcm92aWRlciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBUZXh0
dXJlKFBhc3NPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJl
KHRleHR1cmUpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKaW5kZXggNGRhYmYxYmViZGVh
NTY2YzgwZDhiMWNiNWEyYWVlNGJmN2JjMWQ5MC4uYjI4ZDcxNjhkOWIxNGI5ZmYzMjNkOTNlMzVh
MWI2MWM4ODI2NDM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApAQCAtMjksMTAgKzI5LDYg
QEAKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKLSNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgPHB1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgotCi11c2luZyBXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDE3ICszNiwxNyBAQCBN
YW5hZ2VkVGV4dHVyZTo6TWFuYWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCiAg
ICAgOiBtX3RleHR1cmVNYW5hZ2VyKG1hbmFnZXIpCiAgICAgLCBtX3Rva2VuKDApCiAgICAgLCBt
X2Zvcm1hdCgwKQotICAgICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fcmVzb3VyY2VJZCgwKQog
ewogICAgIG1fdGV4dHVyZU1hbmFnZXItPnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsKIH0KIAotTWFu
YWdlZFRleHR1cmU6Ok1hbmFnZWRUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyLCBUZXh0
dXJlVG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0
ZXh0dXJlSWQpCitNYW5hZ2VkVGV4dHVyZTo6TWFuYWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIq
IG1hbmFnZXIsIFRleHR1cmVUb2tlbiB0b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNpZ25lZCBmb3Jt
YXQsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQogICAgIDogbV90
ZXh0dXJlTWFuYWdlcihtYW5hZ2VyKQogICAgICwgbV90b2tlbih0b2tlbikKICAgICAsIG1fc2l6
ZShzaXplKQogICAgICwgbV9mb3JtYXQoZm9ybWF0KQotICAgICwgbV90ZXh0dXJlSWQodGV4dHVy
ZUlkKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCiB7CiAgICAgbV90ZXh0dXJlTWFu
YWdlci0+cmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwogfQpAQCAtOTQsNyArOTAsNyBAQCBib29sIE1h
bmFnZWRUZXh0dXJlOjpyZXNlcnZlKGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGZvcm1h
dCkKICAgICBpZiAoc2l6ZSA9PSBtX3NpemUgJiYgZm9ybWF0ID09IG1fZm9ybWF0ICYmIG1fdGV4
dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tlbikpCiAgICAgICAgIG1fdGV4dHVyZU1hbmFn
ZXItPnByb3RlY3RUZXh0dXJlKG1fdG9rZW4pOwogICAgIGVsc2UgewotICAgICAgICBtX3RleHR1
cmVJZCA9IDA7CisgICAgICAgIG1fcmVzb3VyY2VJZCA9IDA7CiAgICAgICAgIHJlc2VydmVkID0g
bV90ZXh0dXJlTWFuYWdlci0+cmVxdWVzdFRleHR1cmUobV90b2tlbiwgc2l6ZSwgZm9ybWF0KTsK
ICAgICAgICAgaWYgKHJlc2VydmVkKSB7CiAgICAgICAgICAgICBtX3NpemUgPSBzaXplOwpAQCAt
MTEzLDI3ICsxMDksMTYgQEAgdm9pZCBNYW5hZ2VkVGV4dHVyZTo6dW5yZXNlcnZlKCkKICAgICBt
X3RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKG1fdG9rZW4pOwogfQogCi12b2lkIE1h
bmFnZWRUZXh0dXJlOjphbGxvY2F0ZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lk
IE1hbmFnZWRUZXh0dXJlOjphbGxvY2F0ZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIpCiB7CiAgICAgQVNTRVJUKG1fdGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tl
bikpOwotICAgIGlmICghbV90ZXh0dXJlSWQpCi0gICAgICAgIG1fdGV4dHVyZUlkID0gbV90ZXh0
dXJlTWFuYWdlci0+YWxsb2NhdGVUZXh0dXJlKGFsbG9jYXRvciwgbV90b2tlbik7Ci19Ci0KLXZv
aWQgTWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCi17Ci0gICAgYWxsb2NhdGUoYWxsb2NhdG9y
KTsKLSAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4
dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNvbnRleHQzZC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIG1fdGV4dHVyZUlkKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VJZCkKKyAgICAgICAgbV9y
ZXNvdXJjZUlkID0gbV90ZXh0dXJlTWFuYWdlci0+YWxsb2NhdGVUZXh0dXJlKHJlc291cmNlUHJv
dmlkZXIsIG1fdG9rZW4pOwogfQogCiBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBNYW5hZ2Vk
VGV4dHVyZTo6c3RlYWwoKQogewotICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSA9
IGFkb3B0UHRyKG5ldyBNYW5hZ2VkVGV4dHVyZShtX3RleHR1cmVNYW5hZ2VyLCBtX3Rva2VuLCBt
X3NpemUsIG1fZm9ybWF0LCBtX3RleHR1cmVJZCkpOworICAgIE93blB0cjxNYW5hZ2VkVGV4dHVy
ZT4gdGV4dHVyZSA9IGFkb3B0UHRyKG5ldyBNYW5hZ2VkVGV4dHVyZShtX3RleHR1cmVNYW5hZ2Vy
LCBtX3Rva2VuLCBtX3NpemUsIG1fZm9ybWF0LCBtX3Jlc291cmNlSWQpKTsKICAgICBjbGVhcigp
OwogICAgIHJldHVybiB0ZXh0dXJlLnJlbGVhc2UoKTsKIH0KQEAgLTE0Myw3ICsxMjgsNyBAQCB2
b2lkIE1hbmFnZWRUZXh0dXJlOjpjbGVhcigpCiAgICAgbV90b2tlbiA9IDA7CiAgICAgbV9zaXpl
ID0gSW50U2l6ZSgpOwogICAgIG1fZm9ybWF0ID0gMDsKLSAgICBtX3RleHR1cmVJZCA9IDA7Cisg
ICAgbV9yZXNvdXJjZUlkID0gMDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKaW5kZXggNmU2
N2ViZjY4ZWE1ZWViYWM0OWNiYzU4NjA4NDVmN2Y3YmI1ODQ5NS4uMWY2OTEzYjVlNDBjMTRhYTBh
NjFiZjExMjE5MGYxZTBlNzdmYjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIu
aCIKKyNpbmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9G
YXN0QWxsb2NCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC0zNSw4ICsz
Niw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7
Ci0KIGNsYXNzIE1hbmFnZWRUZXh0dXJlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYW5h
Z2VkVGV4dHVyZSk7CiBwdWJsaWM6CkBAIC01NywyOCArNTYsMjYgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV90ZXh0dXJlTWFuYWdlciAmJiBtX3RleHR1cmVNYW5hZ2VyLT5pc1Byb3RlY3Rl
ZChtX3Rva2VuKTsKICAgICB9CiAKLSAgICB2b2lkIGFsbG9jYXRlKFRleHR1cmVBbGxvY2F0b3Iq
KTsKLSAgICB2b2lkIGJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9j
YXRvciopOwotCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAg
ICAgdW5zaWduZWQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KLSAgICB1bnNp
Z25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQorICAgIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZUlkOyB9CiAKLSAgICAvLyBTdGVhbCB0b2tlbiBhbmQgdGV4dHVyZUlkIGJ5IGluc3Rh
bnRpYXRlcyBhIG5ldyB0ZXh0dXJlIHVzaW5nIGV4aXN0aW5nCisgICAgLy8gU3RlYWwgdG9rZW4g
YW5kIHJlc291cmNlSWQgYnkgaW5zdGFudGlhdGVzIGEgbmV3IHRleHR1cmUgdXNpbmcgZXhpc3Rp
bmcKICAgICAvLyBtZW1iZXIgdmFyaWFibGVzLgogICAgIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1
cmU+IHN0ZWFsKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWFuYWdlZFRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqKTsKLSAgICBNYW5hZ2VkVGV4dHVyZShUZXh0dXJlTWFuYWdlciosIFRleHR1
cmVUb2tlbiwgSW50U2l6ZSwgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0ZXh0dXJlSWQpOwor
ICAgIE1hbmFnZWRUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiwgVGV4dHVyZVRva2VuLCBJbnRTaXpl
LCB1bnNpZ25lZCBmb3JtYXQsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCk7CiAKKyAg
ICB2b2lkIGFsbG9jYXRlKENDUmVzb3VyY2VQcm92aWRlciopOwogICAgIHZvaWQgY2xlYXIoKTsK
IAogICAgIFRleHR1cmVNYW5hZ2VyKiBtX3RleHR1cmVNYW5hZ2VyOwogICAgIFRleHR1cmVUb2tl
biBtX3Rva2VuOwogICAgIEludFNpemUgbV9zaXplOwogICAgIHVuc2lnbmVkIG1fZm9ybWF0Owot
ICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3Vy
Y2VJZCBtX3Jlc291cmNlSWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hy
b21pdW0uY3BwCmluZGV4IDU2Yzk2YTc0YTBiYjZjNTE1OTU3Mzg0ODQ5OGFhYzdlZTU3ZDU5YzUu
LjMwNGFkYTdkYWVlYzg0NzkwNDg1OTk3ZjQwYTFjZTQwNDgwYjA2MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCkBAIC03NywxOSArNzcsMTkgQEAgdm9pZCBTY3Jv
bGxiYXJMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikK
ICAgICBzY3JvbGxiYXJMYXllci0+c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKG1fc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlKTsKIAogICAgIGlmIChtX2JhY2tUcmFjayAmJiBtX2JhY2tUcmFjay0+dGV4
dHVyZSgpLT5oYXZlQmFja2luZ1RleHR1cmUoKSkKLSAgICAgICAgc2Nyb2xsYmFyTGF5ZXItPnNl
dEJhY2tUcmFja1RleHR1cmVJZChtX2JhY2tUcmFjay0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7
CisgICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRCYWNrVHJhY2tSZXNvdXJjZUlkKG1fYmFja1Ry
YWNrLT50ZXh0dXJlKCktPnJlc291cmNlSWQoKSk7CiAgICAgZWxzZQotICAgICAgICBzY3JvbGxi
YXJMYXllci0+c2V0QmFja1RyYWNrVGV4dHVyZUlkKDApOworICAgICAgICBzY3JvbGxiYXJMYXll
ci0+c2V0QmFja1RyYWNrUmVzb3VyY2VJZCgwKTsKIAogICAgIGlmIChtX2ZvcmVUcmFjayAmJiBt
X2ZvcmVUcmFjay0+dGV4dHVyZSgpLT5oYXZlQmFja2luZ1RleHR1cmUoKSkKLSAgICAgICAgc2Ny
b2xsYmFyTGF5ZXItPnNldEZvcmVUcmFja1RleHR1cmVJZChtX2ZvcmVUcmFjay0+dGV4dHVyZSgp
LT50ZXh0dXJlSWQoKSk7CisgICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRGb3JlVHJhY2tSZXNv
dXJjZUlkKG1fZm9yZVRyYWNrLT50ZXh0dXJlKCktPnJlc291cmNlSWQoKSk7CiAgICAgZWxzZQot
ICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0Rm9yZVRyYWNrVGV4dHVyZUlkKDApOworICAgICAg
ICBzY3JvbGxiYXJMYXllci0+c2V0Rm9yZVRyYWNrUmVzb3VyY2VJZCgwKTsKIAogICAgIGlmICht
X3RodW1iICYmIG1fdGh1bWItPnRleHR1cmUoKS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpCi0gICAg
ICAgIHNjcm9sbGJhckxheWVyLT5zZXRUaHVtYlRleHR1cmVJZChtX3RodW1iLT50ZXh0dXJlKCkt
PnRleHR1cmVJZCgpKTsKKyAgICAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldFRodW1iUmVzb3VyY2VJ
ZChtX3RodW1iLT50ZXh0dXJlKCktPnJlc291cmNlSWQoKSk7CiAgICAgZWxzZQotICAgICAgICBz
Y3JvbGxiYXJMYXllci0+c2V0VGh1bWJUZXh0dXJlSWQoMCk7CisgICAgICAgIHNjcm9sbGJhckxh
eWVyLT5zZXRUaHVtYlJlc291cmNlSWQoMCk7CiAKICAgICBWZWN0b3I8SW50UmVjdD4gdGlja21h
cmtzOwogICAgIG1fc2Nyb2xsYmFyLT5nZXRUaWNrbWFya3ModGlja21hcmtzKTsKQEAgLTIwNSwy
NCArMjA1LDIzIEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9z
dChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAKIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCiB7Ci0gICAgYm9vbCB1c2VNYXBTdWJJbWFn
ZSA9IGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFw
U3ViOwogICAgIG1fdGV4dHVyZUZvcm1hdCA9IGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpLmJlc3RUZXh0dXJlRm9ybWF0OwogCiAgICAgaWYgKCFtX2JhY2tUcmFj
a1VwZGF0ZXIpCi0gICAgICAgIG1fYmFja1RyYWNrVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxiYXJCYWNrZ3JvdW5kUGFpbnRlcjo6Y3JlYXRl
KG1fc2Nyb2xsYmFyLmdldCgpLCB0aGVtZSgpLCBCYWNrVHJhY2tQYXJ0KSwgdXNlTWFwU3ViSW1h
Z2UpOworICAgICAgICBtX2JhY2tUcmFja1VwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXI6OmNyZWF0ZShtX3Nj
cm9sbGJhci5nZXQoKSwgdGhlbWUoKSwgQmFja1RyYWNrUGFydCkpOwogICAgIGlmICghbV9iYWNr
VHJhY2spCiAgICAgICAgIG1fYmFja1RyYWNrID0gbV9iYWNrVHJhY2tVcGRhdGVyLT5jcmVhdGVU
ZXh0dXJlKGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKTsKIAogICAg
IC8vIE9ubHkgY3JlYXRlIHR3by1wYXJ0IHRyYWNrIGlmIHdlIHRoaW5rIHRoZSB0d28gcGFydHMg
Y291bGQgYmUgZGlmZmVyZW50IGluIGFwcGVhcmFuY2UuCiAgICAgaWYgKG1fc2Nyb2xsYmFyLT5p
c0N1c3RvbVNjcm9sbGJhcigpKSB7CiAgICAgICAgIGlmICghbV9mb3JlVHJhY2tVcGRhdGVyKQot
ICAgICAgICAgICAgbV9mb3JlVHJhY2tVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Y3JlYXRlKFNjcm9sbGJhckJhY2tncm91bmRQYWludGVyOjpjcmVhdGUobV9zY3Jv
bGxiYXIuZ2V0KCksIHRoZW1lKCksIEZvcndhcmRUcmFja1BhcnQpLCB1c2VNYXBTdWJJbWFnZSk7
CisgICAgICAgICAgICBtX2ZvcmVUcmFja1VwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXI6OmNyZWF0ZShtX3Nj
cm9sbGJhci5nZXQoKSwgdGhlbWUoKSwgRm9yd2FyZFRyYWNrUGFydCkpOwogICAgICAgICBpZiAo
IW1fZm9yZVRyYWNrKQogICAgICAgICAgICAgbV9mb3JlVHJhY2sgPSBtX2ZvcmVUcmFja1VwZGF0
ZXItPmNyZWF0ZVRleHR1cmUobGF5ZXJUcmVlSG9zdCgpLT5jb250ZW50c1RleHR1cmVNYW5hZ2Vy
KCkpOwogICAgIH0KIAogICAgIGlmICghbV90aHVtYlVwZGF0ZXIpCi0gICAgICAgIG1fdGh1bWJV
cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFNjcm9sbGJh
clRodW1iUGFpbnRlcjo6Y3JlYXRlKG1fc2Nyb2xsYmFyLmdldCgpLCB0aGVtZSgpKSwgdXNlTWFw
U3ViSW1hZ2UpOworICAgICAgICBtX3RodW1iVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxiYXJUaHVtYlBhaW50ZXI6OmNyZWF0ZShtX3Njcm9s
bGJhci5nZXQoKSwgdGhlbWUoKSkpOwogICAgIGlmICghbV90aHVtYikKICAgICAgICAgbV90aHVt
YiA9IG1fdGh1bWJVcGRhdGVyLT5jcmVhdGVUZXh0dXJlKGxheWVyVHJlZUhvc3QoKS0+Y29udGVu
dHNUZXh0dXJlTWFuYWdlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAKaW5kZXggMzMyNDNj
ODU1MmQzZmEyZTg1MWVmN2Y4NjNhNWRlNjIwMzVjNTA4NS4uMGI1OTU5N2E1ZWU4MDkwMDdhMjQ4
NDFiNWQ1ZjdlOWFmOWM5NDRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAKQEAgLTY2LDU1ICs2
Niw1NCBAQCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6On5BY2NlbGVyYXRlZFRleHR1cmVDb3Bp
ZXIoKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVy
KG1fZmJvKSk7CiB9CiAKLXZvaWQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVy
ZShDQ0dyYXBoaWNzQ29udGV4dCogY2NDb250ZXh0LCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQs
IHVuc2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIHNpemUpCit2b2lkIEFjY2Vs
ZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUodW5zaWduZWQgc291cmNlVGV4dHVyZUlk
LCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIFRS
QUNFX0VWRU5UMCgiY2MiLCAiVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUiKTsKIAotICAgIFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBjY0NvbnRleHQtPmNvbnRleHQz
RCgpOwotICAgIGlmICghY29udGV4dCkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KICAgICAvLyBOb3RlOiB0aGlzIGNvZGUgZG9lcyBub3QgcmVzdG9yZSB0aGUgdmlld3BvcnQs
IGJvdW5kIHByb2dyYW0sIDJEIHRleHR1cmUsIGZyYW1lYnVmZmVyLCBidWZmZXIgb3IgYmxlbmQg
ZW5hYmxlLgotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZibykpOwotICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIGRlc3RUZXh0dXJlSWQsIDApKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
ZmJvKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUy
RChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xP
Ul9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGRlc3RUZXh0dXJl
SWQsIDApKTsKIAogI2lmIE9TKEFORFJPSUQpCiAgICAgLy8gQ2xlYXIgZGVzdGluYXRpb24gdG8g
aW1wcm92ZSBwZXJmb3JtYW5jZSBvbiB0aWxpbmcgR1BVcy4KICAgICAvLyBUT0RPOiBVc2UgRVhU
X2Rpc2NhcmRfZnJhbWVidWZmZXIgb3Igc2tpcCBjbGVhcmluZyBpZiBpdCBpc24ndCBhdmFpbGFi
bGUuCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9CVUZGRVJfQklUKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jbGVhcihH
cmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVCkpOwogI2VuZGlmCiAKLSAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIHNvdXJjZVRleHR1cmVJZCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCkpOwotICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6TkVBUkVTVCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHNvdXJjZVRleHR1cmVJZCkpOwor
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNU
KSk7CiAKICAgICBpZiAoIW1fYmxpdFByb2dyYW0tPmluaXRpYWxpemVkKCkpCi0gICAgICAgIG1f
YmxpdFByb2dyYW0tPmluaXRpYWxpemUoY29udGV4dCwgbV91c2luZ0JpbmRVbmlmb3Jtcyk7Cisg
ICAgICAgIG1fYmxpdFByb2dyYW0tPmluaXRpYWxpemUobV9jb250ZXh0LCBtX3VzaW5nQmluZFVu
aWZvcm1zKTsKIAogICAgIC8vIFRPRE86IFVzZSBFWFRfZnJhbWVidWZmZXJfYmxpdCBpZiBhdmFp
bGFibGUuCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVzZVByb2dyYW0obV9ibGl0UHJvZ3Jh
bS0+cHJvZ3JhbSgpKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51c2VQcm9ncmFt
KG1fYmxpdFByb2dyYW0tPnByb2dyYW0oKSkpOwogCiAgICAgY29uc3QgaW50IGtQb3NpdGlvbkF0
dHJpYnV0ZSA9IDA7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV9wb3NpdGlvbkJ1ZmZlcikpOwotICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGtQb3NpdGlvbkF0dHJpYnV0ZSwg
NCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwgMCwgMCkpOwotICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShrUG9zaXRpb25BdHRyaWJ1dGUp
KTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6QVJSQVlfQlVGRkVSLCAwKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5k
QnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIG1fcG9zaXRpb25CdWZmZXIp
KTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoa1Bv
c2l0aW9uQXR0cmlidXRlLCA0LCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCAwLCAw
KSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShrUG9zaXRpb25BdHRyaWJ1dGUpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJp
bmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgMCkpOwogCi0gICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPnZpZXdwb3J0KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4
dDNEOjpCTEVORCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kcmF3QXJyYXlzKEdyYXBo
aWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIDAsIDQpKTsKKyAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwor
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6
QkxFTkQpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRyYXdBcnJheXMoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgMCwgNCkpOwogCi0gICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoa1Bvc2l0aW9uQXR0cmlidXRlKSk7CisgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQ
YXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAg
R0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoa1Bvc2l0
aW9uQXR0cmlidXRlKSk7CiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbSgw
KSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51c2VQcm9ncmFtKDApKTsKIAotICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIDApKTsKLSAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
MCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgMCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwLCAwKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7CisgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
MCkpOworfQorCit2b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Zmx1c2goKQoreworICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Zmx1c2goKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3Bp
ZXIuaAppbmRleCBjMmJjZDQyN2MzMTAwYzJhNTQ4YTgxMjMyOGFhNzcyYWVhNGZhYTM0Li5iMzg1
ZjQ1ZTU0M2E3NDM2ZTU1NzgwMzIyYmExZDJiMTRlMjc3YWU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5o
CkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNs
dWRlICJQcm9ncmFtQmluZGluZy5oIgogI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCi0jaW5j
bHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJHcmFwaGljc0NvbnRleHQzRDsKQEAgLTQyLDcgKzQxLDggQEAgcHVibGljOgogICAgIC8v
IENvcHkgdGhlIGJhc2UgbGV2ZWwgY29udGVudHMgb2YgfHNvdXJjZVRleHR1cmVJZHwgdG8gfGRl
c3RUZXh0dXJlSWR8LiBCb3RoIHRleHR1cmUgb2JqZWN0cwogICAgIC8vIG11c3QgYmUgY29tcGxl
dGUgYW5kIGhhdmUgYSBiYXNlIGxldmVsIG9mIHxzaXplfCBkaW1lbnNpb25zLiBUaGUgY29sb3Ig
Zm9ybWF0cyBkbyBub3QgbmVlZAogICAgIC8vIHRvIG1hdGNoLCBidXQgfGRlc3RUZXh0dXJlSWR8
IG11c3QgaGF2ZSBhIHJlbmRlcmFibGUgZm9ybWF0LgotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4
dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIHVuc2lnbmVkIHNvdXJjZVRleHR1cmVJZCwgdW5zaWdu
ZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29weVRleHR1cmUodW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVy
ZUlkLCBjb25zdCBJbnRTaXplJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpID0gMDsK
IAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflRleHR1cmVDb3BpZXIoKSB7IH0KQEAgLTU5LDcg
KzU5LDggQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5BY2NlbGVyYXRlZFRleHR1cmVD
b3BpZXIoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4
dCosIHVuc2lnbmVkIHNvdXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29u
c3QgSW50U2l6ZSYpOworICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZSh1bnNpZ25lZCBzb3Vy
Y2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmx1c2goKTsKIAogcHJvdGVjdGVkOgogICAgIEFjY2VsZXJhdGVkVGV4
dHVyZUNvcGllcihXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwgYm9vbCB1c2luZ0JpbmRV
bmlmb3Jtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKaW5kZXggNDg1YzcyMjI4ZWMwMzdmY2Nl
NWYzZmVjNDAwOTI0ODUyMzdjMDZiYy4uOTZmN2E2ZjA4ZDA2NTUxM2E5ZTgwZGI5NDNjZWNlZjJh
ZjMwODJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcApAQCAtOTAsMTEgKzkwLDEzIEBAIHNp
emVfdCBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
R0MzRGVudW0gdGV4dHVyZUZvcm1hCiB9CiAKIAotVGV4dHVyZU1hbmFnZXI6OlRleHR1cmVNYW5h
Z2VyKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBzaXplX3QgcHJlZmVycmVkTWVtb3J5TGlt
aXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKQorVGV4dHVyZU1hbmFnZXI6OlRleHR1cmVNYW5h
Z2VyKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBzaXplX3QgcHJlZmVycmVkTWVtb3J5TGlt
aXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplLCBpbnQgcmVzb3VyY2VQb29sLCBDQ1Jlc291cmNl
UHJvdmlkZXI6OlRleHR1cmVVc2FnZUhpbnQgdXNhZ2VIaW50KQogICAgIDogbV9tYXhNZW1vcnlM
aW1pdEJ5dGVzKG1heE1lbW9yeUxpbWl0Qnl0ZXMpCiAgICAgLCBtX3ByZWZlcnJlZE1lbW9yeUxp
bWl0Qnl0ZXMocHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcykKICAgICAsIG1fbWVtb3J5VXNlQnl0
ZXMoMCkKICAgICAsIG1fbWF4VGV4dHVyZVNpemUobWF4VGV4dHVyZVNpemUpCisgICAgLCBtX3Jl
c291cmNlUG9vbChyZXNvdXJjZVBvb2wpCisgICAgLCBtX3VzYWdlSGludCh1c2FnZUhpbnQpCiAg
ICAgLCBtX25leHRUb2tlbigxKQogewogfQpAQCAtMjI3LDM1ICsyMjksMjEgQEAgdm9pZCBUZXh0
dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGlu
Zm8pCiAgICAgbV90ZXh0dXJlTFJVU2V0LmFkZCh0b2tlbik7CiB9CiAKLXZvaWQgVGV4dHVyZU1h
bmFnZXI6OmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Ip
Cit2b2lkIFRleHR1cmVNYW5hZ2VyOjpkZWxldGVFdmljdGVkVGV4dHVyZXMoQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewotICAgIGlmIChhbGxvY2F0b3IpIHsKKyAgICBp
ZiAocmVzb3VyY2VQcm92aWRlcikgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
ZXZpY3RlZFRleHR1cmVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAobV9ldmljdGVk
VGV4dHVyZXNbaV0udGV4dHVyZUlkKSB7CisgICAgICAgICAgICBpZiAobV9ldmljdGVkVGV4dHVy
ZXNbaV0ucmVzb3VyY2VJZCkgewogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgICAgICBBU1NF
UlQobV9ldmljdGVkVGV4dHVyZXNbaV0uYWxsb2NhdG9yID09IGFsbG9jYXRvcik7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fZXZpY3RlZFRleHR1cmVzW2ldLnJlc291cmNlUHJvdmlkZXIgPT0g
cmVzb3VyY2VQcm92aWRlcik7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBhbGxvY2F0b3ItPmRl
bGV0ZVRleHR1cmUobV9ldmljdGVkVGV4dHVyZXNbaV0udGV4dHVyZUlkLCBtX2V2aWN0ZWRUZXh0
dXJlc1tpXS5zaXplLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5mb3JtYXQpOworICAgICAgICAgICAg
ICAgIHJlc291cmNlUHJvdmlkZXItPmRlbGV0ZVJlc291cmNlKG1fZXZpY3RlZFRleHR1cmVzW2ld
LnJlc291cmNlSWQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIG1fZXZp
Y3RlZFRleHR1cmVzLmNsZWFyKCk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hbmFnZXI6OmV2aWN0QW5k
UmVtb3ZlQWxsRGVsZXRlZFRleHR1cmVzKCkKLXsKLSAgICB1bnByb3RlY3RBbGxUZXh0dXJlcygp
OwotICAgIHJlZHVjZU1lbW9yeVRvTGltaXQoMCk7Ci0gICAgbV9ldmljdGVkVGV4dHVyZXMuY2xl
YXIoKTsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6ZXZpY3RBbmREZWxldGVBbGxUZXh0dXJl
cyhUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCi17Ci0gICAgdW5wcm90ZWN0QWxsVGV4dHVy
ZXMoKTsKLSAgICByZWR1Y2VNZW1vcnlUb0xpbWl0KDApOwotICAgIGRlbGV0ZUV2aWN0ZWRUZXh0
dXJlcyhhbGxvY2F0b3IpOwotfQotCiB2b2lkIFRleHR1cmVNYW5hZ2VyOjpyZW1vdmVUZXh0dXJl
KFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4dHVyZUluZm8gaW5mbykKIHsKICAgICBBU1NFUlQobV90
ZXh0dXJlTFJVU2V0LmNvbnRhaW5zKHRva2VuKSk7CkBAIC0yNjUsMjggKzI1MywyOCBAQCB2b2lk
IFRleHR1cmVNYW5hZ2VyOjpyZW1vdmVUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4dHVy
ZUluZm8gaW5mbykKICAgICBBU1NFUlQobV90ZXh0dXJlTFJVU2V0LmNvbnRhaW5zKHRva2VuKSk7
CiAgICAgbV90ZXh0dXJlTFJVU2V0LnJlbW92ZSh0b2tlbik7CiAgICAgRXZpY3Rpb25FbnRyeSBl
bnRyeTsKLSAgICBlbnRyeS50ZXh0dXJlSWQgPSBpbmZvLnRleHR1cmVJZDsKKyAgICBlbnRyeS5y
ZXNvdXJjZUlkID0gaW5mby5yZXNvdXJjZUlkOwogICAgIGVudHJ5LnNpemUgPSBpbmZvLnNpemU7
CiAgICAgZW50cnkuZm9ybWF0ID0gaW5mby5mb3JtYXQ7CiAjaWZuZGVmIE5ERUJVRwotICAgIGVu
dHJ5LmFsbG9jYXRvciA9IGluZm8uYWxsb2NhdG9yOworICAgIGVudHJ5LnJlc291cmNlUHJvdmlk
ZXIgPSBpbmZvLnJlc291cmNlUHJvdmlkZXI7CiAjZW5kaWYKICAgICBtX2V2aWN0ZWRUZXh0dXJl
cy5hcHBlbmQoZW50cnkpOwogfQogCi11bnNpZ25lZCBUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdGVU
ZXh0dXJlKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZVRva2VuIHRva2VuKQor
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIFRleHR1cmVNYW5hZ2VyOjphbGxvY2F0ZVRl
eHR1cmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBUZXh0dXJlVG9rZW4g
dG9rZW4pCiB7CiAgICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQo
dG9rZW4pOwogICAgIEFTU0VSVChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKTsKICAgICBUZXh0dXJl
SW5mbyogaW5mbyA9ICZpdC5nZXQoKS0+c2Vjb25kOwogICAgIEFTU0VSVChpbmZvLT5pc1Byb3Rl
Y3RlZCk7CiAKLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSBhbGxvY2F0b3ItPmNyZWF0ZVRleHR1
cmUoaW5mby0+c2l6ZSwgaW5mby0+Zm9ybWF0KTsKLSAgICBpbmZvLT50ZXh0dXJlSWQgPSB0ZXh0
dXJlSWQ7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQgPSBy
ZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShtX3Jlc291cmNlUG9vbCwgaW5mby0+c2l6
ZSwgaW5mby0+Zm9ybWF0LCBtX3VzYWdlSGludCk7CisgICAgaW5mby0+cmVzb3VyY2VJZCA9IHJl
c291cmNlSWQ7CiAjaWZuZGVmIE5ERUJVRwotICAgIGluZm8tPmFsbG9jYXRvciA9IGFsbG9jYXRv
cjsKKyAgICBpbmZvLT5yZXNvdXJjZVByb3ZpZGVyID0gcmVzb3VyY2VQcm92aWRlcjsKICNlbmRp
ZgotICAgIHJldHVybiB0ZXh0dXJlSWQ7CisgICAgcmV0dXJuIHJlc291cmNlSWQ7CiB9CiAKIGJv
b2wgVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgSW50
U2l6ZSBzaXplLCB1bnNpZ25lZCBmb3JtYXQpCkBAIC0zMTEsMTAgKzI5OSwxMCBAQCBib29sIFRl
eHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUg
c2l6ZSwgdW5zaWduZWQgZgogICAgIFRleHR1cmVJbmZvIGluZm87CiAgICAgaW5mby5zaXplID0g
c2l6ZTsKICAgICBpbmZvLmZvcm1hdCA9IGZvcm1hdDsKLSAgICBpbmZvLnRleHR1cmVJZCA9IDA7
CisgICAgaW5mby5yZXNvdXJjZUlkID0gMDsKICAgICBpbmZvLmlzUHJvdGVjdGVkID0gdHJ1ZTsK
ICNpZm5kZWYgTkRFQlVHCi0gICAgaW5mby5hbGxvY2F0b3IgPSAwOworICAgIGluZm8ucmVzb3Vy
Y2VQcm92aWRlciA9IDA7CiAjZW5kaWYKICAgICBhZGRUZXh0dXJlKHRva2VuLCBpbmZvKTsKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCmluZGV4IDQ3YTE4OWJjY2QzNDBlM2Vj
OWI0NzNlYThlOGZlMmI5NTE4YmFhNTcuLmVkM2E2MWNjMjZhMDdmODI0NGIyYTEyNGJlNjc4MTlh
OGQ0NTA3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKKyNpbmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRl
IDx3dGYvRmFzdEFsbG9jQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTM5LDIyICs0MCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBNYW5hZ2VkVGV4dHVyZTsKIHR5cGVkZWYgaW50IFRleHR1cmVUb2tlbjsKIAotY2xh
c3MgVGV4dHVyZUFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBjcmVh
dGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwg
R0MzRGVudW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKSA9IDA7
Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5UZXh0dXJlQWxsb2NhdG9yKCkgeyB9Ci19Owot
CiBjbGFzcyBUZXh0dXJlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVy
ZU1hbmFnZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYW5hZ2Vy
PiBjcmVhdGUoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVfdCBwcmVmZXJyZWRNZW1v
cnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCisgICAgc3RhdGljIFBhc3NPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IGNyZWF0ZShzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90
IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSwgaW50IHJlc291
cmNlUG9vbCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VIaW50IHVzYWdlSGludCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZU1hbmFnZXIobWF4TWVt
b3J5TGltaXRCeXRlcywgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcywgbWF4VGV4dHVyZVNpemUp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlTWFuYWdlcihtYXhNZW1vcnlM
aW1pdEJ5dGVzLCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBtYXhUZXh0dXJlU2l6ZSwgcmVz
b3VyY2VQb29sLCB1c2FnZUhpbnQpKTsKICAgICB9CiAgICAgflRleHR1cmVNYW5hZ2VyKCk7CiAK
QEAgLTg1LDI1ICs3NiwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnByb3RlY3RBbGxUZXh0dXJl
cygpOwogICAgIGJvb2wgaXNQcm90ZWN0ZWQoVGV4dHVyZVRva2VuKTsKIAotICAgIHVuc2lnbmVk
IGFsbG9jYXRlVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVyZVRva2VuKTsKLSAgICB2
b2lkIGRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKik7Ci0KLSAgICB2b2lk
IGV2aWN0QW5kUmVtb3ZlQWxsRGVsZXRlZFRleHR1cmVzKCk7Ci0gICAgdm9pZCBldmljdEFuZERl
bGV0ZUFsbFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICBDQ1Jlc291cmNlUHJvdmlk
ZXI6OlJlc291cmNlSWQgYWxsb2NhdGVUZXh0dXJlKENDUmVzb3VyY2VQcm92aWRlciosIFRleHR1
cmVUb2tlbik7CisgICAgdm9pZCBkZWxldGVFdmljdGVkVGV4dHVyZXMoQ0NSZXNvdXJjZVByb3Zp
ZGVyKik7CiAKICAgICB2b2lkIHJlZHVjZU1lbW9yeVRvTGltaXQoc2l6ZV90KTsKICAgICBzaXpl
X3QgY3VycmVudE1lbW9yeVVzZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2VCeXRl
czsgfQogCiBwcml2YXRlOgotICAgIFRleHR1cmVNYW5hZ2VyKHNpemVfdCBtYXhNZW1vcnlMaW1p
dEJ5dGVzLCBzaXplX3QgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVT
aXplKTsKKyAgICBUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6
ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSwgaW50IHJl
c291cmNlUG9vbCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VIaW50KTsKIAogICAg
IHN0cnVjdCBUZXh0dXJlSW5mbyB7CiAgICAgICAgIEludFNpemUgc2l6ZTsKICAgICAgICAgR0Mz
RGVudW0gZm9ybWF0OwotICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7CisgICAgICAgIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkOwogICAgICAgICBib29sIGlzUHJv
dGVjdGVkOwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yOworICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXI7CiAjZW5k
aWYKICAgICB9OwogCkBAIC0xMjEsMTQgKzEwOSwxNiBAQCBwcml2YXRlOgogICAgIHNpemVfdCBt
X3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXM7CiAgICAgc2l6ZV90IG1fbWVtb3J5VXNlQnl0ZXM7
CiAgICAgaW50IG1fbWF4VGV4dHVyZVNpemU7CisgICAgaW50IG1fcmVzb3VyY2VQb29sOworICAg
IENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlSGludCBtX3VzYWdlSGludDsKICAgICBU
ZXh0dXJlVG9rZW4gbV9uZXh0VG9rZW47CiAKICAgICBzdHJ1Y3QgRXZpY3Rpb25FbnRyeSB7Ci0g
ICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZDsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpS
ZXNvdXJjZUlkIHJlc291cmNlSWQ7CiAgICAgICAgIEludFNpemUgc2l6ZTsKICAgICAgICAgR0Mz
RGVudW0gZm9ybWF0OwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yOworICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXI7
CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oCmluZGV4IDBlYWUyZTY1ZGQw
MjQ2NGNkMjBmYmYzOGZkYmI3OGVjY2RkYzg5MWIuLjkyODcwY2I1YTViZmQ5MGVhZmMyODczZDcw
Y2MwY2YxMGQxYmUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oCkBAIC0zNiw3ICszNiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBiZWdpblVwbG9hZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqLCBMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJl
Y3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1cGxvYWRUZXh0dXJlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBDQ1Jlc291
cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVz
dFJlY3QpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXIuY3BwCmluZGV4IGE4MjUzZDA2NTUxNjI1ZjBiMDczYWVjZjVkZWY3NWNkYWUwMmFmYmQuLjI4
MWUwOGZmMDQ5ODc4MTI4YTg0MzI3MDllZmZlNjk2OTFiODBkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcApAQCAtMTIwLDkgKzEyMCw5IEBAIHZvaWQgVGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyOjplbmRVcGxvYWRzKCkKICAgICBtX3BlbmRpbmdRdWVyaWVz
LmFwcGVuZChtX2F2YWlsYWJsZVF1ZXJpZXMudGFrZUZpcnN0KCkpOwogfQogCi12b2lkIFRocm90
dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qg
ZGVzdFJlY3QpCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZShM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBDQ1Jlc291cmNlUHJvdmlkZXIq
IHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9jYXRv
ciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QocmVzb3Vy
Y2VQcm92aWRlciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCiB2b2lkIFRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcjo6cHJvY2Vzc1F1ZXJpZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXIuaAppbmRleCBhZTViNzQ5MWYyODQ4NDQwZjQxMzFjZTZiYjE0M2U3NWE0ZDZj
OWRhLi5mOGM0M2RjMmQ0MzAzOWYyZmQyNzhjZmE3YzcxN2NhYTI5MGJhNGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBi
ZWdpblVwbG9hZHMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0
KiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25z
dCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqLCBDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QgZGVzdFJlY3QpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIGNsYXNzIFF1ZXJ5
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGU3NWRkNDBmNmFlOGE2YmVi
NzZmMzBkMmQ4YjFmYzQ4M2M5ZWU3OGQuLmU0ZDRiYWU0MGM4MmIyNTVmOTYxZDM5YWQ5YjIzYjg2
M2IyM2I5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMjI3LDcgKzIy
Nyw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJ
bXBsKiBsYXllcikKICAgICAgICAgaWYgKHRpbGUtPmlzRGlydHlGb3JDdXJyZW50RnJhbWUoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHRpbGVkTGF5ZXItPnB1c2hUaWxlUHJv
cGVydGllcyhpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgdGlsZS0+
b3BhcXVlUmVjdCgpKTsKKyAgICAgICAgdGlsZWRMYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGks
IGosIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnJlc291cmNlSWQoKSwgdGlsZS0+b3BhcXVlUmVj
dCgpKTsKICAgICAgICAgdGlsZS0+aXNJblVzZU9uSW1wbCA9IHRydWU7CiAgICAgfQogICAgIGZv
ciAoVmVjdG9yPFVwZGF0YWJsZVRpbGUqPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGludmFsaWRU
aWxlcy5iZWdpbigpOyBpdGVyICE9IGludmFsaWRUaWxlcy5lbmQoKTsgKytpdGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGM1ODlhM2M2ZWQzZDAwYWZmMWZiYTBkN2Q0MzU5NGYzYWFjOTFlODMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCi0KLSNp
bmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJv
bWl1bS5oIiAvLyBGb3IgdGhlIEdMQygpIG1hY3JvCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IoV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgaW50IG1heFRleHR1cmVTaXplKQotICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX21heFRleHR1cmVTaXplKG1heFRleHR1cmVT
aXplKQotICAgICwgbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMoMCkKLSAgICAsIG1fdGV4dHVyZVVz
YWdlSGludChBbnkpCi0gICAgLCBtX3VzZVRleHR1cmVTdG9yYWdlRXh0KGZhbHNlKQotewotICAg
IEFTU0VSVChtX2NvbnRleHQpOwotfQotCi1UcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6On5UcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3IoKQotewotICAgIEFTU0VSVCghbV9jdXJyZW50TWVtb3J5VXNl
Qnl0ZXMpOwotfQotCi1zdGF0aWMgR0MzRGVudW0gdGV4dHVyZVRvU3RvcmFnZUZvcm1hdChHQzNE
ZW51bSB0ZXh0dXJlRm9ybWF0KQotewotICAgIEdDM0RlbnVtIHN0b3JhZ2VGb3JtYXQgPSBFeHRl
bnNpb25zM0Q6OlJHQkE4X09FUzsKLSAgICBzd2l0Y2ggKHRleHR1cmVGb3JtYXQpIHsKLSAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIEV4
dGVuc2lvbnMzRDo6QkdSQV9FWFQ6Ci0gICAgICAgIHN0b3JhZ2VGb3JtYXQgPSBFeHRlbnNpb25z
M0RDaHJvbWl1bTo6QkdSQThfRVhUOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHN0b3JhZ2VGb3JtYXQ7Ci19Ci0KLXN0YXRpYyBib29sIGlzVGV4dHVyZUZvcm1hdFN1
cHBvcnRlZEZvclN0b3JhZ2UoR0MzRGVudW0gZm9ybWF0KQotewotICAgIHJldHVybiAoZm9ybWF0
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBIHx8IGZvcm1hdCA9PSBFeHRlbnNpb25zM0Q6OkJH
UkFfRVhUKTsKLX0KLQotdW5zaWduZWQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGVU
ZXh0dXJlKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKLXsKLSAgICBpZiAo
c2l6ZS53aWR0aCgpID4gbV9tYXhUZXh0dXJlU2l6ZSB8fCBzaXplLmhlaWdodCgpID4gbV9tYXhU
ZXh0dXJlU2l6ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBtX2N1cnJlbnRNZW1vcnlVc2VC
eXRlcyArPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKLQot
ICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IDA7Ci0gICAgR0xDKG1fY29udGV4dCwgdGV4dHVyZUlk
ID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29u
dGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJ
ZCkpOwotICAgIC8vIERvIGJhc2ljIGxpbmVhciBmaWx0ZXJpbmcgb24gcmVzaXplLgotICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTkVBUikpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwotICAg
IC8vIE5QT1QgdGV4dHVyZXMgaW4gR0wgRVMgb25seSB3b3JrIHdoZW4gdGhlIHdyYXAgbW9kZSBp
cyBzZXQgdG8gR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UuCi0gICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNE
OjpDTEFNUF9UT19FREdFKSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7Ci0KLSAg
ICBpZiAobV90ZXh0dXJlVXNhZ2VIaW50ID09IEZyYW1lYnVmZmVyQXR0YWNobWVudCkKLSAgICAg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfVEVYVFVSRV9VU0FHRV9B
TkdMRSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5H
TEUpKTsKLSAgICBpZiAobV91c2VUZXh0dXJlU3RvcmFnZUV4dCAmJiBpc1RleHR1cmVGb3JtYXRT
dXBwb3J0ZWRGb3JTdG9yYWdlKGZvcm1hdCkpIHsKLSAgICAgICAgR0MzRGVudW0gc3RvcmFnZUZv
cm1hdCA9IHRleHR1cmVUb1N0b3JhZ2VGb3JtYXQoZm9ybWF0KTsKLSAgICAgICAgbV9jb250ZXh0
LT50ZXhTdG9yYWdlMkRFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDEsIHN0b3Jh
Z2VGb3JtYXQsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAs
IGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApKTsKLSAgICBtX2Fs
bG9jYXRlZFRleHR1cmVJZHMuYWRkKHRleHR1cmVJZCk7Ci0gICAgcmV0dXJuIHRleHR1cmVJZDsK
LX0KLQotdm9pZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUodW5zaWdu
ZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQpCi17Ci0g
ICAgbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMgLT0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5
dGVzKHNpemUsIGZvcm1hdCk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVU
ZXh0dXJlKHRleHR1cmVJZCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRl
VGV4dHVyZSh0ZXh0dXJlSWQpKTsKLSAgICBBU1NFUlQobV9hbGxvY2F0ZWRUZXh0dXJlSWRzLmNv
bnRhaW5zKHRleHR1cmVJZCkpOwotICAgIG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5yZW1vdmUodGV4
dHVyZUlkKTsKLX0KLQotdm9pZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmRlbGV0ZUFsbFRl
eHR1cmVzKCkKLXsKLSAgICBmb3IgKEhhc2hTZXQ8dW5zaWduZWQ+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5iZWdpbigpOyBpdCAhPSBtX2FsbG9jYXRlZFRleHR1
cmVJZHMuZW5kKCk7ICsraXQpCi0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVs
ZXRlVGV4dHVyZSgqaXQpKTsKLSAgICBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlcyA9IDA7Ci0gICAg
bV9hbGxvY2F0ZWRUZXh0dXJlSWRzLmNsZWFyKCk7Ci19Ci0KLX0KLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhl
ZjQwZDFiNDNlN2IzNDI0NTRhNTJhMTQwMDI0YzU5MTgxOWZlMi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaAorKysgL2Rldi9udWxsCkBA
IC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcl9oCi0jZGVmaW5lIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcl9oCi0KLSNpbmNsdWRl
ICJUZXh0dXJlTWFuYWdlci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJHcmFwaGlj
c0NvbnRleHQzRDsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKTsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IGNyZWF0ZShXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBpbnQgbWF4VGV4dHVyZVNpemUpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcihjb250
ZXh0LCBtYXhUZXh0dXJlU2l6ZSkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5UcmFja2luZ1RleHR1
cmVBbGxvY2F0b3IoKTsKLQotICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25z
dCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0g
Zm9ybWF0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKSBP
VkVSUklERTsKLQotICAgIHNpemVfdCBjdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlczsgfQotCi0gICAgZW51bSBUZXh0dXJlVXNhZ2VI
aW50IHsgQW55LCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgfTsKLQotICAgIHZvaWQgc2V0VGV4dHVy
ZVVzYWdlSGludChUZXh0dXJlVXNhZ2VIaW50IGhpbnQpIHsgbV90ZXh0dXJlVXNhZ2VIaW50ID0g
aGludDsgfQotICAgIHZvaWQgc2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQoYm9vbCB1c2VTdG9yYWdl
RXh0KSB7IG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQgPSB1c2VTdG9yYWdlRXh0OyB9Ci0KLXByb3Rl
Y3RlZDoKLSAgICBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IoV2ViS2l0OjpXZWJHcmFwaGljc0Nv
bnRleHQzRCosIGludCBtYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiBtX2NvbnRleHQ7Ci0gICAgaW50IG1fbWF4VGV4dHVyZVNpemU7Ci0gICAgc2l6
ZV90IG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzOwotICAgIFRleHR1cmVVc2FnZUhpbnQgbV90ZXh0
dXJlVXNhZ2VIaW50OwotICAgIGJvb2wgbV91c2VUZXh0dXJlU3RvcmFnZUV4dDsKLSAgICBIYXNo
U2V0PHVuc2lnbmVkPiBtX2FsbG9jYXRlZFRleHR1cmVJZHM7Ci19OwotCi19Ci0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NIZWFkc1VwRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAppbmRleCA3MzFmNzcwYzA5NjYzMTg1OGEw
YWMzYzRiYzhmM2Q3MTNmNjcxMjY4Li5kYzkwZDM0YThiNjg5NDUxN2IxZDMxODg1YTc3YzU1ZWNh
YWZlMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtMzUsNyArMzUs
NiBAQAogI2luY2x1ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5oIgogI2luY2x1ZGUgImNjL0ND
RnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIK
LSNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjksMTMgKzY4LDgg
QEAgYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVyVHJl
ZVNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhD
Q0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKIHsKICAgICBDQ1JlbmRlcmVy
KiBsYXllclJlbmRlcmVyID0gbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKTsKLSAg
ICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4K
LSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBpZiAoIW1faHVkVGV4dHVyZSkKLSAgICAgICAg
bV9odWRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlci0+aW1w
bFRleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAgIG1faHVkVGV4dHVyZSA9IENDU2NvcGVkVGV4
dHVyZTo6Y3JlYXRlKGxheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpOwogCiAg
ICAgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXllclRyZWVIb3N0SW1w
bC0+c2V0dGluZ3MoKTsKICAgICAvLyBVc2UgYSBmdWxsc2NyZWVuIHRleHR1cmUgb25seSBpZiB3
ZSBuZWVkIHRvLi4uCkBAIC04OCw3ICs4Miw3IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJh
dyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKICAgICAgICAgaHVkU2l6
ZS5zZXRIZWlnaHQoMTI4KTsKICAgICB9CiAKLSAgICBpZiAoIW1faHVkVGV4dHVyZS0+aWQoKSAm
JiAhbV9odWRUZXh0dXJlLT5hbGxvY2F0ZShodWRTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSkpCisgICAgaWYgKCFtX2h1ZFRleHR1cmUtPmlkKCkgJiYgIW1faHVkVGV4dHVyZS0+YWxsb2Nh
dGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIGh1ZFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JB
LCBDQ1Jlc291cmNlUHJvdmlkZXI6OkFueSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFJl
bmRlciBwaXhlbHMgaW50byB0aGUgdGV4dHVyZS4KQEAgLTEwMywyMiArOTcsOCBAQCB2b2lkIEND
SGVhZHNVcERpc3BsYXk6OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdElt
cGwpCiAgICAgLy8gVXBsb2FkIHRvIEdMLgogICAgIHsKICAgICAgICAgUGxhdGZvcm1DYW52YXM6
OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOwotCi0gICAgICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9odWRUZXh0
dXJlLT5pZCgpKSk7Ci0gICAgICAgIGJvb2wgdXBsb2FkZWRWaWFNYXAgPSBmYWxzZTsKLSAgICAg
ICAgaWYgKGxheWVyUmVuZGVyZXItPmNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKSB7Ci0gICAg
ICAgICAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29udGV4
dC0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCAwLCAwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNpemUuaGVpZ2h0KCksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9u
czNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKLQotICAgICAgICAgICAgaWYgKHBpeGVsRGVzdCkg
ewotICAgICAgICAgICAgICAgIHVwbG9hZGVkVmlhTWFwID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBtZW1jcHkocGl4ZWxEZXN0LCBsb2NrZXIucGl4ZWxzKCksIGh1ZFNpemUud2lkdGgoKSAqIGh1
ZFNpemUuaGVpZ2h0KCkgKiA0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT51bm1hcFRleFN1
YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3QpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKCF1cGxvYWRlZFZpYU1hcCkgewotICAgICAgICAgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBjYW52YXMuc2l6ZSgpLndpZHRoKCksIGNhbnZhcy5zaXpl
KCkuaGVpZ2h0KCksIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSwgbG9ja2VyLnBpeGVscygpKSk7Ci0gICAgICAgIH0KKyAgICAgICAg
SW50UmVjdCByZWN0KEludFBvaW50KDAsIDApLCBodWRTaXplKTsKKyAgICAgICAgbGF5ZXJUcmVl
SG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKS0+dXBsb2FkKG1faHVkVGV4dHVyZS0+aWQoKSwg
bG9ja2VyLnBpeGVscygpLCByZWN0LCByZWN0LCByZWN0KTsKICAgICB9CiAKICAgICBsYXllclJl
bmRlcmVyLT5kcmF3SGVhZHNVcERpc3BsYXkobV9odWRUZXh0dXJlLmdldCgpLCBodWRTaXplKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcAppbmRleCBjZTNiMzhlOTY0
YTQ1YzFkYTE4NTkzY2Y2MmZiZjI5NjAzYjllNjBiLi5kN2FiYTQ5ZGViMzVjMjhlNDdmMTdjZWQ2
MjQ1MWYxNmFlOTIwYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwu
Y3BwCkBAIC02MCwxMiArNjAsMTIgQEAgQ0NJT1N1cmZhY2VMYXllckltcGw6On5DQ0lPU3VyZmFj
ZUxheWVySW1wbCgpCiAgICAgICAgIGNvbnRleHQzZC0+ZGVsZXRlVGV4dHVyZShtX2lvU3VyZmFj
ZVRleHR1cmVJZCk7CiB9CiAKLXZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OndpbGxEcmF3KEND
UmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9p
ZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6d2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNv
dXJjZVByb3ZpZGVyKQogewotICAgIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhsYXllclJlbmRlcmVy
LCBjb250ZXh0KTsKKyAgICBDQ0xheWVySW1wbDo6d2lsbERyYXcocmVzb3VyY2VQcm92aWRlcik7
CiAKICAgICBpZiAobV9pb1N1cmZhY2VDaGFuZ2VkKSB7Ci0gICAgICAgIFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOworICAgICAg
ICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSByZXNvdXJjZVByb3Zp
ZGVyLT5ncmFwaGljc0NvbnRleHQzRCgpOwogICAgICAgICBpZiAoIWNvbnRleHQzZCkgewogICAg
ICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBv
c2l0aW5nLgogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5
ZXJJbXBsLmgKaW5kZXggMjhhMzVjZDBmMjA4M2E4NjIxMDE3MTg3OWMxYjkyNmI1MmJkMDRlMi4u
NDIzNjg4MDljMTM0MzZjMDZhNGI3MjA0YWVkMTRiY2JmZTlhYzQ0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXll
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbERyYXcoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0KikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNv
bnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IDlhODgzNzZjMmQ2MTVk
ODcwYWFlZWVjN2Y0MmE2NzBiMDk4NDk5MGQuLmNiNzU4NWI2NzM1ZGJhODk3NDY1MDA2Y2U3ZDMz
Yzk0ZjdhNDhkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBA
QCBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBDQ0xheWVySW1wbDo6Y3JlYXRlU2hhcmVk
UXVhZFN0YXRlKCkgY29uc3QKICAgICByZXR1cm4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShx
dWFkVHJhbnNmb3JtKCksIG1fdmlzaWJsZUNvbnRlbnRSZWN0LCBtX3NjaXNzb3JSZWN0LCBtX2Ry
YXdPcGFjaXR5LCBtX29wYXF1ZSk7CiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OndpbGxEcmF3KEND
UmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopCit2b2lkIENDTGF5ZXJJbXBsOjp3aWxsRHJh
dyhDQ1Jlc291cmNlUHJvdmlkZXIqKQogewogI2lmbmRlZiBOREVCVUcKICAgICAvLyB3aWxsRHJh
dy9kaWREcmF3IG11c3QgYmUgbWF0Y2hlZC4KQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIENDTGF5
ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKQogI2VuZGlm
CiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OmRpZERyYXcoKQordm9pZCBDQ0xheWVySW1wbDo6ZGlk
RHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKQogewogI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQo
bV9iZXR3ZWVuV2lsbERyYXdBbmREaWREcmF3KTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIEND
TGF5ZXJJbXBsOjphcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwg
Y29uc3QgQ0NTaGFyZWRRdQogICAgIHF1YWRMaXN0LmFwcGVuZChDQ0RlYnVnQm9yZGVyRHJhd1F1
YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0LCBkZWJ1Z0JvcmRlckNvbG9y
KCksIGRlYnVnQm9yZGVyV2lkdGgoKSkpOwogfQogCi11bnNpZ25lZCBDQ0xheWVySW1wbDo6Y29u
dGVudHNUZXh0dXJlSWQoKSBjb25zdAorQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIEND
TGF5ZXJJbXBsOjpjb250ZW50c1Jlc291cmNlSWQoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggMmI5YTQ5
YmQzMDM2ZmRmZjRiOGM5NzFkNjJmMDMxOWQ1Njc4MTM1My4uZGVkMjgwMWRhZTUzZmE4OGI1Y2Y4
MTliNjdmOTRjMjA0YTA1M2MzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZS5oIgor
I2luY2x1ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgImNjL0NDU2hhcmVk
UXVhZFN0YXRlLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KICNp
bmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KQEAgLTQ0LDcgKzQ1LDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIGNs
YXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwogY2xhc3MgQ0NR
dWFkQ3VsbGVyOwpAQCAtODgsMTIgKzg4LDEyIEBAIHB1YmxpYzoKICAgICAvLyBkaWREcmF3IGlz
IGd1YXJhbnRlZWQgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbm90aGVyIHdpbGxEcmF3IG9yIGJlZm9y
ZQogICAgIC8vIHRoZSBsYXllciBpcyBkZXN0cm95ZWQuIFRvIGVuZm9yY2UgdGhpcywgYW55IGNs
YXNzIHRoYXQgb3ZlcnJpZGVzCiAgICAgLy8gd2lsbERyYXcvZGlkRHJhdyBtdXN0IGNhbGwgdGhl
IGJhc2UgY2xhc3MgdmVyc2lvbi4KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZW5kZXJl
ciosIENDR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVz
b3VyY2VQcm92aWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxs
ZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhD
Q1Jlc291cmNlUHJvdmlkZXIqKTsKICAgICB2b2lkIGFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1
YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopIGNvbnN0OwogCi0gICAgdmlydHVh
bCB1bnNpZ25lZCBjb250ZW50c1RleHR1cmVJZCgpIGNvbnN0OworICAgIHZpcnR1YWwgQ0NSZXNv
dXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0OwogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbGF5ZXIgaGFzIGNvbnRlbnQgdG8gZHJhdy4KICAg
ICB2b2lkIHNldERyYXdzQ29udGVudChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IGQ2NTM5N2VlZDE5MzM1OGNiZGQ0M2NjMTUwNTJjYWZmZDcyM2JhMWQuLjAwOTJm
YTYzZDZmNmRmNTE5ODgzZWVkOTA3OTM3NjhlYzU0NDgxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAgLy8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQg
b24gcGFydGlhbCB1cGRhdGUgY2FwYWJpbGl0eS4KICAgICBtX3NldHRpbmdzLm1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlcyA9IG1pbihtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcywg
bV9wcm94eS0+bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkpOwogCi0gICAgbV9jb250ZW50c1Rl
eHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMCwgbV9w
cm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKKyAgICBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZSgwLCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNp
emUsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKIAogICAgIG1fbGF5ZXJSZW5kZXJlckluaXRp
YWxpemVkID0gdHJ1ZTsKIApAQCAtMTk3LDExICsxOTcsMTEgQEAgQ0NMYXllclRyZWVIb3N0OjpS
ZWNyZWF0ZVJlc3VsdCBDQ0xheWVyVHJlZUhvc3Q6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgcmV0
dXJuIFJlY3JlYXRlRmFpbGVkQW5kR2F2ZVVwOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6
ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1w
bFRocmVhZChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgQVNT
RVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBpZiAobV9sYXllclJlbmRlcmVySW5p
dGlhbGl6ZWQpCi0gICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1v
cnkoYWxsb2NhdG9yKTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jbGVhckFs
bE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFj
cXVpcmVMYXllclRleHR1cmVzKCkKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6YmVnaW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdElt
cGwpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBUUkFDRV9FVkVO
VDAoImNjIiwgIkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iKTsKIAotICAgIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KGhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IoKSk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoaG9z
dEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gY29tbWl0
cyB0aGUgQ0NMYXllclRyZWVIb3N0IHRvIGFuIGltcGwgdHJlZS4gV2hlbiBtb2RpZnlpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggOTcwNjBmNzM3YTY5NWJkYTk4MzZiZmViYzQ3
ZThhOGVlNDYyYzUwYi4uMGRiMDIxMGNjNmIzNzA4ZDE5YmYxOTM5MDI3NzFjMzFmZWFhNzYwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTUzLDcgKzUzLDYgQEAgY2xhc3MgQ0NM
YXllclRyZWVIb3N0SW1wbENsaWVudDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBN
YW5hZ2VkVGV4dHVyZTsKIGNsYXNzIFJlZ2lvbjsKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBj
bGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI7CiBzdHJ1Y3QgQ0NSZW5kZXJpbmdTdGF0
czsKIHN0cnVjdCBDQ1Njcm9sbEFuZFNjYWxlU2V0OwpAQCAtMTgzLDcgKzE4Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHdpbGxDb21taXQoKSB7IG1fY2xpZW50LT53aWxsQ29tbWl0KCk7IH0KICAg
ICB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIHsgbV9jbGllbnQtPmRpZENvbW1pdEFuZERy
YXdGcmFtZSgpOyB9CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgeyBtX2NsaWVu
dC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOyB9Ci0gICAgdm9pZCBkZWxldGVDb250ZW50c1Rl
eHR1cmVzT25JbXBsVGhyZWFkKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIGRlbGV0ZUNv
bnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAgICAgdmly
dHVhbCB2b2lkIGFjcXVpcmVMYXllclRleHR1cmVzKCk7CiAgICAgLy8gUmV0dXJucyBmYWxzZSBp
ZiB3ZSBzaG91bGQgYWJvcnQgdGhpcyBmcmFtZSBkdWUgdG8gaW5pdGlhbGl6YXRpb24gZmFpbHVy
ZS4KICAgICBib29sIGluaXRpYWxpemVMYXllclJlbmRlcmVySWZOZWVkZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggNzhlNzA5MTRkYTEyOGE3ZDgyNjBl
NTBkM2U5YjMwYjU4OTJjOGY0My4uODU1NTc4ZjhhMjAxN2YzNjAwOGFlMmU1NTY1ZGJkYzc2ZjEw
OWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTI5LDcg
KzI5LDYgQEAKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJU
ZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgotI2luY2x1ZGUgIlRyYWNraW5n
VGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgImNjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlv
bi5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdlVHJhY2tlci5oIgogI2luY2x1ZGUgImNjL0NDRGVi
dWdSZWN0SGlzdG9yeS5oIgpAQCAtMzMwLDcgKzMyOSw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgICAgICAg
ICBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MgPSBzdXJmYWNlUGFzc01hcC5n
ZXQoaXQtPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0Zv
clJlbmRlclN1cmZhY2VMYXllcigqaXQsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsICZvY2NsdXNp
b25UcmFja2VyKTsKICAgICAgICAgfSBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkgJiYg
IW9jY2x1c2lvblRyYWNrZXIub2NjbHVkZWQoKml0LCBpdC0+dmlzaWJsZUNvbnRlbnRSZWN0KCkp
ICYmICFpdC0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaXNFbXB0eSgpICYmICFpdC0+c2Npc3NvclJl
Y3QoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGl0LT53aWxsRHJhdyhtX2xheWVyUmVuZGVy
ZXIuZ2V0KCksIGNvbnRleHQoKSk7CisgICAgICAgICAgICBpdC0+d2lsbERyYXcobV9yZXNvdXJj
ZVByb3ZpZGVyLmdldCgpKTsKICAgICAgICAgICAgIGZyYW1lLndpbGxEcmF3TGF5ZXJzLmFwcGVu
ZCgqaXQpOwogCiAgICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9j
Y2x1c2lvblRyYWNrZXIsIGhhZE1pc3NpbmdUaWxlcyk7CkBAIC01MTYsNyArNTE1LDcgQEAgYm9v
bCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiAK
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6cmVsZWFzZUNvbnRlbnRzVGV4dHVyZXMoKQogewot
ICAgIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLT5kZWxldGVBbGxUZXh0dXJlcygpOworICAg
IG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlT3duZWRSZXNvdXJjZXMoQ0NSZW5kZXJlcjo6Q29u
dGVudFBvb2wpOwogICAgIG1fY29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21t
aXQgPSB0cnVlOwogICAgIG1fY2xpZW50LT5zZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwog
fQpAQCAtNTczLDcgKzU3Miw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVy
cyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkaWRE
cmF3QWxsTGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCiB7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmcmFtZS53aWxsRHJhd0xheWVycy5zaXplKCk7ICsraSkKLSAgICAgICAgZnJh
bWUud2lsbERyYXdMYXllcnNbaV0tPmRpZERyYXcoKTsKKyAgICAgICAgZnJhbWUud2lsbERyYXdM
YXllcnNbaV0tPmRpZERyYXcobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKIH0KIAogdm9pZCBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpmaW5pc2hBbGxSZW5kZXJpbmcoKQpAQCAtNTkyLDExICs1OTEs
NiBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKAogICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXIt
PmNhcGFiaWxpdGllcygpOwogfQogCi1UZXh0dXJlQWxsb2NhdG9yKiBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdAotewotICAgIHJldHVybiBtX2xh
eWVyUmVuZGVyZXIgPyBtX2xheWVyUmVuZGVyZXItPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
IDogMDsKLX0KLQogYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzd2FwQnVmZmVycygpCiB7CiAg
ICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlcik7CkBAIC03MDIsOCArNjk2LDExIEBAIGJvb2wgQ0NM
YXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc093blB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIE93blB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dFJlZihjb250ZXh0KTsKKyAgICBPd25QdHI8Q0NS
ZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyID0gQ0NSZXNvdXJjZVByb3ZpZGVyOjpj
cmVhdGUoY29udGV4dFJlZi5nZXQoKSk7CiAgICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1
bT4gbGF5ZXJSZW5kZXJlcjsKLSAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjcmVhdGUodGhpcywgY29udGV4dDNkLCB0ZXh0dXJlVXBsb2FkZXIpOworICAgIGlmIChy
ZXNvdXJjZVByb3ZpZGVyLmdldCgpKQorICAgICAgICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgdGV4dHVy
ZVVwbG9hZGVyKTsKIAogICAgIC8vIFNpbmNlIHdlIG5vdyBoYXZlIGEgbmV3IGNvbnRleHQvbGF5
ZXJSZW5kZXJlciwgd2UgY2Fubm90IGNvbnRpbnVlIHRvIHVzZSB0aGUgb2xkCiAgICAgLy8gcmVz
b3VyY2VzIChpLmUuIHJlbmRlclN1cmZhY2VzIGFuZCB0ZXh0dXJlIElEcykuCkBAIC03MTMsOCAr
NzEwLDkgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJl
cihQYXNzT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PgogICAgIH0KIAogICAgIG1fbGF5ZXJSZW5k
ZXJlciA9IGxheWVyUmVuZGVyZXIucmVsZWFzZSgpOworICAgIG1fcmVzb3VyY2VQcm92aWRlciA9
IHJlc291cmNlUHJvdmlkZXIucmVsZWFzZSgpOwogICAgIGlmIChtX2xheWVyUmVuZGVyZXIpCi0g
ICAgICAgIG1fY29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIG1fY29udGV4dCA9IGNvbnRleHRS
ZWYucmVsZWFzZSgpOwogCiAgICAgaWYgKCFtX3Zpc2libGUgJiYgbV9sYXllclJlbmRlcmVyKQog
ICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRWaXNpYmxlKG1fdmlzaWJsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggNDlmMmZjNjJiOTcwZDA0Y2VhNDg2ZDMy
NjE5ZmE3ZDY4ZTlkODg5ZC4uNzEyNzBiNmI2NWJkNzFhOTAxMWI3YTA5NmRjYzNhNTM2ZWRjZmY2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtNDYsOCArNDYsOCBA
QCBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNl
QWRhcHRlcjsKIGNsYXNzIENDUGFnZVNjYWxlQW5pbWF0aW9uOwogY2xhc3MgQ0NSZW5kZXJQYXNz
RHJhd1F1YWQ7CitjbGFzcyBDQ1Jlc291cmNlUHJvdmlkZXI7CiBjbGFzcyBMYXllclJlbmRlcmVy
Q2hyb21pdW07Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogc3RydWN0IExheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXM7CiAKIC8vIENDTGF5ZXJUcmVlSG9zdC0+Q0NQcm94eSBjYWxsYmFjayBpbnRl
cmZhY2UuCkBAIC0xMjcsNyArMTI3LDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNDb250ZXh0TG9z
dCgpOwogICAgIENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIoKSB7IHJldHVybiBtX2xheWVyUmVu
ZGVyZXIuZ2V0KCk7IH0KICAgICBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7Ci0gICAgVGV4dHVyZUFsbG9jYXRvciogY29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3Q7CiAKICAgICBib29sIHN3YXBCdWZmZXJzKCk7
CiAKQEAgLTE3Nyw2ICsxNzYsNyBAQCBwdWJsaWM6CiAKICAgICBDQ0ZyYW1lUmF0ZUNvdW50ZXIq
IGZwc0NvdW50ZXIoKSBjb25zdCB7IHJldHVybiBtX2Zwc0NvdW50ZXIuZ2V0KCk7IH0KICAgICBD
Q0RlYnVnUmVjdEhpc3RvcnkqIGRlYnVnUmVjdEhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Rl
YnVnUmVjdEhpc3RvcnkuZ2V0KCk7IH0KKyAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCk7IH0KIAog
ICAgIGNsYXNzIEN1bGxSZW5kZXJQYXNzZXNXaXRoQ2FjaGVkVGV4dHVyZXMgewogICAgIHB1Ymxp
YzoKQEAgLTI1NCw2ICsyNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZHVtcFJlbmRlclN1cmZh
Y2VzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50LCBjb25zdCBDQ0xheWVySW1wbCopIGNvbnN0Owog
CiAgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgT3duUHRyPEND
UmVzb3VyY2VQcm92aWRlcj4gbV9yZXNvdXJjZVByb3ZpZGVyOwogICAgIE93blB0cjxDQ1JlbmRl
cmVyPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXll
ckltcGw7CiAgICAgQ0NMYXllckltcGwqIG1fcm9vdFNjcm9sbExheWVySW1wbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3Jp
dGl6ZWRUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcAppbmRleCBkOGNjMTc0ODVhOTBmOTIwMmQx
N2E2ZjE4NTIyMGFhNjJlNzY3NDNmLi44MTcwODk1MzM3NDk5MTMyZTdhZmVmYmQzODZhZGJkZDlk
Zjc0YTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwCkBAIC04
OCw0OCArODgsNTAgQEAgYm9vbCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6cmVxdWVzdExhdGUoKQog
ICAgIHJldHVybiBtX21hbmFnZXItPnJlcXVlc3RMYXRlKHRoaXMpOwogfQogCi12b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlOjphY3F1aXJlQmFja2luZ1RleHR1cmUoVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YWNxdWlyZUJhY2tpbmdUZXh0
dXJlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKICAgICBBU1NFUlQo
bV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwogICAgIGlmIChtX2lzQWJvdmVQcmlvcml0eUN1dG9m
ZikKLSAgICAgICAgbV9tYW5hZ2VyLT5hY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZCh0aGlz
LCBhbGxvY2F0b3IpOworICAgICAgICBtX21hbmFnZXItPmFjcXVpcmVCYWNraW5nVGV4dHVyZUlm
TmVlZGVkKHRoaXMsIHJlc291cmNlUHJvdmlkZXIpOwogfQogCi11bnNpZ25lZCBDQ1ByaW9yaXRp
emVkVGV4dHVyZTo6dGV4dHVyZUlkKCkKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBD
Q1ByaW9yaXRpemVkVGV4dHVyZTo6cmVzb3VyY2VJZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fY3Vy
cmVudEJhY2tpbmcpCi0gICAgICAgIHJldHVybiBtX2N1cnJlbnRCYWNraW5nLT50ZXh0dXJlSWQo
KTsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEJhY2tpbmctPnJlc291cmNlSWQoKTsKICAgICBy
ZXR1cm4gMDsKIH0KIAotdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YmluZFRleHR1cmUoQ0NH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3Zv
aWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OnVwbG9hZChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291
cmNlUHJvdmlkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCkKIHsKICAgICBBU1NFUlQobV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwogICAg
IGlmIChtX2lzQWJvdmVQcmlvcml0eUN1dG9mZikKLSAgICAgICAgYWNxdWlyZUJhY2tpbmdUZXh0
dXJlKGFsbG9jYXRvcik7CisgICAgICAgIGFjcXVpcmVCYWNraW5nVGV4dHVyZShyZXNvdXJjZVBy
b3ZpZGVyKTsKICAgICBBU1NFUlQobV9jdXJyZW50QmFja2luZyk7Ci0gICAgV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAg
aWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGgg
Zm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNv
bnRleHQzZC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1
cmVJZCgpKTsKKworICAgIHJlc291cmNlUHJvdmlkZXItPnVwbG9hZChyZXNvdXJjZUlkKCksIGlt
YWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBDQ1ByaW9y
aXRpemVkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3Vuc2lnbmVkIENDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpiZWdpblJlbmRlclRvKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92
aWRlcikKIHsKICAgICBBU1NFUlQobV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwogICAgIGlmICht
X2lzQWJvdmVQcmlvcml0eUN1dG9mZikKLSAgICAgICAgYWNxdWlyZUJhY2tpbmdUZXh0dXJlKGFs
bG9jYXRvcik7CisgICAgICAgIGFjcXVpcmVCYWNraW5nVGV4dHVyZShyZXNvdXJjZVByb3ZpZGVy
KTsKICAgICBBU1NFUlQobV9jdXJyZW50QmFja2luZyk7Ci0gICAgV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFj
b250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNv
ZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbnRleHQz
ZC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBH
cmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCB0ZXh0dXJlSWQoKSwgMCk7CisgICAgaWYgKCFtX2N1cnJlbnRCYWNraW5nKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmVzb3VyY2VQcm92aWRlci0+YmVnaW5SZW5k
ZXJUbyhyZXNvdXJjZUlkKCkpOwogfQogCit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjplbmRS
ZW5kZXJUbyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCit7CisgICAgQVNT
RVJUKG1fY3VycmVudEJhY2tpbmcpOworICAgIHJlc291cmNlUHJvdmlkZXItPmVuZFJlbmRlclRv
KHJlc291cmNlSWQoKSk7Cit9CisKKwogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0Q3Vy
cmVudEJhY2tpbmcoQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcpCiB7CiAg
ICAgaWYgKG1fY3VycmVudEJhY2tpbmcgPT0gYmFja2luZykKQEAgLTEzOCw0ICsxNDAsMyBAQCB2
b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpzZXRDdXJyZW50QmFja2luZyhDQ1ByaW9yaXRpemVk
VGV4dHVyZTo6QmFja2luZyogYmFjawogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJpb3JpdGl6ZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCmluZGV4IDllYTJmYjFlNDE1NzlmNjQ1
MDRmNmEzYzliYjBkN2JlMGIzMmUxZjIuLmQ4Nzc2NTFjMzQ4NzBlMGUzZjczNGM4ZWRiN2ZiODk4
YTE1NzczOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaApAQCAtMjUs
MTcgKzI1LDE3IEBACiAjaWZuZGVmIENDUHJpb3JpdGl6ZWRUZXh0dXJlX2gKICNkZWZpbmUgQ0NQ
cmlvcml0aXplZFRleHR1cmVfaAogCi0jaW5jbHVkZSAiQ0NQcmlvcml0eUNhbGN1bGF0b3IuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJjYy9DQ1ByaW9yaXR5Q2FsY3VsYXRvci5oIgorI2luY2x1ZGUgImNjL0NDUmVzb3VyY2VQcm92
aWRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjsKIGNsYXNzIENDUHJpb3JpdHlDYWxjdWxhdG9yOwotY2xhc3MgQ0NHcmFwaGlj
c0NvbnRleHQ7CiAKIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDQ1ByaW9yaXRpemVkVGV4dHVyZSk7CkBAIC03NSw3ICs3NSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIElmIGNhbkFxdWlyZUJhY2tpbmdUZXh0dXJlKCkgaXMgdHJ1ZSBhY3F1aXJl
QmFja2luZ1RleHR1cmUoKSB3aWxsIGFjcXVpcmUKICAgICAvLyBhIGJhY2tpbmcgdGV4dHVyZSBm
b3IgdXNlLiBDYWxsIHRoaXMgd2hlbmV2ZXIgdGhlIHRleHR1cmUgaXMgYWN0dWFsbHkgbmVlZGVk
LgotICAgIHZvaWQgYWNxdWlyZUJhY2tpbmdUZXh0dXJlKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAg
ICB2b2lkIGFjcXVpcmVCYWNraW5nVGV4dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKIAogICAg
IC8vIEZJWE1FOiBSZXF1ZXN0IGxhdGUgaXMgcmVhbGx5IGEgaGFjayBmb3Igd2hlbiB3ZSBhcmUg
dG90YWxseSBvdXQgb2YgbWVtb3J5CiAgICAgLy8gICAgICAgIChhbGwgdGV4dHVyZXMgYXJlIHZp
c2libGUpIGJ1dCB3ZSBjYW4gc3RpbGwgc3F1ZWV6ZSBpbnRvIHRoZSBsaW1pdApAQCAtODgsOSAr
ODgsMTEgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHdpbGwgYXF1aXJlIHRo
ZSB0ZXh0dXJlIGlmIHBvc3NpYmxlLiBJZiBuZWl0aGVyIGhhdmVCYWNraW5nVGV4dHVyZSgpCiAg
ICAgLy8gbm9yIGNhbkFxdWlyZUJhY2tpbmdUZXh0dXJlKCkgaXMgdHJ1ZSwgYW4gSUQgb2YgemVy
byB3aWxsIGJlIHVzZWQvcmV0dXJuZWQuCi0gICAgdm9pZCBiaW5kVGV4dHVyZShDQ0dyYXBoaWNz
Q29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqKTsKLSAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVy
ZTJEKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciopOwotICAgIHVuc2lnbmVk
IHRleHR1cmVJZCgpOworICAgIHZvaWQgdXBsb2FkKENDUmVzb3VyY2VQcm92aWRlciosIGNvbnN0
IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB1bnNpZ25lZCBiZWdp
blJlbmRlclRvKENDUmVzb3VyY2VQcm92aWRlciopOworICAgIHZvaWQgZW5kUmVuZGVyVG8oQ0NS
ZXNvdXJjZVByb3ZpZGVyKik7CisKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQg
cmVzb3VyY2VJZCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI7CkBAIC0xMDEsMTggKzEwMywxOCBAQCBwcml2YXRlOgogICAg
ICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICAgICAgR0Mz
RGVudW0gZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KICAgICAgICAgc2l6ZV90
IG1lbW9yeVNpemVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5U2l6ZUJ5dGVzOyB9Ci0g
ICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9
CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZUlkOyB9CiAgICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJl
KiBjdXJyZW50VGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFRleHR1cmU7IH0KICAg
ICAgICAgdm9pZCBzZXRDdXJyZW50VGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogY3VycmVu
dCkgeyBtX2N1cnJlbnRUZXh0dXJlID0gY3VycmVudDsgfQogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgZnJpZW5kIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKIAotICAgICAgICBC
YWNraW5nKEludFNpemUgc2l6ZSwgR0MzRGVudW0gZm9ybWF0LCB1bnNpZ25lZCB0ZXh0dXJlSWQp
CisgICAgICAgIEJhY2tpbmcoSW50U2l6ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQsIENDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKQogICAgICAgICAgICAgOiBtX3NpemUo
c2l6ZSkKICAgICAgICAgICAgICwgbV9mb3JtYXQoZm9ybWF0KQogICAgICAgICAgICAgLCBtX21l
bW9yeVNpemVCeXRlcyhUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0
KSkKLSAgICAgICAgICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQorICAgICAgICAgICAgLCBt
X3Jlc291cmNlSWQocmVzb3VyY2VJZCkKICAgICAgICAgICAgICwgbV9wcmlvcml0eShDQ1ByaW9y
aXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKSkKICAgICAgICAgICAgICwgbV9jdXJyZW50
VGV4dHVyZSgwKSB7IH0KICAgICAgICAgfkJhY2tpbmcoKSB7IEFTU0VSVCghbV9jdXJyZW50VGV4
dHVyZSk7IH0KQEAgLTEyMCw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgICAgICBJbnRTaXplIG1f
c2l6ZTsKICAgICAgICAgR0MzRGVudW0gbV9mb3JtYXQ7CiAgICAgICAgIHNpemVfdCBtX21lbW9y
eVNpemVCeXRlczsKLSAgICAgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgICAgIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CiAgICAgICAgIGludCBtX3By
aW9yaXR5OwogICAgICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZSogbV9jdXJyZW50VGV4dHVyZTsK
ICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
ci5jcHAKaW5kZXggNWFmNTNkZjA0YmRlYjY3ZTJhMGVjYzFhMzRhOWVhNmJjZTk5ZjMyNS4uYzEx
NzhlYzNlNmY1ODE3OTg0YmZmOWE1NTI1NjY4MDAwYzgwYzcwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCkBAIC0zNiwxMSArMzYsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcihzaXplX3Qg
bWF4TWVtb3J5TGltaXRCeXRlcywgaW50KQorQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIGlu
dCwgaW50IHBvb2wpCiAgICAgOiBtX21heE1lbW9yeUxpbWl0Qnl0ZXMobWF4TWVtb3J5TGltaXRC
eXRlcykKICAgICAsIG1fbWVtb3J5VXNlQnl0ZXMoMCkKICAgICAsIG1fbWVtb3J5QWJvdmVDdXRv
ZmZCeXRlcygwKQogICAgICwgbV9tZW1vcnlBdmFpbGFibGVCeXRlcygwKQorICAgICwgbV9wb29s
KHBvb2wpCiB7CiB9CiAKQEAgLTQ5LDcgKzUwLDcgQEAgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjp+Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKCkKICAgICB3aGlsZSAobV90ZXh0dXJl
cy5zaXplKCkgPiAwKQogICAgICAgICB1bnJlZ2lzdGVyVGV4dHVyZSgqbV90ZXh0dXJlcy5iZWdp
bigpKTsKIAotICAgIC8vIEVhY2ggcmVtYWluaW5nIGJhY2tpbmcgaXMgYSBsZWFrZWQgb3Blbmds
IHRleHR1cmUuIFdlIGRvbid0IGhhdmUgdGhlIGFsbG9jYXRvcgorICAgIC8vIEVhY2ggcmVtYWlu
aW5nIGJhY2tpbmcgaXMgYSBsZWFrZWQgb3BlbmdsIHRleHR1cmUuIFdlIGRvbid0IGhhdmUgdGhl
IHJlc291cmNlUHJvdmlkZXIKICAgICAvLyB0byBkZWxldGUgdGhlIHRleHR1cmVzIGF0IHRoaXMg
dGltZSBzbyBjbGVhck1lbW9yeSgpIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmUgdGhpcy4KICAg
ICB3aGlsZSAobV9iYWNraW5ncy5zaXplKCkgPiAwKQogICAgICAgICBkZXN0cm95QmFja2luZygq
bV9iYWNraW5ncy5iZWdpbigpLCAwKTsKQEAgLTE3MCw3ICsxNzEsNyBAQCBib29sIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdExhdGUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRl
eHR1cmUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4dHVy
ZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3Jp
dGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlk
ZXIpCiB7CiAgICAgQVNTRVJUKHRleHR1cmUtPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKTsKICAg
ICBpZiAodGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSB8fCAhdGV4dHVyZS0+aXNBYm92ZVByaW9y
aXR5Q3V0b2ZmKCkpCkBAIC0xOTEsOCArMTkyLDggQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXgK
IAogICAgIC8vIE90aGVyd2lzZSByZWR1Y2UgbWVtb3J5IGFuZCBqdXN0IGFsbG9jYXRlIGEgbmV3
IGJhY2tpbmcgdGV4dXJlcy4KICAgICBpZiAoIWJhY2tpbmcpIHsKLSAgICAgICAgcmVkdWNlTWVt
b3J5KG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLSB0ZXh0dXJlLT5tZW1vcnlTaXplQnl0ZXMoKSwg
YWxsb2NhdG9yKTsKLSAgICAgICAgYmFja2luZyA9IGNyZWF0ZUJhY2tpbmcodGV4dHVyZS0+c2l6
ZSgpLCB0ZXh0dXJlLT5mb3JtYXQoKSwgYWxsb2NhdG9yKTsKKyAgICAgICAgcmVkdWNlTWVtb3J5
KG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLSB0ZXh0dXJlLT5tZW1vcnlTaXplQnl0ZXMoKSwgcmVz
b3VyY2VQcm92aWRlcik7CisgICAgICAgIGJhY2tpbmcgPSBjcmVhdGVCYWNraW5nKHRleHR1cmUt
PnNpemUoKSwgdGV4dHVyZS0+Zm9ybWF0KCksIHJlc291cmNlUHJvdmlkZXIpOwogICAgIH0KIAog
ICAgIC8vIE1vdmUgdGhlIHVzZWQgYmFja2luZyB0ZXh0dXJlIHRvIHRoZSBlbmQgb2YgdGhlIGV2
aWN0aW9uIGxpc3QuCkBAIC0yMDMsNyArMjA0LDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXgK
ICAgICBtX2JhY2tpbmdzLmFkZChiYWNraW5nKTsKIH0KIAotdm9pZCBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeShzaXplX3QgbGltaXRCeXRlcywgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZHVj
ZU1lbW9yeShzaXplX3QgbGltaXRCeXRlcywgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVBy
b3ZpZGVyKQogewogICAgIGlmIChtZW1vcnlVc2VCeXRlcygpIDw9IGxpbWl0Qnl0ZXMpCiAgICAg
ICAgIHJldHVybjsKQEAgLTIxMywxMyArMjE0LDEzIEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoc2l6ZV90IGxpbWl0Qnl0ZXMsIFRleHR1cmVBbGxvY2F0
CiAgICAgICAgIEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigpOwog
ICAgICAgICBpZiAoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkgJiYgKCppdCktPmN1cnJlbnRUZXh0
dXJlKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlc3Ryb3lCYWNraW5nKCgqaXQpLCBhbGxvY2F0b3IpOworICAgICAgICBkZXN0cm95QmFj
a2luZygoKml0KSwgcmVzb3VyY2VQcm92aWRlcik7CiAgICAgfQogfQogCi12b2lkIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvcikKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoQ0NS
ZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewotICAgIHJlZHVjZU1lbW9yeSht
X21lbW9yeUF2YWlsYWJsZUJ5dGVzLCBhbGxvY2F0b3IpOworICAgIHJlZHVjZU1lbW9yeShtX21l
bW9yeUF2YWlsYWJsZUJ5dGVzLCByZXNvdXJjZVByb3ZpZGVyKTsKICAgICBBU1NFUlQobWVtb3J5
VXNlQnl0ZXMoKSA8PSBtYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwogCiAgICAgLy8gV2UgY3VycmVu
dGx5IGNvbGxlY3QgYmFja2luZ3MgZnJvbSBkZWxldGVkIHRleHR1cmVzIGZvciBsYXRlciByZWN5
Y2xpbmcuCkBAIC0yMzYsMTcgKzIzNywxNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6cmVkdWNlTWVtb3J5KFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKICAgICBzaXpl
X3QgdGVuUGVyY2VudE9mTWVtb3J5ID0gbV9tZW1vcnlBdmFpbGFibGVCeXRlcyAvIDEwOwogICAg
IGlmICh3YXN0ZWRNZW1vcnkgPD0gdGVuUGVyY2VudE9mTWVtb3J5KQogICAgICAgICByZXR1cm47
Ci0gICAgcmVkdWNlTWVtb3J5KG1lbW9yeVVzZUJ5dGVzKCkgLSAod2FzdGVkTWVtb3J5IC0gdGVu
UGVyY2VudE9mTWVtb3J5KSwgYWxsb2NhdG9yKTsKKyAgICByZWR1Y2VNZW1vcnkobWVtb3J5VXNl
Qnl0ZXMoKSAtICh3YXN0ZWRNZW1vcnkgLSB0ZW5QZXJjZW50T2ZNZW1vcnkpLCByZXNvdXJjZVBy
b3ZpZGVyKTsKIH0KIAotdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNsZWFyQWxs
TWVtb3J5KFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9yeShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIpCiB7CiAgICAgLy8gVW5saW5rIGFuZCBkZXN0cm95IGFsbCBiYWNraW5nIHRleHR1
cmVzLgogICAgIHdoaWxlIChtX2JhY2tpbmdzLnNpemUoKSA+IDApIHsKICAgICAgICAgQmFja2lu
Z1NldDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7CiAgICAgICAgIGlmICgoKml0
KS0+Y3VycmVudFRleHR1cmUoKSkKICAgICAgICAgICAgIHVubGluaygoKml0KS0+Y3VycmVudFRl
eHR1cmUoKSwgKCppdCkpOwotICAgICAgICBkZXN0cm95QmFja2luZygoKml0KSwgYWxsb2NhdG9y
KTsKKyAgICAgICAgZGVzdHJveUJhY2tpbmcoKCppdCksIHJlc291cmNlUHJvdmlkZXIpOwogICAg
IH0KIH0KIApAQCAtMjU0LDcgKzI1NSw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjphbGxCYWNraW5nVGV4dHVyZXNXZXJlRGVsZXRlZCgpCiB7CiAgICAgLy8gU2FtZSBhcyBj
bGVhckFsbE1lbW9yeSwgZXhjZXB0IGFsbCBvdXIgdGV4dHVyZXMgd2VyZSBhbHJlYWR5CiAgICAg
Ly8gZGVsZXRlZCBleHRlcm5hbGx5LCBzbyB3ZSBkb24ndCBkZWxldGUgdGhlbS4gUGFzc2luZyBu
bwotICAgIC8vIGFsbG9jYXRvciByZXN1bHRzIGluIGxlYWtpbmcgdGhlIChub3cgaW52YWxpZCkg
dGV4dHVyZSBpZHMuCisgICAgLy8gcmVzb3VyY2VQcm92aWRlciByZXN1bHRzIGluIGxlYWtpbmcg
dGhlIChub3cgaW52YWxpZCkgdGV4dHVyZSBpZHMuCiAgICAgY2xlYXJBbGxNZW1vcnkoMCk7CiB9
CiAKQEAgLTMxMywyNiArMzE0LDI2IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
OjpyZXR1cm5CYWNraW5nVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4CiAgICAgfQog
fQogCi1DQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjpjcmVhdGVCYWNraW5nKEludFNpemUgc2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCitDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyog
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVCYWNraW5nKEludFNpemUgc2l6ZSwg
R0MzRGVudW0gZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7
Ci0gICAgQVNTRVJUKGFsbG9jYXRvcik7CisgICAgQVNTRVJUKHJlc291cmNlUHJvdmlkZXIpOwog
Ci0gICAgdW5zaWduZWQgdGV4dHVyZUlkID0gYWxsb2NhdG9yLT5jcmVhdGVUZXh0dXJlKHNpemUs
IGZvcm1hdCk7Ci0gICAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcgPSBu
ZXcgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcoc2l6ZSwgZm9ybWF0LCB0ZXh0dXJlSWQp
OworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkID0gcmVzb3Vy
Y2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UobV9wb29sLCBzaXplLCBmb3JtYXQsIENDUmVzb3Vy
Y2VQcm92aWRlcjo6QW55KTsKKyAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFj
a2luZyA9IG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyhzaXplLCBmb3JtYXQsIHJl
c291cmNlSWQpOwogICAgIG1fbWVtb3J5VXNlQnl0ZXMgKz0gYmFja2luZy0+bWVtb3J5U2l6ZUJ5
dGVzKCk7CiAgICAgLy8gUHV0IGJhY2tpbmcgdGV4dHVyZSBhdCB0aGUgZnJvbnQgZm9yIGV2aWN0
aW9uLCBzaW5jZSBpdCBpc24ndCBpbiB1c2UgeWV0LgogICAgIG1fYmFja2luZ3MuaW5zZXJ0QmVm
b3JlKG1fYmFja2luZ3MuYmVnaW4oKSwgYmFja2luZyk7CiAgICAgcmV0dXJuIGJhY2tpbmc7CiB9
CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZXN0cm95QmFja2luZyhDQ1By
aW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZywgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ryb3lCYWNraW5n
KENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nLCBDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgQVNTRVJUKGJhY2tpbmcpOwogICAgIEFTU0VS
VCghYmFja2luZy0+Y3VycmVudFRleHR1cmUoKSB8fCAhYmFja2luZy0+Y3VycmVudFRleHR1cmUo
KS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpOwogICAgIEFTU0VSVChtX2JhY2tpbmdzLmZpbmQo
YmFja2luZykgIT0gbV9iYWNraW5ncy5lbmQoKSk7CiAKLSAgICBpZiAoYWxsb2NhdG9yKQotICAg
ICAgICBhbGxvY2F0b3ItPmRlbGV0ZVRleHR1cmUoYmFja2luZy0+dGV4dHVyZUlkKCksIGJhY2tp
bmctPnNpemUoKSwgYmFja2luZy0+Zm9ybWF0KCkpOworICAgIGlmIChyZXNvdXJjZVByb3ZpZGVy
KQorICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShiYWNraW5nLT5yZXNv
dXJjZUlkKCkpOwogICAgIGlmIChiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpKQogICAgICAgICB1
bmxpbmsoYmFja2luZy0+Y3VycmVudFRleHR1cmUoKSwgYmFja2luZyk7CiAgICAgbV9tZW1vcnlV
c2VCeXRlcyAtPSBiYWNraW5nLT5tZW1vcnlTaXplQnl0ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKaW5kZXggM2M3MGIyYjJhMDIzMDljYTE2
NGQ2ZGNhOTFjZDkwYmM0MmFmZTZlZC4uOGFlNmRmZWZhNzQ5MGY4MTYwMGZkNWJmNmU5OTI1MDU3
OTI0NWViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyLmgKQEAgLTQwLDkgKzQwLDkgQEAgY2xhc3MgQ0NQcmlvcml0eUNhbGN1bGF0b3I7CiBjbGFz
cyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiBjcmVhdGUoc2l6ZV90IG1heE1lbW9y
eUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IGNyZWF0ZShzaXplX3QgbWF4TWVtb3J5TGltaXRC
eXRlcywgaW50IG1heFRleHR1cmVTaXplLCBpbnQgcG9vbCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKG1heE1lbW9yeUxpbWl0
Qnl0ZXMsIG1heFRleHR1cmVTaXplKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKG1heE1lbW9yeUxpbWl0Qnl0ZXMsIG1heFRleHR1cmVT
aXplLCBwb29sKSk7CiAgICAgfQogICAgIFBhc3NPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+
IGNyZWF0ZVRleHR1cmUoSW50U2l6ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQpCiAgICAgewpAQCAt
NjYsMTEgKzY2LDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcmVxdWVzdExhdGUoQ0NQcmlvcml0
aXplZFRleHR1cmUqKTsKIAotICAgIHZvaWQgcmVkdWNlTWVtb3J5KFRleHR1cmVBbGxvY2F0b3Iq
KTsKLSAgICB2b2lkIGNsZWFyQWxsTWVtb3J5KFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lk
IHJlZHVjZU1lbW9yeShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICB2b2lkIGNsZWFyQWxsTWVt
b3J5KENDUmVzb3VyY2VQcm92aWRlciopOwogICAgIHZvaWQgYWxsQmFja2luZ1RleHR1cmVzV2Vy
ZURlbGV0ZWQoKTsKIAotICAgIHZvaWQgYWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQoQ0NQ
cmlvcml0aXplZFRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBhY3F1aXJl
QmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4dHVyZSosIENDUmVzb3VyY2VQ
cm92aWRlciopOwogCiAgICAgdm9pZCByZWdpc3RlclRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1
cmUqKTsKICAgICB2b2lkIHVucmVnaXN0ZXJUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKik7
CkBAIC05OCwyMSArOTgsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIENDUHJpb3JpdHlD
YWxjdWxhdG9yOjpwcmlvcml0eUlzTG93ZXIocHJpb3JpdHlBLCBwcmlvcml0eUIpOwogICAgIH0K
IAotICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRC
eXRlcywgaW50IG1heFRleHR1cmVTaXplKTsKKyAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSwgaW50IHBv
b2wpOwogCi0gICAgdm9pZCByZWR1Y2VNZW1vcnkoc2l6ZV90IGxpbWl0LCBUZXh0dXJlQWxsb2Nh
dG9yKik7CisgICAgdm9pZCByZWR1Y2VNZW1vcnkoc2l6ZV90IGxpbWl0LCBDQ1Jlc291cmNlUHJv
dmlkZXIqKTsKIAogICAgIHZvaWQgbGluayhDQ1ByaW9yaXRpemVkVGV4dHVyZSosIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlOjpCYWNraW5nKik7CiAgICAgdm9pZCB1bmxpbmsoQ0NQcmlvcml0aXplZFRl
eHR1cmUqLCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyopOwogCi0gICAgQ0NQcmlvcml0
aXplZFRleHR1cmU6OkJhY2tpbmcqIGNyZWF0ZUJhY2tpbmcoSW50U2l6ZSwgR0MzRGVudW0gZm9y
bWF0LCBUZXh0dXJlQWxsb2NhdG9yKik7Ci0gICAgdm9pZCBkZXN0cm95QmFja2luZyhDQ1ByaW9y
aXRpemVkVGV4dHVyZTo6QmFja2luZyosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICBDQ1ByaW9y
aXRpemVkVGV4dHVyZTo6QmFja2luZyogY3JlYXRlQmFja2luZyhJbnRTaXplLCBHQzNEZW51bSBm
b3JtYXQsIENDUmVzb3VyY2VQcm92aWRlciopOworICAgIHZvaWQgZGVzdHJveUJhY2tpbmcoQ0NQ
cmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqLCBDQ1Jlc291cmNlUHJvdmlkZXIqKTsKIAogICAg
IHNpemVfdCBtX21heE1lbW9yeUxpbWl0Qnl0ZXM7CiAgICAgdW5zaWduZWQgbV9wcmlvcml0eUN1
dG9mZjsKICAgICBzaXplX3QgbV9tZW1vcnlVc2VCeXRlczsKICAgICBzaXplX3QgbV9tZW1vcnlB
Ym92ZUN1dG9mZkJ5dGVzOwogICAgIHNpemVfdCBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzOworICAg
IGludCBtX3Bvb2w7CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8Q0NQcmlvcml0aXplZFRleHR1cmUq
PiBUZXh0dXJlU2V0OwogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8Q0NQcmlvcml0aXplZFRleHR1
cmU6OkJhY2tpbmcqPiBCYWNraW5nU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJh
d1F1YWQuY3BwCmluZGV4IDY2MDg4OWJjNDNmMTVkMjBkMDU2Zjg5NzMwMTllMTEzYzAzY2U5NDAu
LjUwODJhY2M5MmVjOTc3NTBiNjdlOTcwNmY5ZjVlM2FiNjNlMzZlYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0Ry
YXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKQEAgLTMzLDEyICszMywxMiBAQCB1c2luZyBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NP
d25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUo
Y29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBh
c3MsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMs
IHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNp
bmNlTGFzdEZyYW1lKQorUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEND
UmVuZGVyUGFzcyogcmVuZGVyUGFzcywgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IFdlYktpdDo6V2ViRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25z
JiBiYWNrZ3JvdW5kRmlsdGVycywgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tS
ZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkK
IHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUmVuZGVyUGFzc0RyYXdRdWFkKHNoYXJlZFF1
YWRTdGF0ZSwgcXVhZFJlY3QsIHJlbmRlclBhc3MsIGlzUmVwbGljYSwgZHJhd1RyYW5zZm9ybSwg
ZmlsdGVycywgYmFja2dyb3VuZEZpbHRlcnMsIG1hc2tUZXh0dXJlSWQsIGNvbnRlbnRzQ2hhbmdl
ZFNpbmNlTGFzdEZyYW1lKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3NE
cmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCByZW5kZXJQYXNzLCBpc1JlcGxpY2Es
IGRyYXdUcmFuc2Zvcm0sIGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrUmVzb3VyY2VJ
ZCwgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpKTsKIH0KIAotQ0NSZW5kZXJQYXNzRHJh
d1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
Y29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBjb25z
dCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKK0NDUmVuZGVyUGFzc0Ry
YXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3Qs
IGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcywgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IFdlYktp
dDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJP
cGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJj
ZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxh
c3RGcmFtZSkKICAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpS
ZW5kZXJQYXNzLCBxdWFkUmVjdCkKICAgICAsIG1fcmVuZGVyUGFzcyhyZW5kZXJQYXNzKQogICAg
ICwgbV9yZW5kZXJQYXNzSWQocmVuZGVyUGFzcy0+aWQoKSkKQEAgLTQ2LDcgKzQ2LDcgQEAgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2Vi
Q29tcG9zaXRvclNoYXJlZFF1YWQKICAgICAsIG1fZHJhd1RyYW5zZm9ybShkcmF3VHJhbnNmb3Jt
KQogICAgICwgbV9maWx0ZXJzKGZpbHRlcnMpCiAgICAgLCBtX2JhY2tncm91bmRGaWx0ZXJzKGJh
Y2tncm91bmRGaWx0ZXJzKQotICAgICwgbV9tYXNrVGV4dHVyZUlkKG1hc2tUZXh0dXJlSWQpCisg
ICAgLCBtX21hc2tSZXNvdXJjZUlkKG1hc2tSZXNvdXJjZUlkKQogICAgICwgbV9jb250ZW50c0No
YW5nZWRTaW5jZUxhc3RGcmFtZShjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKIHsKICAg
ICBBU1NFUlQobV9yZW5kZXJQYXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVh
ZC5oCmluZGV4IDQxNmJkMzRlMzM5MzNkZDZiMTI1NzM1MDFlNzE4MmI1MWQwNTc0MTkuLjVmMGZm
ZjAwMWU2MzQ5ZDJmYTQ2MGM1YTYwYzQ5NTY4NTU0NDc1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBDQ1JlbmRlclBh
c3NEcmF3UXVhZF9oCiAjZGVmaW5lIENDUmVuZGVyUGFzc0RyYXdRdWFkX2gKIAorI2luY2x1ZGUg
ImNjL0NDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9y
UXVhZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CkBAIC0zOCwxMiArMzksMTIgQEAg
Y2xhc3MgQ0NSZW5kZXJQYXNzOwogY2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgOiBwdWJsaWMg
V2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVu
ZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVk
UXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IENDUmVuZGVyUGFzcyosIGJvb2wgaXNS
ZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgV2Vi
S2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBj
b25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSk7CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NSZW5k
ZXJQYXNzKiwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0
IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIENDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29u
dGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOwogCiAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBy
ZW5kZXJQYXNzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQYXNzOyB9CiAgICAgaW50IHJlbmRl
clBhc3NJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0lkOyB9CiAgICAgYm9vbCBpc1Jl
cGxpY2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwbGljYTsgfQotICAgIHVuc2lnbmVkIG1hc2tU
ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX21hc2tUZXh0dXJlSWQ7IH0KKyAgICBDQ1Jlc291
cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBt
X21hc2tSZXNvdXJjZUlkOyB9CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2lu
Y2VMYXN0RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZy
YW1lOyB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBhbmQgd2Ugc2hv
dWxkIGRyYXcgdGhlIFJlbmRlclBhc3Mgd2l0aCB0aGUgcXVhZFRyYW5zZm9ybS4KQEAgLTU0LDcg
KzU1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFk
KiBtYXRlcmlhbENhc3QoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCopOwogcHJpdmF0
ZToKLSAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JT
aGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgYm9v
bCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25z
dCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJl
SWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKKyAgICBD
Q1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgQ0NSZW5kZXJQYXNzKiwgYm9vbCBpc1JlcGxp
Y2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBXZWJLaXQ6
OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3Bl
cmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJ
ZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0
RnJhbWUpOwogCiAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBtX3JlbmRlclBhc3M7CiAgICAgaW50
IG1fcmVuZGVyUGFzc0lkOwpAQCAtNjIsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9kcmF3VHJhbnNmb3JtOwogICAgIFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CiAgICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRp
b25zIG1fYmFja2dyb3VuZEZpbHRlcnM7Ci0gICAgdW5zaWduZWQgbV9tYXNrVGV4dHVyZUlkOwor
ICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX21hc2tSZXNvdXJjZUlkOwogICAg
IEludFJlY3QgbV9jb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IDdiZTM2OGNjZTg1ZmRlNzUwNDUxNWIwYmNiMDM5
NGY4Mjk3MDg2NDEuLjIzMjBhZmZlYTM0N2Y4N2NiNWRhOWU1NGU5NzMzMTRhNDUzNGVlMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApAQCAtMjMxLDExICsyMzEsMTEgQEAgdm9p
ZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIEND
U2hhcmVkUXVhZFN0YXRlKiBzaGEKICAgICAgICAgICAgIG1hc2tMYXllciA9IDA7CiAgICAgfQog
Ci0gICAgaW50IG1hc2tUZXh0dXJlSWQgPSBtYXNrTGF5ZXIgPyBtYXNrTGF5ZXItPmNvbnRlbnRz
VGV4dHVyZUlkKCkgOiAwOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNr
UmVzb3VyY2VJZCA9IG1hc2tMYXllciA/IG1hc2tMYXllci0+Y29udGVudHNSZXNvdXJjZUlkKCkg
OiAwOwogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm0gPSBmb3JSZXBs
aWNhID8gbV9yZXBsaWNhRHJhd1RyYW5zZm9ybSA6IG1fZHJhd1RyYW5zZm9ybTsKICAgICBJbnRS
ZWN0IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lID0gY29udGVudHNDaGFuZ2VkKCkgPyBt
X2NvbnRlbnRSZWN0IDogSW50UmVjdCgpOwogCi0gICAgcXVhZExpc3QuYXBwZW5kU3VyZmFjZShD
Q1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3Qo
KSwgcmVuZGVyUGFzcywgZm9yUmVwbGljYSwgZHJhd1RyYW5zZm9ybSwgZmlsdGVycygpLCBiYWNr
Z3JvdW5kRmlsdGVycygpLCBtYXNrVGV4dHVyZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RG
cmFtZSkpOworICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZhY2UoQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIHJlbmRlclBhc3MsIGZvclJl
cGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZpbHRlcnMoKSwgYmFja2dyb3VuZEZpbHRlcnMoKSwgbWFz
a1Jlc291cmNlSWQsIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyZXIuaAppbmRleCBkZWQwZWZkYzM4ZWY5MzFhZmIzMDE3ZTI3MDJmNWM3ZjJkMTA0
ZjkwLi42NWVmMmYxMGJiMmY5ZDcwMmE2ZWU2ZDg1MDQ2ZjI0ZDNmZTI5NzQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJlci5oCkBAIC0zNiw5ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENDU2NvcGVkVGV4dHVyZTsKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJl
Q29waWVyOwotY2xhc3MgVGV4dHVyZU1hbmFnZXI7CiBjbGFzcyBUZXh0dXJlVXBsb2FkZXI7CiAK
IGVudW0gVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHsgVGhyb3R0bGVkVXBsb2FkZXIsIFVudGhyb3R0
bGVkVXBsb2FkZXIgfTsKQEAgLTU3LDYgKzU1LDExIEBAIHB1YmxpYzoKIGNsYXNzIENDUmVuZGVy
ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyZXIpOwogcHVibGljOgorICAg
IGVudW0gUmVzb3VyY2VQb29sIHsKKyAgICAgIEltcGxQb29sID0gMSwKKyAgICAgIENvbnRlbnRQ
b29sCisgICAgfTsKKwogICAgIHZpcnR1YWwgfkNDUmVuZGVyZXIoKSB7IH0KIAogICAgIHZpcnR1
YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3Qg
PSAwOwpAQCAtOTIsOCArOTUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFRleHR1cmVDb3Bp
ZXIqIHRleHR1cmVDb3BpZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBUZXh0dXJlVXBsb2Fk
ZXIqIHRleHR1cmVVcGxvYWRlcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFRleHR1cmVBbGxv
Y2F0b3IqIGltcGxUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgVGV4
dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYpID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZXNvdXJjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRiNzRlNTFm
MzJhZDBmZTg0ZTEyMzVjYTlkYmEyOGZlOTk4MTAxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRl
ci5jcHAKQEAgLTAsMCArMSwyNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKKworI2luY2x1ZGUgIkV4
dGVuc2lvbnMzRENocm9taXVtLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBGb3IgdGhlIEdMQygpIG1hY3JvCisjaW5jbHVkZSAi
TGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKKyNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5o
IgorI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgorCit1c2luZyBXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBHQzNEZW51bSB0ZXh0dXJlVG9TdG9yYWdlRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQp
Cit7CisgICAgR0MzRGVudW0gc3RvcmFnZUZvcm1hdCA9IEV4dGVuc2lvbnMzRDo6UkdCQThfT0VT
OworICAgIHN3aXRjaCAodGV4dHVyZUZvcm1hdCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkE6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpCR1JBX0VY
VDoKKyAgICAgICAgc3RvcmFnZUZvcm1hdCA9IEV4dGVuc2lvbnMzRENocm9taXVtOjpCR1JBOF9F
WFQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RvcmFnZUZvcm1h
dDsKK30KKworc3RhdGljIGJvb2wgaXNUZXh0dXJlRm9ybWF0U3VwcG9ydGVkRm9yU3RvcmFnZShH
QzNEZW51bSBmb3JtYXQpCit7CisgICAgcmV0dXJuIChmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEgfHwgZm9ybWF0ID09IEV4dGVuc2lvbnMzRDo6QkdSQV9FWFQpOworfQorCitQYXNz
T3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoQ0NH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRl
cj4gcmVzb3VyY2VQcm92aWRlcihhZG9wdFB0cihuZXcgQ0NSZXNvdXJjZVByb3ZpZGVyKGNvbnRl
eHQpKSk7CisgICAgaWYgKCFyZXNvdXJjZVByb3ZpZGVyLT5pbml0aWFsaXplKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiByZXNvdXJjZVByb3ZpZGVyLnJlbGVhc2UoKTsK
K30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjp+Q0NSZXNvdXJjZVByb3ZpZGVyKCkKK3sKK30KKwor
V2ViR3JhcGhpY3NDb250ZXh0M0QqIENDUmVzb3VyY2VQcm92aWRlcjo6Z3JhcGhpY3NDb250ZXh0
M0QoKQoreworICAgIEFTU0VSVChXVEY6OmN1cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVhZElkZW50
aWZpZXIpOworICAgIHJldHVybiBtX2NvbnRleHQtPmNvbnRleHQzRCgpOworfQorCitib29sIEND
UmVzb3VyY2VQcm92aWRlcjo6aW5Vc2VCeUNvbnN1bWVyKFJlc291cmNlSWQgaWQpCit7CisgICAg
QVNTRVJUKFdURjo6Y3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkSWRlbnRpZmllcik7CisgICAg
UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNT
RVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpKTsKKyAgICByZXR1cm4gISFpdC0+c2Vjb25kLnJl
bmRlckZyb21Db3VudDsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDUmVz
b3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2UoaW50IHBvb2wsIGNvbnN0IEludFNpemUmIHNp
emUsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGludCBoaW50KQoreworICAgIEFTU0VS
VChXVEY6OmN1cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVhZElkZW50aWZpZXIpOworICAgIHVuc2ln
bmVkIHRleHR1cmVJZCA9IDA7CisgICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9
IG1fY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0M2QpIHsKKyAgICAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgR0xDKGNvbnRleHQzZCwgdGV4dHVyZUlkID0g
Y29udGV4dDNkLT5jcmVhdGVUZXh0dXJlKCkpOworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQz
ZC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkp
OworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRl
eHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVB
UikpOworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9T
LCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOworICAgIEdMQyhjb250ZXh0M2Qs
IGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xB
TVBfVE9fRURHRSkpOworCisgICAgaWYgKG1fdXNlVGV4dHVyZVVzYWdlSGludCAmJiBoaW50ID09
IEZyYW1lYnVmZmVyQXR0YWNobWVudCkKKyAgICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNk
LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBFeHRlbnNpb25z
M0RDaHJvbWl1bTo6R0xfVEVYVFVSRV9VU0FHRV9BTkdMRSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06
OkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5HTEUpKTsKKyAgICBpZiAobV91c2VUZXh0dXJl
U3RvcmFnZUV4dCAmJiBpc1RleHR1cmVGb3JtYXRTdXBwb3J0ZWRGb3JTdG9yYWdlKGZvcm1hdCkp
IHsKKyAgICAgICAgR0MzRGVudW0gc3RvcmFnZUZvcm1hdCA9IHRleHR1cmVUb1N0b3JhZ2VGb3Jt
YXQoZm9ybWF0KTsKKyAgICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT50ZXhTdG9yYWdl
MkRFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDEsIHN0b3JhZ2VGb3JtYXQsIHNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgIH0gZWxzZQorICAgICAgICBHTEMoY29u
dGV4dDNkLCBjb250ZXh0M2QtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIDAsIGZvcm1hdCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCAwLCBmb3JtYXQsIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAwKSk7CisgICAgUmVzb3VyY2VJZCBpZCA9
IG1fbmV4dElkKys7CisgICAgUmVzb3VyY2UgcmVzb3VyY2UgPSB7dGV4dHVyZUlkLCBwb29sLCAw
LCBmYWxzZSwgZmFsc2UsIHNpemUsIGZvcm1hdH07CisgICAgbV9yZXNvdXJjZXMuYWRkKGlkLCBy
ZXNvdXJjZSk7CisgICAgcmV0dXJuIGlkOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291
cmNlSWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1
cmUodW5zaWduZWQgdGV4dHVyZUlkKQoreworICAgIEFTU0VSVChXVEY6OmN1cnJlbnRUaHJlYWQo
KSA9PSBtX3RocmVhZElkZW50aWZpZXIpOworICAgIFJlc291cmNlSWQgaWQgPSBtX25leHRJZCsr
OworICAgIFJlc291cmNlIHJlc291cmNlID0ge3RleHR1cmVJZCwgMCwgMCwgZmFsc2UsIHRydWUs
IEludFNpemUoKSwgMH07CisgICAgbV9yZXNvdXJjZXMuYWRkKGlkLCByZXNvdXJjZSk7CisgICAg
cmV0dXJuIGlkOworfQorCit2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6ZGVsZXRlUmVzb3VyY2Uo
UmVzb3VyY2VJZCBpZCkKK3sKKyAgICBBU1NFUlQoV1RGOjpjdXJyZW50VGhyZWFkKCkgPT0gbV90
aHJlYWRJZGVudGlmaWVyKTsKKyAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0g
bV9jb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9y
ZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYm
ICFpdC0+c2Vjb25kLnJlbmRlclRvICYmICFpdC0+c2Vjb25kLnJlbmRlckZyb21Db3VudCk7Cisg
ICAgaWYgKCFpdC0+c2Vjb25kLmV4dGVybmFsKQorICAgICAgICBHTEMoY29udGV4dDNkLCBjb250
ZXh0M2QtPmRlbGV0ZVRleHR1cmUoaXQtPnNlY29uZC5nbElkKSk7CisgICAgbV9yZXNvdXJjZXMu
cmVtb3ZlKGl0KTsKK30KKwordm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmRlbGV0ZU93bmVkUmVz
b3VyY2VzKGludCBwb29sKQoreworICAgIEFTU0VSVChXVEY6OmN1cnJlbnRUaHJlYWQoKSA9PSBt
X3RocmVhZElkZW50aWZpZXIpOworICAgIFZlY3RvcjxSZXNvdXJjZUlkPiB0b0RlbGV0ZTsKKyAg
ICBmb3IgKFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IG1fcmVzb3VyY2VzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmIChpdC0+c2Vjb25kLnBv
b2wgPT0gcG9vbCAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCkKKyAgICAgICAgICAgIHRvRGVsZXRl
LmFwcGVuZChpdC0+Zmlyc3QpOworICAgIH0KKyAgICBmb3IgKFZlY3RvcjxSZXNvdXJjZUlkPjo6
aXRlcmF0b3IgaXQgPSB0b0RlbGV0ZS5iZWdpbigpOyBpdCAhPSB0b0RlbGV0ZS5lbmQoKTsgKytp
dCkKKyAgICAgICAgZGVsZXRlUmVzb3VyY2UoKml0KTsKK30KKwordm9pZCBDQ1Jlc291cmNlUHJv
dmlkZXI6OnVwbG9hZChSZXNvdXJjZUlkIGlkLCBjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBBU1NFUlQoV1RGOjpjdXJyZW50VGhyZWFkKCkgPT0gbV90
aHJlYWRJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQobV90ZXhTdWJJbWFnZS5nZXQoKSk7CisgICAg
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7
CisgICAgaWYgKCFjb250ZXh0M2QpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
IHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOworICAg
IEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5yZW5kZXJUbyAm
JiAhaXQtPnNlY29uZC5yZW5kZXJGcm9tQ291bnQgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOwor
CisgICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgaXQtPnNlY29uZC5nbElkKTsKKyAgICBtX3RleFN1YkltYWdlLT51cGxvYWQoaW1hZ2UsIGlt
YWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGl0LT5zZWNvbmQuZm9ybWF0LCBjb250ZXh0
M2QpOworfQorCit1bnNpZ25lZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmJlZ2luUmVuZGVyVG8oUmVz
b3VyY2VJZCBpZCkKK3sKKyAgICBBU1NFUlQoV1RGOjpjdXJyZW50VGhyZWFkKCkgPT0gbV90aHJl
YWRJZGVudGlmaWVyKTsKKyAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNl
cy5maW5kKGlkKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5z
ZWNvbmQucmVuZGVyVG8gJiYgIWl0LT5zZWNvbmQucmVuZGVyRnJvbUNvdW50ICYmICFpdC0+c2Vj
b25kLmV4dGVybmFsKTsKKyAgICBpdC0+c2Vjb25kLnJlbmRlclRvID0gdHJ1ZTsKKyAgICByZXR1
cm4gaXQtPnNlY29uZC5nbElkOworfQorCit2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6ZW5kUmVu
ZGVyVG8oUmVzb3VyY2VJZCBpZCkKK3sKKyAgICBBU1NFUlQoV1RGOjpjdXJyZW50VGhyZWFkKCkg
PT0gbV90aHJlYWRJZGVudGlmaWVyKTsKKyAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBt
X3Jlc291cmNlcy5maW5kKGlkKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkg
JiYgaXQtPnNlY29uZC5yZW5kZXJUbyAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCk7CisgICAgaXQt
PnNlY29uZC5yZW5kZXJUbyA9IGZhbHNlOworfQorCit1bnNpZ25lZCBDQ1Jlc291cmNlUHJvdmlk
ZXI6OmJlZ2luUmVuZGVyRnJvbShSZXNvdXJjZUlkIGlkKQoreworICAgIEFTU0VSVChXVEY6OmN1
cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVhZElkZW50aWZpZXIpOworICAgIFJlc291cmNlTWFwOjpp
dGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmZpbmQoaWQpOworICAgIEFTU0VSVChpdCAhPSBtX3Jl
c291cmNlcy5lbmQoKSAmJiAhaXQtPnNlY29uZC5yZW5kZXJUbyk7CisgICAgKysoaXQtPnNlY29u
ZC5yZW5kZXJGcm9tQ291bnQpOworICAgIHJldHVybiBpdC0+c2Vjb25kLmdsSWQ7Cit9CisKK3Zv
aWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjplbmRSZW5kZXJGcm9tKFJlc291cmNlSWQgaWQpCit7Cisg
ICAgQVNTRVJUKFdURjo6Y3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkSWRlbnRpZmllcik7Cisg
ICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAg
QVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmIGl0LT5zZWNvbmQucmVuZGVyRnJvbUNv
dW50ID4gMCk7CisgICAgLS0oaXQtPnNlY29uZC5yZW5kZXJGcm9tQ291bnQpOworfQorCitDQ1Jl
c291cmNlUHJvdmlkZXI6OkNDUmVzb3VyY2VQcm92aWRlcihDQ0dyYXBoaWNzQ29udGV4dCogY29u
dGV4dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9uZXh0SWQoMSkKKyAgICAs
IG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQoZmFsc2UpCisgICAgLCBtX3VzZVRleHR1cmVVc2FnZUhp
bnQoZmFsc2UpCisgICAgLCBtX21heFRleHR1cmVTaXplKDApCisjaWZuZGVmIE5ERUJVRworICAg
ICwgbV90aHJlYWRJZGVudGlmaWVyKFdURjo6Y3VycmVudFRocmVhZCgpKQorI2VuZGlmCit7Cit9
CisKK2Jvb2wgQ0NSZXNvdXJjZVByb3ZpZGVyOjppbml0aWFsaXplKCkKK3sKKyAgICBBU1NFUlQo
V1RGOjpjdXJyZW50VGhyZWFkKCkgPT0gbV90aHJlYWRJZGVudGlmaWVyKTsKKyAgICBXZWJHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBp
ZiAoIWNvbnRleHQzZCB8fCAhY29udGV4dDNkLT5tYWtlQ29udGV4dEN1cnJlbnQoKSkgeworICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRp
bmcuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgU3RyaW5nIGV4dGVuc2lvbnNT
dHJpbmcgPSBjb250ZXh0M2QtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHQzRDo6RVhURU5TSU9O
Uyk7CisgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9uczsKKyAgICBleHRlbnNpb25zU3RyaW5n
LnNwbGl0KCcgJywgZXh0ZW5zaW9ucyk7CisgICAgYm9vbCB1c2VNYXBTdWIgPSBmYWxzZTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgaWYgKGV4dGVuc2lvbnNbaV0gPT0gIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKQorICAgICAg
ICAgICAgbV91c2VUZXh0dXJlU3RvcmFnZUV4dCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKGV4
dGVuc2lvbnNbaV0gPT0gIkdMX0FOR0xFX3RleHR1cmVfdXNhZ2UiKQorICAgICAgICAgICAgbV91
c2VUZXh0dXJlVXNhZ2VIaW50ID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uc1tp
XSA9PSAiR0xfQ0hST01JVU1fbWFwX3N1YiIpCisgICAgICAgICAgICB1c2VNYXBTdWIgPSB0cnVl
OworICAgIH0KKworICAgIG1fdGV4U3ViSW1hZ2UgPSBhZG9wdFB0cihuZXcgTGF5ZXJUZXh0dXJl
U3ViSW1hZ2UodXNlTWFwU3ViKSk7CisgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT5nZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1RFWFRVUkVfU0laRSwgJm1fbWF4VGV4dHVy
ZVNpemUpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNl
UHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2JhY2Y2YmM1Njk4MWZjY2NkMDU4NTMxMGQ3MjA0ZTU0
NjEwNjQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgKQEAgLTAsMCArMSwxMjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisKKyNpZm5kZWYgQ0NSZXNvdXJjZVByb3ZpZGVyX2gKKyNkZWZpbmUgQ0NSZXNvdXJjZVBy
b3ZpZGVyX2gKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiSW50
U2l6ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKK2NsYXNzIExh
eWVyVGV4dHVyZVN1YkltYWdlOworCisvLyBUaHJlYWQtc2FmZXR5IG5vdGVzOiB0aGlzIGNsYXNz
IGlzIG5vdCB0aHJlYWQtc2FmZSBhbmQgY2FuIG9ubHkgYmUgY2FsbGVkCisvLyBmcm9tIHRoZSB0
aHJlYWQgaXQgd2FzIGNyZWF0ZWQgb24gKGluIHByYWN0aWNlLCB0aGUgY29tcG9zaXRvciB0aHJl
YWQpLgorY2xhc3MgQ0NSZXNvdXJjZVByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDQ1Jlc291cmNlUHJvdmlkZXIpOworcHVibGljOgorICAgIHR5cGVkZWYgdW5zaWduZWQgUmVz
b3VyY2VJZDsKKyAgICBlbnVtIFRleHR1cmVVc2FnZUhpbnQgeyBBbnksIEZyYW1lYnVmZmVyQXR0
YWNobWVudCB9OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBj
cmVhdGUoQ0NHcmFwaGljc0NvbnRleHQqKTsKKworICAgIHZpcnR1YWwgfkNDUmVzb3VyY2VQcm92
aWRlcigpOworCisgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250
ZXh0M0QoKTsKKyAgICBpbnQgbWF4VGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFRl
eHR1cmVTaXplOyB9CisgICAgdW5zaWduZWQgbnVtUmVzb3VyY2VzKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvdXJjZXMuc2l6ZSgpOyB9CisKKyAgICAvLyBDaGVja3Mgd2hldGhlciBhIHJlc291cmNl
IGlzIGluIHVzZSBieSBhIGNvbnN1bWVyLgorICAgIGJvb2wgaW5Vc2VCeUNvbnN1bWVyKFJlc291
cmNlSWQpOworCisKKyAgICAvLyBQcm9kdWNlciBpbnRlcmZhY2UuCisKKyAgICAvLyBDcmVhdGVz
IGEgcmVzb3VyY2Ugb2YgdGhlIGdpdmVuIHNpemUvZm9ybWF0LCBpbnRvIHRoZSBnaXZlbiBwb29s
LgorICAgIFJlc291cmNlSWQgY3JlYXRlUmVzb3VyY2UoaW50IHBvb2wsIGNvbnN0IEludFNpemUm
LCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVVc2FnZUhpbnQpOworCisgICAgLy8gV3JhcHMgYW4g
ZXh0ZXJuYWwgdGV4dHVyZSBpbnRvIGEgcmVzb3VyY2UuCisgICAgUmVzb3VyY2VJZCBjcmVhdGVS
ZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUodW5zaWduZWQgdGV4dHVyZUlkKTsKKyAgICB2b2lk
IGRlbGV0ZVJlc291cmNlKFJlc291cmNlSWQpOworCisgICAgLy8gRGVsZXRlcyBhbGwgcmVzb3Vy
Y2VzIG93bmVkIGJ5IGEgZ2l2ZW4gcG9vbC4KKyAgICB2b2lkIGRlbGV0ZU93bmVkUmVzb3VyY2Vz
KGludCBwb29sKTsKKworICAgIC8vIFVwbG9hZCBkYXRhIGZyb20gaW1hZ2UsIGNvcHlpbmcgc291
cmNlUmVjdCAoaW4gaW1hZ2UpIGludG8gZGVzdFJlY3QgKGluIHRoZSByZXNvdXJjZSkuCisgICAg
dm9pZCB1cGxvYWQoUmVzb3VyY2VJZCwgY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJl
Y3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworCisgICAgLy8gR2V0cyBhIEdMIHRleHR1cmUgaWQgcmVwcmVzZW50aW5nIHRo
ZSByZXNvdXJjZSwgdGhhdCBjYW4gYmUgcmVuZGVyZWQgaW50by4KKyAgICB1bnNpZ25lZCBiZWdp
blJlbmRlclRvKFJlc291cmNlSWQpOworICAgIHZvaWQgZW5kUmVuZGVyVG8oUmVzb3VyY2VJZCk7
CisKKworICAgIC8vIENvbnN1bWVyIGludGVyZmFjZS4KKworICAgIC8vIEdldHMgYSBHTCB0ZXh0
dXJlIGlkIHJlcHJlc2VudGluZyB0aGUgcmVzb3VyY2UsIHRoYXQgY2FuIGJlIHJlbmRlcmVkIHdp
dGguCisgICAgdW5zaWduZWQgYmVnaW5SZW5kZXJGcm9tKFJlc291cmNlSWQpOworICAgIHZvaWQg
ZW5kUmVuZGVyRnJvbShSZXNvdXJjZUlkKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgUmVzb3Vy
Y2UgeworICAgICAgICB1bnNpZ25lZCBnbElkOworICAgICAgICBpbnQgcG9vbDsKKyAgICAgICAg
aW50IHJlbmRlckZyb21Db3VudDsKKyAgICAgICAgYm9vbCByZW5kZXJUbzsKKyAgICAgICAgYm9v
bCBleHRlcm5hbDsKKyAgICAgICAgSW50U2l6ZSBzaXplOworICAgICAgICBHQzNEZW51bSBmb3Jt
YXQ7CisgICAgfTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVzb3VyY2VJZCwgUmVzb3VyY2U+IFJl
c291cmNlTWFwOworCisgICAgZXhwbGljaXQgQ0NSZXNvdXJjZVByb3ZpZGVyKENDR3JhcGhpY3ND
b250ZXh0Kik7CisgICAgYm9vbCBpbml0aWFsaXplKCk7CisKKyAgICBDQ0dyYXBoaWNzQ29udGV4
dCogbV9jb250ZXh0OworICAgIFJlc291cmNlSWQgbV9uZXh0SWQ7CisgICAgUmVzb3VyY2VNYXAg
bV9yZXNvdXJjZXM7CisKKyAgICBib29sIG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQ7CisgICAgYm9v
bCBtX3VzZVRleHR1cmVVc2FnZUhpbnQ7CisgICAgT3duUHRyPExheWVyVGV4dHVyZVN1YkltYWdl
PiBtX3RleFN1YkltYWdlOworICAgIGludCBtX21heFRleHR1cmVTaXplOworI2lmbmRlZiBOREVC
VUcKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSWRlbnRpZmllcjsKKyNlbmRpZgorfTsK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3BwCmluZGV4IDgwZjgz
MTU0MTFiZTU1MWVhNmRjYTQwMzZlY2I5YmViN2Q2NTY3ZjAuLjEyODA2YTVlMGE0NTYxNzIyNWEz
ZGMxYzY1YzQ4NmE4M2UxZGEyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcApA
QCAtMzEsMTAgKzMxLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NTY29wZWRUZXh0
dXJlOjpDQ1Njb3BlZFRleHR1cmUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotICAgIDog
bV9hbGxvY2F0b3IoYWxsb2NhdG9yKQorQ0NTY29wZWRUZXh0dXJlOjpDQ1Njb3BlZFRleHR1cmUo
Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQorICAgIDogbV9yZXNvdXJjZVBy
b3ZpZGVyKHJlc291cmNlUHJvdmlkZXIpCiB7Ci0gICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKKyAg
ICBBU1NFUlQobV9yZXNvdXJjZVByb3ZpZGVyKTsKIH0KIAogQ0NTY29wZWRUZXh0dXJlOjp+Q0NT
Y29wZWRUZXh0dXJlKCkKQEAgLTQyLDEzICs0MiwxMyBAQCBDQ1Njb3BlZFRleHR1cmU6On5DQ1Nj
b3BlZFRleHR1cmUoKQogICAgIGZyZWUoKTsKIH0KIAotYm9vbCBDQ1Njb3BlZFRleHR1cmU6OmFs
bG9jYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKK2Jvb2wgQ0NTY29w
ZWRUZXh0dXJlOjphbGxvY2F0ZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVu
dW0gZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUhpbnQgaGludCkKIHsK
ICAgICBBU1NFUlQoIWlkKCkpOwogICAgIEFTU0VSVCghc2l6ZS5pc0VtcHR5KCkpOwogCiAgICAg
c2V0RGltZW5zaW9ucyhzaXplLCBmb3JtYXQpOwotICAgIHNldElkKG1fYWxsb2NhdG9yLT5jcmVh
dGVUZXh0dXJlKHNpemUsIGZvcm1hdCkpOworICAgIHNldElkKG1fcmVzb3VyY2VQcm92aWRlci0+
Y3JlYXRlUmVzb3VyY2UocG9vbCwgc2l6ZSwgZm9ybWF0LCBoaW50KSk7CiAKICNpZiAhQVNTRVJU
X0RJU0FCTEVECiAgICAgbV9hbGxvY2F0ZVRocmVhZElkZW50aWZpZXIgPSBXVEY6OmN1cnJlbnRU
aHJlYWQoKTsKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBDQ1Njb3BlZFRleHR1cmU6OmZyZWUoKQog
ewogICAgIGlmIChpZCgpKSB7CiAgICAgICAgIEFTU0VSVChtX2FsbG9jYXRlVGhyZWFkSWRlbnRp
ZmllciA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7Ci0gICAgICAgIG1fYWxsb2NhdG9yLT5kZWxl
dGVUZXh0dXJlKGlkKCksIHNpemUoKSwgZm9ybWF0KCkpOworICAgICAgICBtX3Jlc291cmNlUHJv
dmlkZXItPmRlbGV0ZVJlc291cmNlKGlkKCkpOwogICAgIH0KICAgICBzZXRJZCgwKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NvcGVkVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY29wZWRUZXh0dXJlLmgKaW5kZXggNWEzYzRlOTY0ZGQyYzZjZWU1YTc0MWRmMzFm
M2NmZTZiZDFlMjRjMC4uMWRhMDZlNTExZWZkYWY0YzEwZTZiMGRiMzM2ZmM0MjhiMWVjNDkyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY29wZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmgKQEAgLTM0LDEyICszNCwxMCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7Ci0KIGNsYXNzIENDU2Nv
cGVkVGV4dHVyZSA6IHByb3RlY3RlZCBDQ1RleHR1cmUgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKENDU2NvcGVkVGV4dHVyZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NT
Y29wZWRUZXh0dXJlPiBjcmVhdGUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKSB7IHJldHVy
biBhZG9wdFB0cihuZXcgQ0NTY29wZWRUZXh0dXJlKGFsbG9jYXRvcikpOyB9CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBjcmVhdGUoQ0NSZXNvdXJjZVByb3ZpZGVyKiBy
ZXNvdXJjZVByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NTY29wZWRUZXh0dXJlKHJl
c291cmNlUHJvdmlkZXIpKTsgfQogICAgIHZpcnR1YWwgfkNDU2NvcGVkVGV4dHVyZSgpOwogCiAg
ICAgdXNpbmcgQ0NUZXh0dXJlOjppZDsKQEAgLTQ3LDE1ICs0NSwxOSBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgQ0NUZXh0dXJlOjpmb3JtYXQ7CiAgICAgdXNpbmcgQ0NUZXh0dXJlOjpieXRlczsKIAot
ICAgIGJvb2wgYWxsb2NhdGUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CisgICAg
Ym9vbCBhbGxvY2F0ZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCwg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VIaW50KTsKICAgICB2b2lkIGZyZWUoKTsK
ICAgICB2b2lkIGxlYWsoKTsKKyAgICB1bnNpZ25lZCBiZWdpblJlbmRlclRvKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvdXJjZVByb3ZpZGVyLT5iZWdpblJlbmRlclRvKGlkKCkpOyB9CisgICAgdm9p
ZCBlbmRSZW5kZXJUbygpIGNvbnN0IHsgbV9yZXNvdXJjZVByb3ZpZGVyLT5lbmRSZW5kZXJUbyhp
ZCgpKTsgfQorICAgIHVuc2lnbmVkIGJlZ2luUmVuZGVyRnJvbSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VQcm92aWRlci0+YmVnaW5SZW5kZXJGcm9tKGlkKCkpOyB9CisgICAgdm9pZCBlbmRS
ZW5kZXJGcm9tKCkgY29uc3QgeyBtX3Jlc291cmNlUHJvdmlkZXItPmVuZFJlbmRlckZyb20oaWQo
KSk7IH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IENDU2NvcGVkVGV4dHVyZShUZXh0dXJl
QWxsb2NhdG9yKik7CisgICAgZXhwbGljaXQgQ0NTY29wZWRUZXh0dXJlKENDUmVzb3VyY2VQcm92
aWRlciopOwogCiBwcml2YXRlOgotICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwor
ICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgIFRocmVhZElkZW50aWZpZXIgbV9hbGxvY2F0ZVRocmVhZElkZW50aWZp
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKaW5kZXggZjM4ZmJk
YTAxZjY2ZTM4MDYxZDEwNmZiYzBiYzFjMDQzNjI4MDMxOS4uNjUwZTc1MWY4Yzg5NGVmZjU2MWM0
ZWY3Y2MxN2RiMDFjZTk0Y2JkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmNwcApAQCAtNDUsOSArNDUsOSBAQCBDQ1Njcm9sbGJhckxheWVySW1wbDo6Q0NTY3JvbGxi
YXJMYXllckltcGwoaW50IGlkKQogICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgLCBtX3Njcm9s
bExheWVyKDApCiAgICAgLCBtX3Njcm9sbGJhcih0aGlzKQotICAgICwgbV9iYWNrVHJhY2tUZXh0
dXJlSWQoMCkKLSAgICAsIG1fZm9yZVRyYWNrVGV4dHVyZUlkKDApCi0gICAgLCBtX3RodW1iVGV4
dHVyZUlkKDApCisgICAgLCBtX2JhY2tUcmFja1Jlc291cmNlSWQoMCkKKyAgICAsIG1fZm9yZVRy
YWNrUmVzb3VyY2VJZCgwKQorICAgICwgbV90aHVtYlJlc291cmNlSWQoMCkKIHsKIH0KIApAQCAt
NzYsMjMgKzc2LDIzIEBAIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKEND
UXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhCiAgICAgSW50UmVjdCB0aHVt
YlJlY3QsIGJhY2tUcmFja1JlY3QsIGZvcmVUcmFja1JlY3Q7CiAgICAgdGhlbWUtPnNwbGl0VHJh
Y2soJm1fc2Nyb2xsYmFyLCB0aGVtZS0+dHJhY2tSZWN0KCZtX3Njcm9sbGJhciksIGJhY2tUcmFj
a1JlY3QsIHRodW1iUmVjdCwgZm9yZVRyYWNrUmVjdCk7CiAKLSAgICBpZiAobV90aHVtYlRleHR1
cmVJZCAmJiB0aGVtZS0+aGFzVGh1bWIoJm1fc2Nyb2xsYmFyKSAmJiAhdGh1bWJSZWN0LmlzRW1w
dHkoKSkgewotICAgICAgICBPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHF1YWQgPSBDQ1RleHR1
cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGh1bWJSZWN0LCBtX3RodW1iVGV4
dHVyZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKKyAgICBpZiAobV90
aHVtYlJlc291cmNlSWQgJiYgdGhlbWUtPmhhc1RodW1iKCZtX3Njcm9sbGJhcikgJiYgIXRodW1i
UmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBxdWFk
ID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRodW1iUmVjdCwg
bV90aHVtYlJlc291cmNlSWQsIHByZW11bHRpcGxlZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOwog
ICAgICAgICBxdWFkLT5zZXROZWVkc0JsZW5kaW5nKCk7CiAgICAgICAgIHF1YWRMaXN0LmFwcGVu
ZChxdWFkLnJlbGVhc2UoKSk7CiAgICAgfQogCi0gICAgaWYgKCFtX2JhY2tUcmFja1RleHR1cmVJ
ZCkKKyAgICBpZiAoIW1fYmFja1RyYWNrUmVzb3VyY2VJZCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gV2Ugb25seSBwYWludCB0aGUgdHJhY2sgaW4gdHdvIHBhcnRzIGlmIHdlIHdlcmUgZ2l2
ZW4gYSB0ZXh0dXJlIGZvciB0aGUgZm9yd2FyZCB0cmFjayBwYXJ0LgotICAgIGlmIChtX2ZvcmVU
cmFja1RleHR1cmVJZCAmJiAhZm9yZVRyYWNrUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHF1YWRM
aXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgZm9y
ZVRyYWNrUmVjdCwgbV9mb3JlVHJhY2tUZXh0dXJlSWQsIHByZW11bHRpcGxlZEFscGhhLCB0b1VW
UmVjdChmb3JlVHJhY2tSZWN0LCBib3VuZHNSZWN0KSwgZmxpcHBlZCkpOworICAgIGlmIChtX2Zv
cmVUcmFja1Jlc291cmNlSWQgJiYgIWZvcmVUcmFja1JlY3QuaXNFbXB0eSgpKQorICAgICAgICBx
dWFkTGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUs
IGZvcmVUcmFja1JlY3QsIG1fZm9yZVRyYWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEs
IHRvVVZSZWN0KGZvcmVUcmFja1JlY3QsIGJvdW5kc1JlY3QpLCBmbGlwcGVkKSk7CiAKICAgICAv
LyBPcmRlciBtYXR0ZXJzIGhlcmU6IHNpbmNlIHRoZSBiYWNrIHRyYWNrIHRleHR1cmUgaXMgYmVp
bmcgZHJhd24gdG8gdGhlIGVudGlyZSBjb250ZW50cyByZWN0LCB3ZSBtdXN0IGFwcGVuZCBpdCBh
ZnRlciB0aGUgdGh1bWIgYW5kCiAgICAgLy8gZm9yZSB0cmFjayBxdWFkcy4gVGhlIGJhY2sgdHJh
Y2sgdGV4dHVyZSBjb250YWlucyAoYW5kIGRpc3BsYXlzKSB0aGUgYnV0dG9ucy4KICAgICBpZiAo
IWJvdW5kc1JlY3QuaXNFbXB0eSgpKQotICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUZXh0dXJl
RHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGJvdW5kc1JlY3QsIG1fYmFja1RyYWNr
VGV4dHVyZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7CisgICAgICAg
IHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0
ZSwgYm91bmRzUmVjdCwgbV9iYWNrVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwg
dXZSZWN0LCBmbGlwcGVkKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmgKaW5kZXggZWNlMmI5NTcxNDE0YmY0MjU2ZmRiNGVlNGZkNWVhMWM3YzA0NmYzMS4uMzJh
ODM1ZDkwMmFjNWMzODFjYzAyM2U0MmRmMjgwN2ZlODQwNzA1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njcm9sbGJhckxheWVySW1wbC5oCkBAIC01Myw5ICs1Myw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfQogCi0g
ICAgdm9pZCBzZXRCYWNrVHJhY2tUZXh0dXJlSWQodW5zaWduZWQgaWQpIHsgbV9iYWNrVHJhY2tU
ZXh0dXJlSWQgPSBpZDsgfQotICAgIHZvaWQgc2V0Rm9yZVRyYWNrVGV4dHVyZUlkKHVuc2lnbmVk
IGlkKSB7IG1fZm9yZVRyYWNrVGV4dHVyZUlkID0gaWQ7IH0KLSAgICB2b2lkIHNldFRodW1iVGV4
dHVyZUlkKHVuc2lnbmVkIGlkKSB7IG1fdGh1bWJUZXh0dXJlSWQgPSBpZDsgfQorICAgIHZvaWQg
c2V0QmFja1RyYWNrUmVzb3VyY2VJZChDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQp
IHsgbV9iYWNrVHJhY2tSZXNvdXJjZUlkID0gaWQ7IH0KKyAgICB2b2lkIHNldEZvcmVUcmFja1Jl
c291cmNlSWQoQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkKSB7IG1fZm9yZVRyYWNr
UmVzb3VyY2VJZCA9IGlkOyB9CisgICAgdm9pZCBzZXRUaHVtYlJlc291cmNlSWQoQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkKSB7IG1fdGh1bWJSZXNvdXJjZUlkID0gaWQ7IH0KIAog
ICAgIENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5
ZXI7IH0KICAgICB2b2lkIHNldFNjcm9sbExheWVyKENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllcikg
eyBtX3Njcm9sbExheWVyID0gc2Nyb2xsTGF5ZXI7IH0KQEAgLTEyNCw5ICsxMjQsOSBAQCBwcml2
YXRlOgogICAgIH07CiAgICAgQ0NTY3JvbGxiYXIgbV9zY3JvbGxiYXI7CiAKLSAgICB1bnNpZ25l
ZCBtX2JhY2tUcmFja1RleHR1cmVJZDsKLSAgICB1bnNpZ25lZCBtX2ZvcmVUcmFja1RleHR1cmVJ
ZDsKLSAgICB1bnNpZ25lZCBtX3RodW1iVGV4dHVyZUlkOworICAgIENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCBtX2JhY2tUcmFja1Jlc291cmNlSWQ7CisgICAgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIG1fZm9yZVRyYWNrUmVzb3VyY2VJZDsKKyAgICBDQ1Jlc291cmNlUHJv
dmlkZXI6OlJlc291cmNlSWQgbV90aHVtYlJlc291cmNlSWQ7CiAKICAgICBTY3JvbGxiYXJPdmVy
bGF5U3R5bGUgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CiAgICAgVmVjdG9yPEludFJlY3Q+IG1f
dGlja21hcmtzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCA2
NzhlZmRmZjBhMzU4YTJkMjlmYjJhODdhNzgyZDU3YmY3ZTM2N2M4Li4wMDJjN2E3YmZhZWE1MDVk
NGQ0NGU3NWM2ZTM3YWVmNzAxZDZkYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
cmVjcmVhdGVDb250ZXh0KCkKICAgICBib29sIGluaXRpYWxpemVkOwogICAgIHsKICAgICAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVs
ZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5yZXNv
dXJjZVByb3ZpZGVyKCkpOwogICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxl
ZFVwbG9hZGVyKTsKICAgICAgICAgaWYgKGluaXRpYWxpemVkKSB7CiAgICAgICAgICAgICBtX2xh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXllclRyZWVIb3N0SW1w
bC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQg
Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikK
ICAgICAgICAgLy8gaGVyZSBhcyB0aGUgdGhyb3R0bGVkIHVwbG9hZGVyIGlzbid0IHVzZWQgaW4g
c2luZ2xlIHRocmVhZCBtb2RlLgogICAgICAgICAvLyBGb3IgY29ycmVjdG5lc3MsIGxvb3AgdW50
aWwgbm8gbW9yZSB1cGRhdGVzIGFyZSBwZW5kaW5nLgogICAgICAgICB3aGlsZSAodXBkYXRlci5o
YXNNb3JlVXBkYXRlcygpKQotICAgICAgICAgICAgdXBkYXRlci51cGRhdGUobV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVB
bGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJl
Q29waWVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVw
bG9hZGVyKCksIG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKTsKKyAgICAgICAgICAgIHVwZGF0
ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSwgbV9sYXll
clRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCksIG1heFBhcnRp
YWxUZXh0dXJlVXBkYXRlcygpKTsKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENv
bW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKIApAQCAtMjYyLDcg
KzI2Miw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogCiAgICAgICAgIGlmICghbV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQoKSkKLSAgICAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVh
ZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisgICAg
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJl
YWQobV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0SW1wbC5jbGVhcigpOwogICAgIH0KICAgICBtX2xheWVyVHJlZUhvc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmUuaAppbmRleCBhMjk2MTA0NjkzZGQ0NTJmMmI5ODU3ODIwNDVlZjBjYTc2
YzEyZTgyLi4zN2VmZDg1MmY5Y2ZmZjQ4MWFkYjJhNTViOTU2MDA1YzVjZjA1NmRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmUuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM2LDExICszNywxMSBAQCBjbGFzcyBDQ1RleHR1cmUgewogcHVibGljOgogICAgIENDVGV4
dHVyZSgpIDogbV9pZCgwKSB7IH0KIAotICAgIHVuc2lnbmVkIGlkKCkgY29uc3QgeyByZXR1cm4g
bV9pZDsgfQorICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9CiAgICAgR0MzRGVudW0gZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7
IH0KIAotICAgIHZvaWQgc2V0SWQodW5zaWduZWQgaWQpIHsgbV9pZCA9IGlkOyB9CisgICAgdm9p
ZCBzZXRJZChDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQpIHsgbV9pZCA9IGlkOyB9
CiAgICAgdm9pZCBzZXREaW1lbnNpb25zKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQp
OwogCiAgICAgc2l6ZV90IGJ5dGVzKCkgY29uc3Q7CkBAIC00OCw3ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgc2l6ZV90IG1lbW9yeVNpemVCeXRlcyhjb25zdCBJbnRTaXplJiwgR0MzRGVu
dW0gZm9ybWF0KTsKIAogcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX2lkOworICAgIENDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX2lkOwogICAgIEludFNpemUgbV9zaXplOwogICAgIEdD
M0RlbnVtIG1fZm9ybWF0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3Bw
CmluZGV4IGNhZDM3NjA3NmUzZmU1OTkxZTVlMTA2N2Y5MTA3N2JkMWRkNDY0MDMuLmVlMjdkODk5
MWY0YTgwN2MzYmI4NThmMGU0YmZkNGJlNzQwYmI3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlTGF5ZXJJbXBsLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiVGV4dFN0cmVh
bS5oIgogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVy
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVhZC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zOCw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIENDVGV4dHVyZUxh
eWVySW1wbDo6Q0NUZXh0dXJlTGF5ZXJJbXBsKGludCBpZCkKICAgICA6IENDTGF5ZXJJbXBsKGlk
KQogICAgICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2Uo
MCkKICAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHRydWUpCiAgICAgLCBtX2ZsaXBwZWQodHJ1
ZSkKICAgICAsIG1fdXZSZWN0KDAsIDAsIDEsIDEpCkBAIC00OCwxMCArNTAsMjggQEAgQ0NUZXh0
dXJlTGF5ZXJJbXBsOjp+Q0NUZXh0dXJlTGF5ZXJJbXBsKCkKIHsKIH0KIAordm9pZCBDQ1RleHR1
cmVMYXllckltcGw6OndpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRl
cikKK3sKKyAgICBBU1NFUlQoIW1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UpOworICAgIG1fZXh0
ZXJuYWxUZXh0dXJlUmVzb3VyY2UgPSByZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZUZy
b21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSWQpOworfQorCiB2b2lkIENDVGV4dHVyZUxheWVy
SW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CisgICAgQVNTRVJUKG1fZXh0ZXJu
YWxUZXh0dXJlUmVzb3VyY2UpOwogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgYm91
bmRzKCkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fdGV4dHVyZUlkLCBtX3ByZW11bHRpcGxpZWRBbHBo
YSwgbV91dlJlY3QsIG1fZmxpcHBlZCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVE
cmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fZXh0ZXJuYWxUZXh0
dXJlUmVzb3VyY2UsIG1fcHJlbXVsdGlwbGllZEFscGhhLCBtX3V2UmVjdCwgbV9mbGlwcGVkKSk7
Cit9CisKK3ZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjpkaWREcmF3KENDUmVzb3VyY2VQcm92aWRl
ciogcmVzb3VyY2VQcm92aWRlcikKK3sKKyAgICBBU1NFUlQobV9leHRlcm5hbFRleHR1cmVSZXNv
dXJjZSk7CisgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcgYXNzZXJ0IHdpbGwgbm90IGJlIHRy
dWUgd2hlbiBzZW5kaW5nIHJlc291cmNlcyB0byBhCisgICAgLy8gcGFyZW50IGNvbXBvc2l0b3Iu
IEEgc3luY2hyb25pemF0aW9uIHNjaGVtZSAoZG91YmxlLWJ1ZmZlcmluZyBvcgorICAgIC8vIHBp
cGVsaW5pZyBvZiB1cGRhdGVzKSBmb3IgdGhlIGNsaWVudCB3aWxsIG5lZWQgdG8gZXhpc3QgdG8g
c29sdmUgdGhpcy4KKyAgICBBU1NFUlQoIXJlc291cmNlUHJvdmlkZXItPmluVXNlQnlDb25zdW1l
cihtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKSk7CisgICAgcmVzb3VyY2VQcm92aWRlci0+ZGVs
ZXRlUmVzb3VyY2UobV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSk7CisgICAgbV9leHRlcm5hbFRl
eHR1cmVSZXNvdXJjZSA9IDA7CiB9CiAKIHZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjpkdW1wTGF5
ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
TGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVMYXllckltcGwuaAppbmRleCA0YWJkYjUxZmY5Mjk5MzkzMTgwOTljZmRjOGEw
ZGQ1MWZmZTZmY2JiLi5lNzQ4YjAxMzA4YThlZGI5NjJhMzhmOTU0ZGEwZDFiZGY5Njc5MzQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaApAQCAtMzgsNyArMzgsOSBAQCBwdWJs
aWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVGV4dHVyZUxheWVySW1wbCgpOwogCisgICAgdmly
dHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKIApAQCAtNTYsNiArNTgsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiAiVGV4dHVyZUxheWVyIjsgfQogCiAgICAgdW5zaWduZWQgbV90ZXh0dXJl
SWQ7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fZXh0ZXJuYWxUZXh0dXJl
UmVzb3VyY2U7CiAgICAgYm9vbCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKICAgICBib29sIG1fZmxp
cHBlZDsKICAgICBGbG9hdFJlY3QgbV91dlJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuY3BwCmluZGV4IDMxOTBkODJmZmM3YmFlNzllNTVlZmZiYzUwMmI4NDQ5MDc0YjY2MjYuLmZl
YTdmZWJiZDJlZGYxMmEzMjc2NDNhMTBlNjYyMzJjOTVhZjFjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgQ0NUZXh0dXJlVXBkYXRl
cjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAogICAgIHJldHVybiBtX2Z1bGxFbnRyaWVzLnNpemUo
KSB8fCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKSB8fCBtX2NvcHlFbnRyaWVzLnNpemUoKTsKIH0K
IAotdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZUNvcGllciogY29waWVyLCBU
ZXh0dXJlVXBsb2FkZXIqIHVwbG9hZGVyLCBzaXplX3QgY291bnQpCit2b2lkIENDVGV4dHVyZVVw
ZGF0ZXI6OnVwZGF0ZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIFRleHR1
cmVDb3BpZXIqIGNvcGllciwgVGV4dHVyZVVwbG9hZGVyKiB1cGxvYWRlciwgc2l6ZV90IGNvdW50
KQogewogICAgIHNpemVfdCBpbmRleDsKIApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENDVGV4dHVy
ZVVwZGF0ZXI6OnVwZGF0ZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsbwogICAgICAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4ICsg
Y291bnQsIG1fZnVsbEVudHJpZXMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChpbmRleCA9IG1fZW50
cnlJbmRleDsgaW5kZXggPCBtYXhJbmRleDsgKytpbmRleCkgewogICAgICAgICAgICAgVXBkYXRl
RW50cnkmIGVudHJ5ID0gbV9mdWxsRW50cmllc1tpbmRleF07Ci0gICAgICAgICAgICB1cGxvYWRl
ci0+dXBsb2FkVGV4dHVyZShjb250ZXh0LCBlbnRyeS50ZXh0dXJlLCBhbGxvY2F0b3IsIGVudHJ5
LnNvdXJjZVJlY3QsIGVudHJ5LmRlc3RSZWN0KTsKKyAgICAgICAgICAgIHVwbG9hZGVyLT51cGxv
YWRUZXh0dXJlKGVudHJ5LnRleHR1cmUsIHJlc291cmNlUHJvdmlkZXIsIGVudHJ5LnNvdXJjZVJl
Y3QsIGVudHJ5LmRlc3RSZWN0KTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgbW9yZVVwbG9h
ZHMgPSBtYXhJbmRleCA8IG1fZnVsbEVudHJpZXMuc2l6ZSgpOwpAQCAtMTE1LDcgKzExNSw3IEBA
IHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvCiAKICAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4
IDwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgICAgIFVwZGF0
ZUVudHJ5JiBlbnRyeSA9IG1fcGFydGlhbEVudHJpZXNbaW5kZXhdOwotICAgICAgICAgICAgdXBs
b2FkZXItPnVwbG9hZFRleHR1cmUoY29udGV4dCwgZW50cnkudGV4dHVyZSwgYWxsb2NhdG9yLCBl
bnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CisgICAgICAgICAgICB1cGxvYWRlci0+
dXBsb2FkVGV4dHVyZShlbnRyeS50ZXh0dXJlLCByZXNvdXJjZVByb3ZpZGVyLCBlbnRyeS5zb3Vy
Y2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CiAgICAgICAgIH0KIAogICAgICAgICB1cGxvYWRlci0+
ZW5kVXBsb2FkcygpOwpAQCAtMTIzLDE4ICsxMjMsMTQgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVy
Ojp1cGRhdGUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG8KIAogICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fY29weUVudHJpZXMuc2l6ZSgpOyAr
K2luZGV4KSB7CiAgICAgICAgIENvcHlFbnRyeSYgY29weUVudHJ5ID0gbV9jb3B5RW50cmllc1tp
bmRleF07Ci0gICAgICAgIGNvcGllci0+Y29weVRleHR1cmUoY29udGV4dCwgY29weUVudHJ5LnNv
dXJjZVRleHR1cmUsIGNvcHlFbnRyeS5kZXN0VGV4dHVyZSwgY29weUVudHJ5LnNpemUpOworICAg
ICAgICBjb3BpZXItPmNvcHlUZXh0dXJlKGNvcHlFbnRyeS5zb3VyY2VUZXh0dXJlLCBjb3B5RW50
cnkuZGVzdFRleHR1cmUsIGNvcHlFbnRyeS5zaXplKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSd2
ZSBwZXJmb3JtZWQgYW55IHRleHR1cmUgY29waWVzLCB3ZSBuZWVkIHRvIGluc2VydCBhIGZsdXNo
IGhlcmUgaW50byB0aGUgY29tcG9zaXRvciBjb250ZXh0CiAgICAgLy8gYmVmb3JlIGxldHRpbmcg
dGhlIG1haW4gdGhyZWFkIHByb2NlZWQgYXMgaXQgbWF5IG1ha2UgZHJhdyBjYWxscyB0byB0aGUg
c291cmNlIHRleHR1cmUgb2Ygb25lIG9mCiAgICAgLy8gb3VyIGNvcHkgb3BlcmF0aW9ucy4KLSAg
ICBpZiAobV9jb3B5RW50cmllcy5zaXplKCkpIHsKLSAgICAgICAgV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgICAgIGlm
IChjb250ZXh0M2QpCi0gICAgICAgICAgICBjb250ZXh0M2QtPmZsdXNoKCk7Ci0gICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAg
ICB9CisgICAgaWYgKG1fY29weUVudHJpZXMuc2l6ZSgpKQorICAgICAgICBjb3BpZXItPmZsdXNo
KCk7CiAKICAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4K
ICAgICBjbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCmluZGV4IDhhNDM3OTQy
YjRiMDQyMmUwNTA5YzE0ODY1MWRiMzBiMWJhYzkxYWUuLjk3MmExYzBlYzdlNDgxMjEzODFkNGU0
ZmU2Yzk5MDcwYTk0YjgyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAgLTMy
LDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0dXJlQWxsb2Nh
dG9yOworY2xhc3MgQ0NSZXNvdXJjZVByb3ZpZGVyOwogY2xhc3MgVGV4dHVyZUNvcGllcjsKIGNs
YXNzIFRleHR1cmVVcGxvYWRlcjsKIApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OwogCiAgICAgLy8gVXBkYXRlIHNvbWUgdGV4dHVyZXMu
Ci0gICAgdm9pZCB1cGRhdGUoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwg
VGV4dHVyZUNvcGllciosIFRleHR1cmVVcGxvYWRlciosIHNpemVfdCBjb3VudCk7CisgICAgdm9p
ZCB1cGRhdGUoQ0NSZXNvdXJjZVByb3ZpZGVyKiwgVGV4dHVyZUNvcGllciosIFRleHR1cmVVcGxv
YWRlciosIHNpemVfdCBjb3VudCk7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKaW5kZXggOTk3M2E5NzRiMTU2N2JiNjY4MzEyNjAzNmVjZDQwNDMxZjAx
MWZjYy4uNDQ1MDdjNmYzYzY3Zjc0ZGQxYzQ4ZjQ4OTE0ZWZiN2YwMDllYjgzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTYwMCw3ICs2MDAsNyBAQCB2b2lkIENDVGhyZWFkUHJv
eHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQogewogICAgIFRSQUNFX0VW
RU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291
cmNlcyIpOwogICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7
Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4
dHVyZUFsbG9jYXRvcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRl
eHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0
dXJlVXBsb2FkZXIoKSwgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSk7CisgICAgbV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5yZXNv
dXJjZVByb3ZpZGVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4
dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1
cmVVcGxvYWRlcigpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKTsKIH0KIAogdm9pZCBDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQpAQCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCogY29tcGxldGlvCiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5
OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkIik7CiAgICAgQVNTRVJUKGlzSW1wbFRo
cmVhZCgpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNX
ZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0KCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVs
ZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRl
Q29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJj
ZVByb3ZpZGVyKCkpOwogICAgIG1faW5wdXRIYW5kbGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CiAg
ICAgbV9sYXllclRyZWVIb3N0SW1wbC5jbGVhcigpOwogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhy
ZWFkLmNsZWFyKCk7CkBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNy
ZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIEMK
IHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4
dE9uSW1wbFRocmVhZCIpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgbV9sYXll
clRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBtX2xheWVyVHJlZUhv
c3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1w
bC0+cmVzb3VyY2VQcm92aWRlcigpKTsKICAgICAqcmVjcmVhdGVTdWNjZWVkZWQgPSBtX2xheWVy
VHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihhZG9wdFB0cihjb250ZXh0UHRy
KSwgdGV4dHVyZVVwbG9hZGVyKTsKICAgICBpZiAoKnJlY3JlYXRlU3VjY2VlZGVkKSB7CiAgICAg
ICAgICpjYXBhYmlsaXRpZXMgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IGNjNzkw
ZTU1MzlhZDgzNjMwYmRiNGRlMTE1MzBhYTM3YzUyNzcxZjMuLjMyOGM5NzZmY2VjZTFhOTcxYzk5
YjNlNGVkZjRlZWE3ZTJjMTAxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
CkBAIC02MSwxMyArNjEsMTMgQEAgY2xhc3MgRHJhd2FibGVUaWxlIDogcHVibGljIENDTGF5ZXJU
aWxpbmdEYXRhOjpUaWxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxEcmF3YWJs
ZVRpbGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBEcmF3YWJsZVRpbGUoKSk7IH0K
IAotICAgIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlSWQ7IH0KLSAgICB2b2lkIHNldFRleHR1cmVJZChQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJ
ZCkgeyBtX3RleHR1cmVJZCA9IHRleHR1cmVJZDsgfQorICAgIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCByZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUlkOyB9Cisg
ICAgdm9pZCBzZXRSZXNvdXJjZUlkKENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNv
dXJjZUlkKSB7IG1fcmVzb3VyY2VJZCA9IHJlc291cmNlSWQ7IH0KIAogcHJpdmF0ZToKLSAgICBE
cmF3YWJsZVRpbGUoKSA6IG1fdGV4dHVyZUlkKDApIHsgfQorICAgIERyYXdhYmxlVGlsZSgpIDog
bV9yZXNvdXJjZUlkKDApIHsgfQogCi0gICAgUGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsK
KyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJjZUlkOwogfTsKIAog
Q0NUaWxlZExheWVySW1wbDo6Q0NUaWxlZExheWVySW1wbChpbnQgaWQpCkBAIC04MSw3ICs4MSw3
IEBAIENDVGlsZWRMYXllckltcGw6On5DQ1RpbGVkTGF5ZXJJbXBsKCkKIHsKIH0KIAotdW5zaWdu
ZWQgQ0NUaWxlZExheWVySW1wbDo6Y29udGVudHNUZXh0dXJlSWQoKSBjb25zdAorQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDVGlsZWRMYXllckltcGw6OmNvbnRlbnRzUmVzb3VyY2VJ
ZCgpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBzaW5n
bGUgdGV4dHVyZSBsYXllcnMsIGUuZy4gbWFza3MuCiAgICAgQVNTRVJUKG1fdGlsZXIpOwpAQCAt
ODksMTAgKzg5LDEwIEBAIHVuc2lnbmVkIENDVGlsZWRMYXllckltcGw6OmNvbnRlbnRzVGV4dHVy
ZUlkKCkgY29uc3QKICAgICBBU1NFUlQobV90aWxlci0+bnVtVGlsZXNZKCkgPT0gMSk7CiAKICAg
ICBEcmF3YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoMCwgMCk7Ci0gICAgUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlSWQgPSB0aWxlID8gdGlsZS0+dGV4dHVyZUlkKCkgOiAwOwotICAgIEFTU0VSVCh0
ZXh0dXJlSWQpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlk
ID0gdGlsZSA/IHRpbGUtPnJlc291cmNlSWQoKSA6IDA7CisgICAgQVNTRVJUKHJlc291cmNlSWQp
OwogCi0gICAgcmV0dXJuIHRleHR1cmVJZDsKKyAgICByZXR1cm4gcmVzb3VyY2VJZDsKIH0KIAog
dm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRz
LCBpbnQgaW5kZW50KSBjb25zdApAQCAtMTA5LDcgKzEwOSw3IEBAIGJvb2wgQ0NUaWxlZExheWVy
SW1wbDo6aGFzVGlsZUF0KGludCBpLCBpbnQgaikgY29uc3QKIAogYm9vbCBDQ1RpbGVkTGF5ZXJJ
bXBsOjpoYXNUZXh0dXJlSWRGb3JUaWxlQXQoaW50IGksIGludCBqKSBjb25zdAogewotICAgIHJl
dHVybiBoYXNUaWxlQXQoaSwgaikgJiYgdGlsZUF0KGksIGopLT50ZXh0dXJlSWQoKTsKKyAgICBy
ZXR1cm4gaGFzVGlsZUF0KGksIGopICYmIHRpbGVBdChpLCBqKS0+cmVzb3VyY2VJZCgpOwogfQog
CiBEcmF3YWJsZVRpbGUqIENDVGlsZWRMYXllckltcGw6OnRpbGVBdChpbnQgaSwgaW50IGopIGNv
bnN0CkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEKICAgICAgICAg
ICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKICAg
ICAgICAgICAgICAgICBTa0NvbG9yIGJvcmRlckNvbG9yOwogCi0gICAgICAgICAgICAgICAgaWYg
KG1fc2tpcHNEcmF3IHx8ICF0aWxlIHx8ICF0aWxlLT50ZXh0dXJlSWQoKSkKKyAgICAgICAgICAg
ICAgICBpZiAobV9za2lwc0RyYXcgfHwgIXRpbGUgfHwgIXRpbGUtPnJlc291cmNlSWQoKSkKICAg
ICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3IgPSBTa0NvbG9yU2V0QVJHQihkZWJ1Z1RpbGVC
b3JkZXJBbHBoYSwgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvclJlZCwgZGVidWdUaWxl
Qm9yZGVyTWlzc2luZ1RpbGVDb2xvckdyZWVuLCBkZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNv
bG9yQmx1ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBib3Jk
ZXJDb2xvciA9IFNrQ29sb3JTZXRBUkdCKGRlYnVnVGlsZUJvcmRlckFscGhhLCBkZWJ1Z1RpbGVC
b3JkZXJDb2xvclJlZCwgZGVidWdUaWxlQm9yZGVyQ29sb3JHcmVlbiwgZGVidWdUaWxlQm9yZGVy
Q29sb3JCbHVlKTsKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YQog
ICAgICAgICAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICAgICAgaWYgKCF0aWxlIHx8ICF0aWxlLT50ZXh0dXJlSWQoKSkgewor
ICAgICAgICAgICAgaWYgKCF0aWxlIHx8ICF0aWxlLT5yZXNvdXJjZUlkKCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcygpKQogICAgICAgICAg
ICAgICAgICAgICBoYWRNaXNzaW5nVGlsZXMgfD0gcXVhZExpc3QuYXBwZW5kKENDQ2hlY2tlcmJv
YXJkRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0KSk7CiAgICAgICAg
ICAgICAgICAgZWxzZQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
CiAgICAgICAgICAgICBib29sIGJvdHRvbUVkZ2VBQSA9IGogPT0gbV90aWxlci0+bnVtVGlsZXNZ
KCkgLSAxICYmIHVzZUFBOwogCiAgICAgICAgICAgICBjb25zdCBHQzNEaW50IHRleHR1cmVGaWx0
ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKLSAgICAgICAgICAgIHF1YWRMaXN0LmFw
cGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRp
bGVPcGFxdWVSZWN0LCB0aWxlLT50ZXh0dXJlSWQoKSwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNp
emUsIHRleHR1cmVGaWx0ZXIsIGNvbnRlbnRzU3dpenpsZWQoKSwgbGVmdEVkZ2VBQSwgdG9wRWRn
ZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7CisgICAgICAgICAgICBxdWFkTGlzdC5h
cHBlbmQoQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0
aWxlT3BhcXVlUmVjdCwgdGlsZS0+cmVzb3VyY2VJZCgpLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJl
U2l6ZSwgdGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRnZUFBLCB0b3BF
ZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTIyMSwxMiArMjIxLDEyIEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6c2V0VGlsaW5nRGF0
YShjb25zdCBDQ0xheWVyVGlsaW5nRGF0YSYgdGlsZXIpCiAgICAgKm1fdGlsZXIgPSB0aWxlcjsK
IH0KIAotdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpwdXNoVGlsZVByb3BlcnRpZXMoaW50IGksIGlu
dCBqLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCit2b2lk
IENDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVydGllcyhpbnQgaSwgaW50IGosIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBvcGFx
dWVSZWN0KQogewogICAgIERyYXdhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKICAgICBp
ZiAoIXRpbGUpCiAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwotICAgIHRpbGUtPnNl
dFRleHR1cmVJZCh0ZXh0dXJlSWQpOworICAgIHRpbGUtPnNldFJlc291cmNlSWQocmVzb3VyY2VJ
ZCk7CiAgICAgdGlsZS0+c2V0T3BhcXVlUmVjdChvcGFxdWVSZWN0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5oCmluZGV4IDRjODJjZGM4Y2FmN2U3MWI5Njk3MTZjNGFmNWUxOTZj
Mjc5MTA0ODUuLmQ5YTAzNzk0OGZiM2Q1NjYzN2E4OWYxNDg2ZjBhNDE3YTUzYjllNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKQEAgLTQ0LDEzICs0NCwxMyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwogCi0gICAgdmly
dHVhbCB1bnNpZ25lZCBjb250ZW50c1RleHR1cmVJZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGNvbnRlbnRzUmVzb3VyY2VJZCgp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMo
VGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdm9pZCBzZXRT
a2lwc0RyYXcoYm9vbCBza2lwc0RyYXcpIHsgbV9za2lwc0RyYXcgPSBza2lwc0RyYXc7IH0KICAg
ICB2b2lkIHNldFRpbGluZ0RhdGEoY29uc3QgQ0NMYXllclRpbGluZ0RhdGEmIHRpbGVyKTsKLSAg
ICB2b2lkIHB1c2hUaWxlUHJvcGVydGllcyhpbnQsIGludCwgdW5zaWduZWQgdGV4dHVyZUlkLCBj
b25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KTsKKyAgICB2b2lkIHB1c2hUaWxlUHJvcGVydGllcyhp
bnQsIGludCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBv
cGFxdWVSZWN0KTsKIAogICAgIHZvaWQgc2V0Q29udGVudHNTd2l6emxlZChib29sIGNvbnRlbnRz
U3dpenpsZWQpIHsgbV9jb250ZW50c1N3aXp6bGVkID0gY29udGVudHNTd2l6emxlZDsgfQogICAg
IGJvb2wgY29udGVudHNTd2l6emxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTd2l6emxl
ZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCAzZTFmNTgxMzUzZjAy
Y2FiM2ExNTYwNDNlMDI5ZjE4ZjNkZTQwMmU2Li5mMDIyMGU0NTc2MjExZGExMTg4NjRhMWQwNGE3
OTVhYjQxYzA3YWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMzEs
MTUgKzMxLDEyIEBACiAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgiIC8vIEZvciBHTEMgbWFjcm8KLSNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgotI2lu
Y2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiIC8vIEZvciBUZXh0dXJlQWxsb2NhdG9yCi0jaW5jbHVk
ZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxl
ci5oIgorI2luY2x1ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgImNjL0ND
U3RyZWFtVmlkZW9EcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgi
CiAjaW5jbHVkZSAiY2MvQ0NZVVZWaWRlb0RyYXdRdWFkLmgiCkBAIC01Miw2ICs0OSw3IEBAIEND
VmlkZW9MYXllckltcGw6OkNDVmlkZW9MYXllckltcGwoaW50IGlkLCBXZWJLaXQ6OldlYlZpZGVv
RnJhbWVQcm92aWRlciogcHJvdmlkCiAgICAgOiBDQ0xheWVySW1wbChpZCkKICAgICAsIG1fcHJv
dmlkZXIocHJvdmlkZXIpCiAgICAgLCBtX2ZyYW1lKDApCisgICAgLCBtX2V4dGVybmFsVGV4dHVy
ZVJlc291cmNlKDApCiB7CiAgICAgLy8gVGhpcyBtYXRyaXggaXMgdGhlIGRlZmF1bHQgdHJhbnNm
b3JtYXRpb24gZm9yIHN0cmVhbSB0ZXh0dXJlcywgYW5kIGZsaXBzIG9uIHRoZSBZIGF4aXMuCiAg
ICAgbV9zdHJlYW1UZXh0dXJlTWF0cml4ID0gV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgKQEAgLTc2LDExICs3NCwxMiBAQCBDQ1ZpZGVvTGF5ZXJJbXBsOjp+Q0NWaWRlb0xheWVySW1w
bCgpCiAgICAgICAgIG1fcHJvdmlkZXItPnNldFZpZGVvRnJhbWVQcm92aWRlckNsaWVudCgwKTsK
ICAgICAgICAgbV9wcm92aWRlciA9IDA7CiAgICAgfQotICAgIGZyZWVQbGFuZURhdGEobGF5ZXJU
cmVlSG9zdEltcGwoKS0+Y29udGV4dCgpKTsKKyAgICBmcmVlUGxhbmVEYXRhKGxheWVyVHJlZUhv
c3RJbXBsKCktPnJlc291cmNlUHJvdmlkZXIoKSk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdlYktpdDo6V2ViVmlkZW9GcmFtZTo6bWF4UGxh
bmVzOyArK2kpCi0gICAgICAgIEFTU0VSVCghbV9mcmFtZVBsYW5lc1tpXS50ZXh0dXJlSWQpOwor
ICAgICAgICBBU1NFUlQoIW1fZnJhbWVQbGFuZXNbaV0ucmVzb3VyY2VJZCk7CisgICAgQVNTRVJU
KCFtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKTsKICNlbmRpZgogfQogCkBAIC0xMTEsMTAgKzEx
MCwxMCBAQCBzdGF0aWMgR0MzRGVudW0gY29udmVydFZGQ0Zvcm1hdFRvR0MzREZvcm1hdChjb25z
dCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUmIGZyYW1lKQogICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHQzRDo6SU5WQUxJRF9WQUxVRTsKIH0KIAotdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJh
dyhDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkK
K3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNv
dXJjZVByb3ZpZGVyKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0g
ICAgQ0NMYXllckltcGw6OndpbGxEcmF3KGxheWVyUmVuZGVyZXIsIGNvbnRleHQpOworICAgIEND
TGF5ZXJJbXBsOjp3aWxsRHJhdyhyZXNvdXJjZVByb3ZpZGVyKTsKIAogICAgIC8vIEV4cGxpY2l0
bHkgbG9jayBhbmQgdW5sb2NrIHRoZSBwcm92aWRlciBtdXRleCBzbyBpdCBjYW4gYmUgaGVsZCBm
cm9tCiAgICAgLy8gd2lsbERyYXcgdG8gZGlkRHJhdy4gU2luY2UgdGhlIGNvbXBvc2l0b3IgdGhy
ZWFkIGlzIGluIHRoZSBtaWRkbGUgb2YKQEAgLTEyNSwxNiArMTI0LDE3IEBAIHZvaWQgQ0NWaWRl
b0xheWVySW1wbDo6d2lsbERyYXcoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGlj
c0NvbnRleHQqIGNvCiAgICAgLy8gbG9jayBzaG91bGQgbm90IGNhdXNlIGEgZGVhZGxvY2suCiAg
ICAgbV9wcm92aWRlck11dGV4LmxvY2soKTsKIAotICAgIHdpbGxEcmF3SW50ZXJuYWwobGF5ZXJS
ZW5kZXJlciwgY29udGV4dCk7Ci0gICAgZnJlZVVudXNlZFBsYW5lRGF0YShjb250ZXh0KTsKKyAg
ICB3aWxsRHJhd0ludGVybmFsKHJlc291cmNlUHJvdmlkZXIpOworICAgIGZyZWVVbnVzZWRQbGFu
ZURhdGEocmVzb3VyY2VQcm92aWRlcik7CiAKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIG1f
cHJvdmlkZXJNdXRleC51bmxvY2soKTsKIH0KIAotdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxs
RHJhd0ludGVybmFsKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhd0ludGVybmFsKENDUmVz
b3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6
aXNJbXBsVGhyZWFkKCkpOworICAgIEFTU0VSVCghbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSk7
CiAKICAgICBpZiAoIW1fcHJvdmlkZXIpIHsKICAgICAgICAgbV9mcmFtZSA9IDA7CkBAIC0xNjAs
MTcgKzE2MCwyMCBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwoQ0NS
ZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKCFhbGxvY2F0ZVBsYW5lRGF0YShsYXllclJlbmRlcmVyLCBjb250ZXh0
KSkgeworICAgIGlmICghYWxsb2NhdGVQbGFuZURhdGEocmVzb3VyY2VQcm92aWRlcikpIHsKICAg
ICAgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUpOwogICAgICAgICBtX2Zy
YW1lID0gMDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghY29weVBsYW5lRGF0
YShsYXllclJlbmRlcmVyLCBjb250ZXh0KSkgeworICAgIGlmICghY29weVBsYW5lRGF0YShyZXNv
dXJjZVByb3ZpZGVyKSkgewogICAgICAgICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUobV9m
cmFtZSk7CiAgICAgICAgIG1fZnJhbWUgPSAwOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisg
ICAgaWYgKG1fZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKQorICAgICAg
ICBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlID0gcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVz
b3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fZnJhbWUtPnRleHR1cmVJZCgpKTsKIH0KIAogdm9p
ZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKQEAgLTIwMyw3
ICsyMDYsNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxl
ciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YQogICAgICAgICBib29sIHByZW11bHRp
cGxpZWRBbHBoYSA9IHRydWU7CiAgICAgICAgIEZsb2F0UmVjdCB1dlJlY3QoMCwgMCwgd2lkdGhT
Y2FsZUZhY3RvciwgMSk7CiAgICAgICAgIGJvb2wgZmxpcHBlZCA9IGZhbHNlOwotICAgICAgICBP
d25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHRleHR1cmVRdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBwbGFuZS50ZXh0dXJlSWQsIHByZW11
bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKKyAgICAgICAgT3duUHRyPENDVGV4dHVy
ZURyYXdRdWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVk
UXVhZFN0YXRlLCBxdWFkUmVjdCwgcGxhbmUucmVzb3VyY2VJZCwgcHJlbXVsdGlwbGllZEFscGhh
LCB1dlJlY3QsIGZsaXBwZWQpOwogICAgICAgICBxdWFkTGlzdC5hcHBlbmQodGV4dHVyZVF1YWQu
cmVsZWFzZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjE4LDcgKzIyMSw3IEBAIHZv
aWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhCiAjZWxzZQogICAgICAgICBib29sIGZsaXBwZWQgPSBmYWxz
ZTsgLy8gTGliVkEgKGNyb3MvaW50ZWwpLCBNYWNPUy4KICNlbmRpZgotICAgICAgICBPd25QdHI8
Q0NUZXh0dXJlRHJhd1F1YWQ+IHRleHR1cmVRdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0
ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2ZyYW1lLT50ZXh0dXJlSWQoKSwgcHJlbXVs
dGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOworICAgICAgICBPd25QdHI8Q0NUZXh0dXJl
RHJhd1F1YWQ+IHRleHR1cmVRdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRR
dWFkU3RhdGUsIHF1YWRSZWN0LCBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlLCBwcmVtdWx0aXBs
aWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7CiAgICAgICAgIHF1YWRMaXN0LmFwcGVuZCh0ZXh0
dXJlUXVhZC5yZWxlYXNlKCkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMzMsMTQgKzIz
NiwyMCBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YQogICAgIH0KIH0KIAotdm9pZCBDQ1ZpZGVv
TGF5ZXJJbXBsOjpkaWREcmF3KCkKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZGlkRHJhdyhDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6
OmlzSW1wbFRocmVhZCgpKTsKLSAgICBDQ0xheWVySW1wbDo6ZGlkRHJhdygpOworICAgIENDTGF5
ZXJJbXBsOjpkaWREcmF3KHJlc291cmNlUHJvdmlkZXIpOwogCiAgICAgaWYgKCFtX2ZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9mb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQpIHsKKyAgICAgICAgQVNTRVJUKG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2Up
OworICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShtX2V4dGVybmFsVGV4
dHVyZVJlc291cmNlKTsKKyAgICAgICAgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSA9IDA7Cisg
ICAgfQorCiAgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUpOwogICAgIG1f
ZnJhbWUgPSAwOwogCkBAIC0yODMsNDUgKzI5MiwyNyBAQCBJbnRTaXplIENDVmlkZW9MYXllcklt
cGw6OmNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBXZWJLaXQ6OldlYlZpZGVvRnJhbWUmIGZyYW1l
LAogICAgIHJldHVybiBJbnRTaXplKHZpc2libGVXaWR0aCwgdmlzaWJsZUhlaWdodCk7CiB9CiAK
LWJvb2wgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6YWxsb2NhdGVEYXRhKENDR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KQorYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lOjph
bGxvY2F0ZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewotICAg
IGlmICh0ZXh0dXJlSWQpCisgICAgaWYgKHJlc291cmNlSWQpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEID0gY29udGV4
dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M0QpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIEdMQyhjb250ZXh0M0QsIHRleHR1cmVJZCA9IGNvbnRleHQzRC0+Y3JlYXRlVGV4
dHVyZSgpKTsKLSAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQpKTsKLSAgICAvLyBEbyBiYXNpYyBs
aW5lYXIgZmlsdGVyaW5nIG9uIHJlc2l6ZS4KLSAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0Qt
PnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsK
LSAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAvLyBOUE9UIHRleHR1cmVzIGluIEdM
IEVTIG9ubHkgd29yayB3aGVuIHRoZSB3cmFwIG1vZGUgaXMgc2V0IHRvIEdyYXBoaWNzQ29udGV4
dDNEOjpDTEFNUF9UT19FREdFLgotICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotICAg
IEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGlj
c0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotCi0gICAgR0xDKGNvbnRleHQzRCwgY29udGV4
dDNELT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBmb3JtYXQs
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSwgMCkpOwotCi0gICAgcmV0dXJuIHRleHR1cmVJZDsKKyAgICByZXNv
dXJjZUlkID0gcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UoQ0NSZW5kZXJlcjo6SW1w
bFBvb2wsIHNpemUsIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpBbnkpOworICAgIHJldHVy
biByZXNvdXJjZUlkOwogfQogCi12b2lkIENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmU6OmZy
ZWVEYXRhKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpGcmFtZVBsYW5lOjpmcmVlRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlk
ZXIpCiB7Ci0gICAgaWYgKCF0ZXh0dXJlSWQpCisgICAgaWYgKCFyZXNvdXJjZUlkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0Qg
PSBjb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzRCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT5kZWxldGVUZXh0dXJlKHRleHR1
cmVJZCkpOwotICAgIHRleHR1cmVJZCA9IDA7CisgICAgcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRl
UmVzb3VyY2UocmVzb3VyY2VJZCk7CisgICAgcmVzb3VyY2VJZCA9IDA7CiB9CiAKLWJvb2wgQ0NW
aWRlb0xheWVySW1wbDo6YWxsb2NhdGVQbGFuZURhdGEoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJl
ciwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitib29sIENDVmlkZW9MYXllckltcGw6OmFs
bG9jYXRlUGxhbmVEYXRhKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsK
LSAgICBpbnQgbWF4VGV4dHVyZVNpemUgPSBsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS5t
YXhUZXh0dXJlU2l6ZTsKKyAgICBpbnQgbWF4VGV4dHVyZVNpemUgPSByZXNvdXJjZVByb3ZpZGVy
LT5tYXhUZXh0dXJlU2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgcGxhbmVJbmRleCA9IDA7IHBs
YW5lSW5kZXggPCBtX2ZyYW1lLT5wbGFuZXMoKTsgKytwbGFuZUluZGV4KSB7CiAgICAgICAgIEND
VmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHBsYW5lID0gbV9mcmFtZVBsYW5lc1twbGFuZUlu
ZGV4XTsKIApAQCAtMzMxLDEzICszMjIsMTMgQEAgYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjphbGxv
Y2F0ZVBsYW5lRGF0YShDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ28KICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAocGxhbmUuc2l6ZSAhPSByZXF1
aXJlZFRleHR1cmVTaXplIHx8IHBsYW5lLmZvcm1hdCAhPSBtX2Zvcm1hdCkgewotICAgICAgICAg
ICAgcGxhbmUuZnJlZURhdGEoY29udGV4dCk7CisgICAgICAgICAgICBwbGFuZS5mcmVlRGF0YShy
ZXNvdXJjZVByb3ZpZGVyKTsKICAgICAgICAgICAgIHBsYW5lLnNpemUgPSByZXF1aXJlZFRleHR1
cmVTaXplOwogICAgICAgICAgICAgcGxhbmUuZm9ybWF0ID0gbV9mb3JtYXQ7CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoIXBsYW5lLnRleHR1cmVJZCkgewotICAgICAgICAgICAgaWYgKCFwbGFu
ZS5hbGxvY2F0ZURhdGEoY29udGV4dCkpCisgICAgICAgIGlmICghcGxhbmUucmVzb3VyY2VJZCkg
eworICAgICAgICAgICAgaWYgKCFwbGFuZS5hbGxvY2F0ZURhdGEocmVzb3VyY2VQcm92aWRlcikp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgcGxhbmUudmlzaWJs
ZVNpemUgPSBjb21wdXRlVmlzaWJsZVNpemUoKm1fZnJhbWUsIHBsYW5lSW5kZXgpOwogICAgICAg
ICB9CkBAIC0zNDUsNDIgKzMzNiwzMiBAQCBib29sIENDVmlkZW9MYXllckltcGw6OmFsbG9jYXRl
UGxhbmVEYXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDbwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIENDVmlkZW9MYXllckltcGw6OmNvcHlQbGFuZURhdGEoQ0NS
ZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitib29s
IENDVmlkZW9MYXllckltcGw6OmNvcHlQbGFuZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNv
dXJjZVByb3ZpZGVyKQogewogICAgIHNpemVfdCBzb2Z0d2FyZVBsYW5lQ291bnQgPSBtX2ZyYW1l
LT5wbGFuZXMoKTsKICAgICBpZiAoIXNvZnR3YXJlUGxhbmVDb3VudCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBj
b250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBMYXllclRleHR1cmVTdWJJbWFnZSB1cGxv
YWRlcih0cnVlKTsKICAgICBmb3IgKHNpemVfdCBzb2Z0d2FyZVBsYW5lSW5kZXggPSAwOyBzb2Z0
d2FyZVBsYW5lSW5kZXggPCBzb2Z0d2FyZVBsYW5lQ291bnQ7ICsrc29mdHdhcmVQbGFuZUluZGV4
KSB7CiAgICAgICAgIENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHBsYW5lID0gbV9mcmFt
ZVBsYW5lc1tzb2Z0d2FyZVBsYW5lSW5kZXhdOwogICAgICAgICBjb25zdCB1aW50OF90KiBzb2Z0
d2FyZVBsYW5lUGl4ZWxzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZnJhbWUtPmRh
dGEoc29mdHdhcmVQbGFuZUluZGV4KSk7CiAgICAgICAgIEludFJlY3QgcGxhbmVSZWN0KEludFBv
aW50KCksIHBsYW5lLnNpemUpOwotCi0gICAgICAgIGNvbnRleHQzZC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHBsYW5lLnRleHR1cmVJZCk7Ci0gICAgICAgIHVw
bG9hZGVyLnNldFN1YkltYWdlU2l6ZShwbGFuZS5zaXplKTsKLSAgICAgICAgdXBsb2FkZXIudXBs
b2FkKHNvZnR3YXJlUGxhbmVQaXhlbHMsIHBsYW5lUmVjdCwgcGxhbmVSZWN0LCBwbGFuZVJlY3Qs
IHBsYW5lLmZvcm1hdCwgY29udGV4dCk7CisgICAgICAgIHJlc291cmNlUHJvdmlkZXItPnVwbG9h
ZChwbGFuZS5yZXNvdXJjZUlkLCBzb2Z0d2FyZVBsYW5lUGl4ZWxzLCBwbGFuZVJlY3QsIHBsYW5l
UmVjdCwgcGxhbmVSZWN0KTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ0NW
aWRlb0xheWVySW1wbDo6ZnJlZVBsYW5lRGF0YShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkK
K3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZnJlZVBsYW5lRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIq
IHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdlYktp
dDo6V2ViVmlkZW9GcmFtZTo6bWF4UGxhbmVzOyArK2kpCi0gICAgICAgIG1fZnJhbWVQbGFuZXNb
aV0uZnJlZURhdGEoY29udGV4dCk7CisgICAgICAgIG1fZnJhbWVQbGFuZXNbaV0uZnJlZURhdGEo
cmVzb3VyY2VQcm92aWRlcik7CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZnJlZVVudXNl
ZFBsYW5lRGF0YShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgQ0NWaWRlb0xheWVy
SW1wbDo6ZnJlZVVudXNlZFBsYW5lRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIpCiB7CiAgICAgdW5zaWduZWQgZmlyc3RVbnVzZWRQbGFuZSA9IG1fZnJhbWUgPyBtX2Zy
YW1lLT5wbGFuZXMoKSA6IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gZmlyc3RVbnVzZWRQbGFu
ZTsgaSA8IFdlYktpdDo6V2ViVmlkZW9GcmFtZTo6bWF4UGxhbmVzOyArK2kpCi0gICAgICAgIG1f
ZnJhbWVQbGFuZXNbaV0uZnJlZURhdGEoY29udGV4dCk7CisgICAgICAgIG1fZnJhbWVQbGFuZXNb
aV0uZnJlZURhdGEocmVzb3VyY2VQcm92aWRlcik7CiB9CiAKIHZvaWQgQ0NWaWRlb0xheWVySW1w
bDo6ZGlkUmVjZWl2ZUZyYW1lKCkKQEAgLTQwMCw3ICszODEsNyBAQCB2b2lkIENDVmlkZW9MYXll
ckltcGw6OmRpZFVwZGF0ZU1hdHJpeChjb25zdCBmbG9hdCBtYXRyaXhbMTZdKQogCiB2b2lkIEND
VmlkZW9MYXllckltcGw6OmRpZExvc2VDb250ZXh0KCkKIHsKLSAgICBmcmVlUGxhbmVEYXRhKGxh
eWVyVHJlZUhvc3RJbXBsKCktPmNvbnRleHQoKSk7CisgICAgZnJlZVBsYW5lRGF0YShsYXllclRy
ZWVIb3N0SW1wbCgpLT5yZXNvdXJjZVByb3ZpZGVyKCkpOwogfQogCiB2b2lkIENDVmlkZW9MYXll
ckltcGw6OnNldE5lZWRzUmVkcmF3KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAppbmRl
eCBjZDVkYjA5YmNkMDU2ZDkwM2I1ZjVjN2JkMzIzODAzZDgzZjU3YzIyLi40Y2Y3Y2FiYjc2ZDkz
Y2VlODkyZjU0M2UyNWJjNDllOTgxNGViNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1w
bC5oCkBAIC01MCw5ICs1MCw5IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NWaWRl
b0xheWVySW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVuZGVyZXIqLCBD
Q0dyYXBoaWNzQ29udGV4dCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhD
Q1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVh
ZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNz
aW5nVGlsZXMpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50
IGluZGVudCkgY29uc3QgT1ZFUlJJREU7CiAKQEAgLTY4LDE1ICs2OCwxNSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXROZWVkc1JlZHJhdygpOwogCiAgICAgc3RydWN0IEZyYW1lUGxhbmUgewotICAg
ICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7CisgICAgICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCByZXNvdXJjZUlkOwogICAgICAgICBJbnRTaXplIHNpemU7CiAgICAgICAgIEdDM0Rl
bnVtIGZvcm1hdDsKICAgICAgICAgSW50U2l6ZSB2aXNpYmxlU2l6ZTsKIAotICAgICAgICBGcmFt
ZVBsYW5lKCkgOiB0ZXh0dXJlSWQoMCkgeyB9CisgICAgICAgIEZyYW1lUGxhbmUoKSA6IHJlc291
cmNlSWQoMCkgeyB9CiAKLSAgICAgICAgYm9vbCBhbGxvY2F0ZURhdGEoQ0NHcmFwaGljc0NvbnRl
eHQqKTsKLSAgICAgICAgdm9pZCBmcmVlRGF0YShDQ0dyYXBoaWNzQ29udGV4dCopOworICAgICAg
ICBib29sIGFsbG9jYXRlRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICAgICAgdm9pZCBm
cmVlRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKICAgICB9OwogCiBwcml2YXRlOgpAQCAtODUs
MTEgKzg1LDExIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEludFNpemUgY29tcHV0ZVZpc2libGVT
aXplKGNvbnN0IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYsIHVuc2lnbmVkIHBsYW5lKTsKICAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gIlZpZGVvTGF5ZXIiOyB9CiAKLSAgICB2b2lkIHdpbGxEcmF3SW50ZXJuYWwoQ0NSZW5k
ZXJlciosIENDR3JhcGhpY3NDb250ZXh0Kik7Ci0gICAgYm9vbCBhbGxvY2F0ZVBsYW5lRGF0YShD
Q1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKTsKLSAgICBib29sIGNvcHlQbGFuZURhdGEo
Q0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0Kik7Ci0gICAgdm9pZCBmcmVlUGxhbmVEYXRh
KENDR3JhcGhpY3NDb250ZXh0Kik7Ci0gICAgdm9pZCBmcmVlVW51c2VkUGxhbmVEYXRhKENDR3Jh
cGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCB3aWxsRHJhd0ludGVybmFsKENDUmVzb3VyY2VQcm92
aWRlciopOworICAgIGJvb2wgYWxsb2NhdGVQbGFuZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKik7
CisgICAgYm9vbCBjb3B5UGxhbmVEYXRhKENDUmVzb3VyY2VQcm92aWRlciopOworICAgIHZvaWQg
ZnJlZVBsYW5lRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICB2b2lkIGZyZWVVbnVzZWRQ
bGFuZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAKICAgICAvLyBHdWFyZHMgdGhlIGRlc3Ry
dWN0aW9uIG9mIG1fcHJvdmlkZXIgYW5kIHRoZSBmcmFtZSB0aGF0IGl0IHByb3ZpZGVzCiAgICAg
TXV0ZXggbV9wcm92aWRlck11dGV4OwpAQCAtOTksNiArOTksNyBAQCBwcml2YXRlOgogCiAgICAg
V2ViS2l0OjpXZWJWaWRlb0ZyYW1lKiBtX2ZyYW1lOwogICAgIEdDM0RlbnVtIG1fZm9ybWF0Owor
ICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX2V4dGVybmFsVGV4dHVyZVJlc291
cmNlOwogCiAgICAgLy8gRWFjaCBpbmRleCBpbiB0aGlzIGFycmF5IGNvcnJlc3BvbmRzIHRvIGEg
cGxhbmUgaW4gV2ViS2l0OjpXZWJWaWRlb0ZyYW1lLgogICAgIEZyYW1lUGxhbmUgbV9mcmFtZVBs
YW5lc1tXZWJLaXQ6OldlYlZpZGVvRnJhbWU6Om1heFBsYW5lc107CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwaQppbmRleCBiZWRlMmIxZTMxZGMwY2JlYzk4YWQyOTIyOWY0YmRlYjA3NzcwMTlj
Li42N2JmZWIyZTM5NjhlZjBlOTFmZTlmOTEzOWY3ZjllYTU3NmExN2Y5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKQEAgLTc4LDYgKzc4LDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9D
Q09jY2x1c2lvblRyYWNrZXJUZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDUXVh
ZEN1bGxlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0
LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5oJywKICAgICAgICAgICAgICd0
ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggYWJmMWVmZjhl
MTExMzRhMDMyNzJkNjVmNTkwNzIwNzBkNDQ1ZDA5OC4uMTA3MjgwZmQ0ODBiNDAwZTg2YzdjODU4
YWJhZDY3Njk4NjNmYjUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTU5OSwxMiArNTk5LDEyIEBA
IGNsYXNzIERpZERyYXdDaGVja0xheWVyIDogcHVibGljIENDVGlsZWRMYXllckltcGwgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPERpZERyYXdDaGVja0xheWVyPiBjcmVhdGUoaW50
IGlkKSB7IHJldHVybiBhZG9wdFB0cihuZXcgRGlkRHJhd0NoZWNrTGF5ZXIoaWQpKTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKQorICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KENDUmVz
b3VyY2VQcm92aWRlciopIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX2RpZERyYXdDYWxsZWQg
PSB0cnVlOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwg
Q0NHcmFwaGljc0NvbnRleHQqKQorICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNl
UHJvdmlkZXIqKSBPVkVSUklERQogICAgIHsKICAgICAgICAgbV93aWxsRHJhd0NhbGxlZCA9IHRy
dWU7CiAgICAgfQpAQCAtNzU0LDE4ICs3NTQsMjAgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBkaWREcmF3Q2FsbGVkT25BbGxMYXllcnMpCiAKIGNsYXNzIE1pc3NpbmdUZXh0dXJl
QW5pbWF0aW5nTGF5ZXIgOiBwdWJsaWMgRGlkRHJhd0NoZWNrTGF5ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI+IGNyZWF0ZShp
bnQgaWQsIGJvb2wgdGlsZU1pc3NpbmcsIGJvb2wgc2tpcHNEcmF3LCBib29sIGFuaW1hdGluZykg
eyByZXR1cm4gYWRvcHRQdHIobmV3IE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIoaWQsIHRp
bGVNaXNzaW5nLCBza2lwc0RyYXcsIGFuaW1hdGluZykpOyB9CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcj4gY3JlYXRlKGludCBpZCwgYm9vbCB0aWxl
TWlzc2luZywgYm9vbCBza2lwc0RyYXcsIGJvb2wgYW5pbWF0aW5nLCBDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBNaXNzaW5nVGV4dHVy
ZUFuaW1hdGluZ0xheWVyKGlkLCB0aWxlTWlzc2luZywgc2tpcHNEcmF3LCBhbmltYXRpbmcsIHJl
c291cmNlUHJvdmlkZXIpKTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1pc3NpbmdUZXh0
dXJlQW5pbWF0aW5nTGF5ZXIoaW50IGlkLCBib29sIHRpbGVNaXNzaW5nLCBib29sIHNraXBzRHJh
dywgYm9vbCBhbmltYXRpbmcpCisgICAgZXhwbGljaXQgTWlzc2luZ1RleHR1cmVBbmltYXRpbmdM
YXllcihpbnQgaWQsIGJvb2wgdGlsZU1pc3NpbmcsIGJvb2wgc2tpcHNEcmF3LCBib29sIGFuaW1h
dGluZywgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgICAgICA6IERp
ZERyYXdDaGVja0xheWVyKGlkKQogICAgIHsKICAgICAgICAgT3duUHRyPENDTGF5ZXJUaWxpbmdE
YXRhPiB0aWxpbmdEYXRhID0gQ0NMYXllclRpbGluZ0RhdGE6OmNyZWF0ZShJbnRTaXplKDEwLCAx
MCksIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAgICAgICAgIHRpbGluZ0Rh
dGEtPnNldEJvdW5kcyhib3VuZHMoKSk7CiAgICAgICAgIHNldFRpbGluZ0RhdGEoKnRpbGluZ0Rh
dGEuZ2V0KCkpOwogICAgICAgICBzZXRTa2lwc0RyYXcoc2tpcHNEcmF3KTsKLSAgICAgICAgaWYg
KCF0aWxlTWlzc2luZykKLSAgICAgICAgICAgIHB1c2hUaWxlUHJvcGVydGllcygwLCAwLCAxLCBJ
bnRSZWN0KCkpOworICAgICAgICBpZiAoIXRpbGVNaXNzaW5nKSB7CisgICAgICAgICAgICBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2UgPSByZXNvdXJjZVByb3ZpZGVyLT5j
cmVhdGVSZXNvdXJjZShDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCwgSW50U2l6ZSgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpBbnkpOworICAgICAgICAgICAg
cHVzaFRpbGVQcm9wZXJ0aWVzKDAsIDAsIHJlc291cmNlLCBJbnRSZWN0KCkpOworICAgICAgICB9
CiAgICAgICAgIGlmIChhbmltYXRpbmcpCiAgICAgICAgICAgICBhZGRBbmltYXRlZFRyYW5zZm9y
bVRvTGF5ZXIoKnRoaXMsIDEwLCAzLCAwKTsKICAgICB9CkBAIC03NzYsNyArNzc4LDcgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVuQW5pbWF0
aW9uVXNlc0NoZWNrZXJib2FyZCkKICAgICAvLyBXaGVuIHRoZSB0ZXh0dXJlIGlzIG5vdCBtaXNz
aW5nLCB3ZSBkcmF3IGFzIHVzdWFsLgogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihEaWRE
cmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsKICAgICBEaWREcmF3Q2hlY2tMYXllciogcm9vdCA9
IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkp
OwotICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0
ZSgyLCBmYWxzZSwgZmFsc2UsIHRydWUpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4
dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMiwgZmFsc2UsIGZhbHNlLCB0cnVlLCBtX2hvc3RJ
bXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZy
YW1lRGF0YSBmcmFtZTsKIApAQCAtNzg3LDcgKzc4OSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgcHJlcGFyZVRvRHJhd0ZhaWxzV2hlbkFuaW1hdGlvblVzZXNDaGVja2VyYm9h
cmQpCiAgICAgLy8gV2hlbiBhIHRleHR1cmUgaXMgbWlzc2luZyBhbmQgd2UncmUgbm90IGFuaW1h
dGluZywgd2UgZHJhdyBhcyB1c3VhbCB3aXRoIGNoZWNrZXJib2FyZGluZy4KICAgICBtX2hvc3RJ
bXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgxKSk7CiAgICAgcm9v
dCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVy
KCkpOwotICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNy
ZWF0ZSgyLCB0cnVlLCBmYWxzZSwgZmFsc2UpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5n
VGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBtX2hv
c3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpKTsKIAogICAgIEVYUEVDVF9UUlVFKG1faG9zdElt
cGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZy
YW1lKTsKQEAgLTc5Niw3ICs3OTgsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qs
IHByZXBhcmVUb0RyYXdGYWlsc1doZW5BbmltYXRpb25Vc2VzQ2hlY2tlcmJvYXJkKQogICAgIC8v
IFdoZW4gYSB0ZXh0dXJlIGlzIG1pc3NpbmcgYW5kIHdlJ3JlIGFuaW1hdGluZywgd2UgZG9uJ3Qg
d2FudCB0byBkcmF3IGFueXRoaW5nLgogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihEaWRE
cmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsKICAgICByb290ID0gc3RhdGljX2Nhc3Q8RGlkRHJh
d0NoZWNrTGF5ZXIqPihtX2hvc3RJbXBsLT5yb290TGF5ZXIoKSk7Ci0gICAgcm9vdC0+YWRkQ2hp
bGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6Y3JlYXRlKDIsIHRydWUsIGZhbHNlLCB0
cnVlKSk7CisgICAgcm9vdC0+YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6
Y3JlYXRlKDIsIHRydWUsIGZhbHNlLCB0cnVlLCBtX2hvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVy
KCkpKTsKIAogICAgIEVYUEVDVF9GQUxTRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1l
KSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CkBAIC04MDUsNyArODA3LDcg
QEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVu
QW5pbWF0aW9uVXNlc0NoZWNrZXJib2FyZCkKICAgICAvLyBXaGVuIHRoZSBsYXllciBza2lwcyBk
cmF3IGFuZCB3ZSdyZSBhbmltYXRpbmcsIHdlIHN0aWxsIGRyYXcgdGhlIGZyYW1lLgogICAgIG1f
aG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsKICAg
ICByb290ID0gc3RhdGljX2Nhc3Q8RGlkRHJhd0NoZWNrTGF5ZXIqPihtX2hvc3RJbXBsLT5yb290
TGF5ZXIoKSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXll
cjo6Y3JlYXRlKDIsIGZhbHNlLCB0cnVlLCB0cnVlKSk7CisgICAgcm9vdC0+YWRkQ2hpbGQoTWlz
c2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6Y3JlYXRlKDIsIGZhbHNlLCB0cnVlLCB0cnVlLCBt
X2hvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpKTsKIAogICAgIEVYUEVDVF9UUlVFKG1faG9z
dEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KGZyYW1lKTsKQEAgLTExMzAsNyArMTEzMiw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEJsZW5kU3Rh
dGVDaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4g
YWRvcHRQdHIobmV3IEJsZW5kU3RhdGVDaGVja0xheWVyKGlkKSk7IH0KKyAgICBzdGF0aWMgUGFz
c093blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gY3JlYXRlKGludCBpZCwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQmxlbmRTdGF0
ZUNoZWNrTGF5ZXIoaWQsIHJlc291cmNlUHJvdmlkZXIpKTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKSBPVkVSUklERQogICAgIHsKQEAgLTExNDEsNyAr
MTE0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9wYXF1ZVJlY3QgPSBtX3F1YWRSZWN0Owog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBvcGFxdWVSZWN0ID0gbV9vcGFxdWVDb250ZW50UmVj
dDsKLSAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IHRlc3RCbGVuZGluZ0RyYXdRdWFkID0gQ0NU
aWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIG1fcXVhZFJlY3QsIG9wYXF1ZVJl
Y3QsIDAsIEludFBvaW50KCksIEludFNpemUoMSwgMSksIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSk7CisgICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0QmxlbmRpbmdE
cmF3UXVhZCA9IENDVGlsZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBtX3F1YWRS
ZWN0LCBvcGFxdWVSZWN0LCBtX3Jlc291cmNlSWQsIEludFBvaW50KCksIEludFNpemUoMSwgMSks
IDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIHRlc3RCbGVu
ZGluZ0RyYXdRdWFkLT5zZXRRdWFkVmlzaWJsZVJlY3QobV9xdWFkVmlzaWJsZVJlY3QpOwogICAg
ICAgICBFWFBFQ1RfRVEobV9ibGVuZCwgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPm5lZWRzQmxlbmRp
bmcoKSk7CiAgICAgICAgIEVYUEVDVF9FUShtX2hhc1JlbmRlclN1cmZhY2UsICEhcmVuZGVyU3Vy
ZmFjZSgpKTsKQEAgLTExNjMsNyArMTE2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9wYXF1
ZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9vcGFxdWVDb250ZW50UmVjdCA9
IHJlY3Q7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBCbGVuZFN0YXRlQ2hlY2tMYXllcihp
bnQgaWQpCisgICAgZXhwbGljaXQgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaW50IGlkLCBDQ1Jlc291
cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiAgICAgICAgIDogQ0NMYXllckltcGwoaWQp
CiAgICAgICAgICwgbV9ibGVuZChmYWxzZSkKICAgICAgICAgLCBtX2hhc1JlbmRlclN1cmZhY2Uo
ZmFsc2UpCkBAIC0xMTcxLDYgKzExNzMsNyBAQCBwcml2YXRlOgogICAgICAgICAsIG1fb3BhcXVl
Q29udGVudHMoZmFsc2UpCiAgICAgICAgICwgbV9xdWFkUmVjdCg1LCA1LCA1LCA1KQogICAgICAg
ICAsIG1fcXVhZFZpc2libGVSZWN0KDUsIDUsIDUsIDUpCisgICAgICAgICwgbV9yZXNvdXJjZUlk
KHJlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlKENDUmVuZGVyZXI6OkNvbnRlbnRQb29s
LCBJbnRTaXplKDEsIDEpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpBbnkpKQogICAgIHsKICAgICAgICAgc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAw
KSk7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwpAQCAtMTE4NSw2ICsxMTg4
LDcgQEAgcHJpdmF0ZToKICAgICBJbnRSZWN0IG1fcXVhZFJlY3Q7CiAgICAgSW50UmVjdCBtX29w
YXF1ZUNvbnRlbnRSZWN0OwogICAgIEludFJlY3QgbV9xdWFkVmlzaWJsZVJlY3Q7CisgICAgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKIH07CiAKIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVy
cykKQEAgLTExOTksNyArMTIwMyw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
YmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICB9CiAgICAgQ0NMYXllcklt
cGwqIHJvb3QgPSBtX2hvc3RJbXBsLT5yb290TGF5ZXIoKTsKIAotICAgIHJvb3QtPmFkZENoaWxk
KEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMikpOworICAgIHJvb3QtPmFkZENoaWxkKEJs
ZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMiwgbV9ob3N0SW1wbC0+cmVzb3VyY2VQcm92aWRl
cigpKSk7CiAgICAgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIqIGxheWVyMSA9IHN0YXRpY19jYXN0PEJs
ZW5kU3RhdGVDaGVja0xheWVyKj4ocm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKSk7CiAgICAgbGF5
ZXIxLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDIsIDIpKTsKIApAQCAtMTI1Miw3ICsxMjU2LDcg
QEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5n
T3BhcXVlTGF5ZXJzKQogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsK
ICAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKIAotICAgIGxheWVyMS0+
YWRkQ2hpbGQoQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgzKSk7CisgICAgbGF5ZXIxLT5h
ZGRDaGlsZChCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDMsIG1faG9zdEltcGwtPnJlc291
cmNlUHJvdmlkZXIoKSkpOwogICAgIEJsZW5kU3RhdGVDaGVja0xheWVyKiBsYXllcjIgPSBzdGF0
aWNfY2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KGxheWVyMS0+Y2hpbGRyZW4oKVswXS5nZXQo
KSk7CiAgICAgbGF5ZXIyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDQsIDQpKTsKIApAQCAtMTQx
Myw3ICsxNDE3LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB2aWV3cG9ydENv
dmVyZWQpCiAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUoMTAwMCwgMTAwMCk7CiAgICAgbV9ob3N0
SW1wbC0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CiAKLSAgICBtX2hvc3RJbXBsLT5z
ZXRSb290TGF5ZXIoQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgxKSk7CisgICAgbV9ob3N0
SW1wbC0+c2V0Um9vdExheWVyKEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMSwgbV9ob3N0
SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKSk7CiAgICAgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIqIHJv
b3QgPSBzdGF0aWNfY2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RM
YXllcigpKTsKICAgICByb290LT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgdHJ1ZSk7CiAgICAgcm9v
dC0+c2V0T3BhcXVlKHRydWUpOwpAQCAtMjg5OCw5ICsyOTAyLDkgQEAgcHJvdGVjdGVkOgogCiBj
bGFzcyBDQ1Rlc3RSZW5kZXJlciA6IHB1YmxpYyBMYXllclJlbmRlcmVyQ2hyb21pdW0sIHB1Ymxp
YyBDQ1JlbmRlcmVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Rl
c3RSZW5kZXJlcj4gY3JlYXRlKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQp
CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUZXN0UmVuZGVyZXI+IGNyZWF0ZShDQ1Jlc291cmNl
UHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiAgICAgewotICAgICAgICBPd25QdHI8Q0NUZXN0
UmVuZGVyZXI+IHJlbmRlcmVyKGFkb3B0UHRyKG5ldyBDQ1Rlc3RSZW5kZXJlcihjb250ZXh0KSkp
OworICAgICAgICBPd25QdHI8Q0NUZXN0UmVuZGVyZXI+IHJlbmRlcmVyKGFkb3B0UHRyKG5ldyBD
Q1Rlc3RSZW5kZXJlcihyZXNvdXJjZVByb3ZpZGVyKSkpOwogICAgICAgICBpZiAoIXJlbmRlcmVy
LT5pbml0aWFsaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjkyMiw3
ICsyOTI2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlBbGxvY2F0aW9u
TGltaXRCeXRlcyhzaXplX3QpIE9WRVJSSURFIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ0NUZXN0
UmVuZGVyZXIoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkgOiBMYXllclJl
bmRlcmVyQ2hyb21pdW0odGhpcywgY29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcikgeyB9Cisg
ICAgQ0NUZXN0UmVuZGVyZXIoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKSA6
IExheWVyUmVuZGVyZXJDaHJvbWl1bSh0aGlzLCByZXNvdXJjZVByb3ZpZGVyLCBVbnRocm90dGxl
ZFVwbG9hZGVyKSB7IH0KIAogcHJpdmF0ZToKICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIG1fc2V0
dGluZ3M7CkBAIC0zMjE1LDkgKzMyMTksMTAgQEAgc3RhdGljIHZvaWQgdmVyaWZ5UmVuZGVyUGFz
c1Rlc3REYXRhKFRlc3RDYXNlJiB0ZXN0Q2FzZSwgUmVuZGVyUGFzc1JlbW92YWxUZXN0RGEKIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGVzdFJlbW92ZVJlbmRlclBhc3NlcykKIHsK
ICAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQoY3JlYXRlQ29udGV4dCgpKTsK
LSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5j
b250ZXh0M0QoKTsKLSAgICBBU1NFUlRfVFJVRShjb250ZXh0M2QpOwotICAgIE93blB0cjxDQ1Rl
c3RSZW5kZXJlcj4gcmVuZGVyZXIoQ0NUZXN0UmVuZGVyZXI6OmNyZWF0ZShjb250ZXh0M2QpKTsK
KyAgICBBU1NFUlRfVFJVRShjb250ZXh0LT5jb250ZXh0M0QoKSk7CisgICAgT3duUHRyPENDUmVz
b3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0
ZShjb250ZXh0LmdldCgpKSk7CisKKyAgICBPd25QdHI8Q0NUZXN0UmVuZGVyZXI+IHJlbmRlcmVy
KENDVGVzdFJlbmRlcmVyOjpjcmVhdGUocmVzb3VyY2VQcm92aWRlci5nZXQoKSkpOwogCiAgICAg
aW50IHRlc3RDYXNlSW5kZXggPSAwOwogICAgIHdoaWxlIChyZW1vdmVSZW5kZXJQYXNzZXNDYXNl
c1t0ZXN0Q2FzZUluZGV4XS5uYW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAKaW5kZXggNDY4YWYzNmJi
YTUwZTNlZTgxNjVmM2FjYWM3NGUxZTQ5ZjZmOTU1OS4uOWQ1MDQ4Nzk2YTViZjE0M2JhMDg2ZTQ2
ZjBhNDcxZmVmOGY1NjI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgImNjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgiCiAKICNpbmNsdWRlICJDQ1RpbGVk
TGF5ZXJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiRmFrZUNDR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KIApAQCAtNDEsNiArNDIsOCBAQCBwdWJsaWM6CiAgICAgQ0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0KCkKICAgICAgICAgOiBtX3RleHR1cmVTaXplKDI1NiwgMjU2KQogICAgICAg
ICAsIG1fdGV4dHVyZUZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkKKyAgICAgICAgLCBt
X2NvbnRleHQoV2ViS2l0OjpjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRleHQoKSkKKyAgICAgICAg
LCBtX3Jlc291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0
LmdldCgpKSkKICAgICB7CiAgICAgfQogCkBAIC01NSw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAg
IFBhc3NPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiBjcmVhdGVNYW5hZ2VyKHNp
emVfdCBtYXhUZXh0dXJlcykKICAgICB7Ci0gICAgICAgIHJldHVybiBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCAxMDI0
KTsKKyAgICAgICAgcmV0dXJuIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKHRl
eHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIDEwMjQsIDApOwogICAgIH0KIAogICAgIGJv
b2wgdmFsaWRhdGVUZXh0dXJlKE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4mIHRleHR1cmUs
IGJvb2wgcmVxdWVzdExhdGUpCkBAIC02NywxOSArNzAsMjAgQEAgcHVibGljOgogICAgICAgICAg
ICAgdGV4dHVyZS0+cmVxdWVzdExhdGUoKTsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gdGV4dHVy
ZS0+Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCk7CiAgICAgICAgIGlmIChzdWNjZXNzKQotICAg
ICAgICAgICAgdGV4dHVyZS0+YWNxdWlyZUJhY2tpbmdUZXh0dXJlKGFsbG9jYXRvcigpKTsKKyAg
ICAgICAgICAgIHRleHR1cmUtPmFjcXVpcmVCYWNraW5nVGV4dHVyZShyZXNvdXJjZVByb3ZpZGVy
KCkpOwogICAgICAgICByZXR1cm4gc3VjY2VzczsKICAgICB9CiAKLSAgICBGYWtlVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yKCkKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIoKQogICAgIHsKLSAgICAgICByZXR1cm4gJm1fZmFrZVRleHR1cmVBbGxvY2F0b3I7Cisg
ICAgICAgcmV0dXJuIG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKTsKICAgICB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciBtX2Zha2VUZXh0dXJlQWxsb2NhdG9yOwogICAg
IGNvbnN0IEludFNpemUgbV90ZXh0dXJlU2l6ZTsKICAgICBjb25zdCBHQzNEZW51bSBtX3RleHR1
cmVGb3JtYXQ7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CisgICAg
T3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gbV9yZXNvdXJjZVByb3ZpZGVyOwogfTsKIAogVEVT
VF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRpbmdNYXhM
aW1pdCkKQEAgLTExOCw3ICsxMjIsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0
LCByZXF1ZXN0VGV4dHVyZUV4Y2VlZGluZ01heExpbWl0KQogICAgIEVYUEVDVF9FUSh0ZXh0dXJl
c01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRv
ZmZCeXRlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVz
KCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAgdGV4
dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICB0ZXh0dXJlTWFu
YWdlci0+Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKIH0KIAogVEVTVF9GKEND
UHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5TGltaXRzKQpAQCAtMTM3LDcgKzE0
MSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIGNoYW5nZU1lbW9yeUxpbWl0
cykKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkKICAgICAgICAgdmFsaWRhdGVUZXh0
dXJlKHRleHR1cmVzW2ldLCBmYWxzZSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9y
eShhbGxvY2F0b3IoKSk7CisgICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeShyZXNvdXJj
ZVByb3ZpZGVyKCkpOwogCiAgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg4KSwgdGV4
dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRl
eHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJv
dmVDdXRvZmZCeXRlcygpKTsKQEAgLTE0Nyw3ICsxNTEsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0LCBjaGFuZ2VNZW1vcnlMaW1pdHMpCiAgICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygwKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1
cmVzOyArK2kpCiAgICAgICAgIEVYUEVDVF9FUSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0s
IGZhbHNlKSwgaSA8IDUpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoYWxsb2Nh
dG9yKCkpOworICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkocmVzb3VyY2VQcm92aWRl
cigpKTsKIAogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNSksIHRleHR1cmVNYW5h
Z2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFu
YWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2Zm
Qnl0ZXMoKSk7CkBAIC0xNTcsMTIgKzE2MSwxMiBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1
cmVUZXN0LCBjaGFuZ2VNZW1vcnlMaW1pdHMpCiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygwKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyAr
K2kpCiAgICAgICAgIEVYUEVDVF9FUSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZhbHNl
KSwgaSA8IDQpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoYWxsb2NhdG9yKCkp
OworICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsK
IAogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5t
ZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+
bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMo
KSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOwor
ICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwog
fQogCiBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlclBhcnRp
YWxVcGRhdGVUZXh0dXJlcykKQEAgLTIyMSw3ICsyMjUsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlclBhcnRpYWxVcGRhdGVUZXh0dXJlcykKICAgICBF
WFBFQ1RfRkFMU0UodGV4dHVyZXNbMl0tPmhhdmVCYWNraW5nVGV4dHVyZSgpKTsKICAgICBFWFBF
Q1RfRkFMU0UodGV4dHVyZXNbM10tPmhhdmVCYWNraW5nVGV4dHVyZSgpKTsKIAotICAgIHRleHR1
cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CisgICAgdGV4dHVyZU1hbmFn
ZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKIFRFU1RfRihDQ1By
aW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5hZ2VyUHJpb3JpdGllc0FyZUVxdWFsKQpA
QCAtMjYwLDcgKzI2NCw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1
cmVNYW5hZ2VyUHJpb3JpdGllc0FyZUVxdWFsKQogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9y
eVNpemUoOCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogICAg
IEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFn
ZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+Y2xl
YXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1l
bW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwogfQogCiBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1
cmVUZXN0LCB0ZXh0dXJlTWFuYWdlckRlc3Ryb3llZEZpcnN0KQpAQCAtMjc4LDcgKzI4Miw3IEBA
IFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5hZ2VyRGVzdHJveWVk
Rmlyc3QpCiAgICAgRVhQRUNUX1RSVUUodGV4dHVyZS0+Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJl
KCkpOwogICAgIEVYUEVDVF9UUlVFKHRleHR1cmUtPmhhdmVCYWNraW5nVGV4dHVyZSgpKTsKIAot
ICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CisgICAgdGV4
dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiAgICAgdGV4
dHVyZU1hbmFnZXIuY2xlYXIoKTsKIAogICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlLT5jYW5BY3F1
aXJlQmFja2luZ1RleHR1cmUoKSk7CkBAIC0zMDMsNyArMzA3LDcgQEAgVEVTVF9GKENDUHJpb3Jp
dGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1vdmVkVG9OZXdNYW5hZ2VyKQogCiAgICAgdGV4dHVy
ZS0+c2V0VGV4dHVyZU1hbmFnZXIoMCk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlck9uZS0+Y2xlYXJB
bGxNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIHRleHR1cmVNYW5hZ2VyT25lLT5jbGVhckFsbE1l
bW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwogICAgIHRleHR1cmVNYW5hZ2VyT25lLmNsZWFyKCk7
CiAKICAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZS0+Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkp
OwpAQCAtMzE3LDcgKzMyMSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRl
eHR1cmVNb3ZlZFRvTmV3TWFuYWdlcikKICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlLT5jYW5BY3F1
aXJlQmFja2luZ1RleHR1cmUoKSk7CiAgICAgRVhQRUNUX1RSVUUodGV4dHVyZS0+aGF2ZUJhY2tp
bmdUZXh0dXJlKCkpOwogCi0gICAgdGV4dHVyZU1hbmFnZXJUd28tPmNsZWFyQWxsTWVtb3J5KGFs
bG9jYXRvcigpKTsKKyAgICB0ZXh0dXJlTWFuYWdlclR3by0+Y2xlYXJBbGxNZW1vcnkocmVzb3Vy
Y2VQcm92aWRlcigpKTsKIH0KIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVu
ZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVPdXRzaWRlUm9vdFN1cmZhY2UpCkBAIC0z
NjAsNyArMzY0LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3Vy
ZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVPdXRzaWRlUm9vdFMKICAgICBFWFBFQ1RfRVEodGV4
dHVyZXNNZW1vcnlTaXplKDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yUmVuZGVyU3VyZmFj
ZXNCeXRlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVz
KCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAgdGV4
dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICB0ZXh0dXJlTWFu
YWdlci0+Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKIH0KIAogVEVTVF9GKEND
UHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFi
bGVGb3JSZXF1ZXN0TGF0ZSkKQEAgLTM5NCw3ICszOTgsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZUZvclJlcXVl
c3RMYQogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2Vy
LT5tZW1vcnlGb3JSZW5kZXJTdXJmYWNlc0J5dGVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJl
TWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0
b2ZmQnl0ZXMoKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2Nh
dG9yKCkpOworICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3Zp
ZGVyKCkpOwogfQogCiBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB3aGVuUmVuZGVy
U3VyZmFjZU5vdEF2YWlsYWJsZVRleHR1cmVzQWxzb05vdEF2YWlsYWJsZSkKQEAgLTQzMSw3ICs0
MzUsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB3aGVuUmVuZGVyU3VyZmFj
ZU5vdEF2YWlsYWJsZVRleHR1cmVzQWxzb05vdEF2YQogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01l
bW9yeVNpemUoMiksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JSZW5kZXJTdXJmYWNlc0J5dGVz
KCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4
dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKLSAgICB0ZXh0dXJlTWFu
YWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIHRleHR1cmVNYW5hZ2VyLT5j
bGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAK
aW5kZXggNjI0ZDI0NzExNDlhYjA2YzY4ODJkOGQ2YmM4Yjk5YzhmOGVmOTI5ZC4uNjczOWNhMzA1
OTA3NGQ1MDkzOTY0NmQ3YzE2ZmQwY2Y3MjVlYjgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC03MSwxMSArNzEsMTEgQEAg
c3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVyKENDVGlsZWRMYXll
ckltcGwqIHBhcmVudCwgY29uc3QgV2UKICAgICBsYXllci0+c2V0RHJhd09wYWNpdHkob3BhY2l0
eSk7CiAgICAgbGF5ZXItPnNldE9wYXF1ZShvcGFxdWUpOwogCi0gICAgaW50IHRleHR1cmVJZCA9
IDE7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQgPSAxOwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGlsZXItPm51bVRpbGVzWCgpOyArK2kpCiAgICAgICAg
IGZvciAoaW50IGogPSAwOyBqIDwgdGlsZXItPm51bVRpbGVzWSgpOyArK2opIHsKICAgICAgICAg
ICAgIEludFJlY3QgdGlsZU9wYXF1ZVJlY3QgPSBvcGFxdWUgPyB0aWxlci0+dGlsZUJvdW5kcyhp
LCBqKSA6IGludGVyc2VjdGlvbih0aWxlci0+dGlsZUJvdW5kcyhpLCBqKSwgbGF5ZXJPcGFxdWVS
ZWN0KTsKLSAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgc3RhdGlj
X2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4odGV4dHVyZUlkKyspLCB0aWxlT3BhcXVlUmVjdCk7Cisg
ICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHJlc291cmNlSWQrKywg
dGlsZU9wYXF1ZVJlY3QpOwogICAgICAgICB9CiAKICAgICBpZiAoIXBhcmVudCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZXNvdXJjZVByb3ZpZGVyVGVz
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDRhZDk4ZWYyZGZhZDgzZDQ4ZmY0NjQzYWU0NmU2Y2RkZWVmMjk3
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZXNv
dXJjZVByb3ZpZGVyVGVzdC5jcHAKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRlci5oIgor
CisjaW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1
ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFw
aGljc0NvbnRleHQzRC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L093bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2Ns
YXNzIFJlc291cmNlUHJvdmlkZXJDb250ZXh0IDogcHVibGljIENvbXBvc2l0b3JGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlc291cmNl
UHJvdmlkZXJDb250ZXh0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgUmVzb3VyY2VQ
cm92aWRlckNvbnRleHQoQXR0cmlidXRlcygpKSk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBiaW5k
VGV4dHVyZShXR0MzRGVudW0gdGFyZ2V0LCBXZWJHTElkIHRleHR1cmUpCisgICAgeworICAgICAg
QVNTRVJUKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCk7CisgICAgICBB
U1NFUlQoIXRleHR1cmUgfHwgbV90ZXh0dXJlcy5maW5kKHRleHR1cmUpICE9IG1fdGV4dHVyZXMu
ZW5kKCkpOworICAgICAgbV9jdXJyZW50VGV4dHVyZSA9IHRleHR1cmU7CisgICAgfQorICAgIAor
ICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVUZXh0dXJlKCkKKyAgICB7CisgICAgICAgIFdlYkdM
SWQgaWQgPSBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJl
KCk7CisgICAgICAgIG1fdGV4dHVyZXMuYWRkKGlkLCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJu
IGlkOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKFdlYkdMSWQgaWQp
CisgICAgeworICAgICAgICBUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuZmlu
ZChpZCk7CisgICAgICAgIEFTU0VSVChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKTsKKyAgICAgICAg
bV90ZXh0dXJlcy5yZW1vdmUoaXQpOworICAgICAgICBpZiAobV9jdXJyZW50VGV4dHVyZSA9PSBp
ZCkKKyAgICAgICAgICAgIG1fY3VycmVudFRleHR1cmUgPSAwOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCB0ZXhTdG9yYWdlMkRFWFQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWxz
LCBXR0MzRHVpbnQgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXR0MzRGludCB3aWR0aCwgV0dDM0RpbnQgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fY3VycmVudFRleHR1cmUpOworICAgICAgICBBU1NFUlQodGFyZ2V0ID09IEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJEKTsKKyAgICAgICAgQVNTRVJUKGxldmVscyA9PSAxKTsKKyAg
ICAgICAgV0dDM0RlbnVtIGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOyAKKyAgICAg
ICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkgeworICAgICAgICBjYXNlIEV4dGVuc2lvbnMzRDo6
UkdCQThfT0VTOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXh0ZW5zaW9uczNE
Q2hyb21pdW06OkJHUkE4X0VYVDoKKyAgICAgICAgICAgIGZvcm1hdCA9IEV4dGVuc2lvbnMzRDo6
QkdSQV9FWFQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlQoZmFsc2UpOwor
ICAgICAgICB9CisgICAgICAgIGFsbG9jYXRlVGV4dHVyZShJbnRTaXplKHdpZHRoLCBoZWlnaHQp
LCBmb3JtYXQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEKFdHQzNEZW51
bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIFdHQzNE
c2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3JkZXIsIFdHQzNEZW51
bSBmb3JtYXQsIFdHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZSk7CisgICAgICAgIEFTU0VSVCh0YXJnZXQgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpOworICAgICAgICBBU1NFUlQoIWxldmVsKTsK
KyAgICAgICAgQVNTRVJUKGludGVybmFsZm9ybWF0ID09IGZvcm1hdCk7CisgICAgICAgIEFTU0VS
VCghYm9yZGVyKTsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX0JZVEUpOworICAgICAgICBhbGxvY2F0ZVRleHR1cmUoSW50U2l6ZSh3aWR0aCwgaGVp
Z2h0KSwgZm9ybWF0KTsKKyAgICAgICAgaWYgKHBpeGVscykKKyAgICAgICAgICAgIHNldFBpeGVs
cygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBwaXhlbHMpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCB0ZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGlu
dCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVp
IGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBp
eGVscykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlKTsKKyAgICAgICAg
QVNTRVJUKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCk7CisgICAgICAg
IEFTU0VSVCghbGV2ZWwpOworICAgICAgICBBU1NFUlQobV90ZXh0dXJlcy5nZXQobV9jdXJyZW50
VGV4dHVyZSkpOworICAgICAgICBBU1NFUlQobV90ZXh0dXJlcy5nZXQobV9jdXJyZW50VGV4dHVy
ZSktPmZvcm1hdCA9PSBmb3JtYXQpOworICAgICAgICBBU1NFUlQodHlwZSA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfQllURSk7CisgICAgICAgIEFTU0VSVChwaXhlbHMpOworICAgICAg
ICBzZXRQaXhlbHMoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgcGl4ZWxzKTsKKyAg
ICB9CisKKyAgICB2b2lkIGdldFBpeGVscyhjb25zdCBJbnRTaXplJiBzaXplLCBXR0MzRGVudW0g
Zm9ybWF0LCB1aW50OF90KiBwaXhlbHMpCisgICAgeworICAgICAgICBBU1NFUlQobV9jdXJyZW50
VGV4dHVyZSk7CisgICAgICAgIFRleHR1cmUqIHRleHR1cmUgPSBtX3RleHR1cmVzLmdldChtX2N1
cnJlbnRUZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUKHRleHR1cmUpOworICAgICAgICBBU1NFUlQo
dGV4dHVyZS0+c2l6ZSA9PSBzaXplKTsKKyAgICAgICAgQVNTRVJUKHRleHR1cmUtPmZvcm1hdCA9
PSBmb3JtYXQpOworICAgICAgICBtZW1jcHkocGl4ZWxzLCB0ZXh0dXJlLT5kYXRhLmdldCgpLCB0
ZXh0dXJlU2l6ZShzaXplLCBmb3JtYXQpKTsKKyAgICB9CisKKyAgICBpbnQgdGV4dHVyZUNvdW50
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3RleHR1cmVzLnNpemUoKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgc2l6ZV90IHRleHR1cmVTaXplKGNvbnN0IEludFNpemUmIHNpemUsIFdHQzNEZW51
bSBmb3JtYXQpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgY29tcG9uZW50c1BlclBpeGVs
ID0gNDsKKyAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVzUGVyQ29tcG9uZW50ID0gMTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhmb3Jt
YXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAmY29tcG9uZW50c1BlclBpeGVs
LCAmYnl0ZXNQZXJDb21wb25lbnQpOworICAgICAgICByZXR1cm4gc2l6ZS53aWR0aCgpICogc2l6
ZS5oZWlnaHQoKSAqIGNvbXBvbmVudHNQZXJQaXhlbCAqIGJ5dGVzUGVyQ29tcG9uZW50OworICAg
IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFJlc291cmNlUHJvdmlkZXJDb250ZXh0KGNv
bnN0IEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgICAgICA6IENvbXBvc2l0b3JGYWtlV2ViR3JhcGhp
Y3NDb250ZXh0M0QoYXR0cnMpCisgICAgICAgICwgbV9jdXJyZW50VGV4dHVyZSgwKQorICAgIHsg
fQorCitwcml2YXRlOgorICAgIHN0cnVjdCBUZXh0dXJlIHsKKyAgICAgICAgVGV4dHVyZShjb25z
dCBJbnRTaXplJiBzaXplXywgV0dDM0RlbnVtIGZvcm1hdF8pCisgICAgICAgICAgICA6IHNpemUo
c2l6ZV8pCisgICAgICAgICAgICAsIGZvcm1hdChmb3JtYXRfKQorICAgICAgICAgICAgLCBkYXRh
KGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbdGV4dHVyZVNpemUoc2l6ZSwgZm9ybWF0KV0pKQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBJbnRTaXplIHNpemU7CisgICAgICAgIFdH
QzNEZW51bSBmb3JtYXQ7CisgICAgICAgIE93bkFycmF5UHRyPHVpbnQ4X3Q+IGRhdGE7CisgICAg
fTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHZvaWQgYWxsb2NhdGVUZXh0dXJlKGNv
bnN0IEludFNpemUmIHNpemUsIFdHQzNEZW51bSBmb3JtYXQpCisgICAgeworICAgICAgICBBU1NF
UlQobV9jdXJyZW50VGV4dHVyZSk7CisgICAgICAgIG1fdGV4dHVyZXMuc2V0KG1fY3VycmVudFRl
eHR1cmUsIGFkb3B0UHRyKG5ldyBUZXh0dXJlKHNpemUsIGZvcm1hdCkpKTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldFBpeGVscyhpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB3aWR0aCwgaW50
IGhlaWdodCwgY29uc3Qgdm9pZCogcGl4ZWxzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY3Vy
cmVudFRleHR1cmUpOworICAgICAgICBUZXh0dXJlKiB0ZXh0dXJlID0gbV90ZXh0dXJlcy5nZXQo
bV9jdXJyZW50VGV4dHVyZSk7CisgICAgICAgIEFTU0VSVCh0ZXh0dXJlKTsKKyAgICAgICAgQVNT
RVJUKHhvZmZzZXQgPj0gMCAmJiB4b2Zmc2V0K3dpZHRoIDw9IHRleHR1cmUtPnNpemUud2lkdGgo
KSk7CisgICAgICAgIEFTU0VSVCh5b2Zmc2V0ID49IDAgJiYgeW9mZnNldCtoZWlnaHQgPD0gdGV4
dHVyZS0+c2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIEFTU0VSVChwaXhlbHMpOworICAgICAgICBz
aXplX3QgaW5QaXRjaCA9IHRleHR1cmVTaXplKEludFNpemUod2lkdGgsIDEpLCB0ZXh0dXJlLT5m
b3JtYXQpOworICAgICAgICBzaXplX3Qgb3V0UGl0Y2ggPSB0ZXh0dXJlU2l6ZShJbnRTaXplKHRl
eHR1cmUtPnNpemUud2lkdGgoKSwgMSksIHRleHR1cmUtPmZvcm1hdCk7CisgICAgICAgIHVpbnQ4
X3QqIGRlc3QgPSB0ZXh0dXJlLT5kYXRhLmdldCgpICsgeW9mZnNldCAqIG91dFBpdGNoICsgdGV4
dHVyZVNpemUoSW50U2l6ZSh4b2Zmc2V0LCAxKSwgdGV4dHVyZS0+Zm9ybWF0KTsKKyAgICAgICAg
Y29uc3QgdWludDhfdCogc3JjID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscyk7
CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGVpZ2h0OyArK2kpIHsKKyAgICAgICAgICAg
IG1lbWNweShkZXN0LCBzcmMsIGluUGl0Y2gpOworICAgICAgICAgICAgZGVzdCArPSBvdXRQaXRj
aDsKKyAgICAgICAgICAgIHNyYyArPSBpblBpdGNoOworICAgICAgICB9CisgICAgfQorCisgICAg
dHlwZWRlZiBIYXNoTWFwPFdlYkdMSWQsIE93blB0cjxUZXh0dXJlPiA+IFRleHR1cmVNYXA7Cisg
ICAgV2ViR0xJZCBtX2N1cnJlbnRUZXh0dXJlOworICAgIFRleHR1cmVNYXAgbV90ZXh0dXJlczsK
K307CisKK2NsYXNzIENDUmVzb3VyY2VQcm92aWRlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CitwdWJsaWM6CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCgpCisgICAgICAgIDogbV9j
b250ZXh0KENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChSZXNvdXJjZVByb3ZpZGVyQ29udGV4
dDo6Y3JlYXRlKCkpKQorICAgICAgICAsIG1fcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJv
dmlkZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpKQorICAgIHsKKyAgICB9CisKKyAgICBSZXNv
dXJjZVByb3ZpZGVyQ29udGV4dCogY29udGV4dCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc291
cmNlUHJvdmlkZXJDb250ZXh0Kj4obV9jb250ZXh0LT5jb250ZXh0M0QoKSk7IH0KKworICAgIHZv
aWQgZ2V0UmVzb3VyY2VQaXhlbHMoQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkLCBj
b25zdCBJbnRTaXplJiBzaXplLCBXR0MzRGVudW0gZm9ybWF0LCB1aW50OF90KiBwaXhlbHMpCisg
ICAgeworICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlID0gbV9yZXNvdXJjZVByb3ZpZGVyLT5iZWdp
blJlbmRlckZyb20oaWQpOworICAgICAgICBBU1NFUlRfTkUoMFUsIHRleHR1cmUpOworICAgICAg
ICBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0
ZXh0dXJlKTsKKyAgICAgICAgY29udGV4dCgpLT5nZXRQaXhlbHMoc2l6ZSwgZm9ybWF0LCBwaXhl
bHMpOworICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXItPmVuZFJlbmRlckZyb20oaWQpOworICAg
IH0KKworcHJvdGVjdGVkOgorICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0
OworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKK307
CisKK1RFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBCYXNpYykKK3sKKyAgICBJbnRTaXpl
IHNpemUoMSwgMSk7CisgICAgV0dDM0RlbnVtIGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBOworICAgIGludCBwb29sID0gMTsKKyAgICBzaXplX3QgcGl4ZWxTaXplID0gUmVzb3VyY2VQ
cm92aWRlckNvbnRleHQ6OnRleHR1cmVTaXplKHNpemUsIGZvcm1hdCk7CisgICAgQVNTRVJUX0VR
KDRVLCBwaXhlbFNpemUpOworCisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlk
ID0gbV9yZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShwb29sLCBzaXplLCBmb3JtYXQs
IENDUmVzb3VyY2VQcm92aWRlcjo6QW55KTsKKyAgICBFWFBFQ1RfRVEoMSwgY29udGV4dCgpLT50
ZXh0dXJlQ291bnQoKSk7CisKKyAgICB1aW50OF90IGRhdGFbNF0gPSB7MSwgMiwgMywgNH07Cisg
ICAgSW50UmVjdCByZWN0KEludFBvaW50KCksIHNpemUpOworICAgIG1fcmVzb3VyY2VQcm92aWRl
ci0+dXBsb2FkKGlkLCBkYXRhLCByZWN0LCByZWN0LCByZWN0KTsKKworICAgIHVpbnQ4X3QgcmVz
dWx0WzRdID0gezB9OworICAgIGdldFJlc291cmNlUGl4ZWxzKGlkLCBzaXplLCBmb3JtYXQsIHJl
c3VsdCk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChkYXRhLCByZXN1bHQsIHBpeGVsU2l6ZSkp
OworCisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShpZCk7CisgICAgRVhQ
RUNUX0VRKDAsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworfQorCitURVNUX0YoQ0NSZXNv
dXJjZVByb3ZpZGVyVGVzdCwgRGVsZXRlT3duZWRSZXNvdXJjZXMpCit7CisgICAgSW50U2l6ZSBz
aXplKDEsIDEpOworICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QTsKKyAgICBpbnQgcG9vbCA9IDE7CisKKyAgICBjb25zdCBpbnQgY291bnQgPSAzOworICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZHNbY291bnRdID0gezB9OworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgaWRzW2ldID0gbV9yZXNvdXJjZVBy
b3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShwb29sLCBzaXplLCBmb3JtYXQsIENDUmVzb3VyY2VQcm92
aWRlcjo6QW55KTsKKyAgICBFWFBFQ1RfRVEoMywgY29udGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7
CisKKyAgICBtX3Jlc291cmNlUHJvdmlkZXItPmRlbGV0ZU93bmVkUmVzb3VyY2VzKHBvb2wrMSk7
CisgICAgRVhQRUNUX0VRKDMsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworCisgICAgbV9y
ZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVPd25lZFJlc291cmNlcyhwb29sKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgY29udGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7Cit9CisKK1RFU1RfRihDQ1Jlc291cmNl
UHJvdmlkZXJUZXN0LCBVcGxvYWQpCit7CisgICAgSW50U2l6ZSBzaXplKDIsIDIpOworICAgIFdH
QzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKKyAgICBpbnQgcG9vbCA9
IDE7CisgICAgc2l6ZV90IHBpeGVsU2l6ZSA9IFJlc291cmNlUHJvdmlkZXJDb250ZXh0Ojp0ZXh0
dXJlU2l6ZShzaXplLCBmb3JtYXQpOworICAgIEFTU0VSVF9FUSgxNlUsIHBpeGVsU2l6ZSk7CisK
KyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQgPSBtX3Jlc291cmNlUHJvdmlk
ZXItPmNyZWF0ZVJlc291cmNlKHBvb2wsIHNpemUsIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpBbnkpOworCisgICAgdWludDhfdCBpbWFnZVsxNl0gPSB7MH07CisgICAgSW50UmVjdCBpbWFn
ZVJlY3QoSW50UG9pbnQoKSwgc2l6ZSk7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51cGxvYWQo
aWQsIGltYWdlLCBpbWFnZVJlY3QsIGltYWdlUmVjdCwgaW1hZ2VSZWN0KTsKKworICAgIGZvciAo
dWludDhfdCBpID0gMCA7IGkgPCBwaXhlbFNpemU7ICsraSkKKyAgICAgICAgaW1hZ2VbaV0gPSBp
OworCisgICAgdWludDhfdCByZXN1bHRbMTZdID0gezB9OworICAgIHsKKyAgICAgICAgSW50UmVj
dCBzb3VyY2VSZWN0KDAsIDAsIDEsIDEpOworICAgICAgICBJbnRSZWN0IGRlc3RSZWN0KDAsIDAs
IDEsIDEpOworICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVwbG9hZChpZCwgaW1hZ2UsIGlt
YWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworCisgICAgICAgIHVpbnQ4X3QgZXhwZWN0
ZWRbMTZdID0gezAsIDEsIDIsIDMsICAgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMCwgMCwgMCwgMCwgICAwLCAwLCAwLCAwfTsKKyAgICAgICAgZ2V0UmVzb3Vy
Y2VQaXhlbHMoaWQsIHNpemUsIGZvcm1hdCwgcmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX0VRKDAs
IG1lbWNtcChleHBlY3RlZCwgcmVzdWx0LCBwaXhlbFNpemUpKTsKKyAgICB9CisgICAgeworICAg
ICAgICBJbnRSZWN0IHNvdXJjZVJlY3QoMCwgMCwgMSwgMSk7CisgICAgICAgIEludFJlY3QgZGVz
dFJlY3QoMSwgMSwgMSwgMSk7CisgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dXBsb2FkKGlk
LCBpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisKKyAgICAgICAgdWlu
dDhfdCBleHBlY3RlZFsxNl0gPSB7MCwgMSwgMiwgMywgICAwLCAwLCAwLCAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAgIDAsIDEsIDIsIDN9OworICAgICAg
ICBnZXRSZXNvdXJjZVBpeGVscyhpZCwgc2l6ZSwgZm9ybWF0LCByZXN1bHQpOworICAgICAgICBF
WFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkLCByZXN1bHQsIHBpeGVsU2l6ZSkpOworICAgIH0K
KyAgICB7CisgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCgxLCAwLCAxLCAxKTsKKyAgICAgICAg
SW50UmVjdCBkZXN0UmVjdCgwLCAxLCAxLCAxKTsKKyAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVy
LT51cGxvYWQoaWQsIGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKwor
ICAgICAgICB1aW50OF90IGV4cGVjdGVkWzE2XSA9IHswLCAxLCAyLCAzLCAgIDAsIDAsIDAsIDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQsIDUsIDYsIDcsICAgMCwgMSwgMiwg
M307CisgICAgICAgIGdldFJlc291cmNlUGl4ZWxzKGlkLCBzaXplLCBmb3JtYXQsIHJlc3VsdCk7
CisgICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWQsIHJlc3VsdCwgcGl4ZWxTaXpl
KSk7CisgICAgfQorCisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShpZCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU2NvcGVkVGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1Njb3BlZFRleHR1cmVUZXN0LmNwcAppbmRleCA0ZDQ2NGVhNTE0MzhlYTgzZjcwMmU5
ZjU2NjMwZjVkYjFmN2I2NmZhLi44YTI1ODA1ZGI0MjRlNzI4Y2FjNjhlMDc5OWI3NzMzZTliMmE4
MmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NvcGVkVGV4
dHVyZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY29wZWRU
ZXh0dXJlVGVzdC5jcHAKQEAgLTI3LDcgKzI3LDkgQEAKICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRl
eHR1cmUuaCIKIAogI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKKyNpbmNsdWRl
ICJGYWtlQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgorI2luY2x1ZGUgImNjL0NDUmVuZGVyZXIuaCIKIAogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CiAKQEAgLTM5LDggKzQxLDkgQEAgbmFtZXNwYWNlIHsKIAogVEVTVChDQ1Njb3BlZFRleHR1cmVU
ZXN0LCBOZXdTY29wZWRUZXh0dXJlKQogewotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIGFsbG9j
YXRvcjsKLSAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0
dXJlOjpjcmVhdGUoJmFsbG9jYXRvcik7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBj
b250ZXh0KGNyZWF0ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpKTsKKyAgICBPd25QdHI8Q0NSZXNv
dXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRl
KGNvbnRleHQuZ2V0KCkpKTsKKyAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0g
Q0NTY29wZWRUZXh0dXJlOjpjcmVhdGUocmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CiAKICAgICAv
LyBOZXcgc2NvcGVkIHRleHR1cmVzIGRvIG5vdCBob2xkIGEgdGV4dHVyZSB5ZXQuCiAgICAgRVhQ
RUNUX0VRKDB1LCB0ZXh0dXJlLT5pZCgpKTsKQEAgLTUyLDkgKzU1LDEwIEBAIFRFU1QoQ0NTY29w
ZWRUZXh0dXJlVGVzdCwgTmV3U2NvcGVkVGV4dHVyZSkKIAogVEVTVChDQ1Njb3BlZFRleHR1cmVU
ZXN0LCBDcmVhdGVTY29wZWRUZXh0dXJlKQogewotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIGFs
bG9jYXRvcjsKLSAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRU
ZXh0dXJlOjpjcmVhdGUoJmFsbG9jYXRvcik7Ci0gICAgdGV4dHVyZS0+YWxsb2NhdGUoSW50U2l6
ZSgzMCwgMzApLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgT3duUHRyPENDR3JhcGhp
Y3NDb250ZXh0PiBjb250ZXh0KGNyZWF0ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpKTsKKyAgICBP
d25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92
aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJl
PiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUocmVzb3VyY2VQcm92aWRlci5nZXQo
KSk7CisgICAgdGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIEludFNpemUo
MzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6QW55
KTsKIAogICAgIC8vIFRoZSB0ZXh0dXJlIGhhcyBhbiBhbGxvY2F0ZWQgYnl0ZS1zaXplIG5vdy4K
ICAgICBzaXplX3QgZXhwZWN0ZWRCeXRlcyA9IDMwICogMzAgKiA0OwpAQCAtNjUsOTUgKzY5LDU2
IEBAIFRFU1QoQ0NTY29wZWRUZXh0dXJlVGVzdCwgQ3JlYXRlU2NvcGVkVGV4dHVyZSkKICAgICBF
WFBFQ1RfRVEoSW50U2l6ZSgzMCwgMzApLCB0ZXh0dXJlLT5zaXplKCkpOwogfQogCi0vLyBGYWtl
IFRleHR1cmVBbGxvY2F0b3IgdGhhdCB0cmFja3MgdGhlIG51bWJlciBvZiB0ZXh0dXJlcyBpbiB1
c2UuCi1jbGFzcyBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9j
YXRvciB7Ci1wdWJsaWM6Ci0gICAgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKCkKLSAgICAgICAg
OiBtX25leHRUZXh0dXJlSWQoMSkKLSAgICAgICAgLCBtX251bVRleHR1cmVzKDApCi0gICAgeyB9
Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIEdDM0RlbnVtKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgaWQgPSBt
X25leHRUZXh0dXJlSWQ7Ci0gICAgICAgICsrbV9uZXh0VGV4dHVyZUlkOwotCi0gICAgICAgIG1f
dGV4dHVyZXMuc2V0KGlkLCB0cnVlKTsKLSAgICAgICAgKyttX251bVRleHR1cmVzOwotICAgICAg
ICByZXR1cm4gaWQ7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5z
aWduZWQgaWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBHQzNEZW51bSkgT1ZFUlJJREUKLSAg
ICB7Ci0gICAgICAgIGlmICghbV90ZXh0dXJlcy5nZXQoaWQpKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIG1fdGV4dHVyZXMuc2V0KGlkLCBmYWxzZSk7Ci0gICAgICAgIC0tbV9udW1U
ZXh0dXJlczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKSBP
VkVSUklERQotICAgIHsKLSAgICAgICAgbV90ZXh0dXJlcy5jbGVhcigpOwotICAgICAgICBtX251
bVRleHR1cmVzID0gMDsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBudW1UZXh0dXJlcygpIGNvbnN0
IHsgcmV0dXJuIG1fbnVtVGV4dHVyZXM7IH0KLQotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX25l
eHRUZXh0dXJlSWQ7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgYm9vbD4gbV90ZXh0dXJlczsKLSAg
ICB1bnNpZ25lZCBtX251bVRleHR1cmVzOwotfTsKLQogVEVTVChDQ1Njb3BlZFRleHR1cmVUZXN0
LCBTY29wZWRUZXh0dXJlSXNEZWxldGVkKQogewotICAgIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRv
ciBhbGxvY2F0b3I7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KGNyZWF0
ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpKTsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVy
PiByZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0
KCkpKTsKIAogICAgIHsKLSAgICAgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9
IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKCZhbGxvY2F0b3IpOworICAgICAgICBPd25QdHI8Q0NT
Y29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUocmVzb3VyY2VQ
cm92aWRlci5nZXQoKSk7CiAKLSAgICAgICAgRVhQRUNUX0VRKDB1LCBhbGxvY2F0b3IubnVtVGV4
dHVyZXMoKSk7Ci0gICAgICAgIHRleHR1cmUtPmFsbG9jYXRlKEludFNpemUoMzAsIDMwKSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICBFWFBFQ1RfRVEoMHUsIHJlc291cmNlUHJv
dmlkZXItPm51bVJlc291cmNlcygpKTsKKyAgICAgICAgdGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5k
ZXJlcjo6SW1wbFBvb2wsIEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEs
IENDUmVzb3VyY2VQcm92aWRlcjo6QW55KTsKICAgICAgICAgRVhQRUNUX0xUKDB1LCB0ZXh0dXJl
LT5pZCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgxdSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkp
OwogICAgIH0KIAotICAgIEVYUEVDVF9FUSgwdSwgYWxsb2NhdG9yLm51bVRleHR1cmVzKCkpOwor
ICAgIEVYUEVDVF9FUSgwdSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOwogCiAg
ICAgewotICAgICAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRU
ZXh0dXJlOjpjcmVhdGUoJmFsbG9jYXRvcik7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgYWxsb2Nh
dG9yLm51bVRleHR1cmVzKCkpOwotICAgICAgICB0ZXh0dXJlLT5hbGxvY2F0ZShJbnRTaXplKDMw
LCAzMCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgT3duUHRyPENDU2NvcGVk
VGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKHJlc291cmNlUHJvdmlk
ZXIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoMHUsIHJlc291cmNlUHJvdmlkZXItPm51bVJl
c291cmNlcygpKTsKKyAgICAgICAgdGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBv
b2wsIEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQ
cm92aWRlcjo6QW55KTsKICAgICAgICAgRVhQRUNUX0xUKDB1LCB0ZXh0dXJlLT5pZCgpKTsKLSAg
ICAgICAgRVhQRUNUX0VRKDF1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgxdSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOwogICAgICAgICB0
ZXh0dXJlLT5mcmVlKCk7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgYWxsb2NhdG9yLm51bVRleHR1
cmVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMHUsIHJlc291cmNlUHJvdmlkZXItPm51bVJlc291
cmNlcygpKTsKICAgICB9CiB9CiAKIFRFU1QoQ0NTY29wZWRUZXh0dXJlVGVzdCwgTGVha1Njb3Bl
ZFRleHR1cmUpCiB7Ci0gICAgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yIGFsbG9jYXRvcjsKKyAg
ICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQoY3JlYXRlRmFrZUNDR3JhcGhpY3ND
b250ZXh0KCkpOworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IHJlc291cmNlUHJvdmlk
ZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSkpOwogCiAgICAgewot
ICAgICAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJl
OjpjcmVhdGUoJmFsbG9jYXRvcik7CisgICAgICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IHRl
eHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShyZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsK
IAotICAgICAgICBFWFBFQ1RfRVEoMHUsIGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKLSAgICAg
ICAgdGV4dHVyZS0+YWxsb2NhdGUoSW50U2l6ZSgzMCwgMzApLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSk7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3Vy
Y2VzKCkpOworICAgICAgICB0ZXh0dXJlLT5hbGxvY2F0ZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwg
SW50U2l6ZSgzMCwgMzApLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpBbnkpOwogICAgICAgICBFWFBFQ1RfTFQoMHUsIHRleHR1cmUtPmlkKCkpOwotICAgICAg
ICBFWFBFQ1RfRVEoMXUsIGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDF1LCByZXNvdXJjZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CiAKICAgICAgICAgdGV4
dHVyZS0+bGVhaygpOwogICAgICAgICBFWFBFQ1RfRVEoMHUsIHRleHR1cmUtPmlkKCkpOwotICAg
ICAgICBFWFBFQ1RfRVEoMXUsIGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDF1LCByZXNvdXJjZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CiAKICAgICAgICAg
dGV4dHVyZS0+ZnJlZSgpOwogICAgICAgICBFWFBFQ1RfRVEoMHUsIHRleHR1cmUtPmlkKCkpOwot
ICAgICAgICBFWFBFQ1RfRVEoMXUsIGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDF1LCByZXNvdXJjZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CiAgICAgfQog
Ci0gICAgRVhQRUNUX0VRKDF1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7CisgICAgRVhQRUNU
X0VRKDF1LCByZXNvdXJjZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5j
cHAKaW5kZXggNTg4YzBmZjA4MzFhMjg5MzkzZDk3N2JhMzg0NmY4YTMxODYwMjBhNC4uMWIzODg5
ODUzMmM0OTAwZDgyZWIwN2ViOTc2OTlkNTc1YjkxMWE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTUxLDEw
ICs1MSwxMCBAQCBzdGF0aWMgUGFzc093blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjcmVhdGVMYXll
cihjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgY29uc3QgSQogICAgIGxheWVyLT5zZXRWaXNpYmxl
Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKICAgICBsYXllci0+
c2V0RHJhd09wYWNpdHkoMSk7CiAKLSAgICBpbnQgdGV4dHVyZUlkID0gMTsKKyAgICBDQ1Jlc291
cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCA9IDE7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0aWxlci0+bnVtVGlsZXNYKCk7ICsraSkKICAgICAgICAgZm9yIChpbnQgaiA9IDA7
IGogPCB0aWxlci0+bnVtVGlsZXNZKCk7ICsraikKLSAgICAgICAgICAgIGxheWVyLT5wdXNoVGls
ZVByb3BlcnRpZXMoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4odGV4dHVyZUlk
KyspLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKKyAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVBy
b3BlcnRpZXMoaSwgaiwgcmVzb3VyY2VJZCsrLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKIAogICAg
IHJldHVybiBsYXllci5yZWxlYXNlKCk7CiB9CkBAIC0xNDQsNyArMTQ0LDcgQEAgVEVTVChDQ1Rp
bGVkTGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogCiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1UaWxlc1g7ICsraSkKICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1UaWxl
c1k7ICsraikKLSAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgc3Rh
dGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4oMCksIEludFJlY3QoKSk7CisgICAgICAgICAgICBs
YXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIDAsIEludFJlY3QoKSk7CiAKICAgICAvLyBB
bGwgY2hlY2tlcmJvYXJkaW5nCiAgICAgewpAQCAtMjM4LDcgKzIzOCw3IEBAIFRFU1QoQ0NUaWxl
ZExheWVySW1wbFRlc3QsIHRleHR1cmVJbmZvRm9yTGF5ZXJOb0JvcmRlcnMpCiAgICAgICAgIEFT
U0VSVF9FUShxdWFkc1tpXS0+bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8
PCBxdWFkU3RyaW5nIDw8IGk7CiAgICAgICAgIENDVGlsZURyYXdRdWFkKiBxdWFkID0gc3RhdGlj
X2Nhc3Q8Q0NUaWxlRHJhd1F1YWQqPihxdWFkc1tpXS5nZXQoKSk7CiAKLSAgICAgICAgRVhQRUNU
X05FKHF1YWQtPnRleHR1cmVJZCgpLCAwdSkgPDwgcXVhZFN0cmluZyA8PCBpOworICAgICAgICBF
WFBFQ1RfTkUocXVhZC0+cmVzb3VyY2VJZCgpLCAwdSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAg
ICAgICBFWFBFQ1RfRVEocXVhZC0+dGV4dHVyZU9mZnNldCgpLCBJbnRQb2ludCgpKSA8PCBxdWFk
U3RyaW5nIDw8IGk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkLT50ZXh0dXJlU2l6ZSgpLCB0aWxl
U2l6ZSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgICAgICBFWFBFQ1RfRVEoSW50UmVjdCgwLCAw
LCAxLCAxKSwgcXVhZC0+b3BhcXVlUmVjdCgpKSA8PCBxdWFkU3RyaW5nIDw8IGk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24u
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9u
LmNwcAppbmRleCAyZDE2MDNlNDg4NDI0YWVjNTc0OGVlYjQ0N2QxOTYzNDI0OGEwMzU5Li40ZWUw
NTgzMjAxMGVmOTAzZjZiYWJkYWJmMTFhZWZmZGY3YmMyOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKQEAg
LTQwLDEwICs0MCwxMCBAQCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1
cmUoKQogewogfQogCi12b2lkIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRh
dGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpCit2b2lkIEZha2VMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92
aWRlciwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKQogewotICAgIGlmIChhbGxvY2F0
b3IpCi0gICAgICAgIHRleHR1cmUoKS0+YWNxdWlyZUJhY2tpbmdUZXh0dXJlKGFsbG9jYXRvcik7
CisgICAgdGV4dHVyZSgpLT5iZWdpblJlbmRlclRvKHJlc291cmNlUHJvdmlkZXIpOworICAgIHRl
eHR1cmUoKS0+ZW5kUmVuZGVyVG8ocmVzb3VyY2VQcm92aWRlcik7CiAgICAgbV9sYXllci0+dXBk
YXRlUmVjdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IGRmZDQ2ZDljMjNiNDQ0OGU0NmRlOWYzOGMx
ODZkZjYyNTdjNWQzNDkuLmJlNjgxZDcxYzkyN2VlOThlOGNlNTkxM2Y3Mzk0MTZkMzQ0Y2QxODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVz
dENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVy
VGVzdENvbW1vbi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiVGlsZWRMYXllckNocm9t
aXVtLmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZS5oIgorI2luY2x1ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRlci5o
IgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbGVk
TGF5ZXJJbXBsLmgiCiAKQEAgLTQ4LDcgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICBUZXh0dXJl
KEZha2VMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxXZWJDb3JlOjpDQ1ByaW9yaXRp
emVkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVJlY3QoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQqLCBXZWJDb3Jl
OjpUZXh0dXJlQWxsb2NhdG9yKiAsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlciogLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOwogCiAgICAgcHJp
dmF0ZToKQEAgLTE1MCwxNyArMTUxLDEwIEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpJbnRT
aXplIG1fZm9yY2VkQ29udGVudEJvdW5kczsKIH07CiAKLWNsYXNzIEZha2VUZXh0dXJlQWxsb2Nh
dG9yIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3IgewotcHVibGljOgotICAgIHZp
cnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgR0Mz
RGVudW0pIE9WRVJSSURFIHsgcmV0dXJuIDE7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4
dHVyZSh1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEdDM0RlbnVtKSBPVkVSUklE
RSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKSBPVkVSUklERSB7IH0K
LX07Ci0KIGNsYXNzIEZha2VUZXh0dXJlQ29waWVyIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVD
b3BpZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShXZWJDb3JlOjpD
Q0dyYXBoaWNzQ29udGV4dCosIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9UZXh0dXJlKFdlYkNvcmU6OkNDR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3Qgdm9pZCosIHVuc2lnbmVkLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgR0MzRGVudW0pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZSh1bnNpZ25l
ZCwgdW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZmx1c2goKSB7IH0KIH07CiAKIGNsYXNzIEZha2VUZXh0dXJlVXBsb2FkZXIgOiBwdWJsaWMg
V2ViQ29yZTo6VGV4dHVyZVVwbG9hZGVyIHsKQEAgLTE2OCw3ICsxNjIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2
b2lkIGJlZ2luVXBsb2FkcygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1
cmUsIFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RSZWN0KSB7IHRl
eHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXIq
IHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KHJlc291
cmNlUHJvdmlkZXIsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Db250ZW50TGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Db250ZW50TGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCmluZGV4IDc1MDQxODUzNTYwZjVjNWIxZmMwMmUzZThmNmJmODNmNTFlMGNkNDMuLmZj
ZmNjZTExNGMxZmYwN2NhMjRkZDc3OTMyNmEyMjdhZmE0NDIyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ29udGVudExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NvbnRlbnRMYXllckNocm9taXVtVGVzdC5j
cHAKQEAgLTk5LDcgKzk5LDcgQEAgVEVTVChDb250ZW50TGF5ZXJDaHJvbWl1bVRlc3QsIENvbnRl
bnRMYXllclBhaW50ZXJXaXRoRGV2aWNlU2NhbGUpCiAgICAgT3BhcXVlUmVjdERyYXdpbmdHcmFw
aGljc0NvbnRleHRQYWludGVyIHBhaW50ZXIob3BhcXVlUmVjdEluTGF5ZXJTcGFjZSwgY29udGVu
dFJlY3QpOwogICAgIE9wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlIG9wYXF1
ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlKCZwYWludGVyKTsKICAgICBNb2NrQ29u
dGVudExheWVyRGVsZWdhdGUgZGVsZWdhdGUoJm9wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXll
ckRlbGVnYXRlKTsKLSAgICBSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4g
dXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50
TGF5ZXJQYWludGVyOjpjcmVhdGUoJmRlbGVnYXRlKSwgZmFsc2UpOworICAgIFJlZlB0cjxCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiB1cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZSgmZGVsZWdh
dGUpKTsKIAogICAgIEludFJlY3QgcmVzdWx0aW5nT3BhcXVlUmVjdDsKICAgICB1cGRhdGVyLT5w
cmVwYXJlVG9VcGRhdGUoY29udGVudFJlY3QsIEludFNpemUoMjU2LCAyNTYpLCBjb250ZW50c1Nj
YWxlLCBjb250ZW50c1NjYWxlLCByZXN1bHRpbmdPcGFxdWVSZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDR3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0dyYXBoaWNzQ29udGV4dC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUyZjcxOGYzZWMyMTViNDlmNjMyNmE5ODBkZjU4MmZhODQzMWJkYjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0dyYXBoaWNzQ29udGV4
dC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZha2VDQ0dyYXBoaWNzQ29udGV4
dF9oCisjZGVmaW5lIEZha2VDQ0dyYXBoaWNzQ29udGV4dF9oCisKKyNpbmNsdWRlICJDb21wb3Np
dG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0Nv
bnRleHQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBpbmxpbmUgUGFzc093blB0
cjxXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dD4gY3JlYXRlRmFrZUNDR3JhcGhpY3NDb250ZXh0
KCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKENv
bXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcygpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRmFrZUNDR3JhcGhpY3NDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDlj
OWVjMjViMDNlZDEwYjUyOTExOGZlN2NlMTBiYzNkMTRlMWU0NzEuLjc4YWZkNmRiYTY0NzZlZDAz
NjQwNTkwOTVkMjk5ZTI1MGY0ODhhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTA4LDcg
KzEwOCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBw
dWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBGYWtlTGF5ZXJSZW5k
ZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwgV2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQpIDogTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwgVW50
aHJvdHRsZWRVcGxvYWRlcikgeyB9CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1Jl
bmRlcmVyQ2xpZW50KiBjbGllbnQsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRl
cikgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCByZXNvdXJjZVByb3ZpZGVyLCBVbnRo
cm90dGxlZFVwbG9hZGVyKSB7IH0KIAogICAgIC8vIExheWVyUmVuZGVyZXJDaHJvbWl1bSBtZXRo
b2RzLgogCkBAIC0xMjIsOCArMTIyLDkgQEAgcHJvdGVjdGVkOgogICAgIExheWVyUmVuZGVyZXJD
aHJvbWl1bVRlc3QoKQogICAgICAgICA6IG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyWWVzKDEsIHRy
dWUpCiAgICAgICAgICwgbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObygxLCBmYWxzZSkKLSAgICAg
ICAgLCBtX2NvbnRleHQoYWRvcHRQdHIobmV3IEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9u
U2V0dGluZ0NvbnRleHQpKQotICAgICAgICAsIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtX21v
Y2tDbGllbnQsIG1fY29udGV4dC5nZXQoKSkKKyAgICAgICAgLCBtX2NvbnRleHQoQ0NHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2Nh
dGlvblNldHRpbmdDb250ZXh0KCkpKSkKKyAgICAgICAgLCBtX3Jlc291cmNlUHJvdmlkZXIoQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKSkKKyAgICAgICAgLCBtX2xh
eWVyUmVuZGVyZXJDaHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX3Jlc291cmNlUHJvdmlkZXIuZ2V0
KCkpCiAgICAgewogICAgIH0KIApAQCAtMTQzLDExICsxNDQsMTQgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5zd2FwQnVmZmVycyhJbnRSZWN0KCkpOwogICAg
IH0KIAorICAgIEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQqIGNv
bnRleHQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlv
blNldHRpbmdDb250ZXh0Kj4obV9jb250ZXh0LT5jb250ZXh0M0QoKSk7IH0KKwogICAgIFdlYkdy
YXBoaWNzTWVtb3J5QWxsb2NhdGlvbiBtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlclllczsKICAgICBX
ZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb24gbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObzsKIAot
ICAgIE93blB0cjxGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0PiBt
X2NvbnRleHQ7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CiAgICAg
RmFrZUNDUmVuZGVyZXJDbGllbnQgbV9tb2NrQ2xpZW50OworICAgIE93blB0cjxDQ1Jlc291cmNl
UHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKICAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9t
aXVtIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtOwogICAgIENDU2NvcGVkU2V0dGluZ3MgbV9zY29w
ZWRTZXR0aW5nczsKIH07CkBAIC0xNTcsMTIgKzE2MSwxMiBAQCBwcm90ZWN0ZWQ6CiAvLyBFeHBl
Y3RlZDogaXQgZG9lcyBub3RoaW5nLgogVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Qs
IFN1Z2dlc3RCYWNrYnVmZmVyWWVzV2hlbkl0QWxyZWFkeUV4aXN0c1Nob3VsZERvTm90aGluZykK
IHsKLSAgICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2ti
dWZmZXJZZXMpOworICAgIGNvbnRleHQoKS0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RI
YXZlQmFja2J1ZmZlclllcyk7CiAgICAgRVhQRUNUX0VRKDAsIG1fbW9ja0NsaWVudC5zZXRGdWxs
Um9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKG1fbGF5ZXJSZW5kZXJl
ckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAKICAgICBzd2FwQnVmZmVycygp
OwotICAgIEVYUEVDVF9FUSgxLCBtX2NvbnRleHQtPmZyYW1lQ291bnQoKSk7CisgICAgRVhQRUNU
X0VRKDEsIGNvbnRleHQoKS0+ZnJhbWVDb3VudCgpKTsKIH0KIAogLy8gVGVzdCBMYXllclJlbmRl
cmVyQ2hyb21pdW0gZGlzY2FyZEZyYW1lYnVmZmVyIGZ1bmN0aW9uYWxpdHk6CkBAIC0xNzEsNyAr
MTc1LDcgQEAgVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RCYWNrYnVm
ZmVyWWVzV2hlbkl0QWxyZWFkeUV4aXN0c1Nob3VsZEQKIFRFU1RfRihMYXllclJlbmRlcmVyQ2hy
b21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5vU2hvdWxkRGlzY2FyZEJhY2tidWZmZXJBbmRE
YW1hZ2VSb290TGF5ZXJXaGlsZU5vdFZpc2libGUpCiB7CiAgICAgbV9sYXllclJlbmRlcmVyQ2hy
b21pdW0uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0
aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOworICAgIGNvbnRleHQoKS0+c2V0TWVtb3J5
QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfRVEoMSwg
bV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBFWFBFQ1Rf
VFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwog
fQpAQCAtMTgyLDcgKzE4Niw3IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBT
dWdnZXN0QmFja2J1ZmZlck5vU2hvdWxkRGlzY2FyZEJhY2tidWZmZXJBbmRECiBURVNUX0YoTGF5
ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb0RvTm90aGluZ1doZW5W
aXNpYmxlKQogewogICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUodHJ1ZSk7
Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVm
ZmVyTm8pOworICAgIGNvbnRleHQoKS0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZl
QmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290
TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobV9sYXllclJlbmRlcmVyQ2hy
b21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIH0KQEAgLTE5NCwxMSArMTk4LDExIEBA
IFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5vRG9O
b3RoaW5nV2hlblZpc2libGUpCiBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3Vn
Z2VzdEJhY2tidWZmZXJOb1doZW5JdERvZXNudEV4aXN0U2hvdWxkRG9Ob3RoaW5nKQogewogICAg
IG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUoZmFsc2UpOwotICAgIG1fY29udGV4
dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAgICBj
b250ZXh0KCktPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7
CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291
bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1
ZmZlckRpc2NhcmRlZCgpKTsKIAotICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbiht
X3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAgICBjb250ZXh0KCktPnNldE1lbW9yeUFsbG9j
YXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9j
a0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUo
bV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIH0KQEAg
LTIwOSw3ICsyMTMsNyBAQCBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2Vz
dEJhY2tidWZmZXJOb1doZW5JdERvZXNudEV4aXN0U2hvdWxkRG9ObwogVEVTVF9GKExheWVyUmVu
ZGVyZXJDaHJvbWl1bVRlc3QsIERpc2NhcmRlZEJhY2tidWZmZXJJc1JlY3JlYXRlZEZvclNjb3Bl
RHVyYXRpb24pCiB7CiAgICAgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0uc2V0VmlzaWJsZShmYWxz
ZSk7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNr
YnVmZmVyTm8pOworICAgIGNvbnRleHQoKS0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RI
YXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1
bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDbGll
bnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogCkBAIC0yMTgsMTMgKzIyMiwxMyBA
QCBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgRGlzY2FyZGVkQmFja2J1ZmZlcklz
UmVjcmVhdGVkRm9yU2NvcGVEdXJhdGlvbgogICAgIEVYUEVDVF9GQUxTRShtX2xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogCiAgICAgc3dhcEJ1ZmZlcnMo
KTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9jb250ZXh0LT5mcmFtZUNvdW50KCkpOworICAgIEVYUEVD
VF9FUSgxLCBjb250ZXh0KCktPmZyYW1lQ291bnQoKSk7CiB9CiAKIFRFU1RfRihMYXllclJlbmRl
cmVyQ2hyb21pdW1UZXN0LCBGcmFtZWJ1ZmZlckRpc2NhcmRlZEFmdGVyUmVhZGJhY2tXaGVuTm90
VmlzaWJsZSkKIHsKICAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5zZXRWaXNpYmxlKGZhbHNl
KTsKLSAgICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2ti
dWZmZXJObyk7CisgICAgY29udGV4dCgpLT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhh
dmVCYWNrYnVmZmVyTm8pOwogICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVt
LmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVu
dC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAKQEAgLTMwOCw4ICszMTIsOSBAQCBU
RVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbkRvZXNOb3RNYWtl
U3luY2hyb25vdXNDYWxscykKIHsKICAgICBDQ1Njb3BlZFNldHRpbmdzIHNjb3BlZFNldHRpbmdz
OwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPFdlYkdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KGFkb3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0Nh
bGxDb250ZXh0KSk7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVy
Q2hyb21pdW0oJm1vY2tDbGllbnQsIGNvbnRleHQuZ2V0KCkpOworICAgIE93blB0cjxDQ0dyYXBo
aWNzQ29udGV4dD4gY29udGV4dChDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIo
bmV3IEZvcmJpZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpKSk7CisgICAgT3duUHRyPENDUmVzb3Vy
Y2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShj
b250ZXh0LmdldCgpKSk7CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRl
cmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogCiAgICAg
RVhQRUNUX1RSVUUobGF5ZXJSZW5kZXJlckNocm9taXVtLmluaXRpYWxpemUoKSk7CiB9CkBAIC0z
NTEsOCArMzU2LDkgQEAgVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlhbGl6
YXRpb25XaXRoUXVpY2tseUxvc3RDb250ZXh0RG9lc05vdEFzc2UKIHsKICAgICBDQ1Njb3BlZFNl
dHRpbmdzIHNjb3BlZFNldHRpbmdzOwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1vY2tDbGll
bnQ7Ci0gICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KGFkb3B0UHRyKG5l
dyBMb3NlQ29udGV4dE9uRmlyc3RHZXRDb250ZXh0KSk7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJD
aHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIGNvbnRleHQuZ2V0KCkp
OworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dChDQ0dyYXBoaWNzQ29udGV4
dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IExvc2VDb250ZXh0T25GaXJzdEdldENvbnRleHQpKSk7
CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291
cmNlUHJvdmlkZXI6OmNyZWF0ZShjb250ZXh0LmdldCgpKSk7CisgICAgRmFrZUxheWVyUmVuZGVy
ZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIHJlc291cmNlUHJv
dmlkZXIuZ2V0KCkpOwogCiAgICAgbGF5ZXJSZW5kZXJlckNocm9taXVtLmluaXRpYWxpemUoKTsK
IH0KQEAgLTM3Miw4ICszNzgsOSBAQCBwdWJsaWM6CiBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1
bVRlc3QyLCBpbml0aWFsaXphdGlvbldpdGhvdXRHcHVNZW1vcnlNYW5hZ2VyRXh0ZW5zaW9uU3Vw
cG9ydFNob3VsZERlZmF1bHRUb05vblplcm9BbGxvY2F0aW9uKQogewogICAgIEZha2VDQ1JlbmRl
cmVyQ2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiBj
b250ZXh0KGFkb3B0UHRyKG5ldyBDb250ZXh0VGhhdERvZXNOb3RTdXBwb3J0TWVtb3J5TWFuYWdt
ZW50RXh0ZW5zaW9ucykpOwotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5k
ZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0LmdldCgpKTsKKyAgICBPd25QdHI8Q0NH
cmFwaGljc0NvbnRleHQ+IGNvbnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0
UHRyKG5ldyBDb250ZXh0VGhhdERvZXNOb3RTdXBwb3J0TWVtb3J5TWFuYWdtZW50RXh0ZW5zaW9u
cykpKTsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKEND
UmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICBGYWtlTGF5ZXJS
ZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgcmVzb3Vy
Y2VQcm92aWRlci5nZXQoKSk7CiAKICAgICBsYXllclJlbmRlcmVyQ2hyb21pdW0uaW5pdGlhbGl6
ZSgpOwogCkBAIC0zOTgsOCArNDA1LDEwIEBAIHByaXZhdGU6CiBURVNUKExheWVyUmVuZGVyZXJD
aHJvbWl1bVRlc3QyLCBvcGFxdWVCYWNrZ3JvdW5kKQogewogICAgIEZha2VDQ1JlbmRlcmVyQ2xp
ZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPENsZWFyQ291bnRpbmdDb250ZXh0PiBjb250ZXh0
KGFkb3B0UHRyKG5ldyBDbGVhckNvdW50aW5nQ29udGV4dCkpOwotICAgIEZha2VMYXllclJlbmRl
cmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0Lmdl
dCgpKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dChDQ0dyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IENsZWFyQ291bnRpbmdDb250ZXh0KSkpOwor
ICAgIENsZWFyQ291bnRpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2xlYXJDb3Vu
dGluZ0NvbnRleHQqPihjY0NvbnRleHQtPmNvbnRleHQzRCgpKTsKKyAgICBPd25QdHI8Q0NSZXNv
dXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRl
KGNjQ29udGV4dC5nZXQoKSkpOworICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJS
ZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCByZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKIAog
ICAgIG1vY2tDbGllbnQucm9vdFJlbmRlclBhc3MoKS0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3Jv
dW5kKGZhbHNlKTsKIApAQCAtNDIxLDggKzQzMCwxMCBAQCBURVNUKExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QyLCBvcGFxdWVCYWNrZ3JvdW5kKQogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0MiwgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogewogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50
IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPENsZWFyQ291bnRpbmdDb250ZXh0PiBjb250ZXh0KGFk
b3B0UHRyKG5ldyBDbGVhckNvdW50aW5nQ29udGV4dCkpOwotICAgIEZha2VMYXllclJlbmRlcmVy
Q2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0LmdldCgp
KTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dChDQ0dyYXBoaWNzQ29u
dGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IENsZWFyQ291bnRpbmdDb250ZXh0KSkpOworICAg
IENsZWFyQ291bnRpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2xlYXJDb3VudGlu
Z0NvbnRleHQqPihjY0NvbnRleHQtPmNvbnRleHQzRCgpKTsKKyAgICBPd25QdHI8Q0NSZXNvdXJj
ZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNj
Q29udGV4dC5nZXQoKSkpOworICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5k
ZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCByZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKIAogICAg
IG1vY2tDbGllbnQucm9vdFJlbmRlclBhc3MoKS0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1
cmVDb3BpZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUNv
cGllclRlc3QuY3BwCmluZGV4IGIzZWY0YzJlYmVmYjg0ZDFlNzIzNGI1MzQ2NTE4YzA1NmU5OTdi
M2QuLjBmNTZlZDljYzU3YTYwMjc2MTAzNWE2ODEwNTc2NTVkYzRlYmE3YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwCkBAIC01
MiwzNCArNTIsMzMgQEAgcHVibGljOgogVEVTVChUZXh0dXJlQ29waWVyVGVzdCwgdGVzdERyYXdB
cnJheXNDb3B5KQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwot
ICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBNb2NrQ29udGV4dCkpOwotICAgIE1vY2tDb250ZXh0
JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxNb2NrQ29udGV4dCo+KGNjQ29udGV4dC0+Y29u
dGV4dDNEKCkpOworICAgIE93blB0cjxNb2NrQ29udGV4dD4gbW9ja0NvbnRleHQgPSBhZG9wdFB0
cihuZXcgTW9ja0NvbnRleHQpOwogCiAgICAgewogICAgICAgICBJblNlcXVlbmNlIHNlcXVlbmNl
OwogCiAgICAgICAgIC8vIEhlcmUgd2UgY2hlY2sganVzdCBzb21lIGVzc2VudGlhbCBwcm9wZXJ0
aWVzIG9mIGNvcHlUZXh0dXJlKCkgdG8gYXZvaWQgbWlycm9yaW5nIHRoZSBmdWxsIGltcGxlbWVu
dGF0aW9uLgotICAgICAgICBFWFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwgYmluZEZyYW1lYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgXykpOworICAgICAgICBFWFBFQ1RfQ0FM
TCgqbW9ja0NvbnRleHQsIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIF8pKTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUgbGluZWFyIGZpbHRlcmluZyBpcyBk
aXNhYmxlZCBkdXJpbmcgdGhlIGNvcHkuCi0gICAgICAgIEVYUEVDVF9DQUxMKG1vY2tDb250ZXh0
LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCkp
OwotICAgICAgICBFWFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKKyAgICAgICAgRVhQRUNUX0NBTEwo
Km1vY2tDb250ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQz
RDo6TkVBUkVTVCkpOworICAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIHRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7CiAKLSAgICAg
ICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIGRyYXdBcnJheXMoXywgXywgXykpOworICAgICAg
ICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIGRyYXdBcnJheXMoXywgXywgXykpOwogCiAgICAg
ICAgIC8vIExpbmVhciBmaWx0ZXJpbmcgc2hvdWxkIGJlIHJlc3RvcmVkLgotICAgICAgICBFWFBF
Q1RfQ0FMTChtb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkxJTkVBUikpOwotICAgICAgICBFWFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwgdGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAg
ICAgICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIHRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICAgICAgRVhQRUNUX0NBTEwoKm1vY2tD
b250ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElO
RUFSKSk7CiAKICAgICAgICAgLy8gRGVmYXVsdCBmcmFtZWJ1ZmZlciBzaG91bGQgYmUgcmVzdG9y
ZWQKLSAgICAgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIGJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKKyAgICAgICAgRVhQRUNUX0NBTEwoKm1v
Y2tDb250ZXh0LCBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCAwKSk7CiAgICAgfQogCiAgICAgaW50IHNvdXJjZVRleHR1cmVJZCA9IDE7CiAgICAgaW50IGRl
c3RUZXh0dXJlSWQgPSAyOwogICAgIEludFNpemUgc2l6ZSgyNTYsIDEyOCk7Ci0gICAgT3duUHRy
PEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY29waWVyKEFjY2VsZXJhdGVkVGV4dHVyZUNvcGll
cjo6Y3JlYXRlKGNjQ29udGV4dC0+Y29udGV4dDNEKCksIGZhbHNlKSk7Ci0gICAgY29waWVyLT5j
b3B5VGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIHNvdXJjZVRleHR1cmVJZCwgZGVzdFRleHR1cmVJ
ZCwgc2l6ZSk7CisgICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY29waWVyKEFj
Y2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1vY2tDb250ZXh0LmdldCgpLCBmYWxzZSkp
OworICAgIGNvcGllci0+Y29weVRleHR1cmUoc291cmNlVGV4dHVyZUlkLCBkZXN0VGV4dHVyZUlk
LCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNwcAppbmRleCBkNTMxM2Y1ZGMyMzUwYTFl
ODg4OTY0ZTEyZGVlYjU1ODMyZjJmODcwLi41MzAxMzFmMDQ0NmJlMzNhMzgzZjMyZmU3NTkwODIy
NmMzODZjM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1
cmVNYW5hZ2VyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0
dXJlTWFuYWdlclRlc3QuY3BwCkBAIC0yNSw4ICsyNSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkZha2VD
Q0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmVyLmgiCiAKICNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC00MSw2ICs0Myw4IEBAIHB1YmxpYzoKICAgICBUZXh0
dXJlTWFuYWdlclRlc3QoKQogICAgICAgICA6IG1fdGV4dHVyZVNpemUoMjU2LCAyNTYpCiAgICAg
ICAgICwgbV90ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKQorICAgICAgICAs
IG1fY29udGV4dChXZWJLaXQ6OmNyZWF0ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpKQorICAgICAg
ICAsIG1fcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShtX2NvbnRl
eHQuZ2V0KCkpKQogICAgIHsKICAgICB9CiAKQEAgLTU1LDIxICs1OSwyMiBAQCBwdWJsaWM6CiAK
ICAgICBQYXNzT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBjcmVhdGVUZXh0dXJlTWFuYWdlcihzaXpl
X3QgbWF4VGV4dHVyZXMsIHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcykKICAgICB7Ci0gICAgICAg
IHJldHVybiBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0
dXJlcyksIHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIDEwMjQpOworICAg
ICAgICByZXR1cm4gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSh0ZXh0dXJlc01lbW9yeVNpemUobWF4
VGV4dHVyZXMpLCB0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCAxMDI0LCBD
Q1JlbmRlcmVyOjpJbXBsUG9vbCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpBbnkpOwogICAgIH0KIAog
ICAgIGJvb2wgcmVxdWVzdFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIsIFRleHR1cmVU
b2tlbiB0b2tlbikKICAgICB7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gbWFuYWdlci0+cmVxdWVz
dFRleHR1cmUodG9rZW4sIG1fdGV4dHVyZVNpemUsIG1fdGV4dHVyZUZvcm1hdCk7CiAgICAgICAg
IGlmIChyZXN1bHQpCi0gICAgICAgICAgICBtYW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUoJm1fZmFr
ZVRleHR1cmVBbGxvY2F0b3IsIHRva2VuKTsKKyAgICAgICAgICAgIG1hbmFnZXItPmFsbG9jYXRl
VGV4dHVyZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksIHRva2VuKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgbV9m
YWtlVGV4dHVyZUFsbG9jYXRvcjsKICAgICBjb25zdCBJbnRTaXplIG1fdGV4dHVyZVNpemU7CiAg
ICAgY29uc3QgR0MzRGVudW0gbV90ZXh0dXJlRm9ybWF0OworICAgIE93blB0cjxDQ0dyYXBoaWNz
Q29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1fcmVz
b3VyY2VQcm92aWRlcjsKIH07CiAKIFRFU1RfRihUZXh0dXJlTWFuYWdlclRlc3QsIHJlcXVlc3RU
ZXh0dXJlSW5QcmVmZXJyZWRMaW1pdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDMxY2Y2NzI1ZTEzMjg0
ZDA0YjdkZmEyNzRjODNiZWY3NWM5NmYwNmEuLjRkZWIyZGYyM2ZhYmUwNGRkYTBjYmIzZDlhYjI1
MGRiOGY1ZTMwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUcmVlVGVzdENvbW1v
bi5oIgogI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKKyNpbmNsdWRlICJGYWtl
Q0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50
LmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJXZWJDb21w
b3NpdG9yLmgiCkBAIC03MiwyOSArNzMsMzIgQEAgcHJpdmF0ZToKIAogY2xhc3MgVGlsZWRMYXll
ckNocm9taXVtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKLSAgICBUaWxl
ZExheWVyQ2hyb21pdW1UZXN0KCkgOiBjY0NvbnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZTNEKFdlYktpdDo6Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSkpKSB7IH0KKyAgICBUaWxl
ZExheWVyQ2hyb21pdW1UZXN0KCkKKyAgICAgICAgOiBtX2NvbnRleHQoV2ViS2l0OjpjcmVhdGVG
YWtlQ0NHcmFwaGljc0NvbnRleHQoKSkKKyAgICAgICAgLCBtX3Jlc291cmNlUHJvdmlkZXIoQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKSkKKyAgICB7CisgICAgfQor
CiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtVGVzdCgpIHsgfQogCiAgICAgdm9pZCB1
cGRhdGVUZXh0dXJlcyhpbnQgY291bnQgPSA1MDApCiAgICAgewotICAgICAgICB1cGRhdGVyLnVw
ZGF0ZShjY0NvbnRleHQuZ2V0KCksICZhbGxvY2F0b3IsICZjb3BpZXIsICZ1cGxvYWRlciwgY291
bnQpOworICAgICAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwg
Jm1fY29waWVyLCAmbV91cGxvYWRlciwgY291bnQpOwogICAgIH0KIHB1YmxpYzoKLSAgICAvLyBG
SVhNRTogUmVuYW1lIHRoZXNlIHRvIGFkZCAibV8iLgotICAgIE93blB0cjxDQ0dyYXBoaWNzQ29u
dGV4dD4gY2NDb250ZXh0OwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKLSAgICBGYWtl
VGV4dHVyZUFsbG9jYXRvciBhbGxvY2F0b3I7Ci0gICAgRmFrZVRleHR1cmVDb3BpZXIgY29waWVy
OwotICAgIEZha2VUZXh0dXJlVXBsb2FkZXIgdXBsb2FkZXI7Ci0gICAgQ0NQcmlvcml0eUNhbGN1
bGF0b3IgcHJpb3JpdHlDYWxjdWxhdG9yOworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4g
bV9jb250ZXh0OworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92
aWRlcjsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdXBkYXRlcjsKKyAgICBGYWtlVGV4dHVyZUNv
cGllciBtX2NvcGllcjsKKyAgICBGYWtlVGV4dHVyZVVwbG9hZGVyIG1fdXBsb2FkZXI7CisgICAg
Q0NQcmlvcml0eUNhbGN1bGF0b3IgbV9wcmlvcml0eUNhbGN1bGF0b3I7CiB9OwogCiAKIAogVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogewotICAgIENDUHJp
b3JpdHlDYWxjdWxhdG9yIHByaW9yaXR5Q2FsY3VsYXRvcjsKLSAgICBPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9v
bCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYo
bmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGls
ZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwo
MSkpKTsKQEAgLTEwNCwxMCArMTA4LDEwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwdXNoRGlydHlUaWxlcykKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyht
X3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygwKTsKIAotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBk
YXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7
CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMTE4
LDkgKzEyMiw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxl
cykKICAgICAvLyBJbnZhbGlkYXRlcyBib3RoIHRpbGVzLi4uCiAgICAgbGF5ZXItPmludmFsaWRh
dGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgLy8gLi4uLmJ1dCB0
aGVuIG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygwKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCksIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3Vw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICBsYXllci0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSB0
aGUgZmlyc3QgdGlsZSBzaW5jZSB0aGUgb3RoZXIgdGlsZSB3YXMgaW52YWxpZGF0ZWQgYnV0IG5v
dCBwYWludGVkLgpAQCAtMTMwLDggKzEzNCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwdXNoRGlydHlUaWxlcykKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hPY2NsdWRlZERpcnR5VGlsZXMpCiB7Ci0gICAgQ0NQcmlvcml0eUNhbGN1bGF0b3IgcHJpb3Jp
dHlDYWxjdWxhdG9yOwotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0
KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0
KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBs
KGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwpAQCAtMTQzLDEwICsxNDYs
MTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGls
ZXMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1
bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CiAKLSAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwg
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMo
KTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0x
NjIsNyArMTY1LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRl
ZERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAs
IDAsIDUwLCA1MCkpOwogICAgIC8vIC4uLi5idXQgdGhlIGFyZWEgaXMgb2NjbHVkZWQuCiAgICAg
b2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMCwgMCwgNTAsIDUwKSk7Ci0gICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2Nj
bHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMTc3LDcgKzE4
MCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVkZWREaXJ0eVRp
bGVzKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykK
IHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0
KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0
LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hy
b21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVy
ZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihu
ZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTE4NywxMCArMTkwLDEwIEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAgIGxheWVyLT5z
ZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVy
LT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCi0gICAg
bGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwg
MCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwogCkBAIC0xOTksNyArMjAyLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGlsZXMpCiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBs
LT5oYXNUaWxlQXQoMCwgMSkpOwogCiAgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyUHJpb3JpdGll
cygpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeSgmYWxsb2NhdG9yKTsKKyAg
ICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgp
KTsKICAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyg0KjEwMjQqMTAy
NCk7CiAKICAgICAvLyBUaGlzIHNob3VsZCBkcm9wIHRoZSB0aWxlcyBvbiB0aGUgaW1wbCB0aHJl
YWQuCkBAIC0yMTAsOSArMjEzLDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hEZWxldGVkVGlsZXMpCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAs
IDEpKTsKIAogICAgIC8vIFRoaXMgc2hvdWxkIHJlY3JlYXRlIGFuZCB1cGRhdGUgdGhlIGRlbGV0
ZWQgdGV4dHVyZXMuCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2Fs
Y3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxj
dWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwotICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjIzLDcgKzIyNiw3IEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogCiBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogewotICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6
OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0
cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxl
ZExheWVySW1wbCgxKSkpOwpAQCAtMjM4LDEwICsyNDEsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICBsYXllci0+c2V0VmlzaWJsZUNv
bnRlbnRSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0
KGNvbnRlbnRSZWN0KTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5
Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsK
IAotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7
CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgdmlzaWJsZVJlY3QsIDAp
OwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBh
aW50aW5nIGZvciAzeDMgdGlsZXMgaW4gdGhlIGNlbnRlci4KQEAgLTI1NCwxMCArMjU3LDEwIEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAKICAg
ICAvLyBGb3IgdGhlIG5leHQgZm91ciB1cGRhdGVzLCB3ZSBzaG91bGQgZGV0ZWN0IHdlIHN0aWxs
IG5lZWQgaWRsZSBwYWludGluZy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewot
ICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
KyAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9y
KTsKICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKIAotICAg
ICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwor
ICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCB2aXNpYmxlUmVjdCwg
MCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVj
dCkpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgICAgICBsYXllci0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwpAQCAtMjgxLDcgKzI4NCw3IEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiB7CiAgICAgLy8g
U3RhcnQgd2l0aCAybWIgb2YgbWVtb3J5LCBidXQgdGhlIHRlc3QgaXMgZ29pbmcgdG8gdHJ5IHRv
IHVzZSBqdXN0IG1vcmUgdGhhbiAxbWIsIHNvIHdlIHJlZHVjZSB0byAxbWIgbGF0ZXIuCi0gICAg
T3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAg
T3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgyKjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5k
ZXJlcjo6Q29udGVudFBvb2wpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhy
ZWFkOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllcjEgPSBhZG9wdFJl
ZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAg
IE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsMShhZG9wdFB0cihuZXcgRmFr
ZUNDVGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTMwNSwxMSArMzA4LDExIEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAgICBs
YXllcjEtPmludmFsaWRhdGVDb250ZW50UmVjdChsYXllclJlY3QpOwogCiAgICAgLy8gUGFpbnQg
YSBzaW5nbGUgdGlsZSBpbiBsYXllcjIgc28gdGhhdCBpdCB3aWxsIGlkbGUgcGFpbnQuCi0gICAg
bGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIGxh
eWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXll
cjItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXll
cjEtPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwotICAgIGxheWVyMS0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgbGF5ZXJSZWN0LCAwKTsKLSAgICBsYXllcjItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKKyAgICBsYXllcjEt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgbGF5ZXJSZWN0LCAwKTsKKyAgICBsYXllcjIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDAp
OwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgYm90aCByZW1haW5p
bmcgdGlsZXMgaW4gbGF5ZXIyLgogICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+bmVlZHNJZGxlUGFp
bnQobGF5ZXIyUmVjdCkpOwpAQCAtMzIzLDEwICszMjYsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIHRleHR1cmVN
YW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKDEwMjQgKiAxMDI0KTsKIAogICAgIC8vIE5v
dyBpZGxlIHBhaW50IGxheWVyMi4gV2UgYXJlIGdvaW5nIHRvIHJ1biBvdXQgb2YgbWVtb3J5IHRo
b3VnaCEKLSAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRv
cik7Ci0gICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3Ip
OworICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3Ip
OworICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3Ip
OwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Ci0gICAgbGF5ZXIy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7
CisgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwg
MTAwLCAxMDApLCAwKTsKIAogICAgIC8vIE9oIHdlbGwsIGNvbW1pdCB0aGUgZnJhbWUgYW5kIHB1
c2guCiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKQEAgLTM0MywxMSArMzQ2LDExIEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAg
ICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsMi0+aGFzVGlsZUF0KDAsIDIpKTsKIAogICAgIC8vIE5v
dyBpZiBsYXllcjIgYmVjb21lcyBmdWxseSB2aXNpYmxlLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBw
YWludCBpdCBhbmQgcHVzaCB2YWxpZCB0ZXh0dXJlcy4KLSAgICBsYXllcjItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9y
aXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9y
aXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoMCk7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBs
YXllcjJSZWN0LCAwKTsKLSAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGxh
eWVyUmVjdCwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGxh
eWVyMlJlY3QsIDApOworICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBs
YXllclJlY3QsIDApOwogCiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllcjEtPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsMS5nZXQoKSk7CkBAIC0zNjMsNyArMzY2LDcgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQog
CiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludGVkT2NjbHVkZWRU
aWxlcykKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExh
eWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0o
dGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9w
dFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTM3Nyw5ICszODAsOSBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludGVkT2NjbHVkZWRUaWxl
cykKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAx
MDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAw
LCAxMDApKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3Vs
YXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKLSAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCks
ICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsK
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0zODks
NyArMzkyLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRl
ZE9jY2x1ZGVkVGlsZXMpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGls
ZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
OjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
OjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAg
ICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFr
ZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVy
SW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwpA
QCAtNDAyLDkgKzQwNSw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGls
ZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJl
Y3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBs
YXllci5nZXQoKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlD
YWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNh
bGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Ci0g
ICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+
cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC00MTUsNyArNDE4LDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc01hcmtlZERpcnR5RHVyaW5n
UGFpbnQpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1h
cmtlZERpcnR5RHVyaW5nUGFpbnRPbk5leHRMYXllcikKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9v
bCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyMSA9IGFkb3B0UmVm
KG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAg
UmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyMiA9IGFkb3B0UmVmKG5ldyBGYWtl
VGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CkBAIC00MzAsMTUgKzQzMywxNSBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1Bh
aW50T25OZXh0TGF5ZXIpCiAgICAgbGF5ZXIyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyMi0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKIAotICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVz
KHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyht
X3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyht
X3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygwKTsKIAotICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QobV91
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKICAgICAvLyBJbnZhbGlkYXRl
IGEgdGlsZSBvbiBsYXllcjEKICAgICBsYXllcjItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVyMS5nZXQo
KSk7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKIAogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAg
ICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVyMUltcGwuZ2V0KCkpOwpAQCAtNDUzLDcg
KzQ1Niw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1h
cmtlZERpcnR5RHVyaW5nUGFpbnRPbk5leHRMYXllcikKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uUHJldmlvdXNM
YXllcikKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExh
eWVyQ2hyb21pdW0+IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVt
KHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21p
dW0+IGxheWVyMiA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVN
YW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
CkBAIC00NjgsMTQgKzQ3MSwxNCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVz
aFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25QcmV2aW91c0xheQogICAgIGxheWVy
Mi0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBs
YXllcjItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAK
LSAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0g
ICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAg
IGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAg
IGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7CiAKICAgICAvLyBJbnZhbGlk
YXRlIGEgdGlsZSBvbiBsYXllcjIKICAgICBsYXllcjEtPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVyMi5n
ZXQoKSk7Ci0gICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50
UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXllcjIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDAp
OwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVyMUltcGwuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjJJbXBs
LmdldCgpKTsKQEAgLTQ5Nyw3ICs1MDAsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgLy8gV2UgaGF2ZSBlbm91Z2ggbWVtb3J5IGZv
ciBvbmx5IHRoZSB2aXNpYmxlIHJlY3QsIHNvIHdlIHdpbGwgcnVuIG91dCBvZiBtZW1vcnkgaW4g
Zmlyc3QgaWRsZSBwYWludC4KICAgICBpbnQgbWVtb3J5TGltaXQgPSA0ICogMTAwICogMTAwOyAv
LyAxIHRpbGVzLCA0IGJ5dGVzIHBlciBwaXhlbC4KIAotICAgIE93blB0cjxDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpjcmVhdGUobWVtb3J5TGltaXQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpjcmVhdGUobWVtb3J5TGltaXQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsK
ICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExh
eWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkp
OwpAQCAtNTA3LDkgKzUxMCw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxl
UGFpbnRPdXRPZk1lbW9yeSkKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KHZpc2li
bGVSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsK
IAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwor
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKLSAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIElkbGUt
cGFpbnRpbmcgc2hvdWxkIHNlZSBubyBtb3JlIHByaW9yaXR5IHRpbGVzIGZvciBwYWludGluZy4K
ICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBA
IC01MjAsOSArNTIzLDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWlu
dE91dE9mTWVtb3J5KQogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBpbXBs
IHNpZGUuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMSwgMSkpOwogCi0g
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAg
bGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwotICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KG1fdXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8gV2Ugc2hvdWxk
bid0IHNpZ25hbCB3ZSBuZWVkIGFub3RoZXIgaWRsZSBwYWludC4KICAgICBFWFBFQ1RfRkFMU0Uo
bGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC01MzAsNyArNTMzLDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogCiBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkTGF5ZXIpCiB7
Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgyMDAwMCwgMTAyNCk7CisgICAg
T3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgyMDAwMCwgMTAyNCwgQ0NSZW5kZXJlcjo6
Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9
IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgp
KSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRy
PEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVk
TGF5ZXJJbXBsKDEpKSk7CkBAIC01NDcsMTEgKzU1MCwxMSBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkTGF5ZXIpCiAgICAgICAgIGxheWVyLT5zZXRW
aXNpYmxlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogICAgICAgICBsYXllci0+aW52YWxpZGF0
ZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAotICAgICAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICAgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygwKTsKIAogICAgICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3Qg
cGFpbnQgb3IgaWRsZS1wYWludC4KLSAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KG1fdXBkYXRlciwgY29udGVudFJlY3QsIDApOwogCiAgICAgICAgIC8vIEVtcHR5IGxheWVycyBk
b24ndCBoYXZlIHRpbGVzLgogICAgICAgICBFWFBFQ1RfRVEoMHUsIGxheWVyLT5udW1QYWludGVk
VGlsZXMoKSk7CkBAIC01NzEsNyArNTc0LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMpCiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRz
KDEwMCwgMTAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGNv
bnRlbnRCb3VuZHMpOwogCi0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgyMDAw
MCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVy
ZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgyMDAwMCwgMTAy
NCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNo
cm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1
cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIo
bmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC01ODUsOSArNTg4LDkgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMpCiAKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgICAvLyBQYWludCAvIGlkbGUt
cGFpbnQuCi0gICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOworICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNh
bGN1bGF0b3IpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDAp
OwotICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3Qs
IDApOworICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCB2aXNpYmxl
UmVjdCwgMCk7CiAKICAgICAgICAgLy8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0IG5lZWQgaWRs
ZSBwYWludC4KICAgICAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNp
YmxlUmVjdCkpOwpAQCAtNjExLDcgKzYxNCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RIYXZlT3V0ZXJU
aWxlcyhGYWtlQ0NUaWxlZExheWVySW1wbCogbGF5ZXJJbXBsLCBpbnQgd2lkdGgsIGludCBoCiAK
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlQW5pbWF0
aW5nTGF5ZXJzKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoODAwMCo4
MDAwKjgsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoODAwMCo4
MDAwKjgsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKIAogICAgIGludCB0aWxlV2lkdGggPSBGYWtlVGlsZWRM
YXllckNocm9taXVtOjp0aWxlU2l6ZSgpLndpZHRoKCk7CkBAIC02MzUsNyArNjM4LDcgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdM
YXllcnMpCiAgICAgICAgICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KHZpc2libGVS
ZWN0KTsKICAgICAgICAgICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudFJl
Y3QpOwogCi0gICAgICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlD
YWxjdWxhdG9yKTsKKyAgICAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3By
aW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKDApOwogCiAgICAgICAgICAgICAvLyBJZiBpZGxlUGFpbnRSZWN0IGdpdmVzIGJh
Y2sgYSBub24tZW1wdHkgcmVzdWx0IHRoZW4gd2Ugc2hvdWxkIHBhaW50IGl0LiBPdGhlcndpc2Us
CkBAIC02NDcsMTAgKzY1MCwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRs
ZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xheWVycykKIAogICAgICAgICAgICAgLy8gSWYgdGhl
IGxheWVyIGlzIHRvIGJlIHByZXBhaW50ZWQgYXQgYWxsLCB0aGVuIGFmdGVyIGZvdXIgdXBkYXRl
cyB3ZSBzaG91bGQgaGF2ZSB0aGUgb3V0ZXIgcm93L2NvbHVtbnMgcGFpbnRlZC4KICAgICAgICAg
ICAgIGZvciAoaW50IGsgPSAwOyBrIDwgNDsgKytrKSB7Ci0gICAgICAgICAgICAgICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgICAgICAgICAg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAg
ICAgICAgICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwogCi0g
ICAgICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVS
ZWN0LCAwKTsKKyAgICAgICAgICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRh
dGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgICAgICAgICAgICAgdXBkYXRlVGV4dHVyZXMoKTsK
ICAgICAgICAgICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwogICAgICAgICAgICAgfQpAQCAtNjYwLDEwICs2NjMsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAgICAgICAg
ICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgaWRsZSBwYWludCBwYXN0IHRoZSBvdXRlcm1vc3Qg
dGlsZXMuCiAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZp
c2libGVSZWN0KSk7CiAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7ICsraykgewot
ICAgICAgICAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOworICAgICAgICAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3By
aW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygwKTsKIAotICAgICAgICAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CisgICAgICAgICAgICAgICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICAgICAg
ICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgICAgICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAgICAgIH0KQEAgLTY3NSwyNCArNjc4LDE5
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlQW5p
bWF0aW5nTGF5ZXJzKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0
ZUZyb21QcmVwYXJlKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCox
MDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCox
MDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFr
ZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJ
bXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwogCi0gICAgRmFrZVRl
eHR1cmVBbGxvY2F0b3IgZmFrZUFsbG9jYXRvcjsKLSAgICBGYWtlVGV4dHVyZUNvcGllciBmYWtl
Q29waWVyOwotICAgIEZha2VUZXh0dXJlVXBsb2FkZXIgZmFrZVVwbG9hZGVyOwotICAgIE93blB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZTNEKFdlYktpdDo6Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSkpOwotCiAgICAgLy8gVGhl
IHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50
cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAg
ICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7
CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsK
ICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwotICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0g
ICAgdXBkYXRlci51cGRhdGUoY2NDb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VD
b3BpZXIsICZmYWtlVXBsb2FkZXIsIDEwMDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICB1cGRhdGVUZXh0
dXJlcygxMDAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpA
QCAtNzAyLDIxICs3MDAsMjEgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFs
aWRhdGVGcm9tUHJlcGFyZSkKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
Y2xlYXJQcmVwYXJlQ291bnQoKTsKICAgICAvLyBJbnZva2UgdXBkYXRlQ29udGVudFJlY3QgYWdh
aW4uIEFzIHRoZSBsYXllciBpcyB2YWxpZCB1cGRhdGVDb250ZW50UmVjdCBzaG91bGRuJ3QgYmUg
aW52b2tlZCBvbgogICAgIC8vIHRoZSBMYXllclRleHR1cmVVcGRhdGVyLgotICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0g
ICAgdXBkYXRlci51cGRhdGUoY2NDb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VD
b3BpZXIsICZmYWtlVXBsb2FkZXIsIDEwMDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICB1cGRhdGVUZXh0
dXJlcygxMDAwKTsKICAgICBFWFBFQ1RfRVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnByZXBhcmVDb3VudCgpKTsKIAogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJl
Y3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICAvLyBzZXRSZWN0VG9JbnZhbGlkYXRlIHRy
aWdnZXJzIGludmFsaWRhdGVDb250ZW50UmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSB1cGRhdGVD
b250ZW50UmVjdC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVj
dFRvSW52YWxpZGF0ZShJbnRSZWN0KDI1LCAyNSwgNTAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwogICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwot
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUoY2NDb250ZXh0LmdldCgpLCAmZmFrZUFsbG9j
YXRvciwgJmZha2VDb3BpZXIsICZmYWtlVXBsb2FkZXIsIDEwMDApOworICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAg
ICB1cGRhdGVUZXh0dXJlcygxMDAwKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKICAgICAvLyBUaGUgbGF5ZXIg
c2hvdWxkIHN0aWxsIGJlIGludmFsaWQgYXMgdXBkYXRlQ29udGVudFJlY3QgaW52b2tlZCBpbnZh
bGlkYXRlLgotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUoY2NDb250ZXh0LmdldCgpLCAm
ZmFrZUFsbG9jYXRvciwgJmZha2VDb3BpZXIsICZmYWtlVXBsb2FkZXIsIDEwMDApOworICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
LCAwKTsKKyAgICB1cGRhdGVUZXh0dXJlcygxMDAwKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsKIH0KIApAQCAtNzI1
LDcgKzcyMyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVS
ZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgLy8gVGhlIHVwZGF0ZVJlY3QgKHRo
YXQgaW5kaWNhdGVzIHdoYXQgd2FzIGFjdHVhbGx5IHBhaW50ZWQpIHNob3VsZCBiZSBpbgogICAg
IC8vIGxheWVyIHNwYWNlLCBub3QgdGhlIGNvbnRlbnQgc3BhY2UuCiAKLSAgICBPd25QdHI8Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250
ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcz4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJXaXRoU2NhbGVkQm91bmRzKHRleHR1cmVN
YW5hZ2VyLmdldCgpKSk7CiAKICAgICBJbnRSZWN0IGxheWVyQm91bmRzKDAsIDAsIDMwMCwgMjAw
KTsKQEAgLTczOSwzMiArNzM3LDMyIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2
ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgLy8gSG93ZXZl
ciwgaXQgc2hvdWxkIHN0aWxsIGJlIGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4K
ICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRCb3VuZHMpOwogCi0gICAg
bGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwotICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRf
UkVDVF9FUShGbG9hdFJlY3QoMCwgMCwgMzAwLCAzMDAgKiAwLjgpLCBsYXllci0+dXBkYXRlUmVj
dCgpKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogCiAgICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFy
ZSB1cGRhdGVkIG9uY2UsIGFub3RoZXIgaW52YWxpZGF0ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0
aGUgYm91bmRzIG9mIHRoZSBsYXllci4KLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMo
cHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9w
cmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50Qm91bmRzKTsK
LSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7
CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywg
MCk7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KGxheWVyQm91bmRzKSwgbGF5
ZXItPnVwZGF0ZVJlY3QoKSk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKIAogICAgIC8vIFBhcnRp
YWwgcmUtcGFpbnQgc2hvdWxkIGFsc28gYmUgcmVwcmVzZW50ZWQgYnkgdGhlIHVwZGF0ZVJlY3Qg
aW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIEludFJlY3QgcGFydGlhbERh
bWFnZSgzMCwgMTAwLCAxMCwgMTApOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3Qo
cGFydGlhbERhbWFnZSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5
Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlD
YWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwot
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAwKTsK
KyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAw
KTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoNDUsIDgwLCAxNSwgOCksIGxh
eWVyLT51cGRhdGVSZWN0KCkpOwogfQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogewotICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6
OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0
cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxl
ZExheWVySW1wbCgxKSkpOwpAQCAtNzc4LDkgKzc3Niw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAg
ICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgbGF5ZXIt
Pmxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkpOwogCiAgICAgLy8gUHVzaCB0aGUgdGlsZXMgdG8gdGhl
IGltcGwgc2lkZSBhbmQgY2hlY2sgdGhhdCB0aGVyZSBpcyBleGFjdGx5IG9uZS4KLSAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKKyAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CiAg
ICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllcklt
cGwuZ2V0KCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsK
QEAgLTc5NSw5ICs3OTMsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5
SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIEVYUEVDVF9GTE9BVF9S
RUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCksIGxheWVyLT5sYXN0TmVlZHNEaXNwbGF5
UmVjdCgpKTsKIAogICAgIC8vIFRoZSBpbXBsIHNpZGUgc2hvdWxkIGdldCAyeDIgdGlsZXMgbm93
LgotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwor
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKLSAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCksIDApOworICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMjAwLCAy
MDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxl
QXQoMCwgMCkpOwpAQCAtODA4LDggKzgwNiw4IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAgICAgLy8g
SW52YWxpZGF0ZSB0aGUgZW50aXJlIGxheWVyIGFnYWluLCBidXQgZG8gbm90IHBhaW50LiBBbGwg
dGlsZXMgc2hvdWxkIGJlIGdvbmUgbm93IGZyb20gdGhlCiAgICAgLy8gaW1wbCBzaWRlLgogICAg
IGxheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBk
YXRlciwgSW50UmVjdCgxLCAwLCAwLCAxKSwgMCk7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QobV91cGRhdGVyLCBJbnRSZWN0KDEsIDAsIDAsIDEpLCAwKTsKICAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwogCiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8o
bGF5ZXJJbXBsLmdldCgpKTsKQEAgLTg1MCw3ICs4NDgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0
Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNp
emUoSW50U2l6ZSgzMDAsIDMwMCkpOwogCi0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnModXBkYXRlciwgbWVtb3J5TGltaXQpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKG1fdXBkYXRlciwgbWVtb3J5TGltaXQpOwogCiAgICAgLy8gV2UnbGwgc2tpcCB0aGUgcm9v
dCBsYXllci4KICAgICBFWFBFQ1RfVFJVRShyb290TGF5ZXItPnNraXBzRHJhdygpKTsKQEAgLTg2
MSwxMCArODU5LDEwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdH
ZXRzUmVzZXQpCiAgICAgLy8gUmVtb3ZlIHRoZSBjaGlsZCBsYXllci4KICAgICByb290TGF5ZXIt
PnJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cyh1cGRhdGVyLCBtZW1vcnlMaW1pdCk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnMobV91cGRhdGVyLCBtZW1vcnlMaW1pdCk7CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3RMYXllci0+
c2tpcHNEcmF3KCkpOwogCi0gICAgY2NMYXllclRyZWVIb3N0LT5jb250ZW50c1RleHR1cmVNYW5h
Z2VyKCktPmNsZWFyQWxsTWVtb3J5KCZhbGxvY2F0b3IpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+
Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jbGVhckFsbE1lbW9yeShtX3Jlc291cmNlUHJvdmlk
ZXIuZ2V0KCkpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKDApOwogICAgIGNj
TGF5ZXJUcmVlSG9zdC5jbGVhcigpOwogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRv
d24oKTsKQEAgLTg3MiwxNiArODcwLDE2IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBy
ZXNpemVUb1NtYWxsZXIpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg2
MCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
NjAqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRy
PEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExh
eWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKIAogICAgIGxheWVyLT5zZXRCb3Vu
ZHMoSW50U2l6ZSg3MDAsIDcwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3Qo
SW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJl
Y3QoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0
aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKDApOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1f
dXBkYXRlciwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOwogCiAgICAgbGF5ZXItPnNldEJv
dW5kcyhJbnRTaXplKDIwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVj
dChJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSk7CkBAIC04ODksNyArODg3LDcgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHJlc2l6ZVRvU21hbGxlcikKIAogVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGh1Z2VMYXllclVwZGF0ZUNyYXNoKQogewotICAgIE93blB0cjxDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDYwKjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29u
dGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7
CiAKICAgICBpbnQgc2l6ZSA9IDEgPDwgMzA7CkBAIC04OTgsOSArODk2LDkgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGh1Z2VMYXllclVwZGF0ZUNyYXNoKQogICAgIGxheWVyLT5p
bnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCBzaXplLCBzaXplKSk7CiAKICAgICAv
LyBFbnN1cmUgbm8gY3Jhc2ggZm9yIGJvdW5kcyB3aGVyZSBzaXplICogc2l6ZSB3b3VsZCBvdmVy
ZmxvdyBhbiBpbnQuCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2Fs
Y3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxj
dWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwotICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDcwMCwgNzAw
KSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgw
LCAwLCA3MDAsIDcwMCksIDApOwogfQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cGFydGlhbFVwZGF0ZXMpCkBAIC05MjksMTcgKzkyNywxNyBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRWaWV3
cG9ydFNpemUoSW50U2l6ZSgzMDAsIDIwMCkpOwogCiAgICAgLy8gRnVsbCB1cGRhdGUgb2YgYWxs
IDYgdGlsZXMuCi0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgY2NMYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnMobV91cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KTsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwog
ICAgICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihu
ZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7
CiAgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0
ZXMoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsK
ICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291
bnQoKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSgyLCBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAgICBsYXllci0+
cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIH0KQEAgLTk0NywxNyArOTQ1
LDE3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKIAog
ICAgIC8vIEZ1bGwgdXBkYXRlIG9mIDMgdGlsZXMgYW5kIHBhcnRpYWwgdXBkYXRlIG9mIDMgdGls
ZXMuCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDMwMCwg
MTUwKSk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRh
dGVMYXllcnMobV91cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsK
ICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAg
ICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcg
RmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7CiAg
ICAgICAgIEVYUEVDVF9FUSgzLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBk
YXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMo
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAg
ICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQo
KTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSgzLCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVY
UEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfRkFM
U0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIH0KQEAgLTk2OCwxNCArOTY2LDE0
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKICAgICB7
CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgICAgICBP
d25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUND
VGlsZWRMYXllckltcGwoMSkpKTsKLSAgICAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnModXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAg
IGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAg
ICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNv
dW50KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAg
ICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1Rf
RkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG1f
dXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICB9CkBAIC05OTUsMTQgKzk5MywxNCBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgewogICAg
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRy
PEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVk
TGF5ZXJJbXBsKDEpKSk7Ci0gICAgICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVw
ZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgICAgICBjY0xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQ
RUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgp
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAg
ICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNF
KHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0
ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgfQpAQCAtMTAxMywxNiArMTAxMSwxNiBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgewogICAgICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5
ZXJJbXBsKDEpKSk7Ci0gICAgICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0
ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgICAgICBjY0xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQRUNU
X0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAg
IGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgfQogICAgIGNj
TGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAotICAgIGNjTGF5ZXJUcmVlSG9zdC0+
Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jbGVhckFsbE1lbW9yeSgmYWxsb2NhdG9yKTsKKyAg
ICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y2xlYXJBbGxNZW1v
cnkobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJv
b3RMYXllcigwKTsKICAgICBjY0xheWVyVHJlZUhvc3QuY2xlYXIoKTsKICAgICBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CkBAIC0xMDMwLDcgKzEwMjgsNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAKIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRob3V0T2NjbHVzaW9uKQogewotICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6
OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRh
dGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCkBAIC0xMDM4LDE1ICsxMDM2LDE1IEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRob3V0T2NjbHVzaW9u
KQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCkpOwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3Vs
YXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxh
dG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwotICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwg
MCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCksIDApOwogICAgIEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIH0KIAogVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiB7Ci0gICAgT3duUHRyPEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29u
dGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7
CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIApAQCAtMTA1OSw5ICsxMDU3
LDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2Ns
dXNpb24pCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50
KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3Qo
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0
aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKDApOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBF
WFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVS
ZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3Mo
KS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwNzIsNyArMTA3MCw3IEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQog
CiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjUwLCAyMDAsIDMwMCwgMTAwKSk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwg
NjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3Vw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9F
USgzNi0yLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3Vu
dCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVs
c1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTA4Myw3ICsxMDgxLDcgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiAKICAgICBv
Y2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyNTAsIDI1MCwgMzAwLCAxMDApKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwg
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LCBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAog
ICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVk
T3BhcXVlKCksIDAsIDEpOwpAQCAtMTA5Myw3ICsxMDkxLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiAKIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29u
c3RyYWludHMpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQq
MTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQq
MTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGls
ZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9t
aXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBv
Y2NsdWRlZDsKIApAQCAtMTEwNyw5ICsxMTA1LDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxpdHlDb25zdHJhaW50cykK
ICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNjAp
KTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2
MDApKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRv
cik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKLSAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDM2MCksICZv
Y2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVj
dCgwLCAwLCA2MDAsIDM2MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDI0LTMsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAg
RVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFx
dWUoKSwgMCwgMSk7CkBAIC0xMTIyLDkgKzExMjAsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRz
KQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCkp
OwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM1
MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCkpOwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRv
cik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKLSAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDM1MCksICZv
Y2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVj
dCgwLCAwLCA2MDAsIDM1MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDI0LTYsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAg
RVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFx
dWUoKSwgMCwgMSk7CkBAIC0xMTM3LDkgKzExMzUsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRz
KQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCkp
OwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM0
MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCkpOwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRv
cik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKLSAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDM0MCksICZv
Y2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVj
dCgwLCAwLCA2MDAsIDM0MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDI0LTYsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAg
RVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFx
dWUoKSwgMCwgMSk7CkBAIC0xMTUwLDcgKzExNDgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRz
KQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91
dEludmFsaWRhdGlvbikKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
Q2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1ZGVkOwogCkBAIC0xMTYyLDkgKzExNjAsOSBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKICAgICBvY2Ns
dWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApKTsKICAgICBsYXll
ci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAg
ICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwor
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAw
LCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKICAgICB1cGRhdGVUZXh0dXJl
cygpOwogCkBAIC0xMTc1LDcgKzExNzMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKICAgICBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CiAKICAgICAvLyBS
ZXBhaW50IHdpdGhvdXQgbWFya2luZyBpdCBkaXJ0eS4gVGhlIDMgY3VsbGVkIHRpbGVzIHdpbGwg
YmUgcHJlLXBhaW50ZWQgbm93LgotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVk
KTsKICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnBy
ZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01l
dHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTExODUsNyArMTE4Myw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc05vdFBhaW50ZWRXaXRob3V0
SW52YWxpZGF0aW9uKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWlu
dGVkV2l0aE9jY2x1c2lvbkFuZFRyYW5zZm9ybXMpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIApAQCAtMTIwMiw5ICsxMjAwLDkgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRU
cmFuc2Zvcm1zKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDEwMCwgMTAwLCAx
NTAsIDUwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBv
aW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJl
Y3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygwKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAg
RVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
UmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMjE0LDcgKzEyMTIsNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFu
ZFRyYW5zZm9ybXMpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50
ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAg
ICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZh
a2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwogCkBAIC0xMjMwLDkgKzEyMjgsOSBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxp
bmcpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAw
KSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KCks
IGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50
UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhw
cmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3By
aW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygwKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1f
dXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgLy8gVGhl
IGNvbnRlbnQgaXMgaGFsZiB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgKHNvIHRoZSBudW1iZXIgb2Yg
dGlsZXMgaXMgZmV3ZXIpLgogICAgIC8vIEluIHRoaXMgY2FzZSwgdGhlIGNvbnRlbnQgaXMgMzAw
eDMwMCwgYW5kIHNpbmNlIHRoZSB0aWxlIHNpemUgaXMgMTAwLCB0aGUKICAgICAvLyBudW1iZXIg
b2YgdGlsZXMgM3gzLgpAQCAtMTI1MCw5ICsxMjQ4LDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIG9jY2x1
ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDIwMCkpOwogICAgIGxheWVy
LT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRz
KCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAw
LCA2MDApKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0
b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoMCk7Ci0gICAgbGF5
ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAm
b2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSg5LTEsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAg
RVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFx
dWUoKSwgMCwgMSk7CkBAIC0xMjcwLDkgKzEyNjgsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgb2NjbHVk
ZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDE1MCwgMTAwKSk7CiAgICAgbGF5ZXIt
PnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMo
KSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCkpOwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRv
cik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygwKTsKLSAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZv
Y2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDktMSwgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBF
WFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1
ZSgpLCAwLCAxKTsKQEAgLTEyODIsNyArMTI4MCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKIAogVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogewotICAg
IE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAg
IE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVu
ZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4g
bGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdl
ci5nZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAKQEAgLTEy
OTksMTMgKzEyOTcsMTMgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVD
b250ZW50T3BhcXVlUmVnaW9uKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3Qodmlz
aWJsZUJvdW5kcyk7CiAgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5KDEpOwogCi0gICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwogCiAgICAgLy8gSWYgdGhlIGxheWVyIGRvZXNu
J3QgcGFpbnQgb3BhcXVlIGNvbnRlbnQsIHRoZW4gdGhlIHZpc2libGVDb250ZW50T3BhcXVlUmVn
aW9uIHNob3VsZCBiZSBlbXB0eS4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVD
b250ZW50UmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIG9wYXF1
ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQ
RUNUX1RSVUUob3BhcXVlQ29udGVudHMuaXNFbXB0eSgpKTsKIApAQCAtMTMxOCw3ICsxMzE2LDcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVn
aW9uKQogICAgIG9wYXF1ZVBhaW50UmVjdCA9IEludFJlY3QoMTAsIDEwLCA5MCwgMTkwKTsKICAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KG9w
YXF1ZVBhaW50UmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50
Qm91bmRzKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJv
dW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVy
LCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAg
b3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAg
ICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91
bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwpAQCAtMTMzMSw3ICsxMzI5LDcgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQog
CiAgICAgLy8gSWYgd2UgcGFpbnQgYWdhaW4gd2l0aG91dCBpbnZhbGlkYXRpbmcsIHRoZSBzYW1l
IHN0dWZmIHNob3VsZCBiZSBvcGFxdWUuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwotICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7
CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNp
YmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlv
bihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMo
KSk7CkBAIC0xMzQ2LDcgKzEzNDQsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgLy8gbm90IGJlIGFmZmVjdGVkLgogICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50
UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwg
MSwgMSkpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91
bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBv
cGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAg
IEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3Vu
ZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CkBAIC0xMzYxLDcgKzEzNTksNyBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAg
ICAgLy8gbm90IGJlIGFmZmVjdGVkLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0
ZUNvbnRlbnRSZWN0KEludFJlY3QoMTAsIDEwLCAxLCAxKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsK
ICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2li
bGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9u
KEludFJlY3QoMTAsIDEwMCwgOTAsIDEwMCksIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50
cy5ib3VuZHMoKSk7CkBAIC0xMzc1LDcgKzEzNzMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAKIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwaXhlbHNQYWludGVkTWV0cmljcykKIHsKLSAgICBPd25QdHI8Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50
UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRS
ZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwogCkBAIC0xMzkyLDEzICsxMzkwLDEz
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwaXhlbHNQYWludGVkTWV0cmljcykK
ICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KHZpc2libGVCb3VuZHMpOwogICAgIGxh
eWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyht
X3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0
dXJlcygwKTsKIAogICAgIC8vIEludmFsaWRhdGVzIGFuZCBwYWludHMgdGhlIHdob2xlIGxheWVy
LgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJl
Y3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRC
b3VuZHMpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91
bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBv
cGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAg
IEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CkBAIC0xNDEzLDcgKzE0MTEs
NyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4ZWxzUGFpbnRlZE1ldHJpY3Mp
CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVj
dChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgw
LCAwLCAxLCAxKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDUw
LCAyMDAsIDEwLCAxMCkpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBj
b250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCht
X3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMo
KTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lv
bigpOwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CkBAIC0xNDc0
LDE0ICsxNDcyLDE0IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBkb250QWxsb2Nh
dGVDb250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2NhCiAgICAgcm9vdC0+aW52YWxp
ZGF0ZUNvbnRlbnRSZWN0KHJvb3RSZWN0KTsKICAgICBjaGlsZC0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KGNoaWxkUmVjdCk7CiAgICAgY2hpbGQyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY2hpbGQy
UmVjdCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRh
dGVMYXllcnMobV91cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsK
ICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAg
ICAgICB1cGRhdGVUZXh0dXJlcygxMDAwKTsKICAgICAgICAgRVhQRUNUX0VRKDYsIHJvb3QtPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMywgY2hpbGQtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwog
ICAgICAgICBFWFBFQ1RfRVEoMywgY2hpbGQyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0
ZXMoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7
CiAKICAgICAgICAgcm9vdC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVD
b3VudCgpOwogICAgICAgICBjaGlsZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJV
cGRhdGVDb3VudCgpOwpAQCAtMTUwOSwxNCArMTUwNywxNCBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFs
bG9jYQogICAgIHJvb3QtPmludmFsaWRhdGVDb250ZW50UmVjdChyb290UmVjdCk7CiAgICAgY2hp
bGQtPmludmFsaWRhdGVDb250ZW50UmVjdChjaGlsZFJlY3QpOwogICAgIGNoaWxkMi0+aW52YWxp
ZGF0ZUNvbnRlbnRSZWN0KGNoaWxkMlJlY3QpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKHVwZGF0ZXIsICgzICogMiArIDMgKiAxKSAqICgxMDAgKiAxMDApICogNCk7CisgICAg
Y2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCAoMyAqIDIgKyAzICogMSkg
KiAoMTAwICogMTAwKSAqIDQpOwogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDEwMDApOwogICAgICAgICBF
WFBFQ1RfRVEoNiwgcm9vdC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBjaGlsZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBjaGlsZDItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uo
dXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG1fdXBkYXRl
ci5oYXNNb3JlVXBkYXRlcygpKTsKIAogICAgICAgICByb290LT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIGNoaWxkLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CkBAIC0xNTQ1LDE0ICsxNTQzLDE0IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBkb250QWxsb2NhdGVDb250ZW50c1doZW5U
YXJnZXRTdXJmYWNlQ2FudEJlQWxsb2NhCiAgICAgcm9vdC0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0
KHJvb3RSZWN0KTsKICAgICBjaGlsZC0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNoaWxkUmVjdCk7
CiAgICAgY2hpbGQyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY2hpbGQyUmVjdCk7Ci0gICAgY2NM
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgKDMgKiAxKSAqICgxMDAgKiAxMDAp
ICogNCk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCAoMyAq
IDEpICogKDEwMCAqIDEwMCkgKiA0KTsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsVGhyZWFkOwogICAgICAgICB1cGRhdGVUZXh0dXJlcygxMDAwKTsKICAgICAg
ICAgRVhQRUNUX0VRKDAsIHJvb3QtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNv
dW50KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMCwgY2hpbGQtPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMCwgY2hpbGQyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShtX3Vw
ZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAKICAgICAgICAgcm9vdC0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAgICBjaGlsZC0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwpAQCAtMTU3NCw3ICsxNTcyLDcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGRvbnRBbGxvY2F0ZUNvbnRlbnRzV2hl
blRhcmdldFN1cmZhY2VDYW50QmVBbGxvY2EKICAgICB9CiAgICAgY2NMYXllclRyZWVIb3N0LT5j
b21taXRDb21wbGV0ZSgpOwogCi0gICAgY2NMYXllclRyZWVIb3N0LT5jb250ZW50c1RleHR1cmVN
YW5hZ2VyKCktPmNsZWFyQWxsTWVtb3J5KCZhbGxvY2F0b3IpOworICAgIGNjTGF5ZXJUcmVlSG9z
dC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jbGVhckFsbE1lbW9yeShtX3Jlc291cmNlUHJv
dmlkZXIuZ2V0KCkpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKDApOwogICAg
IGNjTGF5ZXJUcmVlSG9zdC5jbGVhcigpOwogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1
dGRvd24oKTsKQEAgLTE2MDUsNyArMTYwMyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIE93
blB0cjxUcmFja2luZ0xheWVyUGFpbnRlcj4gdHJhY2tpbmdMYXllclBhaW50ZXIoVHJhY2tpbmdM
YXllclBhaW50ZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgbV90cmFja2luZ0xheWVyUGFpbnRlciA9
IHRyYWNraW5nTGF5ZXJQYWludGVyLmdldCgpOwotICAgICAgICBtX2xheWVyVGV4dHVyZVVwZGF0
ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUodHJhY2tpbmdMYXll
clBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CisgICAgICAgIG1fbGF5ZXJUZXh0dXJlVXBkYXRl
ciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSh0cmFja2luZ0xheWVy
UGFpbnRlci5yZWxlYXNlKCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5VcGRhdGVUcmFja2luZ1Rp
bGVkTGF5ZXJDaHJvbWl1bSgpIHsgfQogCkBAIC0xNjIxLDggKzE2MTksNyBAQCBwcml2YXRlOgog
CiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJ
c05vdERpc3RvcnRlZER1cmluZ1BhaW50KQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDQwMDAwMDAsIDQwMDAwMDApKTsKLSAgICBDQ1ByaW9yaXR5Q2FsY3VsYXRvciBjYWxj
dWxhdG9yOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQwMDAwMDAsIDQwMDAw
MDAsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKSk7CiAKICAgICBSZWZQdHI8VXBkYXRlVHJhY2tp
bmdUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IFVwZGF0ZVRyYWNraW5n
VGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKQEAgLTE2MzUsMTEg
KzE2MzIsMTEgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG5vbkludGVnZXJDb250
ZW50c1NjYWxlSXNOb3REaXN0b3J0ZWREdXJpbmdQYWludCkKICAgICBFWFBFQ1RfRVEoY29udGVu
dFJlY3Quc2l6ZSgpLCBsYXllci0+Y29udGVudEJvdW5kcygpKTsKICAgICBsYXllci0+c2V0Vmlz
aWJsZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhjYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9w
cmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoMCk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHdob2xlIHRpbGUuCi0gICAgbGF5ZXItPnVwZGF0
ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CiAgICAgbGF5ZXItPnRyYWNr
aW5nTGF5ZXJQYWludGVyKCktPnJlc2V0UGFpbnRlZFJlY3QoKTsKIAogICAgIEVYUEVDVF9JTlRf
UkVDVF9FUShJbnRSZWN0KCksIGxheWVyLT50cmFja2luZ0xheWVyUGFpbnRlcigpLT5wYWludGVk
UmVjdCgpKTsKQEAgLTE2NDgsMTUgKzE2NDUsMTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIG5vbkludGVnZXJDb250ZW50c1NjYWxlSXNOb3REaXN0b3J0ZWREdXJpbmdQYWludCkK
IAogICAgIC8vIEludmFsaWRhdGUgdGhlIGVudGlyZSBsYXllciBpbiBjb250ZW50IHNwYWNlLiBX
aGVuIHBhaW50aW5nLCB0aGUgcmVjdCBnaXZlbiB0byB3ZWJraXQgc2hvdWxkIG1hdGNoIHRoZSBs
YXllcidzIGJvdW5kcy4KICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRS
ZWN0KTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudFJlY3Qs
IDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRSZWN0
LCAwKTsKIAogICAgIEVYUEVDVF9JTlRfUkVDVF9FUShsYXllclJlY3QsIGxheWVyLT50cmFja2lu
Z0xheWVyUGFpbnRlcigpLT5wYWludGVkUmVjdCgpKTsKIH0KIAogVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIG5vbkludGVnZXJDb250ZW50c1NjYWxlSXNOb3REaXN0b3J0ZWREdXJpbmdJ
bnZhbGlkYXRpb24pCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNDAwMDAw
MCwgNDAwMDAwMCkpOwotICAgIENDUHJpb3JpdHlDYWxjdWxhdG9yIGNhbGN1bGF0b3I7CisgICAg
T3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIoQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNDAwMDAwMCwgNDAwMDAwMCwgQ0NSZW5kZXJl
cjo6Q29udGVudFBvb2wpKTsKIAogICAgIFJlZlB0cjxVcGRhdGVUcmFja2luZ1RpbGVkTGF5ZXJD
aHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgVXBkYXRlVHJhY2tpbmdUaWxlZExheWVyQ2hy
b21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKIApAQCAtMTY2OCwxMSArMTY2NCwxMSBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJc05v
dERpc3RvcnRlZER1cmluZ0ludmFsaQogICAgIEludFJlY3QgY29udGVudFJlY3QoSW50UG9pbnQo
KSwgbGF5ZXItPmNvbnRlbnRCb3VuZHMoKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50
UmVjdChjb250ZW50UmVjdCk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMoY2Fs
Y3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxj
dWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKDApOwogCiAg
ICAgLy8gVXBkYXRlIHRoZSB3aG9sZSB0aWxlLgotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KG1fdXBkYXRlciwgY29udGVudFJlY3QsIDApOwogICAgIGxheWVyLT50cmFja2luZ0xheWVyUGFp
bnRlcigpLT5yZXNldFBhaW50ZWRSZWN0KCk7CiAKICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50
UmVjdCgpLCBsYXllci0+dHJhY2tpbmdMYXllclBhaW50ZXIoKS0+cGFpbnRlZFJlY3QoKSk7CkBA
IC0xNjgxLDcgKzE2NzcsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbm9uSW50
ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRlZER1cmluZ0ludmFsaQogCiAgICAgLy8gSW52
YWxpZGF0ZSB0aGUgZW50aXJlIGxheWVyIGluIGxheWVyIHNwYWNlLiBXaGVuIHBhaW50aW5nLCB0
aGUgcmVjdCBnaXZlbiB0byB3ZWJraXQgc2hvdWxkIG1hdGNoIHRoZSBsYXllcidzIGJvdW5kcy4K
ICAgICBsYXllci0+c2V0TmVlZHNEaXNwbGF5UmVjdChsYXllclJlY3QpOwotICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CisgICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudFJlY3QsIDApOwogCiAgICAgRVhQRUNU
X0lOVF9SRUNUX0VRKGxheWVyUmVjdCwgbGF5ZXItPnRyYWNraW5nTGF5ZXJQYWludGVyKCktPnBh
aW50ZWRSZWN0KCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152687</attachid>
            <date>2012-07-16 20:19:47 -0700</date>
            <delta_ts>2012-07-18 16:30:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91044-20120716201946.patch</filename>
            <type>text/plain</type>
            <size>350607</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxZmU5OWIxM2Q2ODkx
ZTg2MzBkOTU2MWI0YTQ0NThmMzUzMzI0NzYxLi4xNDE5NWRjZWI1NTYzOGU4NmQxODJjMDBjNjll
MTgxNjZjZjRhM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0wNy0xMSAg
QW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBJbnRyb2R1Y2UgQ0NSZXNvdXJjZVByb3ZpZGVyLCByZXBsYWNpbmcgVGV4dHVyZUFsbG9jYXRv
ciBhbmQgaGlkaW5nIHRleHR1cmVzIGZyb20gY2xpZW50cyB0byBhbGxvdyB0cmFuc3BvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBkb2VzIHNl
dmVyYWwgdGhpbmdzOgorICAgICAgICAtIEFkZCBhIENDUmVzb3VyY2VQcm92aWRlciBjbGFzcywg
dGhhdCBoaWRlcyB0ZXh0dXJlcyBhbmQgdGhlIDNEIGNvbnRleHQKKyAgICAgICAgZnJvbSBsYXll
cnMgKGV4Y2VwdCB0aG9zZSB0aGF0IG5lZWQgaXQpLiBJbnN0ZWFkIGxheWVycyBtYW5hZ2UKKyAg
ICAgICAgInJlc291cmNlcyIuIEluIHRoZSBmdXR1cmUsIHJlc291cmNlcyBhcmUgZXhwZWN0ZWQg
dG8gYmUgdHJhbnNwb3J0YWJsZQorICAgICAgICB0byBhICJwYXJlbnQiIENDUmVzb3VyY2VQcm92
aWRlciB0byBhbGxvdyBmbGF0dGVuaW5nIG9mIG5lc3RlZAorICAgICAgICBjb21wb3NpdG9ycy4K
KyAgICAgICAgLSBSZXBsYWNlIHRleHR1cmUgaWRzIGJ5IHJlc291cmNlIGlkcyBpbiBEcmF3UXVh
ZHMgKGFsbG93aW5nIHRoZW0gdG8gYmUKKyAgICAgICAgc2VyaWFsaXphYmxlKS4KKyAgICAgICAg
LSBSZXBsYWNlIFRleHR1cmVBbGxvY2F0b3IgdXNlcyBieSB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVy
IGNsYXNzLgorICAgICAgICAtIFVwbG9hZCBvZiBkYXRhIGlzIGRvbmUgdGhyb3VnaCB0aGUgQ0NS
ZXNvdXJjZVByb3ZpZGVyIGluc3RlYWQgb2YKKyAgICAgICAgZXhwbGljaXQgR0wgY2FsbHMuCisg
ICAgICAgIC0gRXh0ZXJuYWwgdGV4dHVyZXMgYXJlIHdyYXBwZWQgaW50byBhIHJlc291cmNlIGF0
IGRyYXcgdGltZSAoc2VlCisgICAgICAgIGNhdmVhdC9GSVhNRSBpbiBDQ1RleHR1cmVMYXllcklt
cGwpLgorICAgICAgICAtIFJlbmRlcmluZyB3aXRoIHRoZSByZXNvdXJjZXMgaXMgZG9uZSB0aHJv
dWdoIGFuIGV4cGxpY2l0CisgICAgICAgIGJlZ2luUmVuZGVyRnJvbS9lbmRSZW5kZXJGcm9tIHRo
YXQgZXhwb3NlcyB0aGUgdGV4dHVyZSBvbmx5IGJldHdlZW4gdGhhdAorICAgICAgICBwYWlyLgor
ICAgICAgICAtIE1lcmdlIGFsbCB0aGUgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgaW5zdGFuY2VzIChv
bmUgcGVyIGxheWVyKSwgaW50byBhCisgICAgICAgIHNpbmdsZSBpbnN0YW5jZSBvbiB0aGUgQ0NS
ZXNvdXJjZVByb3ZpZGVyLgorCisgICAgICAgIEFkZGVkIENDUmVzb3VyY2VQcm92aWRlclRlc3Qs
IHRoZSByZWZhY3RvcmluZyBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oOgorICAgICAgICAo
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRv
clRleHR1cmVRdWFkOjpyZXNvdXJjZUlkKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvclRpbGVRdWFkLmg6CisgICAgICAgIChXZWJDb21wb3NpdG9yVGlsZVF1YWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OnJlc291cmNlSWQpOgorCiAy
MDEyLTA3LTEzICBUb255IFBheW5lICA8dHBheW5lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZW1vdmUgV2lkZ2V0IGZyb20gc2NyZWVuQ29sb3JQcm9maWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk4YWEx
Zjc5NThkMWNhMDk2OTU0ZDNjYjY2NjQ0ZGZlY2M3MTQyMC4uYTQ5MmViZDQ3ZWI1NTc3YjVhZTgy
YzIyNjMyMWU0MWU5M2I4NjU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxMCBAQAorMjAxMi0w
Ny0xMSAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBJbnRyb2R1Y2UgQ0NSZXNvdXJjZVByb3ZpZGVyLCByZXBsYWNpbmcgVGV4dHVyZUFs
bG9jYXRvciBhbmQgaGlkaW5nIHRleHR1cmVzIGZyb20gY2xpZW50cyB0byBhbGxvdyB0cmFuc3Bv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDQ0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBk
b2VzIHNldmVyYWwgdGhpbmdzOgorICAgICAgICAtIEFkZCBhIENDUmVzb3VyY2VQcm92aWRlciBj
bGFzcywgdGhhdCBoaWRlcyB0ZXh0dXJlcyBhbmQgdGhlIDNEIGNvbnRleHQKKyAgICAgICAgZnJv
bSBsYXllcnMgKGV4Y2VwdCB0aG9zZSB0aGF0IG5lZWQgaXQpLiBJbnN0ZWFkIGxheWVycyBtYW5h
Z2UKKyAgICAgICAgInJlc291cmNlcyIuIEluIHRoZSBmdXR1cmUsIHJlc291cmNlcyBhcmUgZXhw
ZWN0ZWQgdG8gYmUgdHJhbnNwb3J0YWJsZQorICAgICAgICB0byBhICJwYXJlbnQiIENDUmVzb3Vy
Y2VQcm92aWRlciB0byBhbGxvdyBmbGF0dGVuaW5nIG9mIG5lc3RlZAorICAgICAgICBjb21wb3Np
dG9ycy4KKyAgICAgICAgLSBSZXBsYWNlIHRleHR1cmUgaWRzIGJ5IHJlc291cmNlIGlkcyBpbiBE
cmF3UXVhZHMgKGFsbG93aW5nIHRoZW0gdG8gYmUKKyAgICAgICAgc2VyaWFsaXphYmxlKS4KKyAg
ICAgICAgLSBSZXBsYWNlIFRleHR1cmVBbGxvY2F0b3IgdXNlcyBieSB0aGUgQ0NSZXNvdXJjZVBy
b3ZpZGVyIGNsYXNzLgorICAgICAgICAtIFVwbG9hZCBvZiBkYXRhIGlzIGRvbmUgdGhyb3VnaCB0
aGUgQ0NSZXNvdXJjZVByb3ZpZGVyIGluc3RlYWQgb2YKKyAgICAgICAgZXhwbGljaXQgR0wgY2Fs
bHMuCisgICAgICAgIC0gRXh0ZXJuYWwgdGV4dHVyZXMgYXJlIHdyYXBwZWQgaW50byBhIHJlc291
cmNlIGF0IGRyYXcgdGltZSAoc2VlCisgICAgICAgIGNhdmVhdC9GSVhNRSBpbiBDQ1RleHR1cmVM
YXllckltcGwpLgorICAgICAgICAtIFJlbmRlcmluZyB3aXRoIHRoZSByZXNvdXJjZXMgaXMgZG9u
ZSB0aHJvdWdoIGFuIGV4cGxpY2l0CisgICAgICAgIGJlZ2luUmVuZGVyRnJvbS9lbmRSZW5kZXJG
cm9tIHRoYXQgZXhwb3NlcyB0aGUgdGV4dHVyZSBvbmx5IGJldHdlZW4gdGhhdAorICAgICAgICBw
YWlyLgorICAgICAgICAtIE1lcmdlIGFsbCB0aGUgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgaW5zdGFu
Y2VzIChvbmUgcGVyIGxheWVyKSwgaW50byBhCisgICAgICAgIHNpbmdsZSBpbnN0YW5jZSBvbiB0
aGUgQ0NSZXNvdXJjZVByb3ZpZGVyLgorCisgICAgICAgIEFkZGVkIENDUmVzb3VyY2VQcm92aWRl
clRlc3QsIHRoZSByZWZhY3RvcmluZyBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3Np
dG9yVGV4dHVyZVF1YWQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCk6CisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGlsZVF1YWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbXBvc2l0b3JUaWxlUXVhZDo6V2ViQ29tcG9zaXRvclRpbGVRdWFkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
Ojp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChUZXh0
dXJlKToKKyAgICAgICAgKEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVU
ZXh0dXJlVXBkYXRlcklmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SW1hZ2VMYXllclRleHR1cmVV
cGRhdGVyKToKKyAgICAgICAgKEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRl
Y2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGx5RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdZVVZWaWRlb1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZVF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3SU9TdXJmYWNlUXVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdpbmdGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclBh
c3MpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VTY29wZWRU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZy
YW1lYnVmZmVyVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZmluaXNoQ3VycmVudEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2Jq
ZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZXNvdXJjZVByb3ZpZGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6TGF5ZXJUZXh0dXJlU3Vi
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1
YkltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRX
aXRoTWFwVGV4U3ViSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVN1YkltYWdlLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTGF5
ZXJUZXh0dXJlU3ViSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4
dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6Ok1hbmFnZWRUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpyZXNlcnZlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjphbGxvY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
YW5hZ2VkVGV4dHVyZTo6c3RlYWwpOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6
OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4
dHVyZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OnJlc291cmNlSWQpOgor
ICAgICAgICAoTWFuYWdlZFRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZFRleHR1
cmVDb3BpZXI6OmZsdXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlQ29waWVyLmg6CisgICAgICAgIChUZXh0dXJlQ29waWVyKToKKyAgICAgICAgKEFjY2Vs
ZXJhdGVkVGV4dHVyZUNvcGllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6
OlRleHR1cmVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpkZWxl
dGVFdmljdGVkVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OnJl
bW92ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXI6OmFsbG9jYXRl
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2Vy
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2Vy
OjpjcmVhdGUpOgorICAgICAgICAoVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoVGV4dHVyZUlu
Zm8pOgorICAgICAgICAoRXZpY3Rpb25FbnRyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmg6CisgICAgICAgIChUZXh0dXJlVXBsb2FkZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVV
cGxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6
OnVwbG9hZFRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ro
cm90dGxlZFRleHR1cmVVcGxvYWRlci5oOgorICAgICAgICAoVGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6ZHJhdyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NJT1N1cmZhY2VMYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oOgor
ICAgICAgICAoQ0NJT1N1cmZhY2VMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjp3aWxsRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6ZGlkRHJh
dyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Y29udGVudHNSZXNvdXJjZUlkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgor
ICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBh
c3Nlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZWxlYXNlQ29u
dGVudHNUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpk
aWREcmF3QWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6
OmluaXRpYWxpemVMYXllclJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnJlc291cmNlUHJvdmlkZXIpOgor
ICAgICAgICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmFjcXVpcmVCYWNraW5nVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6cmVzb3VyY2VJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiZWdpblJlbmRlclRvKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjplbmRSZW5kZXJUbyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4
dHVyZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1ByaW9yaXRpemVkVGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZzo6cmVz
b3VyY2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2lu
Zzo6QmFja2luZyk6CisgICAgICAgIChCYWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjp+Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VN
ZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpj
bGVhckFsbE1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OmFsbEJhY2tpbmdUZXh0dXJlc1dlcmVEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlQmFja2luZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ryb3lCYWNraW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKToKKyAgICAgICAgKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmg6CisgICAgICAgIChDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWFza1Jlc291cmNlSWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKENDUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0dXJlVG9TdG9yYWdlRm9ybWF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzVGV4dHVyZUZvcm1hdFN1cHBvcnRlZEZvclN0b3JhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjp+Q0NSZXNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Z3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjppblVzZUJ5Q29uc3VtZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmRlbGV0ZVJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6ZGVsZXRlT3duZWRS
ZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjp1cGxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpiZWdpblJlbmRlclRvKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6ZW5kUmVuZGVyVG8pOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpiZWdpblJlbmRlckZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjplbmRSZW5kZXJGcm9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Q0NSZXNvdXJjZVByb3ZpZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NS
ZXNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6
bWF4VGV4dHVyZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpu
dW1SZXNvdXJjZXMpOgorICAgICAgICAoUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1Njb3BlZFRleHR1cmU6OkNDU2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1Njb3BlZFRleHR1cmU6OmFsbG9jYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4
dHVyZTo6ZnJlZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y29wZWRUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njb3BlZFRleHR1cmU6OmNyZWF0
ZSk6CisgICAgICAgIChDQ1Njb3BlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY29w
ZWRUZXh0dXJlOjpiZWdpblJlbmRlclRvKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4
dHVyZTo6ZW5kUmVuZGVyVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY29wZWRUZXh0dXJlOjpi
ZWdpblJlbmRlckZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY29wZWRUZXh0dXJlOjplbmRS
ZW5kZXJGcm9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVy
SW1wbDo6Q0NTY3JvbGxiYXJMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6c2V0QmFja1RyYWNrUmVzb3Vy
Y2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6c2V0Rm9yZVRy
YWNrUmVzb3VyY2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6
c2V0VGh1bWJSZXNvdXJjZUlkKToKKyAgICAgICAgKENDU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGV4dHVyZTo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlOjpzZXRJ
ZCk6CisgICAgICAgIChDQ1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rl
eHR1cmVMYXllckltcGw6OkNDVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RleHR1cmVMYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RleHR1cmVMYXllckltcGw6OmRpZERyYXcpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oOgorICAgICAgICAoQ0NU
ZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0
ZXI6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1RleHR1cmVV
cGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6bGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhd2FibGVUaWxlOjpyZXNvdXJjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdhYmxlVGlsZTo6c2V0UmVzb3VyY2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3YWJs
ZVRpbGU6OkRyYXdhYmxlVGlsZSk6CisgICAgICAgIChEcmF3YWJsZVRpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6Y29udGVudHNSZXNvdXJjZUlkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6Omhhc1RleHR1cmVJZEZvclRpbGVBdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpwdXNoVGlsZVByb3BlcnRpZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAg
ICAgKENDVGlsZWRMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xh
eWVySW1wbDo6Q0NWaWRlb0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5
ZXJJbXBsOjp+Q0NWaWRlb0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5
ZXJJbXBsOjp3aWxsRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjp3
aWxsRHJhd0ludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFw
cGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmRpZERyYXcp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6YWxsb2Nh
dGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmU6
OmZyZWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmFsbG9jYXRl
UGxhbmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmNvcHlQbGFu
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6ZnJlZVBsYW5lRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpmcmVlVW51c2VkUGxhbmVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmRpZExvc2VDb250ZXh0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChDQ1ZpZGVvTGF5ZXJJbXBsKToKKyAgICAgICAgKEZyYW1lUGxhbmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6RnJhbWVQ
bGFuZSk6CisKIDIwMTItMDctMTYgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBbY2hyb21pdW1dIFR1cm4gb2ZmIFNjcm9sbGJhckxheWVyQ2hyb21pdW0gZm9y
IFdpbmRvd3MgZHVlIHRvIGJhZCBhbHBoYSB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggNWUwOGVjOGM4MzI5YWVkM2IzMjI3MjVkZDgxMTJjNjQyZDE4M2M2Yi4uYzUxZDRkNDBh
MTE2M2E1MWQ1OWM5NjBjMTI5MDFhMGUzYTI0YzdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5NCBAQAorMjAxMi0wNy0xMSAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBJbnRyb2R1Y2UgQ0NSZXNvdXJjZVBy
b3ZpZGVyLCByZXBsYWNpbmcgVGV4dHVyZUFsbG9jYXRvciBhbmQgaGlkaW5nIHRleHR1cmVzIGZy
b20gY2xpZW50cyB0byBhbGxvdyB0cmFuc3BvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDQ0CisKKyAgICAgICAgVGhpcyBkb2VzIHNldmVyYWwg
dGhpbmdzOgorICAgICAgICAtIEFkZCBhIENDUmVzb3VyY2VQcm92aWRlciBjbGFzcywgdGhhdCBo
aWRlcyB0ZXh0dXJlcyBhbmQgdGhlIDNEIGNvbnRleHQKKyAgICAgICAgZnJvbSBsYXllcnMgKGV4
Y2VwdCB0aG9zZSB0aGF0IG5lZWQgaXQpLiBJbnN0ZWFkIGxheWVycyBtYW5hZ2UKKyAgICAgICAg
InJlc291cmNlcyIuIEluIHRoZSBmdXR1cmUsIHJlc291cmNlcyBhcmUgZXhwZWN0ZWQgdG8gYmUg
dHJhbnNwb3J0YWJsZQorICAgICAgICB0byBhICJwYXJlbnQiIENDUmVzb3VyY2VQcm92aWRlciB0
byBhbGxvdyBmbGF0dGVuaW5nIG9mIG5lc3RlZAorICAgICAgICBjb21wb3NpdG9ycy4KKyAgICAg
ICAgLSBSZXBsYWNlIHRleHR1cmUgaWRzIGJ5IHJlc291cmNlIGlkcyBpbiBEcmF3UXVhZHMgKGFs
bG93aW5nIHRoZW0gdG8gYmUKKyAgICAgICAgc2VyaWFsaXphYmxlKS4KKyAgICAgICAgLSBSZXBs
YWNlIFRleHR1cmVBbGxvY2F0b3IgdXNlcyBieSB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVyIGNsYXNz
LgorICAgICAgICAtIFVwbG9hZCBvZiBkYXRhIGlzIGRvbmUgdGhyb3VnaCB0aGUgQ0NSZXNvdXJj
ZVByb3ZpZGVyIGluc3RlYWQgb2YKKyAgICAgICAgZXhwbGljaXQgR0wgY2FsbHMuCisgICAgICAg
IC0gRXh0ZXJuYWwgdGV4dHVyZXMgYXJlIHdyYXBwZWQgaW50byBhIHJlc291cmNlIGF0IGRyYXcg
dGltZSAoc2VlCisgICAgICAgIGNhdmVhdC9GSVhNRSBpbiBDQ1RleHR1cmVMYXllckltcGwpLgor
ICAgICAgICAtIFJlbmRlcmluZyB3aXRoIHRoZSByZXNvdXJjZXMgaXMgZG9uZSB0aHJvdWdoIGFu
IGV4cGxpY2l0CisgICAgICAgIGJlZ2luUmVuZGVyRnJvbS9lbmRSZW5kZXJGcm9tIHRoYXQgZXhw
b3NlcyB0aGUgdGV4dHVyZSBvbmx5IGJldHdlZW4gdGhhdAorICAgICAgICBwYWlyLgorICAgICAg
ICAtIE1lcmdlIGFsbCB0aGUgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgaW5zdGFuY2VzIChvbmUgcGVy
IGxheWVyKSwgaW50byBhCisgICAgICAgIHNpbmdsZSBpbnN0YW5jZSBvbiB0aGUgQ0NSZXNvdXJj
ZVByb3ZpZGVyLgorCisgICAgICAgIEFkZGVkIENDUmVzb3VyY2VQcm92aWRlclRlc3QsIHRoZSBy
ZWZhY3RvcmluZyBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgor
ICAgICAgICAqIHRlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHA6CisgICAgICAgIChX
VEY6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdDo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0KToK
KyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0OjpjcmVhdGVNYW5hZ2VyKToK
KyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0Ojp2YWxpZGF0ZVRleHR1cmUp
OgorICAgICAgICAoV1RGOjpDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Q6OnJlc291cmNlUHJvdmlk
ZXIpOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0KToKKyAgICAgICAgKFdURjo6
VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcDoKKyAgICAgICAg
KiB0ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoUmVzb3VyY2VQcm92aWRlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VQcm92aWRlckNvbnRleHQ6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VQcm92aWRlckNvbnRleHQ6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlUHJvdmlkZXJDb250ZXh0Ojp0ZXhTdG9yYWdlMkRFWFQpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlUHJvdmlkZXJDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OmdldFBpeGVscyk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlUHJvdmlkZXJDb250ZXh0Ojp0ZXh0dXJlQ291bnQpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6dGV4dHVyZVNpemUpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6VGV4dHVyZTo6VGV4dHVy
ZSk6CisgICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRl
ckNvbnRleHQ6OmFsbG9jYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlUHJv
dmlkZXJDb250ZXh0OjpzZXRQaXhlbHMpOgorICAgICAgICAoQ0NSZXNvdXJjZVByb3ZpZGVyVGVz
dCk6CisgICAgICAgIChXZWJLaXQ6OkNDUmVzb3VyY2VQcm92aWRlclRlc3Q6OkNDUmVzb3VyY2VQ
cm92aWRlclRlc3QpOgorICAgICAgICAoV2ViS2l0OjpDQ1Jlc291cmNlUHJvdmlkZXJUZXN0Ojpj
b250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6Q0NSZXNvdXJjZVByb3ZpZGVyVGVzdDo6Z2V0UmVz
b3VyY2VQaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorICAgICAgICAqIHRlc3Rz
L0NDU2NvcGVkVGV4dHVyZVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgor
ICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKENDTGF5
ZXJUZXN0Q29tbW9uOjpjcmVhdGVMYXllcik6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6
VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHA6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0
ZVJlY3QpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAgICAg
ICAgKFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VUZXh0dXJlQ29waWVyOjpj
b3B5VGV4dHVyZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZVRleHR1cmVDb3BpZXI6OmZs
dXNoKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRU
ZXh0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9Db250ZW50TGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9GYWtlQ0NHcmFwaGljc0Nv
bnRleHQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHRlc3RzL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6RmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hy
b21pdW1UZXN0OjpMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKExheWVyUmVu
ZGVyZXJDaHJvbWl1bVRlc3Q6OmNvbnRleHQpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9t
aXVtVGVzdCk6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICog
dGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RleHR1cmVNYW5h
Z2VyVGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRleHR1cmVNYW5hZ2VyVGVzdDo6VGV4dHVyZU1h
bmFnZXJUZXN0KToKKyAgICAgICAgKFdURjo6VGV4dHVyZU1hbmFnZXJUZXN0OjpjcmVhdGVUZXh0
dXJlTWFuYWdlcik6CisgICAgICAgIChXVEY6OlRleHR1cmVNYW5hZ2VyVGVzdDo6cmVxdWVzdFRl
eHR1cmUpOgorICAgICAgICAoVGV4dHVyZU1hbmFnZXJUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9U
aWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwogMjAxMi0wNy0xNiAgS29qaSBJc2hpaSAgPGtv
amlpc2hpQGdtYWlsLmNvbT4KIAogICAgICAgICBWZXJ0aWNhbCBhbHRlcm5hdGUgZ2x5cGggKEdT
VUIpIHN1cHBvcnQgZm9yIE9wZW5UeXBlVmVydGljYWxEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaApp
bmRleCA5YmU2ZmQzZTZkMzE4MjZmMjUxMmE4MDI2MzcyNzlmNDMyNzI2MDYzLi42Yjg4Njk1NjVj
MTZhMjJhOTdmMjJlYWM2NTNkYzkwZGFiMzVmYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmgKQEAg
LTQzLDExICs0MywxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkNvbXBvc2l0b3JU
ZXh0dXJlUXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVhZCB7CiBwdWJsaWM6CiAjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCi0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRl
eHR1cmVRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wgcHJlbXVsdGlw
bGllZEFscGhhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVk
KTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ+IGNyZWF0
ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIHVuc2lnbmVkIHJlc291cmNlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKTsKICAgICBXZWJDb3Jl
OjpGbG9hdFJlY3QgdXZSZWN0KCkgY29uc3QgeyByZXR1cm4gbV91dlJlY3Q7IH0KICNlbmRpZgog
Ci0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0K
KyAgICB1bnNpZ25lZCByZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUlkOyB9
CiAgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEoKSBjb25zdCB7IHJldHVybiAgbV9wcmVtdWx0
aXBsaWVkQWxwaGE7IH0KICAgICBib29sIGZsaXBwZWQoKSBjb25zdCB7IHJldHVybiBtX2ZsaXBw
ZWQ7IH0KIApAQCAtNTYsMTAgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgV2Vi
Q29tcG9zaXRvclRleHR1cmVRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29tcG9zaXRvclF1
YWQqKTsKIHByaXZhdGU6CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViQ29tcG9z
aXRvclRleHR1cmVRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0
ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lkLCBib29sIHBy
ZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wg
ZmxpcHBlZCk7CisgICAgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKGNvbnN0IFdlYktpdDo6V2Vi
Q29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCB1bnNp
Z25lZCByZXNvdXJjZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7CiAjZW5kaWYKIAotICAgIHVuc2lnbmVk
IG1fdGV4dHVyZUlkOworICAgIHVuc2lnbmVkIG1fcmVzb3VyY2VJZDsKICAgICBib29sIG1fcHJl
bXVsdGlwbGllZEFscGhhOwogICAgIFdlYkZsb2F0UmVjdCBtX3V2UmVjdDsKICAgICBib29sIG1f
ZmxpcHBlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvclRpbGVRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JUaWxlUXVhZC5oCmluZGV4IGUwYTI1NWJiMjVkYTM3OGJiYWY0NTk5NjVlNjIy
ZDQyM2UyOTc4NmEuLmUyMGRlNzIzMzEwYTY4OTU3YTc5OWMyZWI5N2E4MDE1NGFiMWJiN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRp
bGVRdWFkLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yVGlsZVF1YWQuaApAQCAtMzksOSArMzksOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYkNvbXBvc2l0b3JUaWxlUXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVhZCB7CiBwdWJs
aWM6CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgc3RhdGljIFBhc3NPd25QdHI8V2Vi
Q29tcG9zaXRvclRpbGVRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRl
eHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBi
b29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJv
dHRvbUVkZ2VBQSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRpbGVRdWFk
PiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBvcGFxdWVSZWN0
LCB1bnNpZ25lZCByZXNvdXJjZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGV4dHVyZU9m
ZnNldCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVy
ZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BF
ZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKIAotICAgIFBsYXRm
b3JtM0RPYmplY3QgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKyAg
ICB1bnNpZ25lZCByZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUlkOyB9CiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4
dHVyZU9mZnNldDsgfQogICAgIFdlYkNvcmU6OkludFNpemUgdGV4dHVyZVNpemUoKSBjb25zdCB7
IHJldHVybiBtX3RleHR1cmVTaXplOyB9CiAgICAgR0MzRGludCB0ZXh0dXJlRmlsdGVyKCkgY29u
c3QgeyByZXR1cm4gbV90ZXh0dXJlRmlsdGVyOyB9CkBAIC01OCwxMCArNTgsMTAgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yVGlsZVF1YWQqIG1hdGVyaWFsQ2FzdChj
b25zdCBXZWJDb21wb3NpdG9yUXVhZCopOwogcHJpdmF0ZToKICNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KLSAgICAgV2ViQ29tcG9zaXRvclRpbGVRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250
ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwg
Ym9vbCBib3R0b21FZGdlQUEpOworICAgICBXZWJDb21wb3NpdG9yVGlsZVF1YWQoY29uc3QgV2Vi
Q29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHF1YWRS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBvcGFxdWVSZWN0LCB1bnNpZ25lZCByZXNvdXJj
ZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6
emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRF
ZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKICNlbmRpZgogCi0gICAgUGxhdGZvcm0zRE9iamVj
dCBtX3RleHR1cmVJZDsKKyAgICB1bnNpZ25lZCBtX3Jlc291cmNlSWQ7CiAgICAgV2ViUG9pbnQg
bV90ZXh0dXJlT2Zmc2V0OwogICAgIFdlYlNpemUgbV90ZXh0dXJlU2l6ZTsKICAgICBHQzNEaW50
IG1fdGV4dHVyZUZpbHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkZjIxNjkzNjI5Njg2ZjI3Y2U0
YTYwMTFkY2U0MTIxOThjNWU4YWM5Li5iMGQxZGY5MzMzZWI1YzJjZDU4MzZiYjA0MDg1Njk2ZDhl
MDNlNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04Mjg2LDggKzgyODYsNiBAQAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hyb25pemVyLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJv
bWl1bS5jcHAnLApAQCAtODM2OSw2ICs4MzY3LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRmlsdGVy
cy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
cmluZ1N0YXRzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVzb3VyY2VQcm92aWRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNw
cCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5jcHAKaW5kZXggZTVmNDVm
ZGM0Y2IyYTU4ZjcyODdmNWZhYzVkYzU2YmRkMjMwNDA3Yi4uZGQwYjY3YTQxYTIzZjZhMWI4MDgy
Njk2NjMwMjBmMDdmZDYwNTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkLmNwcApAQCAtMzEsMTQgKzMxLDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ+
IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9z
aXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFk
UmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3Qg
RmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkKK1Bhc3NPd25QdHI8V2ViQ29tcG9zaXRv
clRleHR1cmVRdWFkPiBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OmNyZWF0ZShjb25zdCBXZWJL
aXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQsIGJvb2wgcHJlbXVsdGlwbGll
ZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKQogewotICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgcXVhZFJlY3QsIHRleHR1cmVJZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBw
ZWQpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZChz
aGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCByZXNvdXJjZUlkLCBwcmVtdWx0aXBsaWVkQWxwaGEs
IHV2UmVjdCwgZmxpcHBlZCkpOwogfQogCi1XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OldlYkNv
bXBvc2l0b3JUZXh0dXJlUXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVk
IHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZS
ZWN0LCBib29sIGZsaXBwZWQpCitXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OldlYkNvbXBvc2l0
b3JUZXh0dXJlUXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHJlc291
cmNlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwg
Ym9vbCBmbGlwcGVkKQogICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBX
ZWJDb21wb3NpdG9yUXVhZDo6VGV4dHVyZUNvbnRlbnQsIHF1YWRSZWN0KQotICAgICwgbV90ZXh0
dXJlSWQodGV4dHVyZUlkKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCiAgICAgLCBt
X3ByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBsaWVkQWxwaGEpCiAgICAgLCBtX3V2UmVjdCh1
dlJlY3QpCiAgICAgLCBtX2ZsaXBwZWQoZmxpcHBlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRp
bGVRdWFkLmNwcAppbmRleCAyN2FhNzc1MDgxNzQxYjExNDE5YjgxMTc2ODdhOTk2YWY5MmQxY2Vj
Li5kZTBlODFkZmNmZWNlMDIwMzg3N2E4MmM0ZmY2YmViNjgwM2QzMWVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxl
UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJDb21wb3NpdG9yVGlsZVF1YWQuY3BwCkBAIC0zMSwxNCArMzEsMTQgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzT3duUHRyPFdlYkNvbXBv
c2l0b3JUaWxlUXVhZD4gV2ViQ29tcG9zaXRvclRpbGVRdWFkOjpjcmVhdGUoY29uc3QgV2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBx
dWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0
dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0
dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9v
bCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0
b21FZGdlQUEpCitQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUaWxlUXVhZD4gV2ViQ29tcG9zaXRv
clRpbGVRdWFkOjpjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3Bh
cXVlUmVjdCwgdW5zaWduZWQgcmVzb3VyY2VJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZz
ZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJv
b2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29s
IHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFdlYkNvbXBvc2l0b3JUaWxlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFx
dWVSZWN0LCB0ZXh0dXJlSWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmls
dGVyLCBzd2l6emxlQ29udGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEs
IGJvdHRvbUVkZ2VBQSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclRp
bGVRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIHJlc291cmNlSWQs
IHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29udGVu
dHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwog
fQogCi1XZWJDb21wb3NpdG9yVGlsZVF1YWQ6OldlYkNvbXBvc2l0b3JUaWxlUXVhZChjb25zdCBX
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0
IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUm
IHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRz
LCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29s
IGJvdHRvbUVkZ2VBQSkKK1dlYkNvbXBvc2l0b3JUaWxlUXVhZDo6V2ViQ29tcG9zaXRvclRpbGVR
dWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Y29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIHVuc2ln
bmVkIHJlc291cmNlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRT
aXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250
ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwg
Ym9vbCBib3R0b21FZGdlQUEpCiAgICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3Rh
dGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpUaWxlZENvbnRlbnQsIHF1YWRSZWN0KQotICAgICwgbV90
ZXh0dXJlSWQodGV4dHVyZUlkKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCiAgICAg
LCBtX3RleHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkKICAgICAsIG1fdGV4dHVyZVNpemUodGV4
dHVyZVNpemUpCiAgICAgLCBtX3RleHR1cmVGaWx0ZXIodGV4dHVyZUZpbHRlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZDc1
Y2YwNTRkYzUyZTliMjdmODU1NGFhNWU1YWQ3YmY1OWU4MjJhZC4uZDI0NGRlNjc0YTI2YmE0ZDdh
ZWM1YWFjZTZhMmFlZDE0YTFhZWE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJM
YXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCi0jaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5o
IgotI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAic2tpYS9leHQv
cGxhdGZvcm1fY2FudmFzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDIwICs0Nywx
OSBAQCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgp
CiB7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
dXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBk
YXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmVV
cGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgp
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4
dHVyZVJlY3QocmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCitQYXNzUmVmUHRy
PEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVy
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcihwYWludGVyLCB1c2VNYXBUZXhTdWJJbWFnZSkpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyKSk7CiB9CiAKLUJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBU
ZXhTdWJJbWFnZSkKK0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFp
bnRlcikKICAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikKICAgICAsIG1f
b3BhcXVlKGZhbHNlKQotICAgICwgbV90ZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkKIHsK
IH0KIApAQCAtODQsOCArODEsNiBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZAogCiB2b2lkIEJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGZsb2F0IGNvbnRlbnRz
V2lkdGhTY2FsZSwgZmxvYXQgY29udGVudHNIZWlnaHRTY2FsZSwgSW50UmVjdCYgcmVzdWx0aW5n
T3BhcXVlUmVjdCkKIHsKLSAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6
ZSk7Ci0KICAgICBpZiAobV9jYW52YXNTaXplICE9IGNvbnRlbnRSZWN0LnNpemUoKSkgewogICAg
ICAgICBtX2NhbnZhc1NpemUgPSBjb250ZW50UmVjdC5zaXplKCk7CiAgICAgICAgIG1fY2FudmFz
ID0gYWRvcHRQdHIoc2tpYTo6Q3JlYXRlQml0bWFwQ2FudmFzKG1fY2FudmFzU2l6ZS53aWR0aCgp
LCBtX2NhbnZhc1NpemUuaGVpZ2h0KCksIG1fb3BhcXVlKSk7CkBAIC05NCwxMyArODksMTIgQEAg
dm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICBwYWludENvbnRlbnRzKG1fY2FudmFzLmdldCgp
LCBjb250ZW50UmVjdCwgY29udGVudHNXaWR0aFNjYWxlLCBjb250ZW50c0hlaWdodFNjYWxlLCBy
ZXN1bHRpbmdPcGFxdWVSZWN0KTsKIH0KIAotdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lk
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KENDUmVz
b3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NQcmlvcml0aXplZFRleHR1cmUqIHRl
eHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQogewogICAgIGNvbnN0IFNrQml0bWFwJiBiaXRtYXAgPSBtX2NhbnZhcy0+Z2V0RGV2aWNlKCkt
PmFjY2Vzc0JpdG1hcChmYWxzZSk7CiAgICAgYml0bWFwLmxvY2tQaXhlbHMoKTsKIAotICAgIHRl
eHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0gICAgbV90ZXhTdWJJbWFn
ZS51cGxvYWQoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpdG1hcC5nZXRQaXhlbHMoKSks
IGNvbnRlbnRSZWN0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwg
Y29udGV4dCk7CisgICAgdGV4dHVyZS0+dXBsb2FkKHJlc291cmNlUHJvdmlkZXIsIHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihiaXRtYXAuZ2V0UGl4ZWxzKCkpLCBjb250ZW50UmVjdCgpLCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgYml0bWFwLnVubG9ja1BpeGVscygpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXgg
Mjc2ZTJiMzkxNzkyNjczYzRhNGYyYjQ0MjlmZGFkODg2YjRlZGVhOS4uYTdmMTFmYTUzNmMyOTg3
OWY0OTc3YzRlNDlkNjA0MTdlOTkzNzc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzAsMTUgKzMwLDEyIEBACiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oIgotI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCiAKIGNsYXNzIFNrQ2Fu
dmFzOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVt
OwotY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiAv
LyBUaGlzIGNsYXNzIHJhc3Rlcml6ZXMgdGhlIGNvbnRlbnRSZWN0IGludG8gYSBza2lhIGJpdG1h
cCBjYW52YXMuIEl0IHRoZW4gdXBkYXRlcwogLy8gdGV4dHVyZXMgYnkgY29weWluZyBmcm9tIHRo
ZSBjYW52YXMgaW50byB0aGUgdGV4dHVyZSwgdXNpbmcgTWFwU3ViSW1hZ2UgaWYKQEAgLTUwLDcg
KzQ3LDcgQEAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIqLCBQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPik7CiAgICAgICAgIHZp
cnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dy
YXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSBPVkVSUklERTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVy
KCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTgsMjMgKzU1LDIyIEBAIHB1Ymxp
YzoKICAgICAgICAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBk
YXRlcjsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcj4gY3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBi
b29sIHVzZU1hcFRleFN1YkltYWdlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4pOwogICAgIHZpcnR1YWwgfkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKTsK
IAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBj
cmVhdGVUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwg
U2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9y
bWF0KTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgZmxvYXQgY29udGVudHNXaWR0aFNj
YWxlLCBmbG9hdCBjb250ZW50c0hlaWdodFNjYWxlLCBJbnRSZWN0JiByZXN1bHRpbmdPcGFxdWVS
ZWN0KSBPVkVSUklERTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250
ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciosIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgIHZvaWQgdXBk
YXRlVGV4dHVyZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiwgQ0NQcmlvcml0aXplZFRleHR1cmUq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpIE9WRVJSSURFOwogCiBwcml2YXRlOgot
ICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50
ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOworICAgIGV4cGxpY2l0IEJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1
bT4pOwogCiAgICAgT3duUHRyPFNrQ2FudmFzPiBtX2NhbnZhczsKICAgICBJbnRTaXplIG1fY2Fu
dmFzU2l6ZTsKICAgICBib29sIG1fb3BhcXVlOwotICAgIExheWVyVGV4dHVyZVN1YkltYWdlIG1f
dGV4U3ViSW1hZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwCmluZGV4IDg2ZmIyYzhjM2I0MTM4ODVmZWI5ZmRlODIzZjk1MjA4Mjg5ZWIxNjkuLjI4NTky
NDI1Mzk4NGUyNzI4ZDVkZWQxYjNhZWJkMWI4ODJmNGVmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CkBAIC0zNCw4ICszNCw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUg
IlNrQ2FudmFzLmgiCiAjaW5jbHVkZSAiU2tEZXZpY2UuaCIKLSNpbmNsdWRlICJUZXh0dXJlQWxs
b2NhdG9yLmgiCi0jaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC01NSwyNCArNTMsMjEgQEAgdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChjb25zdCBJbnRSZWMK
ICAgICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzUmVjdCgmY2FudmFzLCBzb3VyY2VS
ZWN0KTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpCiB7Ci0gICAgdGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwot
CiAgICAgbV9iaXRtYXAubG9ja1BpeGVscygpOwotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0
ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBzdGF0
aWNfY2FzdDx1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxzKCkpKTsKKyAgICB0ZXh0dXJlKCkt
PnVwbG9hZChyZXNvdXJjZVByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9iaXRtYXAu
Z2V0UGl4ZWxzKCkpLCBkZXN0UmVjdCwgZGVzdFJlY3QsIGRlc3RSZWN0KTsKICAgICBtX2JpdG1h
cC51bmxvY2tQaXhlbHMoKTsKICAgICBtX2JpdG1hcC5yZXNldCgpOwogfQogCi1QYXNzUmVmUHRy
PEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRl
ckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQorUGFzc1JlZlB0cjxC
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4gcGFpbnRlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlciwgdXNlTWFwVGV4U3ViSW1hZ2Up
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIocGFpbnRlcikpOwogfQogCi1CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBh
c3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3Vi
SW1hZ2UpCitCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVy
Q2hyb21pdW0+IHBhaW50ZXIpCiAgICAgOiBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKHBhaW50ZXIpCi0gICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQogewog
fQogCkBAIC05MiwxMiArODcsNiBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcgogICAgICAgICAg
ICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4
dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiB9CiAKLXZvaWQgQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgZmxvYXQgY29udGVu
dHNXaWR0aFNjYWxlLCBmbG9hdCBjb250ZW50c0hlaWdodFNjYWxlLCBJbnRSZWN0JiByZXN1bHRp
bmdPcGFxdWVSZWN0KQotewotICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVT
aXplKTsKLSAgICBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9V
cGRhdGUoY29udGVudFJlY3QsIHRpbGVTaXplLCBjb250ZW50c1dpZHRoU2NhbGUsIGNvbnRlbnRz
SGVpZ2h0U2NhbGUsIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwotfQotCiB2b2lkIEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFz
KiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCiB7CiAgICAgLy8gVHJhbnNsYXRl
IHRoZSBvcmlnaW4gb2YgY29udGVudFJlY3QgdG8gdGhhdCBvZiBzb3VyY2VSZWN0LgpAQCAtMTA2
LDEwICs5NSw1IEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqIGNhbnZhCiAgICAgZHJhd1BpY3R1cmUoY2Fu
dmFzKTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Ojp1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgR0MzRGVudW0g
Zm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKQot
ewotICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKHBpeGVscywgZGVzdFJlY3QsIGRlc3RSZWN0LCBk
ZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
I2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRl
eCA5ZjEzODg4MjdiMzZkNzdjYTg5M2YzM2YzYjcxMzBmNTYzMTZkZmY5Li44NTVkNDA1ODU2ZTQw
ZTU4NmE5YTgwNzFhMjc0NmRiYjM2N2Q4M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0yOCwxNCAr
MjgsMTEgQEAKICNkZWZpbmUgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cl9oCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0jaW5jbHVkZSAiTGF5ZXJU
ZXh0dXJlU3ViSW1hZ2UuaCIKICNpbmNsdWRlICJTa0JpdG1hcC5oIgogI2luY2x1ZGUgIlNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwotCiAvLyBUaGlzIGNsYXNzIHJlY29yZHMgdGhlIGNv
bnRlbnRSZWN0IGludG8gYW4gU2tQaWN0dXJlLCB0aGVuIHNvZnR3YXJlIHJhc3Rlcml6ZXMKIC8v
IHRoZSBTa1BpY3R1cmUgaW50byBiaXRtYXBzIGZvciBlYWNoIHRpbGUuIFRoaXMgaW1wbGVtZW50
cyBDQ1NldHRpbmdzOjpwZXJUaWxlUGFpbnRpbmcuCiBjbGFzcyBCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIgewpAQCAtNDUsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8Q0NQcmlv
cml0aXplZFRleHR1cmU+KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCkgT1ZFUlJJREU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSBPVkVSUklERTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIE9WRVJSSURFOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBA
IC01NCwxOSArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOwogICAgIH07CiAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBj
cmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3Vi
SW1hZ2UpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7
CiAgICAgdmlydHVhbCB+Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigp
OwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+
IGNyZWF0ZVRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVt
IHRleHR1cmVGb3JtYXQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBm
bG9hdCBjb250ZW50c1dpZHRoU2NhbGUsIGZsb2F0IGNvbnRlbnRzSGVpZ2h0U2NhbGUsIEludFJl
Y3QmIHJlc3VsdGluZ09wYXF1ZVJlY3QpIE9WRVJSSURFOwogICAgIHZvaWQgcGFpbnRDb250ZW50
c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKLSAgICB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgR0MzRGVudW0gZm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsKIAogcHJpdmF0ZToK
LSAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKLQotICAgIExh
eWVyVGV4dHVyZVN1YkltYWdlIG1fdGV4U3ViSW1hZ2U7CisgICAgZXhwbGljaXQgQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNo
cm9taXVtPik7CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApp
bmRleCA5ZjQwZjdmZTE4OGI5MzlkZDE2NGFlNGE1MmJlZDc5OWU0YmU4ODFmLi43MTlmOWQ4OTkx
MTZlM2E0MWE5OWE4N2Q2N2Y4ODI2NjI4MTA1NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwCkBAIC0xMjIsOSArMTIyLDkgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCiAgICAgaWYgKGxheWVyVHJlZUhvc3Qo
KS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcpCiAgICAgICAgIG1fdGV4dHVyZVVwZGF0
ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0
ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkpOwogICAgIGVsc2UgaWYg
KENDU2V0dGluZ3M6OnBlclRpbGVQYWludGluZ0VuYWJsZWQoKSkKLSAgICAgICAgbV90ZXh0dXJl
VXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0
ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGxheWVyVHJlZUhvc3Qo
KS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKKyAgICAgICAgbV90
ZXh0dXJlVXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkpOwogICAgIGVs
c2UKLSAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGxh
eWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsK
KyAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkpOwogICAg
IG1fdGV4dHVyZVVwZGF0ZXItPnNldE9wYXF1ZShvcGFxdWUoKSk7CiAKICAgICBHQzNEZW51bSB0
ZXh0dXJlRm9ybWF0ID0gbGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
KCkuYmVzdFRleHR1cmVGb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCA3
ZTlhYzBhNmM2NWZhMDBmNTllNjgwMDQ5YTUyY2QwOWU1ZmFkNjZjLi40MzZmMzQ2ZDRiMTFhNWQ1
OGU5ZDk4ODg4NGFjOGZlMjIwY2IyMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
QEAgLTM5LDIwICszOSwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgUGFzc093
blB0cjxTa0NhbnZhcz4gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0
dXJlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEludFNpemUgY2FudmFzU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQpCiB7Ci0gICAgLy8gQWxsb2NhdGUg
c28gdGhhdCB3ZSBoYXZlIGEgdmFsaWQgdGV4dHVyZSBpZC4KLSAgICB0ZXh0dXJlLT5hY3F1aXJl
QmFja2luZ1RleHR1cmUoYWxsb2NhdG9yKTsKLQogICAgIEdyQ29udGV4dCogZ3JDb250ZXh0ID0g
Y29udGV4dC0+Z3JDb250ZXh0KCk7Ci0gICAgSW50U2l6ZSBjYW52YXNTaXplID0gdGV4dHVyZS0+
c2l6ZSgpOwogICAgIEdyUGxhdGZvcm1UZXh0dXJlRGVzYyB0ZXh0dXJlRGVzYzsKICAgICB0ZXh0
dXJlRGVzYy5mRmxhZ3MgPSBrUmVuZGVyVGFyZ2V0X0dyUGxhdGZvcm1UZXh0dXJlRmxhZzsKICAg
ICB0ZXh0dXJlRGVzYy5mV2lkdGggPSBjYW52YXNTaXplLndpZHRoKCk7CiAgICAgdGV4dHVyZURl
c2MuZkhlaWdodCA9IGNhbnZhc1NpemUuaGVpZ2h0KCk7CiAgICAgdGV4dHVyZURlc2MuZkNvbmZp
ZyA9IGtTa2lhODg4OF9QTV9HclBpeGVsQ29uZmlnOwotICAgIHRleHR1cmVEZXNjLmZUZXh0dXJl
SGFuZGxlID0gdGV4dHVyZS0+dGV4dHVyZUlkKCk7CisgICAgdGV4dHVyZURlc2MuZlRleHR1cmVI
YW5kbGUgPSB0ZXh0dXJlSWQ7CiAgICAgU2tBdXRvVFVucmVmPEdyVGV4dHVyZT4gdGFyZ2V0KGdy
Q29udGV4dC0+Y3JlYXRlUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVEZXNjKSk7CiAgICAgU2tBdXRv
VFVucmVmPFNrRGV2aWNlPiBkZXZpY2UobmV3IFNrR3B1RGV2aWNlKGdyQ29udGV4dCwgdGFyZ2V0
LmdldCgpKSk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTa0NhbnZhcyhkZXZpY2UuZ2V0KCkp
KTsKQEAgLTY4LDEyICs2NCwxMiBAQCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3Qo
Q0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJl
Y3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IHNoYXJlZENvbnRleHQgPSBDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkgPyBT
aGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0Rm9ySW1wbFRocmVhZCgpIDogU2hhcmVkR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldCgpOwogICAgIGlmICghc2hhcmVkQ29udGV4dCkKICAgICAgICAgcmV0
dXJuOwotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KHNoYXJlZENvbnRl
eHQucmVsZWFzZSgpLCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3Qp
OworICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KHNoYXJlZENvbnRleHQu
cmVsZWFzZSgpLCByZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI+IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCkBAIC0x
MDEsMTUgKzk3LDE3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwCiAgICAgcmV0dXJuIExheWVy
VGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CiB9CiAKLXZvaWQgRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVj
dChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBwcnBDb250ZXh0LCBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBwcnBDb250ZXh0LCBDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQocHJwQ29udGV4dCk7CiAKICAgICAvLyBN
YWtlIHN1cmUgZ2FuZXNoIHVzZXMgdGhlIGNvcnJlY3QgR0wgY29udGV4dC4KICAgICBjb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAorICAgIHRleHR1cmUtPmFjcXVpcmVCYWNraW5nVGV4
dHVyZShyZXNvdXJjZVByb3ZpZGVyKTsKKyAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRl
IGxvY2socmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+cmVzb3VyY2VJZCgpKTsKICAgICAvLyBD
cmVhdGUgYW4gYWNjZWxlcmF0ZWQgY2FudmFzIHRvIGRyYXcgb24uCi0gICAgT3duUHRyPFNrQ2Fu
dmFzPiBjYW52YXMgPSBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhjb250ZXh0LmdldCgpLCBhbGxv
Y2F0b3IsIHRleHR1cmUpOworICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0gY3JlYXRlQWNj
ZWxlcmF0ZWRDYW52YXMoY29udGV4dC5nZXQoKSwgdGV4dHVyZS0+c2l6ZSgpLCBsb2NrLnRleHR1
cmVJZCgpKTsKIAogICAgIC8vIFRoZSBjb21wb3NpdG9yIGV4cGVjdHMgdGhlIHRleHR1cmVzIHRv
IGJlIHVwc2lkZS1kb3duIHNvIGl0IGNhbiBmbGlwCiAgICAgLy8gdGhlIGZpbmFsIGNvbXBvc2l0
ZWQgaW1hZ2UuIEdhbmVzaCByZW5kZXJzIHRoZSBpbWFnZSB1cHJpZ2h0IHNvIHdlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCmluZGV4IDhmNjMwYTkyMjgyNjQxMjNiZGZmNWY3ZDg0ZDliODczYjhh
YTI5NjkuLjQ0NjQ5ZTQ3M2M2OWQyNDRjOTFjMDlhNTZhYjcxOWMyMGUxYTRlYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4
dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNz
T3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUo
KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCos
IFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KENDUmVzb3VyY2VQcm92aWRlciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KSBPVkVSUklERTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIo
KSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBj
cmVhdGVUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0
ZXh0dXJlRm9ybWF0KSBPVkVSUklERTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBUZXh0dXJlQWxsb2NhdG9yKiwgQ0NQcmlvcml0aXpl
ZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiwgQ0NSZXNvdXJjZVByb3ZpZGVyKiwgQ0NQcmlvcml0aXplZFRleHR1cmUqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IDY5NjU2M2FjZmU5YWMxMWRjZmI2OTk1YjJhNWRmMTg2YmUx
NzQ0ZDUuLmJhNjA5NDM3OWJhYzRkNGMxM2Y2NGYyYmU1YWRjNTdlYTUxYjQ0M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMzQsNyArMzQsNiBAQAogCiAjaW5jbHVkZSAi
SW1hZ2VMYXllckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5o
IgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNv
bG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCkBAIC01MSw5ICs1MCw5IEBA
IHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpIE9WRVJSSURFCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDUmVzb3VyY2VQ
cm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpIE9WRVJSSURFCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRl
eHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4
dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICB0ZXh0dXJlVXBkYXRl
cigpLT51cGRhdGVUZXh0dXJlUmVjdChyZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlKCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTYyLDkgKzYx
LDkgQEAgcHVibGljOgogICAgICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVy
ZVVwZGF0ZXI7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlTGF5ZXJUZXh0
dXJlVXBkYXRlcj4gY3JlYXRlKGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIodXNlTWFwVGV4
U3ViSW1hZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+SW1hZ2VMYXllclRleHR1cmVVcGRh
dGVyKCkgeyB9CkBAIC04MCwxMCArNzksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAgdm9pZCB1cGRhdGVU
ZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgdm9pZCB1cGRhdGVUZXh0
dXJlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUHJpb3JpdGl6
ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKICAgICB7Ci0gICAgICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRl
eHQsIGFsbG9jYXRvcik7Ci0KICAgICAgICAgLy8gU291cmNlIHJlY3Qgc2hvdWxkIG5ldmVyIGdv
IG91dHNpZGUgdGhlIGltYWdlIHBpeGVscywgZXZlbiBpZiB0aGlzCiAgICAgICAgIC8vIGlzIHJl
cXVlc3RlZCBiZWNhdXNlIHRoZSB0ZXh0dXJlIGV4dGVuZHMgb3V0c2lkZSB0aGUgaW1hZ2UuCiAg
ICAgICAgIEludFJlY3QgY2xpcHBlZFNvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OwpAQCAtOTUsNyAr
OTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsaXBwZWREZXN0UmVjdC5zZXRTaXplKGNsaXBwZWRT
b3VyY2VSZWN0LnNpemUoKSk7CiAKICAgICAgICAgU2tBdXRvTG9ja1BpeGVscyBsb2NrKG1fYml0
bWFwKTsKLSAgICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG1fYml0bWFwLmdldFBpeGVscygpKSwgaW1hZ2VSZWN0LCBjbGlwcGVkU291cmNlUmVj
dCwgY2xpcHBlZERlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgICAg
IHRleHR1cmUtPnVwbG9hZChyZXNvdXJjZVByb3ZpZGVyLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxzKCkpLCBpbWFnZVJlY3QsIGNsaXBwZWRTb3VyY2VSZWN0
LCBjbGlwcGVkRGVzdFJlY3QpOwogICAgIH0KIAogICAgIHZvaWQgc2V0Qml0bWFwKGNvbnN0IFNr
Qml0bWFwJiBiaXRtYXApCkBAIC0xMDQsMTMgKzEwMSw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKGJvb2wgdXNlTWFw
VGV4U3ViSW1hZ2UpCi0gICAgICAgIDogbV90ZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkK
LSAgICB7Ci0gICAgfQorICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQogCiAgICAg
U2tCaXRtYXAgbV9iaXRtYXA7Ci0gICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90ZXhTdWJJbWFn
ZTsKIH07CiAKIFBhc3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBJbWFnZUxheWVyQ2hyb21p
dW06OmNyZWF0ZSgpCkBAIC0xNjYsNyArMTU5LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06
OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQogICAgIGlmIChtX3RleHR1cmVVcGRhdGVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RleHR1cmVVcGRhdGVyID0gSW1hZ2VMYXllclRl
eHR1cmVVcGRhdGVyOjpjcmVhdGUobGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkudXNpbmdNYXBTdWIpOworICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBJbWFnZUxheWVy
VGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSgpOwogICAgIEdDM0RlbnVtIHRleHR1cmVGb3JtYXQgPSBs
YXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5iZXN0VGV4dHVyZUZv
cm1hdDsKICAgICBzZXRUZXh0dXJlRm9ybWF0KHRleHR1cmVGb3JtYXQpOwogICAgIHNldFNhbXBs
ZWRUZXhlbEZvcm1hdCh0ZXh0dXJlVXBkYXRlcigpLT5zYW1wbGVkVGV4ZWxGb3JtYXQodGV4dHVy
ZUZvcm1hdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYTcy
Njc0MTQwZWFjNDA3YTI3MmI1ZjRiZGFkNjYxNWU1NGJhNTQxYS4uNzEyMDNjMWU1ZmQxY2JlMDRl
NGQyMzNlNGQxMzBhYTMxNDk1ZmZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiU2tDb2xvci5oIgogI2luY2x1ZGUg
IlRocm90dGxlZFRleHR1cmVVcGxvYWRlci5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKLSNp
bmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5
LmgiCkBAIC0xMjUsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0J1c3ko
KSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9h
ZHMoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIE9WRVJSSURF
IHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCBkZXN0UmVjdCkgT1ZFUlJJREUgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGFsbG9j
YXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRl
eHR1cmUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QgZGVzdFJlY3QpIE9WRVJSSURFIHsgdGV4dHVyZS0+dXBkYXRlUmVjdChyZXNvdXJj
ZVByb3ZpZGVyLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KIAogcHJvdGVjdGVkOgogICAgIFVu
dGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkgeyB9CkBAIC0xMzMsOSArMTMyLDkgQEAgcHJvdGVj
dGVkOgogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotUGFzc093blB0cjxMYXllclJlbmRl
cmVyQ2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKENDUmVuZGVyZXJDbGll
bnQqIGNsaWVudCwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVVcGxvYWRl
ck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQorUGFzc093blB0cjxMYXllclJlbmRlcmVy
Q2hyb21pdW0+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKENDUmVuZGVyZXJDbGllbnQq
IGNsaWVudCwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBUZXh0dXJlVXBs
b2FkZXJPcHRpb24gdGV4dHVyZVVwbG9hZGVyU2V0dGluZykKIHsKLSAgICBPd25QdHI8TGF5ZXJS
ZW5kZXJlckNocm9taXVtPiBsYXllclJlbmRlcmVyKGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVy
Q2hyb21pdW0oY2xpZW50LCBjb250ZXh0LCB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKSkpOworICAg
IE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQdHIobmV3
IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIHJlc291cmNlUHJvdmlkZXIsIHRleHR1cmVV
cGxvYWRlclNldHRpbmcpKSk7CiAgICAgaWYgKCFsYXllclJlbmRlcmVyLT5pbml0aWFsaXplKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNDMsMTQgKzE0MiwxNSBAQCBQYXNzT3du
UHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUo
Q0NSZW5kZXJlckNsaWVudAogfQogCiBMYXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDUmVzb3VyY2VQ
cm92aWRlciogcmVzb3VyY2VQcm92aWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0
aW5nKQogICAgIDogQ0NSZW5kZXJlcihjbGllbnQpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJQYXNz
KDApCiAgICAgLCBtX2N1cnJlbnRUZXh0dXJlKDApCiAgICAgLCBtX29mZnNjcmVlbkZyYW1lYnVm
ZmVySWQoMCkKICAgICAsIG1fc2hhcmVkR2VvbWV0cnlRdWFkKEZsb2F0UmVjdCgtMC41ZiwgLTAu
NWYsIDEuMGYsIDEuMGYpKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3Jlc291
cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fY29udGV4dChyZXNvdXJjZVBy
b3ZpZGVyLT5ncmFwaGljc0NvbnRleHQzRCgpKQogICAgICwgbV9kZWZhdWx0UmVuZGVyUGFzcygw
KQogICAgICwgbV9pc1ZpZXdwb3J0Q2hhbmdlZChmYWxzZSkKICAgICAsIG1faXNGcmFtZWJ1ZmZl
ckRpc2NhcmRlZChmYWxzZSkKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5k
ZXJQYQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW5kZXJQYXNzZXNJbkRyYXdPcmRl
ci5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIW1fcmVuZGVyUGFzc1RleHR1cmVzLmNvbnRh
aW5zKHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpKSkgewotICAgICAgICAgICAgT3du
UHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKG1f
aW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgICAgICAgICAgT3duUHRyPENDU2NvcGVk
VGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKG1fcmVzb3VyY2VQcm92
aWRlcik7CiAgICAgICAgICAgICBtX3JlbmRlclBhc3NUZXh0dXJlcy5zZXQocmVuZGVyUGFzc2Vz
SW5EcmF3T3JkZXJbaV0tPmlkKCksIHRleHR1cmUucmVsZWFzZSgpKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTUxNSw3ICs1MTUsOSBAQCBzdGF0aWMgaW5saW5lIFNrQml0bWFwIGFwcGx5RmlsdGVy
cyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0CiAKICAgICBsYXll
clJlbmRlcmVyLT5jb250ZXh0KCktPmZsdXNoKCk7CiAKLSAgICByZXR1cm4gQ0NSZW5kZXJTdXJm
YWNlRmlsdGVyczo6YXBwbHkoZmlsdGVycywgc291cmNlVGV4dHVyZS0+aWQoKSwgc291cmNlVGV4
dHVyZS0+c2l6ZSgpLCBmaWx0ZXJDb250ZXh0LmdldCgpKTsKKyAgICBDQ1Njb3BlZExvY2tSZXNv
dXJjZUZvcldyaXRlIGxvY2sobGF5ZXJSZW5kZXJlci0+cmVzb3VyY2VQcm92aWRlcigpLCBzb3Vy
Y2VUZXh0dXJlLT5pZCgpKTsKKyAgICBTa0JpdG1hcCBzb3VyY2UgPSBDQ1JlbmRlclN1cmZhY2VG
aWx0ZXJzOjphcHBseShmaWx0ZXJzLCBsb2NrLnRleHR1cmVJZCgpLCBzb3VyY2VUZXh0dXJlLT5z
aXplKCksIGZpbHRlckNvbnRleHQuZ2V0KCkpOworICAgIHJldHVybiBzb3VyY2U7CiB9CiAKIFBh
c3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNr
Z3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCwgY29uc3QgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtKQpAQCAtNTU1LDcg
KzU1Nyw3IEBAIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDCiAKICAgICBkZXZpY2VSZWN0LmludGVy
c2VjdChtX2N1cnJlbnRSZW5kZXJQYXNzLT5mcmFtZWJ1ZmZlck91dHB1dFJlY3QoKSk7CiAKLSAg
ICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZSA9IENDU2Nv
cGVkVGV4dHVyZTo6Y3JlYXRlKG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIE93
blB0cjxDQ1Njb3BlZFRleHR1cmU+IGRldmljZUJhY2tncm91bmRUZXh0dXJlID0gQ0NTY29wZWRU
ZXh0dXJlOjpjcmVhdGUobV9yZXNvdXJjZVByb3ZpZGVyKTsKICAgICBpZiAoIWdldEZyYW1lYnVm
ZmVyVGV4dHVyZShkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZS5nZXQoKSwgZGV2aWNlUmVjdCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC01NjYsOCArNTY4LDggQEAgUGFzc093blB0cjxD
Q1Njb3BlZFRleHR1cmU+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0
ZXJzKGNvbnN0IEMKICAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJldF9jYXN0PEdy
VGV4dHVyZSo+KGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZC5nZXRUZXh0dXJlKCkpOwogICAgIGlu
dCBmaWx0ZXJlZERldmljZUJhY2tncm91bmRUZXh0dXJlSWQgPSB0ZXh0dXJlLT5nZXRUZXh0dXJl
SGFuZGxlKCk7CiAKLSAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBiYWNrZ3JvdW5kVGV4dHVy
ZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKG1faW1wbFRleHR1cmVBbGxvY2F0b3IuZ2V0KCkp
OwotICAgIGlmICghYmFja2dyb3VuZFRleHR1cmUtPmFsbG9jYXRlKHF1YWQtPnF1YWRSZWN0KCku
c2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpCisgICAgT3duUHRyPENDU2NvcGVkVGV4
dHVyZT4gYmFja2dyb3VuZFRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShtX3Jlc291
cmNlUHJvdmlkZXIpOworICAgIGlmICghYmFja2dyb3VuZFRleHR1cmUtPmFsbG9jYXRlKENDUmVu
ZGVyZXI6OkltcGxQb29sLCBxdWFkLT5xdWFkUmVjdCgpLnNpemUoKSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlRnJhbWVidWZmZXIpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGNvbnN0IENDUmVuZGVyUGFzcyogdGFyZ2V0
UmVuZGVyUGFzcyA9IG1fY3VycmVudFJlbmRlclBhc3M7CkBAIC02MTIsMTYgKzYxNCwyMSBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVu
ZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgIC8vIEZJWE1FOiBDYWNoZSB0aGlzIHZhbHVlIHNv
IHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBkbyBpdCBmb3IgYm90aCB0aGUgc3VyZmFjZSBhbmQgaXRz
IHJlcGxpY2EuCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byB0aGUgY29udGVudHMgdGV4dHVyZS4K
ICAgICBTa0JpdG1hcCBmaWx0ZXJCaXRtYXAgPSBhcHBseUZpbHRlcnModGhpcywgcXVhZC0+Zmls
dGVycygpLCBjb250ZW50c1RleHR1cmUpOwotICAgIGludCBjb250ZW50c1RleHR1cmVJZCA9IGNv
bnRlbnRzVGV4dHVyZS0+aWQoKTsKKyAgICBPd25QdHI8Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JS
ZWFkPiBjb250ZW50c1Jlc291cmNlTG9jazsKKyAgICB1bnNpZ25lZCBjb250ZW50c1RleHR1cmVJ
ZCA9IDA7CiAgICAgaWYgKGZpbHRlckJpdG1hcC5nZXRUZXh0dXJlKCkpIHsKICAgICAgICAgR3JU
ZXh0dXJlKiB0ZXh0dXJlID0gcmVpbnRlcnByZXRfY2FzdDxHclRleHR1cmUqPihmaWx0ZXJCaXRt
YXAuZ2V0VGV4dHVyZSgpKTsKICAgICAgICAgY29udGVudHNUZXh0dXJlSWQgPSB0ZXh0dXJlLT5n
ZXRUZXh0dXJlSGFuZGxlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29udGVudHNSZXNvdXJj
ZUxvY2sgPSBhZG9wdFB0cihuZXcgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkKG1fcmVzb3Vy
Y2VQcm92aWRlciwgY29udGVudHNUZXh0dXJlLT5pZCgpKSk7CisgICAgICAgIGNvbnRlbnRzVGV4
dHVyZUlkID0gY29udGVudHNSZXNvdXJjZUxvY2stPnRleHR1cmVJZCgpOwogICAgIH0KIAogICAg
IC8vIERyYXcgdGhlIGJhY2tncm91bmQgdGV4dHVyZSBpZiB0aGVyZSBpcyBvbmUuCiAgICAgaWYg
KGJhY2tncm91bmRUZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChiYWNrZ3JvdW5kVGV4dHVyZS0+
c2l6ZSgpID09IHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpKTsKLSAgICAgICAgY29weVRleHR1cmVU
b0ZyYW1lYnVmZmVyKGJhY2tncm91bmRUZXh0dXJlLT5pZCgpLCBxdWFkLT5xdWFkUmVjdCgpLnNp
emUoKSwgcXVhZC0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICAgICAgQ0NTY29wZWRMb2NrUmVzb3Vy
Y2VGb3JSZWFkIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBiYWNrZ3JvdW5kVGV4dHVyZS0+aWQo
KSk7CisgICAgICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihsb2NrLnRleHR1cmVJZCgpLCBx
dWFkLT5xdWFkUmVjdCgpLnNpemUoKSwgcXVhZC0+ZHJhd1RyYW5zZm9ybSgpKTsKICAgICB9CiAK
ICAgICBib29sIGNsaXBwZWQgPSBmYWxzZTsKQEAgLTYzNyw3ICs2NDQsMTIgQEAgdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NE
cmF3UXVhZCogcXVhZCkKICAgICAgICAgZGV2aWNlTGF5ZXJFZGdlcy5pbmZsYXRlQW50aUFsaWFz
aW5nRGlzdGFuY2UoKTsKICAgICB9CiAKLSAgICBib29sIHVzZU1hc2sgPSBxdWFkLT5tYXNrVGV4
dHVyZUlkKCk7CisgICAgT3duUHRyPENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZD4gbWFza1Jl
c291cmNlTG9jazsKKyAgICB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkID0gMDsKKyAgICBpZiAocXVh
ZC0+bWFza1Jlc291cmNlSWQoKSkgeworICAgICAgICBtYXNrUmVzb3VyY2VMb2NrID0gYWRvcHRQ
dHIobmV3IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZChtX3Jlc291cmNlUHJvdmlkZXIsIHF1
YWQtPm1hc2tSZXNvdXJjZUlkKCkpKTsKKyAgICAgICAgbWFza1RleHR1cmVJZCA9IG1hc2tSZXNv
dXJjZUxvY2stPnRleHR1cmVJZCgpOworICAgIH0KIAogICAgIC8vIEZJWE1FOiB1c2UgdGhlIGJh
Y2tncm91bmRUZXh0dXJlIGFuZCBibGVuZCB0aGUgYmFja2dyb3VuZCBpbiB3aXRoIHRoaXMgZHJh
dyBpbnN0ZWFkIG9mIGhhdmluZyBhIHNlcGFyYXRlIGNvcHkgb2YgdGhlIGJhY2tncm91bmQgdGV4
dHVyZS4KIApAQCAtNjQ5LDcgKzY2MSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAg
aW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24gPSAtMTsKICAgICBpbnQgc2hhZGVyTWF0cml4
TG9jYXRpb24gPSAtMTsKICAgICBpbnQgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IC0xOwotICAgIGlm
ICh1c2VBQSAmJiB1c2VNYXNrKSB7CisgICAgaWYgKHVzZUFBICYmIG1hc2tUZXh0dXJlSWQpIHsK
ICAgICAgICAgY29uc3QgUmVuZGVyUGFzc01hc2tQcm9ncmFtQUEqIHByb2dyYW0gPSByZW5kZXJQ
YXNzTWFza1Byb2dyYW1BQSgpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVz
ZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNv
bnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0
aW9uKCksIDApKTsKQEAgLTY1OSw3ICs2NzEsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQog
ICAgICAgICBzaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFk
ZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9uKCk7CiAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9u
ID0gcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKTsKICAgICAgICAgc2hh
ZGVyQWxwaGFMb2NhdGlvbiA9IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlv
bigpOwotICAgIH0gZWxzZSBpZiAoIXVzZUFBICYmIHVzZU1hc2spIHsKKyAgICB9IGVsc2UgaWYg
KCF1c2VBQSAmJiBtYXNrVGV4dHVyZUlkKSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclBhc3NNYXNr
UHJvZ3JhbSogcHJvZ3JhbSA9IHJlbmRlclBhc3NNYXNrUHJvZ3JhbSgpOwogICAgICAgICBHTEMo
Y29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAg
ICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKQEAgLTY2Nyw3ICs2NzksNyBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVu
ZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgICAgICBzaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9u
ID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9uKCk7CiAgICAg
ICAgIHNoYWRlck1hdHJpeExvY2F0aW9uID0gcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4
TG9jYXRpb24oKTsKICAgICAgICAgc2hhZGVyQWxwaGFMb2NhdGlvbiA9IHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpOwotICAgIH0gZWxzZSBpZiAodXNlQUEgJiYgIXVz
ZU1hc2spIHsKKyAgICB9IGVsc2UgaWYgKHVzZUFBICYmICFtYXNrVGV4dHVyZUlkKSB7CiAgICAg
ICAgIGNvbnN0IFJlbmRlclBhc3NQcm9ncmFtQUEqIHByb2dyYW0gPSByZW5kZXJQYXNzUHJvZ3Jh
bUFBKCk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9n
cmFtLT5wcm9ncmFtKCkpKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlm
b3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwpA
QCAtNjg4LDcgKzcwMCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVy
UGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgaWYgKHNoYWRl
ck1hc2tTYW1wbGVyTG9jYXRpb24gIT0gLTEpIHsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMSkpOwogICAg
ICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaShzaGFkZXJNYXNrU2FtcGxl
ckxvY2F0aW9uLCAxKSk7Ci0gICAgICAgIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIHF1YWQtPm1hc2tUZXh0dXJlSWQoKSk7CisgICAgICAgIGNv
bnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1hc2tU
ZXh0dXJlSWQpOwogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAgICAgfQogCkBAIC04MjMsNyArODM1
LDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChjb25zdCBDQ1Rp
bGVEcmF3UXVhZCogcXVhZCkKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dy
YW0odW5pZm9ybXMucHJvZ3JhbSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5p
Zm9ybTFpKHVuaWZvcm1zLnNhbXBsZXJMb2NhdGlvbiwgMCkpOwogICAgIEdMQyhjb250ZXh0KCks
IGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsK
LSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBxdWFkLT50ZXh0dXJlSWQoKSkpOworICAgIENDU2NvcGVkTG9ja1Jl
c291cmNlRm9yUmVhZCBxdWFkUmVzb3VyY2VMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+
cmVzb3VyY2VJZCgpKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBxdWFkUmVzb3VyY2VMb2NrLnRleHR1cmVJ
ZCgpKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5f
RklMVEVSLCBxdWFkLT50ZXh0dXJlRmlsdGVyKCkpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250
ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIHF1YWQtPnRleHR1cmVGaWx0ZXIoKSkp
OwogCkBAIC05MTcsMTIgKzkzMCwxNSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1lVVlZpZGVvUXVhZChjb25zdCBDQ1lVVlZpZGVvRHJhd1F1YWQqIHF1YWQpCiAgICAgY29uc3Qg
Q0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdVBsYW5lID0gcXVhZC0+dVBsYW5lKCk7CiAg
ICAgY29uc3QgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgdlBsYW5lID0gcXVhZC0+dlBs
YW5lKCk7CiAKKyAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgeVBsYW5lTG9jayhtX3Jl
c291cmNlUHJvdmlkZXIsIHlQbGFuZS5yZXNvdXJjZUlkKTsKKyAgICBDQ1Njb3BlZExvY2tSZXNv
dXJjZUZvclJlYWQgdVBsYW5lTG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHVQbGFuZS5yZXNvdXJj
ZUlkKTsKKyAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgdlBsYW5lTG9jayhtX3Jlc291
cmNlUHJvdmlkZXIsIHZQbGFuZS5yZXNvdXJjZUlkKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250
ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7Ci0gICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgeVBsYW5lLnRleHR1cmVJZCkpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHlQbGFuZUxv
Y2sudGV4dHVyZUlkKCkpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUyKSk7Ci0gICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdVBs
YW5lLnRleHR1cmVJZCkpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHVQbGFuZUxvY2sudGV4dHVyZUlkKCkp
KTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkUzKSk7Ci0gICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdlBsYW5lLnRleHR1cmVJZCkp
OworICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIHZQbGFuZUxvY2sudGV4dHVyZUlkKCkpKTsKIAogICAgIEdMQyhj
b250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKIApA
QCAtMTAzMyw3ICsxMDQ5LDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0
dXJlUXVhZChjb25zdCBDQ1RleHR1cmVEcmF3UXVhZCogcXVhZCkKICAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPnVuaWZvcm00ZihiaW5kaW5nLnRleFRyYW5zZm9ybUxvY2F0aW9uLCB1dlJl
Y3QueCgpLCB1dlJlY3QueSgpLCB1dlJlY3Qud2lkdGgoKSwgdXZSZWN0LmhlaWdodCgpKSk7CiAK
ICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkUwKSk7Ci0gICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcXVhZC0+dGV4dHVyZUlkKCkpKTsK
KyAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgcXVhZFJlc291cmNlTG9jayhtX3Jlc291
cmNlUHJvdmlkZXIsIHF1YWQtPnJlc291cmNlSWQoKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcXVhZFJl
c291cmNlTG9jay50ZXh0dXJlSWQoKSkpOwogCiAgICAgLy8gRklYTUU6IHNldHRpbmcgdGhlIHRl
eHR1cmUgcGFyYW1ldGVycyBldmVyeSB0aW1lIGlzIHJlZHVuZGFudC4gTW92ZSB0aGlzIGNvZGUg
c29tZXdoZXJlCiAgICAgLy8gd2hlcmUgaXQgd2lsbCBvbmx5IGhhcHBlbiBvbmNlIHBlciB0ZXh0
dXJlLgpAQCAtMTA3NywxMyArMTA5NCw2IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3SU9TdXJmYWNlUXVhZChjb25zdCBDQ0lPU3VyZmFjZURyYXdRdWFkKiBxdWFkKQogICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRTApKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEV4
dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCLCBxdWFkLT5pb1N1cmZhY2VUZXh0dXJl
SWQoKSkpOwogCi0gICAgLy8gRklYTUU6IHNldHRpbmcgdGhlIHRleHR1cmUgcGFyYW1ldGVycyBl
dmVyeSB0aW1lIGlzIHJlZHVuZGFudC4gTW92ZSB0aGlzIGNvZGUgc29tZXdoZXJlCi0gICAgLy8g
d2hlcmUgaXQgd2lsbCBvbmx5IGhhcHBlbiBvbmNlIHBlciB0ZXh0dXJlLgotICAgIEdMQyhjb250
ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkxJTkVBUikpOwotICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwotICAgIEdMQyhj
b250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRl
eHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwot
CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRyYW5zZm9ybSA9IHF1YWQtPnF1YWRU
cmFuc2Zvcm0oKTsKICAgICBJbnRSZWN0IHF1YWRSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKICAg
ICBxdWFkVHJhbnNmb3JtLnRyYW5zbGF0ZShxdWFkUmVjdC54KCkgKyBxdWFkUmVjdC53aWR0aCgp
IC8gMi4wLCBxdWFkUmVjdC55KCkgKyBxdWFkUmVjdC5oZWlnaHQoKSAvIDIuMCk7CkBAIC0xMTA1
LDcgKzExMTUsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNw
bGF5KGNvbnN0IENDU2NvcGVkVGV4dHVyZSogaHVkVGV4dHVyZQogICAgIGNvbnN0IEhlYWRzVXBE
aXNwbGF5UHJvZ3JhbSogcHJvZ3JhbSA9IGhlYWRzVXBEaXNwbGF5UHJvZ3JhbSgpOwogICAgIEFT
U0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmluaXRpYWxpemVkKCkpOwogICAgIEdMQyhtX2NvbnRl
eHQsIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTAp
KTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBodWRUZXh0dXJlLT5pZCgpKSk7CisgICAgQ0NTY29wZWRMb2Nr
UmVzb3VyY2VGb3JSZWFkIGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBodWRUZXh0dXJlLT5pZCgp
KTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBsb2NrLnRleHR1cmVJZCgpKSk7CiAgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
c2FtcGxlckxvY2F0aW9uKCksIDApKTsKIApAQCAtMTExOSw2ICsxMTMwLDcgQEAgdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheShjb25zdCBDQ1Njb3BlZFRleHR1
cmUqIGh1ZFRleHR1cmUKIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaERyYXdp
bmdGcmFtZSgpCiB7CisgICAgbV9jdXJyZW50RnJhbWVidWZmZXJMb2NrLmNsZWFyKCk7CiAgICAg
R0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lT
U09SX1RFU1QpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhp
Y3NDb250ZXh0M0Q6OkJMRU5EKSk7CiB9CkBAIC0xMzUzLDEwICsxMzY1LDExIEBAIGJvb2wgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1cmUoQ0NTY29wZWRUZXh0dXJl
KiB0ZXh0dXJlLCBjb25zCiB7CiAgICAgQVNTRVJUKCF0ZXh0dXJlLT5pZCgpIHx8ICh0ZXh0dXJl
LT5zaXplKCkgPT0gZGV2aWNlUmVjdC5zaXplKCkgJiYgdGV4dHVyZS0+Zm9ybWF0KCkgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQikpOwogCi0gICAgaWYgKCF0ZXh0dXJlLT5pZCgpICYmICF0ZXh0
dXJlLT5hbGxvY2F0ZShkZXZpY2VSZWN0LnNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQikp
CisgICAgaWYgKCF0ZXh0dXJlLT5pZCgpICYmICF0ZXh0dXJlLT5hbGxvY2F0ZShDQ1JlbmRlcmVy
OjpJbXBsUG9vbCwgZGV2aWNlUmVjdC5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIEND
UmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZS0+aWQoKSkpOworICAgIENDU2NvcGVkTG9ja1Jl
c291cmNlRm9yV3JpdGUgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIHRleHR1cmUtPmlkKCkpOwor
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIGxvY2sudGV4dHVyZUlkKCkpKTsKICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmNvcHlUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAw
LCB0ZXh0dXJlLT5mb3JtYXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZVJlY3QueCgpLCBkZXZpY2VSZWN0LnkoKSwgZGV2aWNlUmVjdC53aWR0
aCgpLCBkZXZpY2VSZWN0LmhlaWdodCgpLCAwKSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzcz
LDYgKzEzODYsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyUGFzcyhj
b25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MpCiAgICAgbV9jdXJyZW50VGV4dHVyZSA9IDA7
CiAKICAgICBpZiAocmVuZGVyUGFzcyA9PSBtX2RlZmF1bHRSZW5kZXJQYXNzKSB7CisgICAgICAg
IG1fY3VycmVudEZyYW1lYnVmZmVyTG9jay5jbGVhcigpOwogICAgICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIDApKTsKICAgICAgICAgc2V0RHJhd0ZyYW1lYnVmZmVyUmVjdChyZW5kZXJQYXNzLT5mcmFt
ZWJ1ZmZlck91dHB1dFJlY3QoKSwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTM4
MSw3ICsxMzk1LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclBhc3Mo
Y29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogICAgIENDU2NvcGVkVGV4dHVyZSogdGV4
dHVyZSA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmdldChyZW5kZXJQYXNzLT5pZCgpKTsKICAgICBB
U1NFUlQodGV4dHVyZSk7CiAKLSAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFs
bG9jYXRlKHJlbmRlclBhc3NUZXh0dXJlU2l6ZShyZW5kZXJQYXNzKSwgcmVuZGVyUGFzc1RleHR1
cmVGb3JtYXQocmVuZGVyUGFzcykpKQorICAgIGlmICghdGV4dHVyZS0+aWQoKSAmJiAhdGV4dHVy
ZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIHJlbmRlclBhc3NUZXh0dXJlU2l6ZShy
ZW5kZXJQYXNzKSwgcmVuZGVyUGFzc1RleHR1cmVGb3JtYXQocmVuZGVyUGFzcyksIENDUmVzb3Vy
Y2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlRnJhbWVidWZmZXIpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKHRleHR1cmUsIHJlbmRl
clBhc3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpKTsKQEAgLTEzOTAsNyArMTQwNCw2IEBAIGJv
b2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFz
cyogcmVuZGVyUGFzcykKIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VTY29wZWRUZXh0
dXJlKGNvbnN0IENDU2NvcGVkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdmlld3Bv
cnRSZWN0KQogewogICAgIEFTU0VSVCh0ZXh0dXJlLT5pZCgpKTsKLQogICAgIG1fY3VycmVudFJl
bmRlclBhc3MgPSAwOwogICAgIG1fY3VycmVudFRleHR1cmUgPSB0ZXh0dXJlOwogCkBAIC0xNDAy
LDcgKzE0MTUsOCBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVy
VG9UZXh0dXJlKGNvbnN0IENDU2NvcGVkVGV4dHVyZSogdGV4dAogICAgIEFTU0VSVCh0ZXh0dXJl
LT5pZCgpKTsKIAogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklk
KSk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9B
VFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUtPmlkKCks
IDApKTsKKyAgICBtX2N1cnJlbnRGcmFtZWJ1ZmZlckxvY2sgPSBhZG9wdFB0cihuZXcgQ0NTY29w
ZWRMb2NrUmVzb3VyY2VGb3JXcml0ZShtX3Jlc291cmNlUHJvdmlkZXIsIHRleHR1cmUtPmlkKCkp
KTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FU
VEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jdXJyZW50RnJhbWVi
dWZmZXJMb2NrLT50ZXh0dXJlSWQoKSwgMCkpOwogCiAjaWYgIWRlZmluZWQgKCBOREVCVUcgKQog
ICAgIGlmIChtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExF
VEUpIHsKQEAgLTE0NzksMTQgKzE0OTMsNiBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMoKQogICAgICAgICBtX3RleHR1cmVVcGxvYWRlciA9IFRo
cm90dGxlZFRleHR1cmVVcGxvYWRlcjo6Y3JlYXRlKG1fY29udGV4dCk7CiAgICAgZWxzZQogICAg
ICAgICBtX3RleHR1cmVVcGxvYWRlciA9IFVudGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVh
dGUoKTsKLSAgICBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dCwgbV9jYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUp
OwotICAgIG1faW1wbFRleHR1cmVBbGxvY2F0b3IgPSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6
OmNyZWF0ZShtX2NvbnRleHQsIG1fY2FwYWJpbGl0aWVzLm1heFRleHR1cmVTaXplKTsKLSAgICBp
ZiAobV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlVXNhZ2VIaW50KQotICAgICAgICBtX2ltcGxU
ZXh0dXJlQWxsb2NhdG9yLT5zZXRUZXh0dXJlVXNhZ2VIaW50KFRyYWNraW5nVGV4dHVyZUFsbG9j
YXRvcjo6RnJhbWVidWZmZXJBdHRhY2htZW50KTsKLSAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNp
bmdUZXh0dXJlU3RvcmFnZUV4dGVuc2lvbikgewotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvci0+c2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQodHJ1ZSk7Ci0gICAgICAgIG1faW1wbFRl
eHR1cmVBbGxvY2F0b3ItPnNldFVzZVRleHR1cmVTdG9yYWdlRXh0KHRydWUpOwotICAgIH0KIAog
ICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRl
eCA0MTU1MjBkN2ZkOWU5MzgxZTY1ZTUwM2ZhOWI3M2ZiNWY5ZDk4Y2NkLi41ZjNkZDdlNDk4NTQ0
ZGUxMDRkMDVhM2NmNWZlNDA5YzJkODcwZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uaApAQCAtMzYsNyArMzYsNiBAQAogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCi0jaW5jbHVkZSAiVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NDaGVja2VyYm9hcmREcmF3UXVhZC5oIgog
I2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDSU9T
dXJmYWNlRHJhd1F1YWQuaCIKQEAgLTY2LDcgKzY1LDcgQEAgY2xhc3MgTGF5ZXJSZW5kZXJlckNo
cm9taXVtIDogcHVibGljIENDUmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6V2ViR3JhcGhpY3NDb250ZXh0
TG9zdENhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllclJlbmRlcmVyQ2hy
b21pdW0pOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJv
bWl1bT4gY3JlYXRlKENDUmVuZGVyZXJDbGllbnQqLCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxMYXll
clJlbmRlcmVyQ2hyb21pdW0+IGNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50KiwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKIAogICAgIHZpcnR1YWwgfkxheWVyUmVu
ZGVyZXJDaHJvbWl1bSgpOwogCkBAIC0xMDMsOCArMTAyLDYgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBUZXh0dXJlQ29waWVyKiB0ZXh0dXJlQ29waWVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gbV90ZXh0dXJlQ29waWVyLmdldCgpOyB9CiAgICAgdmlydHVhbCBUZXh0dXJlVXBsb2FkZXIq
IHRleHR1cmVVcGxvYWRlcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdGV4dHVyZVVwbG9h
ZGVyLmdldCgpOyB9Ci0gICAgdmlydHVhbCBUZXh0dXJlQWxsb2NhdG9yKiBpbXBsVGV4dHVyZUFs
bG9jYXRvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faW1wbFRleHR1cmVBbGxvY2F0b3Iu
Z2V0KCk7IH0KLSAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Npc3NvclRvUmVjdChjb25zdCBJ
bnRSZWN0JikgT1ZFUlJJREU7CiAKQEAgLTExNiw5ICsxMTMsMTEgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBGbG9hdFF1YWQmLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0
cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0aW9uLCBpbnQgcXVhZExvY2F0aW9uKTsKICAgICB2
b2lkIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXpl
JiBib3VuZHMsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRy
aXgpOworICAgIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VQcm92aWRlcjsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTGF5ZXJSZW5k
ZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqLCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKKyAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0o
Q0NSZW5kZXJlckNsaWVudCosIENDUmVzb3VyY2VQcm92aWRlciosIFRleHR1cmVVcGxvYWRlck9w
dGlvbik7CisKIAogICAgIGJvb2wgaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZDsgfQogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwpA
QCAtMTc1LDYgKzE3NCw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIG1f
Y3VycmVudFJlbmRlclBhc3M7CiAgICAgY29uc3QgQ0NTY29wZWRUZXh0dXJlKiBtX2N1cnJlbnRU
ZXh0dXJlOworICAgIE93blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlPiBtX2N1cnJl
bnRGcmFtZWJ1ZmZlckxvY2s7CiAgICAgdW5zaWduZWQgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklk
OwogCiAgICAgT3duUHRyPEdlb21ldHJ5QmluZGluZz4gbV9zaGFyZWRHZW9tZXRyeTsKQEAgLTI2
MCwxMCArMjYwLDkgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8U29saWRDb2xvclByb2dyYW0+IG1f
c29saWRDb2xvclByb2dyYW07CiAgICAgT3duUHRyPEhlYWRzVXBEaXNwbGF5UHJvZ3JhbT4gbV9o
ZWFkc1VwRGlzcGxheVByb2dyYW07CiAKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3Vy
Y2VQcm92aWRlcjsKICAgICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBtX3RleHR1
cmVDb3BpZXI7CiAgICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gbV90ZXh0dXJlVXBsb2FkZXI7
Ci0gICAgT3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9jb250ZW50c1RleHR1cmVB
bGxvY2F0b3I7Ci0gICAgT3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9pbXBsVGV4
dHVyZUFsbG9jYXRvcjsKIAogICAgIEhhc2hNYXA8aW50LCBPd25QdHI8Q0NTY29wZWRUZXh0dXJl
PiA+IG1fcmVuZGVyUGFzc1RleHR1cmVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFn
ZS5jcHAKaW5kZXggYjg3YjQzZDk0MDFhMDFmZDE5OThiNzNmMmNlZmViNmZjMDI0ZjQ1Yy4uYjY2
ZDc5ZTA0ZWJkYWY4YTY0Mjc5ZDhhMzM3YmU4M2U0MWZhYzU5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGV4dHVyZVN1YkltYWdlLmNwcApAQCAtMzIsMTIgKzMyLDE1IEBACiAjaW5jbHVkZSAiRXh0ZW5z
aW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIgLy8g
Rm9yIEdMQygpIG1hY3JvCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgotI2luY2x1ZGUgImNjL0ND
R3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNE
Lmg+CisKK3VzaW5nIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OkxheWVyVGV4dHVyZVN1YkltYWdlKGJv
b2wgdXNlTWFwVGV4U3ViSW1hZ2UpCiAgICAgOiBtX3VzZU1hcFRleFN1YkltYWdlKHVzZU1hcFRl
eFN1YkltYWdlKQorICAgICwgbV9zdWJJbWFnZVNpemUoMCkKIHsKIH0KIApAQCAtNDUsMTggKzQ4
LDkgQEAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6On5MYXllclRleHR1cmVTdWJJbWFnZSgpCiB7CiB9
CiAKLXZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnNldFN1YkltYWdlU2l6ZShjb25zdCBJbnRT
aXplJiBzdWJJbWFnZVNpemUpCi17Ci0gICAgaWYgKHN1YkltYWdlU2l6ZSA9PSBtX3N1YkltYWdl
U2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdWJJbWFnZVNpemUgPSBzdWJJbWFnZVNp
emU7Ci0gICAgbV9zdWJJbWFnZS5jbGVhcigpOwotfQotCiB2b2lkIExheWVyVGV4dHVyZVN1Yklt
YWdlOjp1cGxvYWQoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVj
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgV2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgaWYgKG1fdXNlTWFwVGV4U3ViSW1hZ2Up
CiAgICAgICAgIHVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKQEAgLTY2LDExICs2MCw5IEBAIHZv
aWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZChjb25zdCB1aW50OF90KiBpbWFnZSwgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0CiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9h
ZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1h
Z2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZv
cm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyVGV4dHVy
ZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UiKTsKLSAgICBpZiAoIW1fc3ViSW1hZ2Up
Ci0gICAgICAgIG1fc3ViSW1hZ2UgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W21fc3ViSW1h
Z2VTaXplLndpZHRoKCkgKiBtX3N1YkltYWdlU2l6ZS5oZWlnaHQoKSAqIDRdKTsKIAogICAgIC8v
IE9mZnNldCBmcm9tIGltYWdlLXJlY3QgdG8gc291cmNlLXJlY3QuCiAgICAgSW50UG9pbnQgb2Zm
c2V0KHNvdXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwgc291cmNlUmVjdC55KCkgLSBpbWFn
ZVJlY3QueSgpKTsKQEAgLTc5LDYgKzcxLDExIEBAIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6
OnVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50CiAg
ICAgaWYgKGltYWdlUmVjdC53aWR0aCgpID09IHNvdXJjZVJlY3Qud2lkdGgoKSAmJiAhb2Zmc2V0
LngoKSkKICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmaW1hZ2VbNCAqIG9mZnNldC55KCkgKiBpbWFn
ZVJlY3Qud2lkdGgoKV07CiAgICAgZWxzZSB7CisgICAgICAgIHNpemVfdCBuZWVkZWRTaXplID0g
NCAqIGRlc3RSZWN0LndpZHRoKCkgKiBkZXN0UmVjdC5oZWlnaHQoKTsKKyAgICAgICAgaWYgKG1f
c3ViSW1hZ2VTaXplIDwgbmVlZGVkU2l6ZSkgeworICAgICAgICAgIG1fc3ViSW1hZ2UgPSBhZG9w
dEFycmF5UHRyKG5ldyB1aW50OF90W25lZWRlZFNpemVdKTsKKyAgICAgICAgICBtX3N1YkltYWdl
U2l6ZSA9IG5lZWRlZFNpemU7CisgICAgICAgIH0KICAgICAgICAgLy8gU3RyaWRlcyBub3QgZXF1
YWwsIHNvIGRvIGEgcm93LWJ5LXJvdyBtZW1jcHkgZnJvbSB0aGUKICAgICAgICAgLy8gcGFpbnQg
cmVzdWx0cyBpbnRvIGEgdGVtcCBidWZmZXIgZm9yIHVwbG9hZGluZy4KICAgICAgICAgZm9yIChp
bnQgcm93ID0gMDsgcm93IDwgZGVzdFJlY3QuaGVpZ2h0KCk7ICsrcm93KQpAQCAtODksMzAgKzg2
LDE5IEBAIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZShj
b25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50CiAgICAgICAgIHBpeGVsU291cmNlID0gJm1f
c3ViSW1hZ2VbMF07CiAgICAgfQogCi0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsK
LSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBv
c2l0aW5nLgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEdMQyhjb250ZXh0M2QsIGNvbnRl
eHQzZC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVz
dFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdo
dCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbFNvdXJj
ZSkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJl
Y3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0JZVEUsIHBpeGVsU291cmNlKSk7CiB9CiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3Vi
SW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVu
dW0gZm9ybWF0LCBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBUUkFDRV9F
VkVOVDAoImNjIiwgIkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1h
Z2UiKTsKLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250
ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KICAgICAvLyBPZmZzZXQgZnJvbSBpbWFnZS1yZWN0IHRvIHNvdXJj
ZS1yZWN0LgogICAgIEludFBvaW50IG9mZnNldChzb3VyY2VSZWN0LngoKSAtIGltYWdlUmVjdC54
KCksIHNvdXJjZVJlY3QueSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAKICAgICAvLyBVcGxvYWQgdGls
ZSBkYXRhIHZpYSBhIG1hcHBlZCB0cmFuc2ZlciBidWZmZXIKLSAgICB1aW50OF90KiBwaXhlbERl
c3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29udGV4dDNkLT5tYXBUZXhTdWJJbWFnZTJEQ0hS
T01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVz
dFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgZm9ybWF0LCBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldS
SVRFX09OTFkpKTsKKyAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oY29udGV4dC0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgo
KSwgZGVzdFJlY3QuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7CiAKICAgICBpZiAoIXBp
eGVsRGVzdCkgewogICAgICAgICB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdlUmVj
dCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7CkBAIC0xMzYsNyArMTIy
LDcgQEAgdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRleFN1YkltYWdl
KGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdAogICAgICAgICAgICAgICAgICAgICZpbWFnZVs0
ICogKG9mZnNldC54KCkgKyAob2Zmc2V0LnkoKSArIHJvdykgKiBpbWFnZVJlY3Qud2lkdGgoKSld
LAogICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LndpZHRoKCkgKiBjb21wb25lbnRzUGVyUGl4
ZWwgKiBieXRlc1BlckNvbXBvbmVudCk7CiAgICAgfQotICAgIEdMQyhjb250ZXh0M2QsIGNvbnRl
eHQzZC0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0ocGl4ZWxEZXN0KSk7CisgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKHBpeGVsRGVzdCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2Uu
aAppbmRleCA0ZjFjNDE1MjE0ZDIzMjlhYjZlNzJjZGUxYjFmMmZlMjJmMjhhMjcwLi4zNTdiNjQx
MzQ0YjJlMGNmZGY1ZTNhZmU5MzJjOGQxOGFmYWU3MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZVN1YkltYWdlLmgKQEAgLTM0LDMwICszNCwzMSBAQAogI2luY2x1ZGUgIkludFNpemUuaCIKICNp
bmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKK30KIAotY2xhc3MgQ0NH
cmFwaGljc0NvbnRleHQ7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyVGV4dHVy
ZVN1YkltYWdlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMYXllclRleHR1cmVTdWJJbWFnZShi
b29sIHVzZU1hcFN1YkZvclVwbG9hZCk7CiAgICAgfkxheWVyVGV4dHVyZVN1YkltYWdlKCk7CiAK
LSAgICB2b2lkIHNldFN1YkltYWdlU2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCB1cGxv
YWQoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAg
ICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCwKLSAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0
Kik7CisgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGxvYWRXaXRoVGV4U3ViSW1hZ2Uo
Y29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51
bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0Kik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0MzRGVudW0gZm9ybWF0LCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKik7CiAg
ICAgdm9pZCB1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNv
bnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhp
Y3NDb250ZXh0Kik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0g
Zm9ybWF0LCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKik7CiAKICAgICBib29sIG1fdXNl
TWFwVGV4U3ViSW1hZ2U7Ci0gICAgSW50U2l6ZSBtX3N1YkltYWdlU2l6ZTsKKyAgICBzaXplX3Qg
bV9zdWJJbWFnZVNpemU7CiAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gbV9zdWJJbWFnZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBmZDhlZDg4M2NjNzM0MGNhOWM3
NmQ1NjNjZmRlOTk5MjQzODZmMzg2Li4xODk5NDJlMjUzNGIwNjg2MzczYmUzYzEyNDQ0NmMwODU2
MmVlYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zMCwxNiArMzAsMTMg
QEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJHcmFwaGlj
c1R5cGVzM0QuaCIKLSNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
ImNjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNz
IFRleHR1cmVNYW5hZ2VyOwogCiBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gewpAQCAtNTIsNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0
dXJlLmdldCgpOyB9CiAgICAgICAgIHZvaWQgc3dhcFRleHR1cmVXaXRoKE93blB0cjxDQ1ByaW9y
aXRpemVkVGV4dHVyZT4mIHRleHR1cmUpIHsgbV90ZXh0dXJlLnN3YXAodGV4dHVyZSk7IH0KICAg
ICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJl
Y3QgKi8pIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29u
dGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVj
dChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkgPSAwOwogICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQg
VGV4dHVyZShQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4
dHVyZSh0ZXh0dXJlKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNw
cAppbmRleCBlMDBhMjZlMzlmOWZjNzkyMmM3M2NlYjE0OTcyNTBhNjhiYjBiZDUzLi40OTg4YjMy
N2Y0MjUwZmY2ZTJlNDkzMjQyZGFmYmZlZGJkMjZmNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxi
YXJMYXllckNocm9taXVtLmNwcApAQCAtNzcsMTkgKzc3LDE5IEBAIHZvaWQgU2Nyb2xsYmFyTGF5
ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgc2Ny
b2xsYmFyTGF5ZXItPnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShtX3Njcm9sbGJhck92ZXJsYXlT
dHlsZSk7CiAKICAgICBpZiAobV9iYWNrVHJhY2sgJiYgbV9iYWNrVHJhY2stPnRleHR1cmUoKS0+
aGF2ZUJhY2tpbmdUZXh0dXJlKCkpCi0gICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRCYWNrVHJh
Y2tUZXh0dXJlSWQobV9iYWNrVHJhY2stPnRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAg
ICBzY3JvbGxiYXJMYXllci0+c2V0QmFja1RyYWNrUmVzb3VyY2VJZChtX2JhY2tUcmFjay0+dGV4
dHVyZSgpLT5yZXNvdXJjZUlkKCkpOwogICAgIGVsc2UKLSAgICAgICAgc2Nyb2xsYmFyTGF5ZXIt
PnNldEJhY2tUcmFja1RleHR1cmVJZCgwKTsKKyAgICAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldEJh
Y2tUcmFja1Jlc291cmNlSWQoMCk7CiAKICAgICBpZiAobV9mb3JlVHJhY2sgJiYgbV9mb3JlVHJh
Y2stPnRleHR1cmUoKS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpCi0gICAgICAgIHNjcm9sbGJhckxh
eWVyLT5zZXRGb3JlVHJhY2tUZXh0dXJlSWQobV9mb3JlVHJhY2stPnRleHR1cmUoKS0+dGV4dHVy
ZUlkKCkpOworICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0Rm9yZVRyYWNrUmVzb3VyY2VJZCht
X2ZvcmVUcmFjay0+dGV4dHVyZSgpLT5yZXNvdXJjZUlkKCkpOwogICAgIGVsc2UKLSAgICAgICAg
c2Nyb2xsYmFyTGF5ZXItPnNldEZvcmVUcmFja1RleHR1cmVJZCgwKTsKKyAgICAgICAgc2Nyb2xs
YmFyTGF5ZXItPnNldEZvcmVUcmFja1Jlc291cmNlSWQoMCk7CiAKICAgICBpZiAobV90aHVtYiAm
JiBtX3RodW1iLT50ZXh0dXJlKCktPmhhdmVCYWNraW5nVGV4dHVyZSgpKQotICAgICAgICBzY3Jv
bGxiYXJMYXllci0+c2V0VGh1bWJUZXh0dXJlSWQobV90aHVtYi0+dGV4dHVyZSgpLT50ZXh0dXJl
SWQoKSk7CisgICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRUaHVtYlJlc291cmNlSWQobV90aHVt
Yi0+dGV4dHVyZSgpLT5yZXNvdXJjZUlkKCkpOwogICAgIGVsc2UKLSAgICAgICAgc2Nyb2xsYmFy
TGF5ZXItPnNldFRodW1iVGV4dHVyZUlkKDApOworICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0
VGh1bWJSZXNvdXJjZUlkKDApOwogCiAgICAgVmVjdG9yPEludFJlY3Q+IHRpY2ttYXJrczsKICAg
ICBtX3Njcm9sbGJhci0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7CkBAIC0yMDUsMjQgKzIwNSwy
MyBAQCB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXll
clRyZWVIb3N0KiBob3N0KQogCiB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZVRl
eHR1cmVVcGRhdGVySWZOZWVkZWQoKQogewotICAgIGJvb2wgdXNlTWFwU3ViSW1hZ2UgPSBsYXll
clRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1YjsKICAg
ICBtX3RleHR1cmVGb3JtYXQgPSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKS5iZXN0VGV4dHVyZUZvcm1hdDsKIAogICAgIGlmICghbV9iYWNrVHJhY2tVcGRhdGVy
KQotICAgICAgICBtX2JhY2tUcmFja1VwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXI6OmNyZWF0ZShtX3Njcm9s
bGJhci5nZXQoKSwgdGhlbWUoKSwgQmFja1RyYWNrUGFydCksIHVzZU1hcFN1YkltYWdlKTsKKyAg
ICAgICAgbV9iYWNrVHJhY2tVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKFNjcm9sbGJhckJhY2tncm91bmRQYWludGVyOjpjcmVhdGUobV9zY3JvbGxiYXIu
Z2V0KCksIHRoZW1lKCksIEJhY2tUcmFja1BhcnQpKTsKICAgICBpZiAoIW1fYmFja1RyYWNrKQog
ICAgICAgICBtX2JhY2tUcmFjayA9IG1fYmFja1RyYWNrVXBkYXRlci0+Y3JlYXRlVGV4dHVyZShs
YXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSk7CiAKICAgICAvLyBPbmx5
IGNyZWF0ZSB0d28tcGFydCB0cmFjayBpZiB3ZSB0aGluayB0aGUgdHdvIHBhcnRzIGNvdWxkIGJl
IGRpZmZlcmVudCBpbiBhcHBlYXJhbmNlLgogICAgIGlmIChtX3Njcm9sbGJhci0+aXNDdXN0b21T
Y3JvbGxiYXIoKSkgewogICAgICAgICBpZiAoIW1fZm9yZVRyYWNrVXBkYXRlcikKLSAgICAgICAg
ICAgIG1fZm9yZVRyYWNrVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OmNyZWF0ZShTY3JvbGxiYXJCYWNrZ3JvdW5kUGFpbnRlcjo6Y3JlYXRlKG1fc2Nyb2xsYmFyLmdl
dCgpLCB0aGVtZSgpLCBGb3J3YXJkVHJhY2tQYXJ0KSwgdXNlTWFwU3ViSW1hZ2UpOworICAgICAg
ICAgICAgbV9mb3JlVHJhY2tVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKFNjcm9sbGJhckJhY2tncm91bmRQYWludGVyOjpjcmVhdGUobV9zY3JvbGxiYXIu
Z2V0KCksIHRoZW1lKCksIEZvcndhcmRUcmFja1BhcnQpKTsKICAgICAgICAgaWYgKCFtX2ZvcmVU
cmFjaykKICAgICAgICAgICAgIG1fZm9yZVRyYWNrID0gbV9mb3JlVHJhY2tVcGRhdGVyLT5jcmVh
dGVUZXh0dXJlKGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKTsKICAg
ICB9CiAKICAgICBpZiAoIW1fdGh1bWJVcGRhdGVyKQotICAgICAgICBtX3RodW1iVXBkYXRlciA9
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxiYXJUaHVtYlBh
aW50ZXI6OmNyZWF0ZShtX3Njcm9sbGJhci5nZXQoKSwgdGhlbWUoKSksIHVzZU1hcFN1YkltYWdl
KTsKKyAgICAgICAgbV90aHVtYlVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGUoU2Nyb2xsYmFyVGh1bWJQYWludGVyOjpjcmVhdGUobV9zY3JvbGxiYXIuZ2V0
KCksIHRoZW1lKCkpKTsKICAgICBpZiAoIW1fdGh1bWIpCiAgICAgICAgIG1fdGh1bWIgPSBtX3Ro
dW1iVXBkYXRlci0+Y3JlYXRlVGV4dHVyZShsYXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVy
ZU1hbmFnZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDU4ZGUxMTUyMmI0YWFkYWUxNmJjYjI3ZTA1NGZmNzM3Yjg4NmI4M2QuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUFsbG9jYXRvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLQotI2lmbmRlZiBUZXh0dXJl
QWxsb2NhdG9yX2gKLSNkZWZpbmUgVGV4dHVyZUFsbG9jYXRvcl9oCi0KLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJJbnRTaXpl
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUm
LCBHQzNEZW51bSBmb3JtYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1
bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIH5UZXh0dXJlQWxsb2NhdG9yKCkgeyB9Ci19OwotCi19Ci0KLSNlbmRpZgotCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVD
b3BpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZUNvcGllci5jcHAKaW5kZXggMzMyNDNjODU1MmQzZmEyZTg1MWVmN2Y4NjNhNWRlNjIwMzVj
NTA4NS4uMGI1OTU5N2E1ZWU4MDkwMDdhMjQ4NDFiNWQ1ZjdlOWFmOWM5NDRmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZUNvcGllci5jcHAKQEAgLTY2LDU1ICs2Niw1NCBAQCBBY2NlbGVyYXRlZFRleHR1cmVDb3Bp
ZXI6On5BY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoKQogICAgICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fZmJvKSk7CiB9CiAKLXZvaWQgQWNjZWxlcmF0
ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY2NDb250ZXh0
LCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0
IEludFNpemUmIHNpemUpCit2b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1
cmUodW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25z
dCBJbnRTaXplJiBzaXplKQogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiVGV4dHVyZUNvcGll
cjo6Y29weVRleHR1cmUiKTsKIAotICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQgPSBjY0NvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dCkgewotICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRp
bmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICAvLyBOb3RlOiB0aGlzIGNvZGUgZG9l
cyBub3QgcmVzdG9yZSB0aGUgdmlld3BvcnQsIGJvdW5kIHByb2dyYW0sIDJEIHRleHR1cmUsIGZy
YW1lYnVmZmVyLCBidWZmZXIgb3IgYmxlbmQgZW5hYmxlLgotICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zi
bykpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRB
Q0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGRlc3RUZXh0dXJlSWQsIDAp
KTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIGRlc3RUZXh0dXJlSWQsIDApKTsKIAogI2lmIE9TKEFORFJPSUQpCiAg
ICAgLy8gQ2xlYXIgZGVzdGluYXRpb24gdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBvbiB0aWxpbmcg
R1BVcy4KICAgICAvLyBUT0RPOiBVc2UgRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgb3Igc2tpcCBj
bGVhcmluZyBpZiBpdCBpc24ndCBhdmFpbGFibGUuCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKSk7CisgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5jbGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVS
X0JJVCkpOwogI2VuZGlmCiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHNvdXJjZVRleHR1cmVJZCkpOwotICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6TkVBUkVTVCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0
ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCkpOworICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIHNvdXJjZVRleHR1cmVJZCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsK
KyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7CiAKICAgICBpZiAoIW1fYmxpdFByb2dyYW0t
PmluaXRpYWxpemVkKCkpCi0gICAgICAgIG1fYmxpdFByb2dyYW0tPmluaXRpYWxpemUoY29udGV4
dCwgbV91c2luZ0JpbmRVbmlmb3Jtcyk7CisgICAgICAgIG1fYmxpdFByb2dyYW0tPmluaXRpYWxp
emUobV9jb250ZXh0LCBtX3VzaW5nQmluZFVuaWZvcm1zKTsKIAogICAgIC8vIFRPRE86IFVzZSBF
WFRfZnJhbWVidWZmZXJfYmxpdCBpZiBhdmFpbGFibGUuCi0gICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnVzZVByb2dyYW0obV9ibGl0UHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1fYmxpdFByb2dyYW0tPnByb2dyYW0oKSkpOwog
CiAgICAgY29uc3QgaW50IGtQb3NpdGlvbkF0dHJpYnV0ZSA9IDA7Ci0gICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV9w
b3NpdGlvbkJ1ZmZlcikpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKGtQb3NpdGlvbkF0dHJpYnV0ZSwgNCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBm
YWxzZSwgMCwgMCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShrUG9zaXRpb25BdHRyaWJ1dGUpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCAwKSk7CisgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJB
WV9CVUZGRVIsIG1fcG9zaXRpb25CdWZmZXIpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoa1Bvc2l0aW9uQXR0cmlidXRlLCA0LCBHcmFwaGljc0Nv
bnRleHQzRDo6RkxPQVQsIGZhbHNlLCAwLCAwKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShrUG9zaXRpb25BdHRyaWJ1dGUpKTsKKyAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFS
UkFZX0JVRkZFUiwgMCkpOwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnZpZXdwb3J0KDAs
IDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwotICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5kcmF3QXJyYXlzKEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIDAs
IDQpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKKyAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgMCwg
NCkpOwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikp
OwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoa1Bv
c2l0aW9uQXR0cmlidXRlKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkoa1Bvc2l0aW9uQXR0cmlidXRlKSk7CiAKLSAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbSgwKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT51c2VQcm9ncmFtKDApKTsKIAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IDAsIDApKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCkpOworICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwKSk7CisgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCAwKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCkpOworfQorCit2b2lkIEFjY2VsZXJhdGVkVGV4
dHVyZUNvcGllcjo6Zmx1c2goKQoreworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Zmx1
c2goKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaAppbmRleCBjMmJjZDQyN2MzMTAwYzJhNTQ4
YTgxMjMyOGFhNzcyYWVhNGZhYTM0Li5iMzg1ZjQ1ZTU0M2E3NDM2ZTU1NzgwMzIyYmExZDJiMTRl
Mjc3YWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlQ29waWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgogI2luY2x1
ZGUgIlNoYWRlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKQEAgLTQy
LDcgKzQxLDggQEAgcHVibGljOgogICAgIC8vIENvcHkgdGhlIGJhc2UgbGV2ZWwgY29udGVudHMg
b2YgfHNvdXJjZVRleHR1cmVJZHwgdG8gfGRlc3RUZXh0dXJlSWR8LiBCb3RoIHRleHR1cmUgb2Jq
ZWN0cwogICAgIC8vIG11c3QgYmUgY29tcGxldGUgYW5kIGhhdmUgYSBiYXNlIGxldmVsIG9mIHxz
aXplfCBkaW1lbnNpb25zLiBUaGUgY29sb3IgZm9ybWF0cyBkbyBub3QgbmVlZAogICAgIC8vIHRv
IG1hdGNoLCBidXQgfGRlc3RUZXh0dXJlSWR8IG11c3QgaGF2ZSBhIHJlbmRlcmFibGUgZm9ybWF0
LgotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIHVuc2ln
bmVkIHNvdXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50U2l6
ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUodW5zaWduZWQgc291cmNlVGV4
dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBmbHVzaCgpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflRl
eHR1cmVDb3BpZXIoKSB7IH0KQEAgLTU5LDcgKzU5LDggQEAgcHVibGljOgogICAgIH0KICAgICB2
aXJ0dWFsIH5BY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBj
b3B5VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIHVuc2lnbmVkIHNvdXJjZVRleHR1cmVJZCwg
dW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBjb3B5VGV4dHVyZSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0
dXJlSWQsIGNvbnN0IEludFNpemUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2goKTsKIAogcHJv
dGVjdGVkOgogICAgIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiwgYm9vbCB1c2luZ0JpbmRVbmlmb3Jtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5o
CmluZGV4IDBlYWUyZTY1ZGQwMjQ2NGNkMjBmYmYzOGZkYmI3OGVjY2RkYzg5MWIuLjkyODcwY2I1
YTViZmQ5MGVhZmMyODczZDcwY2MwY2YxMGQxYmUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5o
CkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGVuZFVwbG9hZHMoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoQ0NHcmFw
aGljc0NvbnRleHQqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9j
YXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqLCBDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QgZGVzdFJlY3QpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwCmluZGV4IGE4MjUzZDA2NTUxNjI1ZjBiMDczYWVjZjVk
ZWY3NWNkYWUwMmFmYmQuLjI4MWUwOGZmMDQ5ODc4MTI4YTg0MzI3MDllZmZlNjk2OTFiODBkMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ro
cm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcApAQCAtMTIwLDkg
KzEyMCw5IEBAIHZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjplbmRVcGxvYWRzKCkKICAg
ICBtX3BlbmRpbmdRdWVyaWVzLmFwcGVuZChtX2F2YWlsYWJsZVF1ZXJpZXMudGFrZUZpcnN0KCkp
OwogfQogCi12b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZShDQ0dy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4
dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRl
cjo6dXBsb2FkVGV4dHVyZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBD
Q1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IEludFJlY3Qgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlLT51cGRhdGVSZWN0
KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIHRleHR1cmUt
PnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRlciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQog
CiB2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6cHJvY2Vzc1F1ZXJpZXMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaAppbmRleCBhZTViNzQ5MWYyODQ4NDQwZjQx
MzFjZTZiYjE0M2U3NWE0ZDZjOWRhLi5mOGM0M2RjMmQ0MzAzOWYyZmQyNzhjZmE3YzcxN2NhYTI5
MGJhNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaApAQCAtNTEs
NyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZW5kVXBsb2FkcygpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJl
KENDR3JhcGhpY3NDb250ZXh0KiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIFRleHR1
cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVz
dFJlY3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIE9WRVJSSURFOwogCiBwcml2YXRl
OgogICAgIGNsYXNzIFF1ZXJ5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4
IGVlZDVjZmM5YWNlMTY5ZjU1MTUyODc2YTE0ZTc0ZGM2NDIxYTYxY2IuLjhlNDg5MTk1ZTQyYzBk
ZTUyMTJhNTIxZTE5YjUyMjgzMjI5ZGEzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcApAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICAgICAgaWYgKHRpbGUtPmlzRGlydHlG
b3JDdXJyZW50RnJhbWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHRpbGVk
TGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50
ZXh0dXJlSWQoKSwgdGlsZS0+b3BhcXVlUmVjdCgpKTsKKyAgICAgICAgdGlsZWRMYXllci0+cHVz
aFRpbGVQcm9wZXJ0aWVzKGksIGosIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnJlc291cmNlSWQo
KSwgdGlsZS0+b3BhcXVlUmVjdCgpKTsKICAgICAgICAgdGlsZS0+aXNJblVzZU9uSW1wbCA9IHRy
dWU7CiAgICAgfQogICAgIGZvciAoVmVjdG9yPFVwZGF0YWJsZVRpbGUqPjo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IGludmFsaWRUaWxlcy5iZWdpbigpOyBpdGVyICE9IGludmFsaWRUaWxlcy5lbmQo
KTsgKytpdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZTI5ZjkxMmI4OGUzMzhiOGRiMGYwMzhhNGI1
YTgyNTA1YzUzN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJl
QWxsb2NhdG9yLmgiCi0KLSNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgotI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBGb3IgdGhlIEdMQygpIG1hY3JvCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3IoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgaW50IG1h
eFRleHR1cmVTaXplKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX21heFRleHR1
cmVTaXplKG1heFRleHR1cmVTaXplKQotICAgICwgbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMoMCkK
LSAgICAsIG1fdGV4dHVyZVVzYWdlSGludChBbnkpCi0gICAgLCBtX3VzZVRleHR1cmVTdG9yYWdl
RXh0KGZhbHNlKQotewotICAgIEFTU0VSVChtX2NvbnRleHQpOwotfQotCi1UcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6On5UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IoKQotewotICAgIEFTU0VSVCgh
bV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMpOwotfQotCi1zdGF0aWMgR0MzRGVudW0gdGV4dHVyZVRv
U3RvcmFnZUZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KQotewotICAgIEdDM0RlbnVtIHN0
b3JhZ2VGb3JtYXQgPSBFeHRlbnNpb25zM0Q6OlJHQkE4X09FUzsKLSAgICBzd2l0Y2ggKHRleHR1
cmVGb3JtYXQpIHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOgotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6QkdSQV9FWFQ6Ci0gICAgICAgIHN0b3JhZ2VG
b3JtYXQgPSBFeHRlbnNpb25zM0RDaHJvbWl1bTo6QkdSQThfRVhUOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0b3JhZ2VGb3JtYXQ7Ci19Ci0KLXN0YXRpYyBib29s
IGlzVGV4dHVyZUZvcm1hdFN1cHBvcnRlZEZvclN0b3JhZ2UoR0MzRGVudW0gZm9ybWF0KQotewot
ICAgIHJldHVybiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBIHx8IGZvcm1hdCA9
PSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUKTsKLX0KLQotdW5zaWduZWQgVHJhY2tpbmdUZXh0dXJl
QWxsb2NhdG9yOjpjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZv
cm1hdCkKLXsKLSAgICBpZiAoc2l6ZS53aWR0aCgpID4gbV9tYXhUZXh0dXJlU2l6ZSB8fCBzaXpl
LmhlaWdodCgpID4gbV9tYXhUZXh0dXJlU2l6ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBt
X2N1cnJlbnRNZW1vcnlVc2VCeXRlcyArPSBDQ1RleHR1cmU6Om1lbW9yeVNpemVCeXRlcyhzaXpl
LCBmb3JtYXQpOwotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkID0gMDsKLSAgICBHTEMobV9jb250
ZXh0LCB0ZXh0dXJlSWQgPSBtX2NvbnRleHQtPmNyZWF0ZVRleHR1cmUoKSk7Ci0gICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgdGV4dHVyZUlkKSk7Ci0gICAgLy8gRG8gYmFzaWMgbGluZWFyIGZpbHRlcmluZyBvbiBy
ZXNpemUuCi0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5f
RklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7Ci0gICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6
TElORUFSKSk7Ci0gICAgLy8gTlBPVCB0ZXh0dXJlcyBpbiBHTCBFUyBvbmx5IHdvcmsgd2hlbiB0
aGUgd3JhcCBtb2RlIGlzIHNldCB0byBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRS4K
LSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RP
X0VER0UpKTsKLQotICAgIGlmIChtX3RleHR1cmVVc2FnZUhpbnQgPT0gRnJhbWVidWZmZXJBdHRh
Y2htZW50KQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9U
RVhUVVJFX1VTQUdFX0FOR0xFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9BTkdMRSkpOwotICAgIGlmIChtX3VzZVRleHR1cmVTdG9yYWdlRXh0ICYmIGlz
VGV4dHVyZUZvcm1hdFN1cHBvcnRlZEZvclN0b3JhZ2UoZm9ybWF0KSkgewotICAgICAgICBHQzNE
ZW51bSBzdG9yYWdlRm9ybWF0ID0gdGV4dHVyZVRvU3RvcmFnZUZvcm1hdChmb3JtYXQpOwotICAg
ICAgICBtX2NvbnRleHQtPnRleFN0b3JhZ2UyREVYVChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMSwgc3RvcmFnZUZvcm1hdCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhJbWFnZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBmb3JtYXQsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSwgMCwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
MCkpOwotICAgIG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5hZGQodGV4dHVyZUlkKTsKLSAgICByZXR1
cm4gdGV4dHVyZUlkOwotfQotCi12b2lkIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRl
VGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVt
IGZvcm1hdCkKLXsKLSAgICBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlcyAtPSBDQ1RleHR1cmU6Om1l
bW9yeVNpemVCeXRlcyhzaXplLCBmb3JtYXQpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSWQpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkKSk7Ci0gICAgQVNTRVJUKG1fYWxsb2NhdGVkVGV4
dHVyZUlkcy5jb250YWlucyh0ZXh0dXJlSWQpKTsKLSAgICBtX2FsbG9jYXRlZFRleHR1cmVJZHMu
cmVtb3ZlKHRleHR1cmVJZCk7Ci19Ci0KLXZvaWQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpk
ZWxldGVBbGxUZXh0dXJlcygpCi17Ci0gICAgZm9yIChIYXNoU2V0PHVuc2lnbmVkPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX2FsbG9jYXRlZFRleHR1cmVJZHMuYmVnaW4oKTsgaXQgIT0gbV9hbGxv
Y2F0ZWRUZXh0dXJlSWRzLmVuZCgpOyArK2l0KQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmRlbGV0ZVRleHR1cmUoKml0KSk7Ci0gICAgbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMg
PSAwOwotICAgIG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5jbGVhcigpOwotfQotCi19Ci0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5n
VGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDM4ZjdjYTA0M2I0ZmQ5NzA1YjU5YmQzM2YzYTliYjcwMTU2MGQxMmYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBUcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3JfaAotI2RlZmluZSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3JfaAot
Ci0jaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFz
cyBXZWJHcmFwaGljc0NvbnRleHQzRDsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKTsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IGNyZWF0
ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBpbnQgbWF4VGV4dHVyZVNp
emUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcihjb250ZXh0LCBtYXhUZXh0dXJlU2l6ZSkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5U
cmFja2luZ1RleHR1cmVBbGxvY2F0b3IoKTsKLQotICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRl
VGV4dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXpl
JiwgR0MzRGVudW0gZm9ybWF0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxs
VGV4dHVyZXMoKSBPVkVSUklERTsKLQotICAgIHNpemVfdCBjdXJyZW50TWVtb3J5VXNlQnl0ZXMo
KSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlczsgfQotCi0gICAgZW51bSBU
ZXh0dXJlVXNhZ2VIaW50IHsgQW55LCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgfTsKLQotICAgIHZv
aWQgc2V0VGV4dHVyZVVzYWdlSGludChUZXh0dXJlVXNhZ2VIaW50IGhpbnQpIHsgbV90ZXh0dXJl
VXNhZ2VIaW50ID0gaGludDsgfQotICAgIHZvaWQgc2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQoYm9v
bCB1c2VTdG9yYWdlRXh0KSB7IG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQgPSB1c2VTdG9yYWdlRXh0
OyB9Ci0KLXByb3RlY3RlZDoKLSAgICBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IoV2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRCosIGludCBtYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7Ci0gICAgaW50IG1fbWF4VGV4dHVyZVNp
emU7Ci0gICAgc2l6ZV90IG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzOwotICAgIFRleHR1cmVVc2Fn
ZUhpbnQgbV90ZXh0dXJlVXNhZ2VIaW50OwotICAgIGJvb2wgbV91c2VUZXh0dXJlU3RvcmFnZUV4
dDsKLSAgICBIYXNoU2V0PHVuc2lnbmVkPiBtX2FsbG9jYXRlZFRleHR1cmVJZHM7Ci19OwotCi19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAppbmRleCBiZTE5OTgz
ZWZiNjI2MzZjMDU2YjY5MDY3OWY1ZmQwMWU5NmY0OGRkLi4wZjZmNmVlMGUyM2U5NWEyY2U0ZWNl
ZGI0OTQwZmRiYjYwMGRmODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApA
QCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5oIgogI2lu
Y2x1ZGUgImNjL0NDRnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NjgsMTMgKzY3LDggQEAgYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93RGVidWdSZWN0cyhjb25z
dCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKIHZvaWQgQ0NIZWFkc1VwRGlz
cGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKIHsKICAg
ICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyID0gbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVu
ZGVyZXIoKTsKLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBj
b21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBpZiAoIW1faHVkVGV4dHVy
ZSkKLSAgICAgICAgbV9odWRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJS
ZW5kZXJlci0+aW1wbFRleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAgIG1faHVkVGV4dHVyZSA9
IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKGxheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJjZVByb3Zp
ZGVyKCkpOwogCiAgICAgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXll
clRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKTsKICAgICAvLyBVc2UgYSBmdWxsc2NyZWVuIHRleHR1
cmUgb25seSBpZiB3ZSBuZWVkIHRvLi4uCkBAIC04Nyw3ICs4MSw3IEBAIHZvaWQgQ0NIZWFkc1Vw
RGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKICAg
ICAgICAgaHVkU2l6ZS5zZXRIZWlnaHQoMTI4KTsKICAgICB9CiAKLSAgICBpZiAoIW1faHVkVGV4
dHVyZS0+aWQoKSAmJiAhbV9odWRUZXh0dXJlLT5hbGxvY2F0ZShodWRTaXplLCBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQSkpCisgICAgaWYgKCFtX2h1ZFRleHR1cmUtPmlkKCkgJiYgIW1faHVkVGV4
dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIGh1ZFNpemUsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIFJlbmRlciBwaXhlbHMgaW50byB0aGUgdGV4dHVyZS4KQEAg
LTEwMiwyMiArOTYsOCBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXcoQ0NMYXllclRyZWVI
b3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAgLy8gVXBsb2FkIHRvIEdMLgogICAgIHsK
ICAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOwotCi0g
ICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbV9odWRUZXh0dXJlLT5pZCgpKSk7Ci0gICAgICAgIGJvb2wgdXBsb2Fk
ZWRWaWFNYXAgPSBmYWxzZTsKLSAgICAgICAgaWYgKGxheWVyUmVuZGVyZXItPmNhcGFiaWxpdGll
cygpLnVzaW5nTWFwU3ViKSB7Ci0gICAgICAgICAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oY29udGV4dC0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNp
emUuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKLQotICAg
ICAgICAgICAgaWYgKHBpeGVsRGVzdCkgewotICAgICAgICAgICAgICAgIHVwbG9hZGVkVmlhTWFw
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBtZW1jcHkocGl4ZWxEZXN0LCBsb2NrZXIucGl4ZWxz
KCksIGh1ZFNpemUud2lkdGgoKSAqIGh1ZFNpemUuaGVpZ2h0KCkgKiA0KTsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3QpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF1cGxvYWRlZFZpYU1hcCkgewot
ICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBjYW52YXMuc2l6
ZSgpLndpZHRoKCksIGNhbnZhcy5zaXplKCkuaGVpZ2h0KCksIDAsIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgbG9ja2VyLnBpeGVscygp
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgSW50UmVjdCByZWN0KEludFBvaW50KDAsIDApLCBodWRT
aXplKTsKKyAgICAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKS0+dXBs
b2FkKG1faHVkVGV4dHVyZS0+aWQoKSwgbG9ja2VyLnBpeGVscygpLCByZWN0LCByZWN0LCByZWN0
KTsKICAgICB9CiAKICAgICBsYXllclJlbmRlcmVyLT5kcmF3SGVhZHNVcERpc3BsYXkobV9odWRU
ZXh0dXJlLmdldCgpLCBodWRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJ
bXBsLmNwcAppbmRleCBkMTE1N2VkMDM3OTc5ODE1NGFkMTE3YThlMjljMmMzNDA5MDExYTMyLi42
Y2U1MjcyYzA1YTkxMTI4OTk0Yjk0NzkwMmJkNmIxNmU1MzY4NTc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCkBAIC02MCwxMiArNjAsMTIgQEAgQ0NJT1N1cmZh
Y2VMYXllckltcGw6On5DQ0lPU3VyZmFjZUxheWVySW1wbCgpCiAgICAgICAgIGNvbnRleHQzZC0+
ZGVsZXRlVGV4dHVyZShtX2lvU3VyZmFjZVRleHR1cmVJZCk7CiB9CiAKLXZvaWQgQ0NJT1N1cmZh
Y2VMYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6d2lsbERyYXco
Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewotICAgIENDTGF5ZXJJbXBs
Ojp3aWxsRHJhdyhsYXllclJlbmRlcmVyLCBjb250ZXh0KTsKKyAgICBDQ0xheWVySW1wbDo6d2ls
bERyYXcocmVzb3VyY2VQcm92aWRlcik7CiAKICAgICBpZiAobV9pb1N1cmZhY2VDaGFuZ2VkKSB7
Ci0gICAgICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRl
eHQtPmNvbnRleHQzRCgpOworICAgICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0M2QgPSByZXNvdXJjZVByb3ZpZGVyLT5ncmFwaGljc0NvbnRleHQzRCgpOwogICAgICAg
ICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
IHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJ
T1N1cmZhY2VMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKaW5kZXggMjhhMzVjZDBmMjA4M2E4NjIx
MDE3MTg3OWMxYjkyNmI1MmJkMDRlMi4uNDIzNjg4MDljMTM0MzZjMDZhNGI3MjA0YWVkMTRiY2Jm
ZTlhYzQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oCkBAIC00Myw3
ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRD
dWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykg
T1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZW5kZXJlciosIENDR3Jh
cGhpY3NDb250ZXh0KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVz
b3VyY2VQcm92aWRlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4
dCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4
dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
Y3BwCmluZGV4IDk0MzRkYzU5Y2Q4ZTllNTg1NjJmNGY2YjYwYjQ5ZWQ2ZDA2ZmZmNTIuLjIzZGU3
ZTRhODkwM2I3NDdmM2I0ZDRmOWQ2NjdiNDY4YTdiYzExMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBD
Q0xheWVySW1wbDo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29uc3QKICAgICByZXR1cm4gQ0NT
aGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShxdWFkVHJhbnNmb3JtYXRpb24sIG1fdmlzaWJsZUNvbnRl
bnRSZWN0LCBtX3NjaXNzb3JSZWN0LCBtX2RyYXdPcGFjaXR5LCBtX29wYXF1ZSk7CiB9CiAKLXZv
aWQgQ0NMYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCop
Cit2b2lkIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKQogewogI2lm
bmRlZiBOREVCVUcKICAgICAvLyB3aWxsRHJhdy9kaWREcmF3IG11c3QgYmUgbWF0Y2hlZC4KQEAg
LTE2Niw3ICsxNjYsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiwg
Q0NHcmFwaGljc0NvbnRleHQqKQogI2VuZGlmCiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OmRpZERy
YXcoKQordm9pZCBDQ0xheWVySW1wbDo6ZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKQogewog
I2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9iZXR3ZWVuV2lsbERyYXdBbmREaWREcmF3KTsK
QEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjphcHBlbmREZWJ1Z0JvcmRlclF1
YWQoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdQogICAgIHF1YWRMaXN0
LmFwcGVuZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNv
bnRlbnRSZWN0LCBkZWJ1Z0JvcmRlckNvbG9yKCksIGRlYnVnQm9yZGVyV2lkdGgoKSkpOwogfQog
Ci11bnNpZ25lZCBDQ0xheWVySW1wbDo6Y29udGVudHNUZXh0dXJlSWQoKSBjb25zdAorQ0NSZXNv
dXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDTGF5ZXJJbXBsOjpjb250ZW50c1Jlc291cmNlSWQo
KSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmgKaW5kZXggYTVjYWNkNjRiZmY0YTYxNGJjMzUxMTAxYjA1ZDBjMjg3MGQx
MWZiYy4uZDllYWZkYWMwZjgxNWUzZjBjMGRjODE5OTQwOTFhMzZiMWUzYjliYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRs
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgImNjL0NDUmVuZGVyU3VyZmFjZS5oIgorI2luY2x1ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRl
ci5oIgogI2luY2x1ZGUgImNjL0NDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSA8cHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXguaD4KQEAgLTQ0LDcgKzQ1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIGNsYXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBDQ0xh
eWVyVHJlZUhvc3RJbXBsOwogY2xhc3MgQ0NRdWFkQ3VsbGVyOwpAQCAtOTIsMTIgKzkyLDEyIEBA
IHB1YmxpYzoKICAgICAvLyBkaWREcmF3IGlzIGd1YXJhbnRlZWQgdG8gYmUgY2FsbGVkIGJlZm9y
ZSBhbm90aGVyIHdpbGxEcmF3IG9yIGJlZm9yZQogICAgIC8vIHRoZSBsYXllciBpcyBkZXN0cm95
ZWQuIFRvIGVuZm9yY2UgdGhpcywgYW55IGNsYXNzIHRoYXQgb3ZlcnJpZGVzCiAgICAgLy8gd2ls
bERyYXcvZGlkRHJhdyBtdXN0IGNhbGwgdGhlIGJhc2UgY2xhc3MgdmVyc2lvbi4KLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbERyYXcoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0Kik7CisgICAg
dmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopOwogICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSos
IGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKTsKICAgICB2b2lk
IGFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSopIGNvbnN0OwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBjb250ZW50c1RleHR1cmVJZCgp
IGNvbnN0OworICAgIHZpcnR1YWwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGNvbnRl
bnRzUmVzb3VyY2VJZCgpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbGF5
ZXIgaGFzIGNvbnRlbnQgdG8gZHJhdy4KICAgICB2b2lkIHNldERyYXdzQ29udGVudChib29sKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDFmNTFmMTlkNDViMTEyNjgwYmM2
MWViMTdhZjQzNDljZmVmMjhmYWIuLjM3N2Y3NGQ1NDQ4MTllY2QyNDQyOWVkNGI1OWM2NzAxMThi
NTc5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMTUxLDcgKzE1MSw3
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpCiAgICAg
Ly8gVXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gcGFydGlhbCB1cGRhdGUgY2FwYWJpbGl0eS4K
ICAgICBtX3NldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IG1pbihtX3NldHRpbmdz
Lm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcywgbV9wcm94eS0+bWF4UGFydGlhbFRleHR1cmVVcGRh
dGVzKCkpOwogCi0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoMCwgbV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpLm1heFRleHR1cmVTaXplKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIgPSBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgwLCBtX3Byb3h5LT5sYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsK
ICAgICBtX3N1cmZhY2VNZW1vcnlQbGFjZWhvbGRlciA9IG1fY29udGVudHNUZXh0dXJlTWFuYWdl
ci0+Y3JlYXRlVGV4dHVyZShJbnRTaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKIAog
ICAgIG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkID0gdHJ1ZTsKQEAgLTE5NywxMSArMTk3LDEx
IEBAIENDTGF5ZXJUcmVlSG9zdDo6UmVjcmVhdGVSZXN1bHQgQ0NMYXllclRyZWVIb3N0OjpyZWNy
ZWF0ZUNvbnRleHQoKQogICAgIHJldHVybiBSZWNyZWF0ZUZhaWxlZEFuZEdhdmVVcDsKIH0KIAot
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQo
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0
ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJj
ZVByb3ZpZGVyKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAg
aWYgKG1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKQotICAgICAgICBtX2NvbnRlbnRzVGV4dHVy
ZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcik7CisgICAgICAgIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcik7CiB9CiAKIHZv
aWQgQ0NMYXllclRyZWVIb3N0OjphY3F1aXJlTGF5ZXJUZXh0dXJlcygpCkBAIC0yMzAsNyArMjMw
LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJl
YWQoKSk7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRv
Iik7CiAKLSAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeShob3N0SW1w
bC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgIG1fY29udGVudHNUZXh0dXJlTWFu
YWdlci0+cmVkdWNlTWVtb3J5KGhvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpOwogfQogCiAv
LyBUaGlzIGZ1bmN0aW9uIGNvbW1pdHMgdGhlIENDTGF5ZXJUcmVlSG9zdCB0byBhbiBpbXBsIHRy
ZWUuIFdoZW4gbW9kaWZ5aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGJkNjU2
NTBmNGQzN2JkMGM5MTliM2M1MjA0NDY0YWFkZDg1M2Y5YjQuLjgzOTc4NTkwNTNlY2U2MjAyZDFk
MTkwOWRkOTZlMWIwMjdmMThhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC01
Miw3ICs1Miw2IEBAIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50OwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIFJlZ2lvbjsK
LWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI7CiBzdHJ1Y3QgQ0NSZW5kZXJpbmdTdGF0czsKIHN0cnVjdCBDQ1Njcm9sbEFuZFNjYWxlU2V0
OwpAQCAtMTgyLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxDb21taXQoKSB7IG1f
Y2xpZW50LT53aWxsQ29tbWl0KCk7IH0KICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgp
IHsgbV9jbGllbnQtPmRpZENvbW1pdEFuZERyYXdGcmFtZSgpOyB9CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVN3YXBCdWZmZXJzKCkgeyBtX2NsaWVudC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOyB9
Ci0gICAgdm9pZCBkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKFRleHR1cmVBbGxv
Y2F0b3IqKTsKKyAgICB2b2lkIGRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoQ0NS
ZXNvdXJjZVByb3ZpZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGFjcXVpcmVMYXllclRleHR1cmVz
KCk7CiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB3ZSBzaG91bGQgYWJvcnQgdGhpcyBmcmFtZSBk
dWUgdG8gaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4KICAgICBib29sIGluaXRpYWxpemVMYXllclJl
bmRlcmVySWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
aW5kZXggMDRiYjc4NjcxNTlkNzY4ODMyMDg2OTQ5YzRjOTI4NjdiYTQxOGU5Yi4uMmU2MDViZTEx
MjQ1YjQxMThkZDU3MDU1NzJmYWEzZmMxYTIwMzdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJMYXllclJlbmRl
cmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiVHJhY2VF
dmVudC5oIgotI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUg
ImNjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdlVHJh
Y2tlci5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5oIgpAQCAtMzMwLDcgKzMy
OSw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZy
YW1lRGF0YSYgZnJhbWUpCiAgICAgICAgICAgICBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1Jl
bmRlclBhc3MgPSBzdXJmYWNlUGFzc01hcC5nZXQoaXQtPnJlbmRlclN1cmZhY2UoKSk7CiAgICAg
ICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcigqaXQsIGNvbnRy
aWJ1dGluZ1JlbmRlclBhc3MsICZvY2NsdXNpb25UcmFja2VyKTsKICAgICAgICAgfSBlbHNlIGlm
IChpdC5yZXByZXNlbnRzSXRzZWxmKCkgJiYgIW9jY2x1c2lvblRyYWNrZXIub2NjbHVkZWQoKml0
LCBpdC0+dmlzaWJsZUNvbnRlbnRSZWN0KCkpICYmICFpdC0+dmlzaWJsZUNvbnRlbnRSZWN0KCku
aXNFbXB0eSgpICYmICFpdC0+c2Npc3NvclJlY3QoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IGl0LT53aWxsRHJhdyhtX2xheWVyUmVuZGVyZXIuZ2V0KCksIGNvbnRleHQoKSk7CisgICAgICAg
ICAgICBpdC0+d2lsbERyYXcobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKICAgICAgICAgICAg
IGZyYW1lLndpbGxEcmF3TGF5ZXJzLmFwcGVuZCgqaXQpOwogCiAgICAgICAgICAgICBwYXNzLT5h
cHBlbmRRdWFkc0ZvckxheWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIsIGhhZE1pc3NpbmdUaWxl
cyk7CkBAIC01MjMsNyArNTIyLDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJl
VG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6cmVs
ZWFzZUNvbnRlbnRzVGV4dHVyZXMoKQogewotICAgIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
LT5kZWxldGVBbGxUZXh0dXJlcygpOworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlT3du
ZWRSZXNvdXJjZXMoQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIG1fY29udGVudHNUZXh0
dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQgPSB0cnVlOwogICAgIG1fY2xpZW50LT5zZXRO
ZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwogfQpAQCAtNTgwLDcgKzU3OSw3IEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQogdm9p
ZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkaWREcmF3QWxsTGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYg
ZnJhbWUpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS53aWxsRHJhd0xheWVy
cy5zaXplKCk7ICsraSkKLSAgICAgICAgZnJhbWUud2lsbERyYXdMYXllcnNbaV0tPmRpZERyYXco
KTsKKyAgICAgICAgZnJhbWUud2lsbERyYXdMYXllcnNbaV0tPmRpZERyYXcobV9yZXNvdXJjZVBy
b3ZpZGVyLmdldCgpKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpmaW5pc2hBbGxS
ZW5kZXJpbmcoKQpAQCAtNTk5LDExICs1OTgsNiBAQCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzJiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKAog
ICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXItPmNhcGFiaWxpdGllcygpOwogfQogCi1UZXh0dXJl
QWxsb2NhdG9yKiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50c1RleHR1cmVBbGxvY2F0b3Io
KSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXIgPyBtX2xheWVyUmVuZGVyZXIt
PmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIDogMDsKLX0KLQogYm9vbCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpzd2FwQnVmZmVycygpCiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJSZW5kZXJlcik7CkBA
IC03MDksOCArNzAzLDExIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoUGFzc093blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4KICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAorICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dFJl
Zihjb250ZXh0KTsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3Zp
ZGVyID0gQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY29udGV4dFJlZi5nZXQoKSk7CiAgICAg
T3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5kZXJlcjsKLSAgICBsYXllclJl
bmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgY29udGV4dDNkLCB0
ZXh0dXJlVXBsb2FkZXIpOworICAgIGlmIChyZXNvdXJjZVByb3ZpZGVyLmdldCgpKQorICAgICAg
ICBsYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUodGhpcywgcmVz
b3VyY2VQcm92aWRlci5nZXQoKSwgdGV4dHVyZVVwbG9hZGVyKTsKIAogICAgIC8vIFNpbmNlIHdl
IG5vdyBoYXZlIGEgbmV3IGNvbnRleHQvbGF5ZXJSZW5kZXJlciwgd2UgY2Fubm90IGNvbnRpbnVl
IHRvIHVzZSB0aGUgb2xkCiAgICAgLy8gcmVzb3VyY2VzIChpLmUuIHJlbmRlclN1cmZhY2VzIGFu
ZCB0ZXh0dXJlIElEcykuCkBAIC03MjAsOCArNzE3LDkgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJ
bXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzT3duUHRyPENDR3JhcGhpY3NDb250ZXh0
PgogICAgIH0KIAogICAgIG1fbGF5ZXJSZW5kZXJlciA9IGxheWVyUmVuZGVyZXIucmVsZWFzZSgp
OworICAgIG1fcmVzb3VyY2VQcm92aWRlciA9IHJlc291cmNlUHJvdmlkZXIucmVsZWFzZSgpOwog
ICAgIGlmIChtX2xheWVyUmVuZGVyZXIpCi0gICAgICAgIG1fY29udGV4dCA9IGNvbnRleHQ7Cisg
ICAgICAgIG1fY29udGV4dCA9IGNvbnRleHRSZWYucmVsZWFzZSgpOwogCiAgICAgaWYgKCFtX3Zp
c2libGUgJiYgbV9sYXllclJlbmRlcmVyKQogICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRW
aXNpYmxlKG1fdmlzaWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5k
ZXggNzUzYWEzODRhM2QwMDc2ZWExZjBhOThjMTc0YTRiNTc1YTcwNzkwZS4uZjkzNmUzNGRkMmMz
YzQzMjkyZjIzYjI4ZjAxOTkzMTY1ZTUzYjQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaApAQCAtNDYsOCArNDYsOCBAQCBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIEND
TGF5ZXJUcmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjsKIGNsYXNzIENDUGFnZVNjYWxlQW5p
bWF0aW9uOwogY2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQ7CitjbGFzcyBDQ1Jlc291cmNlUHJv
dmlkZXI7CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07Ci1jbGFzcyBUZXh0dXJlQWxsb2Nh
dG9yOwogc3RydWN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXM7CiAKIC8vIENDTGF5ZXJUcmVl
SG9zdC0+Q0NQcm94eSBjYWxsYmFjayBpbnRlcmZhY2UuCkBAIC0xMjcsNyArMTI3LDYgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpOwogICAgIENDUmVuZGVyZXIqIGxheWVyUmVu
ZGVyZXIoKSB7IHJldHVybiBtX2xheWVyUmVuZGVyZXIuZ2V0KCk7IH0KICAgICBjb25zdCBMYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkgY29uc3Q7
Ci0gICAgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3Q7
CiAKICAgICBib29sIHN3YXBCdWZmZXJzKCk7CiAKQEAgLTE3Nyw2ICsxNzYsNyBAQCBwdWJsaWM6
CiAKICAgICBDQ0ZyYW1lUmF0ZUNvdW50ZXIqIGZwc0NvdW50ZXIoKSBjb25zdCB7IHJldHVybiBt
X2Zwc0NvdW50ZXIuZ2V0KCk7IH0KICAgICBDQ0RlYnVnUmVjdEhpc3RvcnkqIGRlYnVnUmVjdEhp
c3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnUmVjdEhpc3RvcnkuZ2V0KCk7IH0KKyAgICBD
Q1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Jl
c291cmNlUHJvdmlkZXIuZ2V0KCk7IH0KIAogICAgIGNsYXNzIEN1bGxSZW5kZXJQYXNzZXNXaXRo
Q2FjaGVkVGV4dHVyZXMgewogICAgIHB1YmxpYzoKQEAgLTI1Miw2ICsyNTIsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZHVtcFJlbmRlclN1cmZhY2VzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50LCBj
b25zdCBDQ0xheWVySW1wbCopIGNvbnN0OwogCiAgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0
PiBtX2NvbnRleHQ7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gbV9yZXNvdXJjZVBy
b3ZpZGVyOwogICAgIE93blB0cjxDQ1JlbmRlcmVyPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RMYXllckltcGw7CiAgICAgQ0NMYXllckltcGwqIG1fcm9v
dFNjcm9sbExheWVySW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNw
cAppbmRleCAxZGY3NzEzODZjYWJjYjRhYTk4YmQxZTZhNWNiODM3OTRmNTc0NWNjLi42MGNmMWEx
ZTJjZTU3ODcxMDdmYTczODNhYTU1NDFiOWRlMGJkZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cmlvcml0aXplZFRleHR1cmUuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ0NQcmlvcml0eUNhbGN1bGF0b3Iu
aCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJUZXh0dXJl
QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwpAQCAtOTAsNDYgKzg5LDI5IEBAIGJvb2wgQ0NQcmlvcml0aXplZFRleHR1cmU6OnJlcXVlc3RM
YXRlKCkKICAgICByZXR1cm4gbV9tYW5hZ2VyLT5yZXF1ZXN0TGF0ZSh0aGlzKTsKIH0KIAotdm9p
ZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlKFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OmFjcXVpcmVCYWNr
aW5nVGV4dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAg
QVNTRVJUKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKICAgICBpZiAobV9pc0Fib3ZlUHJpb3Jp
dHlDdXRvZmYpCi0gICAgICAgIG1fbWFuYWdlci0+YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVk
ZWQodGhpcywgYWxsb2NhdG9yKTsKKyAgICAgICAgbV9tYW5hZ2VyLT5hY3F1aXJlQmFja2luZ1Rl
eHR1cmVJZk5lZWRlZCh0aGlzLCByZXNvdXJjZVByb3ZpZGVyKTsKIH0KIAotdW5zaWduZWQgQ0NQ
cmlvcml0aXplZFRleHR1cmU6OnRleHR1cmVJZCgpCitDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291
cmNlSWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OnJlc291cmNlSWQoKSBjb25zdAogewogICAgIGlm
IChtX2JhY2tpbmcpCiAgICAgICAgIHJldHVybiBtX2JhY2tpbmctPmlkKCk7CiAgICAgcmV0dXJu
IDA7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OmJpbmRUZXh0dXJlKENDR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIEND
UHJpb3JpdGl6ZWRUZXh0dXJlOjp1cGxvYWQoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVBy
b3ZpZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qq
IGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCiB7CiAgICAgQVNTRVJUKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKICAgICBpZiAo
bV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpCi0gICAgICAgIGFjcXVpcmVCYWNraW5nVGV4dHVyZShh
bGxvY2F0b3IpOworICAgICAgICBhY3F1aXJlQmFja2luZ1RleHR1cmUocmVzb3VyY2VQcm92aWRl
cik7CiAgICAgQVNTRVJUKG1fYmFja2luZyk7Ci0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0
M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJl
IGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbnRleHQzZC0+Ymlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCgpKTsKLX0K
LQotdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoQ0NHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKLXsKLSAg
ICBBU1NFUlQobV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwotICAgIGlmIChtX2lzQWJvdmVQcmlv
cml0eUN1dG9mZikKLSAgICAgICAgYWNxdWlyZUJhY2tpbmdUZXh0dXJlKGFsbG9jYXRvcik7Ci0g
ICAgQVNTRVJUKG1fYmFja2luZyk7Ci0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsK
LSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBv
c2l0aW5nLgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbnRleHQzZC0+ZnJhbWVidWZm
ZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0
ZXh0dXJlSWQoKSwgMCk7CisgICAgcmVzb3VyY2VQcm92aWRlci0+dXBsb2FkKHJlc291cmNlSWQo
KSwgaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCiB2b2lkIEND
UHJpb3JpdGl6ZWRUZXh0dXJlOjpsaW5rKEJhY2tpbmcqIGJhY2tpbmcpCkBAIC0xNTksNCArMTQx
LDMgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0VG9TZWxmTWFuYWdlZE1lbW9yeVBs
YWNlaG9sZGVyKHNpemVfdCBieXRlcykKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaAppbmRleCA0NjA3M2M1ZjM0Njg4ZWRl
MmUxODhhM2ZlYmFlNGY0MGMzNTI1NWZlLi43NjRjYmVjZWRjM2RjZDI3YTJiM2M2NTA5Mzk5MzUw
NDE2ZDkwN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKQEAgLTI1
LDE4ICsyNSwxNiBAQAogI2lmbmRlZiBDQ1ByaW9yaXRpemVkVGV4dHVyZV9oCiAjZGVmaW5lIEND
UHJpb3JpdGl6ZWRUZXh0dXJlX2gKIAotI2luY2x1ZGUgIkNDUHJpb3JpdHlDYWxjdWxhdG9yLmgi
Ci0jaW5jbHVkZSAiQ0NUZXh0dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgImNj
L0NDUHJpb3JpdHlDYWxjdWxhdG9yLmgiCisjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVy
LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOwotY2xhc3MgQ0NQcmlvcml0eUNhbGN1
bGF0b3I7Ci1jbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7
CiAKIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDQ1ByaW9yaXRpemVkVGV4dHVyZSk7CkBAIC03Niw3ICs3NCw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIElmIGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIGlzIHRydWUgYWNxdWlyZUJhY2tpbmdU
ZXh0dXJlKCkgd2lsbCBhY3F1aXJlCiAgICAgLy8gYSBiYWNraW5nIHRleHR1cmUgZm9yIHVzZS4g
Q2FsbCB0aGlzIHdoZW5ldmVyIHRoZSB0ZXh0dXJlIGlzIGFjdHVhbGx5IG5lZWRlZC4KLSAgICB2
b2lkIGFjcXVpcmVCYWNraW5nVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBh
Y3F1aXJlQmFja2luZ1RleHR1cmUoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAKICAgICAvLyBGSVhN
RTogUmVxdWVzdCBsYXRlIGlzIHJlYWxseSBhIGhhY2sgZm9yIHdoZW4gd2UgYXJlIHRvdGFsbHkg
b3V0IG9mIG1lbW9yeQogICAgIC8vICAgICAgICAoYWxsIHRleHR1cmVzIGFyZSB2aXNpYmxlKSBi
dXQgd2UgY2FuIHN0aWxsIHNxdWVlemUgaW50byB0aGUgbGltaXQKQEAgLTg3LDExICs4NSwxMCBA
QCBwdWJsaWM6CiAgICAgLy8gICAgICAgIHJlZ3Jlc3MgT09NcyBzaXR1YXRpb25zLgogICAgIGJv
b2wgcmVxdWVzdExhdGUoKTsKIAotICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFjcXVpcmUg
dGhlIHRleHR1cmUgaWYgcG9zc2libGUuIElmIG5laXRoZXIgaGF2ZUJhY2tpbmdUZXh0dXJlKCkK
LSAgICAvLyBub3IgY2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkgaXMgdHJ1ZSwgYW4gSUQgb2Yg
emVybyB3aWxsIGJlIHVzZWQvcmV0dXJuZWQuCi0gICAgdm9pZCBiaW5kVGV4dHVyZShDQ0dyYXBo
aWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqKTsKLSAgICB2b2lkIGZyYW1lYnVmZmVyVGV4
dHVyZTJEKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciopOwotICAgIHVuc2ln
bmVkIHRleHR1cmVJZCgpOworICAgIC8vIFVwbG9hZHMgcGl4ZWxzIGludG8gdGhlIGJhY2tpbmcg
cmVzb3VyY2UuIFRoaXMgZnVuY3Rpb25zIHdpbGwgYXF1aXJlIHRoZSBiYWNraW5nIGlmIG5lZWRl
ZC4KKyAgICB2b2lkIHVwbG9hZChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCB1aW50OF90KiBp
bWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQgcmVzb3VyY2VJZCgpIGNvbnN0OwogCiAgICAgLy8gU2VsZi1tYW5hZ2VkIHRleHR1
cmVzIGFyZSBhY2NvdW50ZWQgZm9yIHdoZW4gcHJpb3JpdGl6aW5nIG90aGVyIHRleHR1cmVzLAog
ICAgIC8vIGJ1dCB0aGV5IGFyZSBub3QgYWxsb2NhdGVkL3JlY3ljbGVkL2RlbGV0ZWQsIHNvIHRo
aXMgbmVlZHMgdG8gYmUgZG9uZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlci5jcHAKaW5kZXggZDE5ZTVhYTE5YzhmOGYzNmNiZTYyMDczNDVmMjlkZWVj
ZTY1NmI1Yi4uNGEyNDE3OWM1NzgwYTY4MmM0ZWQ0YWQ4MzNjMTZhMjdlNmQwZDhkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCkBAIC0z
NiwxMSArMzYsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgaW50KQorQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxp
bWl0Qnl0ZXMsIGludCwgaW50IHBvb2wpCiAgICAgOiBtX21heE1lbW9yeUxpbWl0Qnl0ZXMobWF4
TWVtb3J5TGltaXRCeXRlcykKICAgICAsIG1fbWVtb3J5VXNlQnl0ZXMoMCkKICAgICAsIG1fbWVt
b3J5QWJvdmVDdXRvZmZCeXRlcygwKQogICAgICwgbV9tZW1vcnlBdmFpbGFibGVCeXRlcygwKQor
ICAgICwgbV9wb29sKHBvb2wpCiB7CiB9CiAKQEAgLTQ5LDcgKzUwLDcgQEAgQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjp+Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKCkKICAgICB3aGls
ZSAobV90ZXh0dXJlcy5zaXplKCkgPiAwKQogICAgICAgICB1bnJlZ2lzdGVyVGV4dHVyZSgqbV90
ZXh0dXJlcy5iZWdpbigpKTsKIAotICAgIC8vIEVhY2ggcmVtYWluaW5nIGJhY2tpbmcgaXMgYSBs
ZWFrZWQgb3BlbmdsIHRleHR1cmUuIFdlIGRvbid0IGhhdmUgdGhlIGFsbG9jYXRvcgorICAgIC8v
IEVhY2ggcmVtYWluaW5nIGJhY2tpbmcgaXMgYSBsZWFrZWQgb3BlbmdsIHRleHR1cmUuIFdlIGRv
bid0IGhhdmUgdGhlIHJlc291cmNlUHJvdmlkZXIKICAgICAvLyB0byBkZWxldGUgdGhlIHRleHR1
cmVzIGF0IHRoaXMgdGltZSBzbyBjbGVhck1lbW9yeSgpIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZv
cmUgdGhpcy4KICAgICB3aGlsZSAobV9iYWNraW5ncy5zaXplKCkgPiAwKQogICAgICAgICBkZXN0
cm95QmFja2luZygqbV9iYWNraW5ncy5iZWdpbigpLCAwKTsKQEAgLTE2OCw3ICsxNjksNyBAQCBi
b29sIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdExhdGUoQ0NQcmlvcml0aXpl
ZFRleHR1cmUqIHRleHR1cmUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9y
aXRpemVkVGV4dHVyZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9p
ZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVl
ZGVkKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJl
c291cmNlUHJvdmlkZXIpCiB7CiAgICAgQVNTRVJUKCF0ZXh0dXJlLT5pc1NlbGZNYW5hZ2VkKCkp
OwogICAgIEFTU0VSVCh0ZXh0dXJlLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSk7CkBAIC0xOTAs
OCArMTkxLDggQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFjcXVpcmVCYWNr
aW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXgKIAogICAgIC8vIE90aGVyd2lzZSBy
ZWR1Y2UgbWVtb3J5IGFuZCBqdXN0IGFsbG9jYXRlIGEgbmV3IGJhY2tpbmcgdGV4dXJlcy4KICAg
ICBpZiAoIWJhY2tpbmcpIHsKLSAgICAgICAgcmVkdWNlTWVtb3J5KG1fbWVtb3J5QXZhaWxhYmxl
Qnl0ZXMgLSB0ZXh0dXJlLT5ieXRlcygpLCBhbGxvY2F0b3IpOwotICAgICAgICBiYWNraW5nID0g
Y3JlYXRlQmFja2luZyh0ZXh0dXJlLT5zaXplKCksIHRleHR1cmUtPmZvcm1hdCgpLCBhbGxvY2F0
b3IpOworICAgICAgICByZWR1Y2VNZW1vcnkobV9tZW1vcnlBdmFpbGFibGVCeXRlcyAtIHRleHR1
cmUtPmJ5dGVzKCksIHJlc291cmNlUHJvdmlkZXIpOworICAgICAgICBiYWNraW5nID0gY3JlYXRl
QmFja2luZyh0ZXh0dXJlLT5zaXplKCksIHRleHR1cmUtPmZvcm1hdCgpLCByZXNvdXJjZVByb3Zp
ZGVyKTsKICAgICB9CiAKICAgICAvLyBNb3ZlIHRoZSB1c2VkIGJhY2tpbmcgdGV4dHVyZSB0byB0
aGUgZW5kIG9mIHRoZSBldmljdGlvbiBsaXN0LgpAQCAtMjAyLDcgKzIwMyw3IEBAIHZvaWQgQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChD
Q1ByaW9yaXRpemVkVGV4CiAgICAgbV9iYWNraW5ncy5hZGQoYmFja2luZyk7CiB9CiAKLXZvaWQg
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoc2l6ZV90IGxpbWl0Qnl0
ZXMsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoc2l6ZV90IGxpbWl0Qnl0ZXMsIENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKICAgICBpZiAobWVtb3J5VXNlQnl0ZXMoKSA8PSBs
aW1pdEJ5dGVzKQogICAgICAgICByZXR1cm47CkBAIC0yMTIsMTMgKzIxMywxMyBAQCB2b2lkIEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdEJ5dGVz
LCBUZXh0dXJlQWxsb2NhdAogICAgICAgICBCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFj
a2luZ3MuYmVnaW4oKTsKICAgICAgICAgaWYgKCgqaXQpLT5vd25lcigpICYmICgqaXQpLT5vd25l
cigpLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBkZXN0cm95QmFja2luZygoKml0KSwgYWxsb2NhdG9yKTsKKyAgICAgICAgZGVzdHJveUJhY2tp
bmcoKCppdCksIHJlc291cmNlUHJvdmlkZXIpOwogICAgIH0KIH0KIAotdm9pZCBDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IpCit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KENDUmVz
b3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKLSAgICByZWR1Y2VNZW1vcnkobV9t
ZW1vcnlBdmFpbGFibGVCeXRlcywgYWxsb2NhdG9yKTsKKyAgICByZWR1Y2VNZW1vcnkobV9tZW1v
cnlBdmFpbGFibGVCeXRlcywgcmVzb3VyY2VQcm92aWRlcik7CiAgICAgQVNTRVJUKG1lbW9yeVVz
ZUJ5dGVzKCkgPD0gbWF4TWVtb3J5TGltaXRCeXRlcygpKTsKIAogICAgIC8vIFdlIGN1cnJlbnRs
eSBjb2xsZWN0IGJhY2tpbmdzIGZyb20gZGVsZXRlZCB0ZXh0dXJlcyBmb3IgbGF0ZXIgcmVjeWNs
aW5nLgpAQCAtMjM1LDE3ICsyMzYsMTcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OnJlZHVjZU1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiAgICAgc2l6ZV90
IHRlblBlcmNlbnRPZk1lbW9yeSA9IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLyAxMDsKICAgICBp
ZiAod2FzdGVkTWVtb3J5IDw9IHRlblBlcmNlbnRPZk1lbW9yeSkKICAgICAgICAgcmV0dXJuOwot
ICAgIHJlZHVjZU1lbW9yeShtZW1vcnlVc2VCeXRlcygpIC0gKHdhc3RlZE1lbW9yeSAtIHRlblBl
cmNlbnRPZk1lbW9yeSksIGFsbG9jYXRvcik7CisgICAgcmVkdWNlTWVtb3J5KG1lbW9yeVVzZUJ5
dGVzKCkgLSAod2FzdGVkTWVtb3J5IC0gdGVuUGVyY2VudE9mTWVtb3J5KSwgcmVzb3VyY2VQcm92
aWRlcik7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1l
bW9yeShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6Y2xlYXJBbGxNZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVBy
b3ZpZGVyKQogewogICAgIC8vIFVubGluayBhbmQgZGVzdHJveSBhbGwgYmFja2luZyB0ZXh0dXJl
cy4KICAgICB3aGlsZSAobV9iYWNraW5ncy5zaXplKCkgPiAwKSB7CiAgICAgICAgIEJhY2tpbmdT
ZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigpOwogICAgICAgICBpZiAoKCppdCkt
Pm93bmVyKCkpCiAgICAgICAgICAgICAoKml0KS0+b3duZXIoKS0+dW5saW5rKCk7Ci0gICAgICAg
IGRlc3Ryb3lCYWNraW5nKCgqaXQpLCBhbGxvY2F0b3IpOworICAgICAgICBkZXN0cm95QmFja2lu
ZygoKml0KSwgcmVzb3VyY2VQcm92aWRlcik7CiAgICAgfQogfQogCkBAIC0yNTMsNyArMjU0LDcg
QEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFsbEJhY2tpbmdUZXh0dXJlc1dl
cmVEZWxldGVkKCkKIHsKICAgICAvLyBTYW1lIGFzIGNsZWFyQWxsTWVtb3J5LCBleGNlcHQgYWxs
IG91ciB0ZXh0dXJlcyB3ZXJlIGFscmVhZHkKICAgICAvLyBkZWxldGVkIGV4dGVybmFsbHksIHNv
IHdlIGRvbid0IGRlbGV0ZSB0aGVtLiBQYXNzaW5nIG5vCi0gICAgLy8gYWxsb2NhdG9yIHJlc3Vs
dHMgaW4gbGVha2luZyB0aGUgKG5vdyBpbnZhbGlkKSB0ZXh0dXJlIGlkcy4KKyAgICAvLyByZXNv
dXJjZVByb3ZpZGVyIHJlc3VsdHMgaW4gbGVha2luZyB0aGUgKG5vdyBpbnZhbGlkKSB0ZXh0dXJl
IGlkcy4KICAgICBjbGVhckFsbE1lbW9yeSgwKTsKIH0KIApAQCAtMjkxLDI2ICsyOTIsMjcgQEAg
dm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJldHVybkJhY2tpbmdUZXh0dXJlKEND
UHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXgKICAgICB9CiB9CiAKLUNDUHJpb3JpdGl6ZWRUZXh0dXJl
OjpCYWNraW5nKiBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmcoSW50
U2l6ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikK
K0NDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZUJhY2tpbmcoSW50U2l6ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQsIENDUmVzb3Vy
Y2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKLSAgICBBU1NFUlQoYWxsb2NhdG9yKTsK
KyAgICBBU1NFUlQocmVzb3VyY2VQcm92aWRlcik7CiAKLSAgICBDQ1ByaW9yaXRpemVkVGV4dHVy
ZTo6QmFja2luZyogYmFja2luZyA9IG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyhh
bGxvY2F0b3ItPmNyZWF0ZVRleHR1cmUoc2l6ZSwgZm9ybWF0KSwgc2l6ZSwgZm9ybWF0KTsKKyAg
ICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCA9IHJlc291cmNlUHJv
dmlkZXItPmNyZWF0ZVJlc291cmNlKG1fcG9vbCwgc2l6ZSwgZm9ybWF0LCBDQ1Jlc291cmNlUHJv
dmlkZXI6OlRleHR1cmVVc2FnZUFueSk7CisgICAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tp
bmcqIGJhY2tpbmcgPSBuZXcgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcocmVzb3VyY2VJ
ZCwgc2l6ZSwgZm9ybWF0KTsKICAgICBtX21lbW9yeVVzZUJ5dGVzICs9IGJhY2tpbmctPmJ5dGVz
KCk7CiAgICAgLy8gUHV0IGJhY2tpbmcgdGV4dHVyZSBhdCB0aGUgZnJvbnQgZm9yIGV2aWN0aW9u
LCBzaW5jZSBpdCBpc24ndCBpbiB1c2UgeWV0LgogICAgIG1fYmFja2luZ3MuaW5zZXJ0QmVmb3Jl
KG1fYmFja2luZ3MuYmVnaW4oKSwgYmFja2luZyk7CiAgICAgcmV0dXJuIGJhY2tpbmc7CiB9CiAK
LXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZXN0cm95QmFja2luZyhDQ1ByaW9y
aXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZywgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ryb3lCYWNraW5nKEND
UHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nLCBDQ1Jlc291cmNlUHJvdmlkZXIq
IHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgQVNTRVJUKGJhY2tpbmcpOwogICAgIEFTU0VSVCgh
YmFja2luZy0+b3duZXIoKSB8fCAhYmFja2luZy0+b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0
b2ZmKCkpOwogICAgIEFTU0VSVCghYmFja2luZy0+b3duZXIoKSB8fCAhYmFja2luZy0+b3duZXIo
KS0+aXNTZWxmTWFuYWdlZCgpKTsKICAgICBBU1NFUlQobV9iYWNraW5ncy5maW5kKGJhY2tpbmcp
ICE9IG1fYmFja2luZ3MuZW5kKCkpOwogCi0gICAgaWYgKGFsbG9jYXRvcikKLSAgICAgICAgYWxs
b2NhdG9yLT5kZWxldGVUZXh0dXJlKGJhY2tpbmctPmlkKCksIGJhY2tpbmctPnNpemUoKSwgYmFj
a2luZy0+Zm9ybWF0KCkpOworICAgIGlmIChyZXNvdXJjZVByb3ZpZGVyKQorICAgICAgICByZXNv
dXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShiYWNraW5nLT5pZCgpKTsKICAgICBpZiAoYmFj
a2luZy0+b3duZXIoKSkKICAgICAgICAgYmFja2luZy0+b3duZXIoKS0+dW5saW5rKCk7CiAgICAg
bV9tZW1vcnlVc2VCeXRlcyAtPSBiYWNraW5nLT5ieXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAppbmRleCAwMTljNDVjZjRlMzMzZTU0Y2Y5
ZWE0ZDBiY2Q1OWM2Nzk5MWIzY2U4Li5iMTZlYzEwMzRkMzliNmMzZWJhMzg0ZmQ1ZTg4MWI1OTdm
NmUyMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXIuaApAQCAtNDAsOSArNDAsOSBAQCBjbGFzcyBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjsKIGNsYXNz
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093
blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IGNyZWF0ZShzaXplX3QgbWF4TWVtb3J5
TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gY3JlYXRlKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5
dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUsIGludCBwb29sKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIobWF4TWVtb3J5TGltaXRC
eXRlcywgbWF4VGV4dHVyZVNpemUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXIobWF4TWVtb3J5TGltaXRCeXRlcywgbWF4VGV4dHVyZVNp
emUsIHBvb2wpKTsKICAgICB9CiAgICAgUGFzc093blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4g
Y3JlYXRlVGV4dHVyZShJbnRTaXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKICAgICB7CkBAIC03
MywxMSArNzMsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCByZXF1ZXN0TGF0ZShDQ1ByaW9yaXRp
emVkVGV4dHVyZSopOwogCi0gICAgdm9pZCByZWR1Y2VNZW1vcnkoVGV4dHVyZUFsbG9jYXRvciop
OwotICAgIHZvaWQgY2xlYXJBbGxNZW1vcnkoVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQg
cmVkdWNlTWVtb3J5KENDUmVzb3VyY2VQcm92aWRlciopOworICAgIHZvaWQgY2xlYXJBbGxNZW1v
cnkoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAgICAgdm9pZCBhbGxCYWNraW5nVGV4dHVyZXNXZXJl
RGVsZXRlZCgpOwogCi0gICAgdm9pZCBhY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1By
aW9yaXRpemVkVGV4dHVyZSosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIGFjcXVpcmVC
YWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKik7CiAKICAgICB2b2lkIHJlZ2lzdGVyVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVy
ZSopOwogICAgIHZvaWQgdW5yZWdpc3RlclRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqKTsK
QEAgLTEwNSwxOCArMTA1LDE5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBDQ1ByaW9yaXR5
Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0xvd2VyKHByaW9yaXR5QSwgcHJpb3JpdHlCKTsKICAgICB9
CiAKLSAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0
Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUsIGludCBw
b29sKTsKIAotICAgIHZvaWQgcmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdCwgVGV4dHVyZUFsbG9j
YXRvciopOworICAgIHZvaWQgcmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdCwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKik7CiAKLSAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogY3JlYXRlQmFj
a2luZyhJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVBbGxvY2F0b3IqKTsKLSAgICB2
b2lkIGRlc3Ryb3lCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiwgVGV4dHVy
ZUFsbG9jYXRvciopOworICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBjcmVhdGVC
YWNraW5nKEludFNpemUsIEdDM0RlbnVtIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyKik7Cisg
ICAgdm9pZCBkZXN0cm95QmFja2luZyhDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyosIEND
UmVzb3VyY2VQcm92aWRlciopOwogCiAgICAgc2l6ZV90IG1fbWF4TWVtb3J5TGltaXRCeXRlczsK
ICAgICB1bnNpZ25lZCBtX3ByaW9yaXR5Q3V0b2ZmOwogICAgIHNpemVfdCBtX21lbW9yeVVzZUJ5
dGVzOwogICAgIHNpemVfdCBtX21lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXM7CiAgICAgc2l6ZV90IG1f
bWVtb3J5QXZhaWxhYmxlQnl0ZXM7CisgICAgaW50IG1fcG9vbDsKIAogICAgIHR5cGVkZWYgSGFz
aFNldDxDQ1ByaW9yaXRpemVkVGV4dHVyZSo+IFRleHR1cmVTZXQ7CiAgICAgdHlwZWRlZiBMaXN0
SGFzaFNldDxDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyo+IEJhY2tpbmdTZXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKaW5kZXggNTlhYmZiYmNjMGEzZWJm
ZjBmOGFjYTA4OTM3MmE1MTVkNmFjMTk3NS4uMmQ3NGEyMjc4MDNmZTRhZmFlOTFmYzNjYjE1MmY3
MWYzOTc2M2E4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcApA
QCAtMzEsMTkgKzMxLDE5IEBAIHVzaW5nIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGlu
dCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dy
b3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRl
bnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKQorUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVh
ZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0
b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJl
Y3QsIGludCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYg
YmFja2dyb3VuZEZpbHRlcnMsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVz
b3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3NEcmF3UXVhZChzaGFyZWRRdWFk
U3RhdGUsIHF1YWRSZWN0LCByZW5kZXJQYXNzSWQsIGlzUmVwbGljYSwgZHJhd1RyYW5zZm9ybSwg
ZmlsdGVycywgYmFja2dyb3VuZEZpbHRlcnMsIG1hc2tUZXh0dXJlSWQsIGNvbnRlbnRzQ2hhbmdl
ZFNpbmNlTGFzdEZyYW1lKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3NE
cmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCByZW5kZXJQYXNzSWQsIGlzUmVwbGlj
YSwgZHJhd1RyYW5zZm9ybSwgZmlsdGVycywgYmFja2dyb3VuZEZpbHRlcnMsIG1hc2tSZXNvdXJj
ZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkpOwogfQogCi1DQ1JlbmRlclBhc3NE
cmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9y
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0
LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJP
cGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJh
Y2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBj
b250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKK0NDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1Jl
bmRlclBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGludCByZW5kZXJQ
YXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRl
cnMsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3Qg
SW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpCiAgICAgOiBXZWJDb21wb3Np
dG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpSZW5kZXJQYXNzLCBx
dWFkUmVjdCkKICAgICAsIG1fcmVuZGVyUGFzc0lkKHJlbmRlclBhc3NJZCkKICAgICAsIG1faXNS
ZXBsaWNhKGlzUmVwbGljYSkKICAgICAsIG1fZHJhd1RyYW5zZm9ybShkcmF3VHJhbnNmb3JtKQog
ICAgICwgbV9maWx0ZXJzKGZpbHRlcnMpCiAgICAgLCBtX2JhY2tncm91bmRGaWx0ZXJzKGJhY2tn
cm91bmRGaWx0ZXJzKQotICAgICwgbV9tYXNrVGV4dHVyZUlkKG1hc2tUZXh0dXJlSWQpCisgICAg
LCBtX21hc2tSZXNvdXJjZUlkKG1hc2tSZXNvdXJjZUlkKQogICAgICwgbV9jb250ZW50c0NoYW5n
ZWRTaW5jZUxhc3RGcmFtZShjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKIHsKICAgICBB
U1NFUlQobV9yZW5kZXJQYXNzSWQgPiAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3
UXVhZC5oCmluZGV4IGExMmYyMDRjYTVmNjI4NjIxMzQ3MWRiMDQ1NDcyN2ZkODJhNGMzOWEuLjZm
Mzk5YmU2N2Y4NjUyOTc4NzU2ZDY1YmYxYjc0ODZhMmZiMmU4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdR
dWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzRHJhd1F1YWQuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBDQ1JlbmRl
clBhc3NEcmF3UXVhZF9oCiAjZGVmaW5lIENDUmVuZGVyUGFzc0RyYXdRdWFkX2gKIAorI2luY2x1
ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3Np
dG9yUXVhZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CkBAIC0zOCwxMSArMzksMTEg
QEAgY2xhc3MgQ0NSZW5kZXJQYXNzOwogY2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgOiBwdWJs
aWMgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q0NSZW5kZXJQYXNzRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEND
UmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGludCByZW5kZXJQYXNzSWQsIGJvb2wgaXNS
ZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgV2Vi
S2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBj
b25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSk7CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgaW50IHJlbmRlclBh
c3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdl
YktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIENDUmVzb3VyY2VQ
cm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVu
dHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOwogCiAgICAgaW50IHJlbmRlclBhc3NJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0lkOyB9CiAgICAgYm9vbCBpc1JlcGxpY2EoKSBjb25zdCB7
IHJldHVybiBtX2lzUmVwbGljYTsgfQotICAgIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQoKSBjb25z
dCB7IHJldHVybiBtX21hc2tUZXh0dXJlSWQ7IH0KKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQgbWFza1Jlc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX21hc2tSZXNvdXJjZUlk
OyB9CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lOyB9CiAKICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBhbmQgd2Ugc2hvdWxkIGRyYXcgdGhlIFJl
bmRlclBhc3Mgd2l0aCB0aGUgcXVhZFRyYW5zZm9ybS4KQEAgLTUzLDE0ICs1NCwxNCBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIG1hdGVyaWFsQ2Fz
dChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JRdWFkKik7CiBwcml2YXRlOgotICAgIENDUmVu
ZGVyUGFzc0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0
ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29u
c3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdlYktpdDo6V2ViRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25z
JiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVj
dCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOworICAgIENDUmVuZGVyUGFzc0RyYXdR
dWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IElu
dFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9u
cyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5k
RmlsdGVycywgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBj
b25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSk7CiAKICAgICBpbnQg
bV9yZW5kZXJQYXNzSWQ7CiAgICAgYm9vbCBtX2lzUmVwbGljYTsKICAgICBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsKICAgICBXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnMgbV9maWx0ZXJzOwogICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyBt
X2JhY2tncm91bmRGaWx0ZXJzOwotICAgIHVuc2lnbmVkIG1fbWFza1RleHR1cmVJZDsKKyAgICBD
Q1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9tYXNrUmVzb3VyY2VJZDsKICAgICBJbnRS
ZWN0IG1fY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJTdXJmYWNlLmNwcAppbmRleCBlNzI2MDk2NmEwNzA4YTAyZTE5ZTA4YzhlZWMyYTMwY2I5
MzcxMTczLi41ZDk5YjZhYjFmOGM5ZmU3MzE5N2I4MDE0YTZmOTE5ZjhjNTA4YWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTIwOSwxNCArMjA5LDE0IEBAIHZvaWQgQ0NS
ZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhCiAgICAgICAgICAgICBtYXNrTGF5ZXIgPSAwOwogICAgIH0KIAotICAg
IGludCBtYXNrVGV4dHVyZUlkID0gbWFza0xheWVyID8gbWFza0xheWVyLT5jb250ZW50c1RleHR1
cmVJZCgpIDogMDsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291
cmNlSWQgPSBtYXNrTGF5ZXIgPyBtYXNrTGF5ZXItPmNvbnRlbnRzUmVzb3VyY2VJZCgpIDogMDsK
ICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtID0gZm9yUmVwbGljYSA/
IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gOiBtX2RyYXdUcmFuc2Zvcm07CiAgICAgSW50UmVjdCBj
b250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSA9IGNvbnRlbnRzQ2hhbmdlZCgpID8gbV9jb250
ZW50UmVjdCA6IEludFJlY3QoKTsKIAogICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycyA9IG1fb3duaW5nTGF5ZXItPmZpbHRlcnMoKTsKICAgICBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzID0gbV9vd25pbmdMYXll
ci0+YmFja2dyb3VuZEZpbHRlcnMoKTsKIAotICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZhY2UoQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCks
IHJlbmRlclBhc3NJZCwgZm9yUmVwbGljYSwgZHJhd1RyYW5zZm9ybSwgZmlsdGVycywgYmFja2dy
b3VuZEZpbHRlcnMsIG1hc2tUZXh0dXJlSWQsIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1l
KSk7CisgICAgcXVhZExpc3QuYXBwZW5kU3VyZmFjZShDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3Jl
YXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgcmVuZGVyUGFzc0lkLCBmb3JSZXBs
aWNhLCBkcmF3VHJhbnNmb3JtLCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmlsdGVycywgbWFza1Jlc291
cmNlSWQsIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyZXIuaAppbmRleCBkZWQwZWZkYzM4ZWY5MzFhZmIzMDE3ZTI3MDJmNWM3ZjJkMTA0ZjkwLi42
Y2MxZGViZmViN2QxY2FhNjIwZTE5ZGE3ZGU2OGQ3MjVmZTU5YjQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJl
ci5oCkBAIC0zNiw5ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDU2Nv
cGVkVGV4dHVyZTsKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJlQ29waWVy
OwotY2xhc3MgVGV4dHVyZU1hbmFnZXI7CiBjbGFzcyBUZXh0dXJlVXBsb2FkZXI7CiAKIGVudW0g
VGV4dHVyZVVwbG9hZGVyT3B0aW9uIHsgVGhyb3R0bGVkVXBsb2FkZXIsIFVudGhyb3R0bGVkVXBs
b2FkZXIgfTsKQEAgLTU3LDYgKzU1LDEzIEBAIHB1YmxpYzoKIGNsYXNzIENDUmVuZGVyZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyZXIpOwogcHVibGljOgorICAgIC8vIFRo
aXMgZW51bSBkZWZpbmVzIHRoZSB2YXJpb3VzIHJlc291cmNlIHBvb2xzIGZvciB0aGUgQ0NSZXNv
dXJjZVByb3ZpZGVyCisgICAgLy8gd2hlcmUgdGV4dHVyZXMgZ2V0IGFsbG9jYXRlZC4KKyAgICBl
bnVtIFJlc291cmNlUG9vbCB7CisgICAgICBJbXBsUG9vbCA9IDEsIC8vIFRoaXMgcG9vbCBpcyBm
b3IgdGV4dHVyZXMgdGhhdCBnZXQgYWxsb2NhdGVkIG9uIHRoZSBpbXBsIHRocmVhZCAoZS5nLiBS
ZW5kZXJTdXJmYWNlcykuCisgICAgICBDb250ZW50UG9vbCAvLyBUaGlzIHBvb2wgaXMgZm9yIHRl
eHR1cmVzIHRoYXQgZ2V0IGFsbG9jYXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQgKGUuZy4gdGlsZXMp
LgorICAgIH07CisKICAgICB2aXJ0dWFsIH5DQ1JlbmRlcmVyKCkgeyB9CiAKICAgICB2aXJ0dWFs
IGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0ID0g
MDsKQEAgLTkyLDggKzk3LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBUZXh0dXJlQ29waWVy
KiB0ZXh0dXJlQ29waWVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVGV4dHVyZVVwbG9hZGVy
KiB0ZXh0dXJlVXBsb2FkZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBUZXh0dXJlQWxsb2Nh
dG9yKiBpbXBsVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFRleHR1
cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmKSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVzb3VyY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmODJiZjIyYTU5
NWVkN2Q5ODZiMTQ0YWUxNjY3MmQwNTZmMDQ4OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIu
Y3BwCkBAIC0wLDAgKzEsMjUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJFeHRl
bnNpb25zM0RDaHJvbWl1bS5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXll
clJlbmRlcmVyQ2hyb21pdW0uaCIgLy8gRm9yIHRoZSBHTEMoKSBtYWNybworI2luY2x1ZGUgIkxh
eWVyVGV4dHVyZVN1YkltYWdlLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIK
KyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmg+CisKK3VzaW5nIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEdDM0RlbnVtIHRleHR1cmVUb1N0b3JhZ2VGb3JtYXQo
R0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKK3sKKyAgICBHQzNEZW51bSBzdG9yYWdlRm9ybWF0ID0g
RXh0ZW5zaW9uczNEOjpSR0JBOF9PRVM7CisgICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0KSB7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQToKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUOgorICAgICAgICBzdG9yYWdlRm9ybWF0ID0gRXh0ZW5z
aW9uczNEQ2hyb21pdW06OkJHUkE4X0VYVDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor
ICAgIHJldHVybiBzdG9yYWdlRm9ybWF0OworfQorCitzdGF0aWMgYm9vbCBpc1RleHR1cmVGb3Jt
YXRTdXBwb3J0ZWRGb3JTdG9yYWdlKEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICByZXR1cm4gKGZv
cm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSB8fCBmb3JtYXQgPT0gRXh0ZW5zaW9uczNE
OjpCR1JBX0VYVCk7Cit9CisKK1Bhc3NPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBDQ1Jlc291
cmNlUHJvdmlkZXI6OmNyZWF0ZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBP
d25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKGFkb3B0UHRyKG5ldyBD
Q1Jlc291cmNlUHJvdmlkZXIoY29udGV4dCkpKTsKKyAgICBpZiAoIXJlc291cmNlUHJvdmlkZXIt
PmluaXRpYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHJlc291
cmNlUHJvdmlkZXIucmVsZWFzZSgpOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6On5DQ1Jlc291
cmNlUHJvdmlkZXIoKQoreworfQorCitXZWJHcmFwaGljc0NvbnRleHQzRCogQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpncmFwaGljc0NvbnRleHQzRCgpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1w
bFRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKK30KKworYm9v
bCBDQ1Jlc291cmNlUHJvdmlkZXI6OmluVXNlQnlDb25zdW1lcihSZXNvdXJjZUlkIGlkKQorewor
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVz
b3VyY2VzLmVuZCgpKTsKKyAgICByZXR1cm4gISFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQ7
Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6
OmNyZWF0ZVJlc291cmNlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBm
b3JtYXQsIFRleHR1cmVVc2FnZUhpbnQgaGludCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJ
bXBsVGhyZWFkKCkpOworICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IDA7CisgICAgV2ViR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYg
KCFjb250ZXh0M2QpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9y
IHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgR0xD
KGNvbnRleHQzZCwgdGV4dHVyZUlkID0gY29udGV4dDNkLT5jcmVhdGVUZXh0dXJlKCkpOworICAg
IEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwor
ICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQz
ZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURH
RSkpOworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9U
LCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOworCisgICAgaWYgKG1fdXNlVGV4
dHVyZVVzYWdlSGludCAmJiBoaW50ID09IFRleHR1cmVVc2FnZUZyYW1lYnVmZmVyKQorICAgICAg
ICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9URVhUVVJFX1VTQUdFX0FO
R0xFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTkdM
RSkpOworICAgIGlmIChtX3VzZVRleHR1cmVTdG9yYWdlRXh0ICYmIGlzVGV4dHVyZUZvcm1hdFN1
cHBvcnRlZEZvclN0b3JhZ2UoZm9ybWF0KSkgeworICAgICAgICBHQzNEZW51bSBzdG9yYWdlRm9y
bWF0ID0gdGV4dHVyZVRvU3RvcmFnZUZvcm1hdChmb3JtYXQpOworICAgICAgICBHTEMoY29udGV4
dDNkLCBjb250ZXh0M2QtPnRleFN0b3JhZ2UyREVYVChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMSwgc3RvcmFnZUZvcm1hdCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4SW1hZ2UyRChH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCksIDAsIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUs
IDApKTsKKyAgICBSZXNvdXJjZUlkIGlkID0gbV9uZXh0SWQrKzsKKyAgICBSZXNvdXJjZSByZXNv
dXJjZSA9IHt0ZXh0dXJlSWQsIHBvb2wsIDAsIGZhbHNlLCBmYWxzZSwgc2l6ZSwgZm9ybWF0fTsK
KyAgICBtX3Jlc291cmNlcy5hZGQoaWQsIHJlc291cmNlKTsKKyAgICByZXR1cm4gaWQ7Cit9CisK
K0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0
ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlSWQpCit7CisgICAg
QVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICBSZXNvdXJjZUlkIGlkID0gbV9u
ZXh0SWQrKzsKKyAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHt0ZXh0dXJlSWQsIDAsIDAsIGZhbHNl
LCB0cnVlLCBJbnRTaXplKCksIDB9OworICAgIG1fcmVzb3VyY2VzLmFkZChpZCwgcmVzb3VyY2Up
OworICAgIHJldHVybiBpZDsKK30KKwordm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmRlbGV0ZVJl
c291cmNlKFJlc291cmNlSWQgaWQpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVh
ZCgpKTsKKyAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0LT5j
b250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmlu
ZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+c2Vjb25k
LmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQpOworICAgIGlm
ICghaXQtPnNlY29uZC5leHRlcm5hbCkKKyAgICAgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNk
LT5kZWxldGVUZXh0dXJlKGl0LT5zZWNvbmQuZ2xJZCkpOworICAgIG1fcmVzb3VyY2VzLnJlbW92
ZShpdCk7Cit9CisKK3ZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpkZWxldGVPd25lZFJlc291cmNl
cyhpbnQgcG9vbCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAg
IFZlY3RvcjxSZXNvdXJjZUlkPiB0b0RlbGV0ZTsKKyAgICBmb3IgKFJlc291cmNlTWFwOjppdGVy
YXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpOyAr
K2l0KSB7CisgICAgICAgIGlmIChpdC0+c2Vjb25kLnBvb2wgPT0gcG9vbCAmJiAhaXQtPnNlY29u
ZC5leHRlcm5hbCkKKyAgICAgICAgICAgIHRvRGVsZXRlLmFwcGVuZChpdC0+Zmlyc3QpOworICAg
IH0KKyAgICBmb3IgKFZlY3RvcjxSZXNvdXJjZUlkPjo6aXRlcmF0b3IgaXQgPSB0b0RlbGV0ZS5i
ZWdpbigpOyBpdCAhPSB0b0RlbGV0ZS5lbmQoKTsgKytpdCkKKyAgICAgICAgZGVsZXRlUmVzb3Vy
Y2UoKml0KTsKK30KKwordm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVwbG9hZChSZXNvdXJjZUlk
IGlkLCBjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBB
U1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3RleFN1YkltYWdl
LmdldCgpKTsKKyAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250ZXh0
LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMu
ZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+c2Vj
b25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQgJiYgIWl0
LT5zZWNvbmQuZXh0ZXJuYWwpOworCisgICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaXQtPnNlY29uZC5nbElkKTsKKyAgICBtX3RleFN1Yklt
YWdlLT51cGxvYWQoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGl0LT5z
ZWNvbmQuZm9ybWF0LCBjb250ZXh0M2QpOworfQorCit1bnNpZ25lZCBDQ1Jlc291cmNlUHJvdmlk
ZXI6OmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojpp
c0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJj
ZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+
c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQgJiYg
IWl0LT5zZWNvbmQuZXh0ZXJuYWwpOworICAgIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgPSB0
cnVlOworICAgIHJldHVybiBpdC0+c2Vjb25kLmdsSWQ7Cit9CisKK3ZvaWQgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjp1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQoreworICAgIEFTU0VSVChDQ1By
b3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9y
ZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYm
IGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOworICAg
IGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgPSBmYWxzZTsKK30KKwordm9pZCBDQ1Jlc291cmNl
UHJvdmlkZXI6OmZsdXNoKCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkp
OworICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRl
eHQzRCgpOworICAgIGlmICghY29udGV4dDNkKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBjb250ZXh0M2QtPmZsdXNoKCk7Cit9CisKK3Vuc2lnbmVkIENDUmVzb3VyY2VQ
cm92aWRlcjo6bG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVz
b3VyY2VzLmZpbmQoaWQpOworICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQoKSAmJiAh
aXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSk7CisgICAgKysoaXQtPnNlY29uZC5sb2NrRm9yUmVh
ZENvdW50KTsKKyAgICByZXR1cm4gaXQtPnNlY29uZC5nbElkOworfQorCit2b2lkIENDUmVzb3Vy
Y2VQcm92aWRlcjo6dW5sb2NrRm9yUmVhZChSZXNvdXJjZUlkIGlkKQoreworICAgIEFTU0VSVChD
Q1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgp
ICYmIGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCA+IDApOworICAgIC0tKGl0LT5zZWNvbmQu
bG9ja0ZvclJlYWRDb3VudCk7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6Q0NSZXNvdXJjZVBy
b3ZpZGVyKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRl
eHQpCisgICAgLCBtX25leHRJZCgxKQorICAgICwgbV91c2VUZXh0dXJlU3RvcmFnZUV4dChmYWxz
ZSkKKyAgICAsIG1fdXNlVGV4dHVyZVVzYWdlSGludChmYWxzZSkKKyAgICAsIG1fbWF4VGV4dHVy
ZVNpemUoMCkKK3sKK30KKworYm9vbCBDQ1Jlc291cmNlUHJvdmlkZXI6OmluaXRpYWxpemUoKQor
eworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgV2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFj
b250ZXh0M2QgfHwgIWNvbnRleHQzZC0+bWFrZUNvbnRleHRDdXJyZW50KCkpIHsKKyAgICAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFN0cmluZyBleHRlbnNpb25zU3RyaW5n
ID0gY29udGV4dDNkLT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0M0Q6OkVYVEVOU0lPTlMpOwor
ICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnM7CisgICAgZXh0ZW5zaW9uc1N0cmluZy5zcGxp
dCgnICcsIGV4dGVuc2lvbnMpOworICAgIGJvb2wgdXNlTWFwU3ViID0gZmFsc2U7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
IChleHRlbnNpb25zW2ldID09ICJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIikKKyAgICAgICAgICAg
IG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQgPSB0cnVlOworICAgICAgICBlbHNlIGlmIChleHRlbnNp
b25zW2ldID09ICJHTF9BTkdMRV90ZXh0dXJlX3VzYWdlIikKKyAgICAgICAgICAgIG1fdXNlVGV4
dHVyZVVzYWdlSGludCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbnNbaV0gPT0g
IkdMX0NIUk9NSVVNX21hcF9zdWIiKQorICAgICAgICAgICAgdXNlTWFwU3ViID0gdHJ1ZTsKKyAg
ICB9CisKKyAgICBtX3RleFN1YkltYWdlID0gYWRvcHRQdHIobmV3IExheWVyVGV4dHVyZVN1Yklt
YWdlKHVzZU1hcFN1YikpOworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+Z2V0SW50ZWdl
cnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUsICZtX21heFRleHR1cmVTaXpl
KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3Zp
ZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDQ3NmYwZTg4NmM5ZTMzMTEyMTNlYWFmYzIzMTE5MjFmNGI0NTNm
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
CisjaWZuZGVmIENDUmVzb3VyY2VQcm92aWRlcl9oCisjZGVmaW5lIENDUmVzb3VyY2VQcm92aWRl
cl9oCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkludFNpemUu
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkdy
YXBoaWNzQ29udGV4dDNEOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENDR3Jh
cGhpY3NDb250ZXh0OworY2xhc3MgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkOworY2xhc3Mg
Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZTsKK2NsYXNzIExheWVyVGV4dHVyZVN1YkltYWdl
OworCisvLyBUaHJlYWQtc2FmZXR5IG5vdGVzOiB0aGlzIGNsYXNzIGlzIG5vdCB0aHJlYWQtc2Fm
ZSBhbmQgY2FuIG9ubHkgYmUgY2FsbGVkCisvLyBmcm9tIHRoZSB0aHJlYWQgaXQgd2FzIGNyZWF0
ZWQgb24gKGluIHByYWN0aWNlLCB0aGUgY29tcG9zaXRvciB0aHJlYWQpLgorY2xhc3MgQ0NSZXNv
dXJjZVByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Jlc291cmNlUHJvdmlk
ZXIpOworcHVibGljOgorICAgIHR5cGVkZWYgdW5zaWduZWQgUmVzb3VyY2VJZDsKKyAgICBlbnVt
IFRleHR1cmVVc2FnZUhpbnQgeyBUZXh0dXJlVXNhZ2VBbnksIFRleHR1cmVVc2FnZUZyYW1lYnVm
ZmVyIH07CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IGNyZWF0
ZShDQ0dyYXBoaWNzQ29udGV4dCopOworCisgICAgdmlydHVhbCB+Q0NSZXNvdXJjZVByb3ZpZGVy
KCk7CisKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBncmFwaGljc0NvbnRleHQz
RCgpOworICAgIGludCBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4VGV4dHVy
ZVNpemU7IH0KKyAgICB1bnNpZ25lZCBudW1SZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBtX3Jl
c291cmNlcy5zaXplKCk7IH0KKworICAgIC8vIENoZWNrcyB3aGV0aGVyIGEgcmVzb3VyY2UgaXMg
aW4gdXNlIGJ5IGEgY29uc3VtZXIuCisgICAgYm9vbCBpblVzZUJ5Q29uc3VtZXIoUmVzb3VyY2VJ
ZCk7CisKKworICAgIC8vIFByb2R1Y2VyIGludGVyZmFjZS4KKworICAgIC8vIENyZWF0ZXMgYSBy
ZXNvdXJjZSBvZiB0aGUgZ2l2ZW4gc2l6ZS9mb3JtYXQsIGludG8gdGhlIGdpdmVuIHBvb2wuCisg
ICAgUmVzb3VyY2VJZCBjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwgY29uc3QgSW50U2l6ZSYsIEdD
M0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGludCk7CisKKyAgICAvLyBXcmFwcyBhbiBleHRl
cm5hbCB0ZXh0dXJlIGludG8gYSByZXNvdXJjZS4KKyAgICBSZXNvdXJjZUlkIGNyZWF0ZVJlc291
cmNlRnJvbUV4dGVybmFsVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlSWQpOworICAgIHZvaWQgZGVs
ZXRlUmVzb3VyY2UoUmVzb3VyY2VJZCk7CisKKyAgICAvLyBEZWxldGVzIGFsbCByZXNvdXJjZXMg
b3duZWQgYnkgYSBnaXZlbiBwb29sLgorICAgIHZvaWQgZGVsZXRlT3duZWRSZXNvdXJjZXMoaW50
IHBvb2wpOworCisgICAgLy8gVXBsb2FkIGRhdGEgZnJvbSBpbWFnZSwgY29weWluZyBzb3VyY2VS
ZWN0IChpbiBpbWFnZSkgaW50byBkZXN0UmVjdCAoaW4gdGhlIHJlc291cmNlKS4KKyAgICB2b2lk
IHVwbG9hZChSZXNvdXJjZUlkLCBjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYg
aW1hZ2VSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CisKKyAgICAvLyBGbHVzaCBhbGwgY29udGV4dCBvcGVyYXRpb25zLCBraWNraW5nIHVw
bG9hZHMgYW5kIGVuc3VyaW5nIG9yZGVyaW5nIHdpdGgKKyAgICAvLyByZXNwZWN0IHRvIG90aGVy
IGNvbnRleHRzLgorICAgIHZvaWQgZmx1c2goKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkOworICAgIGZyaWVuZCBjbGFzcyBDQ1Njb3Bl
ZExvY2tSZXNvdXJjZUZvcldyaXRlOworCisgICAgc3RydWN0IFJlc291cmNlIHsKKyAgICAgICAg
dW5zaWduZWQgZ2xJZDsKKyAgICAgICAgaW50IHBvb2w7CisgICAgICAgIGludCBsb2NrRm9yUmVh
ZENvdW50OworICAgICAgICBib29sIGxvY2tlZEZvcldyaXRlOworICAgICAgICBib29sIGV4dGVy
bmFsOworICAgICAgICBJbnRTaXplIHNpemU7CisgICAgICAgIEdDM0RlbnVtIGZvcm1hdDsKKyAg
ICB9OworICAgIHR5cGVkZWYgSGFzaE1hcDxSZXNvdXJjZUlkLCBSZXNvdXJjZT4gUmVzb3VyY2VN
YXA7CisKKyAgICBleHBsaWNpdCBDQ1Jlc291cmNlUHJvdmlkZXIoQ0NHcmFwaGljc0NvbnRleHQq
KTsKKyAgICBib29sIGluaXRpYWxpemUoKTsKKworICAgIC8vIEdldHMgYSBHTCB0ZXh0dXJlIGlk
IHJlcHJlc2VudGluZyB0aGUgcmVzb3VyY2UsIHRoYXQgY2FuIGJlIHJlbmRlcmVkIGludG8uCisg
ICAgdW5zaWduZWQgbG9ja0ZvcldyaXRlKFJlc291cmNlSWQpOworICAgIHZvaWQgdW5sb2NrRm9y
V3JpdGUoUmVzb3VyY2VJZCk7CisKKyAgICAvLyBHZXRzIGEgR0wgdGV4dHVyZSBpZCByZXByZXNl
bnRpbmcgdGhlIHJlc291cmNlLCB0aGF0IGNhbiBiZSByZW5kZXJlZCB3aXRoLgorICAgIHVuc2ln
bmVkIGxvY2tGb3JSZWFkKFJlc291cmNlSWQpOworICAgIHZvaWQgdW5sb2NrRm9yUmVhZChSZXNv
dXJjZUlkKTsKKworICAgIENDR3JhcGhpY3NDb250ZXh0KiBtX2NvbnRleHQ7CisgICAgUmVzb3Vy
Y2VJZCBtX25leHRJZDsKKyAgICBSZXNvdXJjZU1hcCBtX3Jlc291cmNlczsKKworICAgIGJvb2wg
bV91c2VUZXh0dXJlU3RvcmFnZUV4dDsKKyAgICBib29sIG1fdXNlVGV4dHVyZVVzYWdlSGludDsK
KyAgICBPd25QdHI8TGF5ZXJUZXh0dXJlU3ViSW1hZ2U+IG1fdGV4U3ViSW1hZ2U7CisgICAgaW50
IG1fbWF4VGV4dHVyZVNpemU7Cit9OworCitjbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJl
YWQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVh
ZCk7CitwdWJsaWM6CisgICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkKENDUmVzb3VyY2VQ
cm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
IHJlc291cmNlSWQpCisgICAgICAgIDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJvdmlk
ZXIpCisgICAgICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCisgICAgICAgICwgbV90ZXh0
dXJlSWQocmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvclJlYWQocmVzb3VyY2VJZCkpIHsgfQorCisg
ICAgfkNDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCgpCisgICAgeworICAgICAgICBtX3Jlc291
cmNlUHJvdmlkZXItPnVubG9ja0ZvclJlYWQobV9yZXNvdXJjZUlkKTsKKyAgICB9CisKKyAgICB1
bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQorCitwcml2
YXRlOgorICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOworICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CisgICAgdW5zaWduZWQg
bV90ZXh0dXJlSWQ7Cit9OworCitjbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlKTsK
K3B1YmxpYzoKKyAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlKENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJl
c291cmNlSWQpCisgICAgICAgIDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJvdmlkZXIp
CisgICAgICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCisgICAgICAgICwgbV90ZXh0dXJl
SWQocmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvcldyaXRlKHJlc291cmNlSWQpKSB7IH0KKworICAg
IH5DQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlKCkKKyAgICB7CisgICAgICAgIG1fcmVzb3Vy
Y2VQcm92aWRlci0+dW5sb2NrRm9yV3JpdGUobV9yZXNvdXJjZUlkKTsKKyAgICB9CisKKyAgICB1
bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQorCitwcml2
YXRlOgorICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOworICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CisgICAgdW5zaWduZWQg
bV90ZXh0dXJlSWQ7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVy
ZS5jcHAKaW5kZXggYjlmNzVkMTg0YzNhNjgwMWZiYmU4ZmRmYmE0MWU0MzM2OGZhMzM5Mi4uMjFl
Zjk5YTY1NDUyMjkyYTFmMzAwYTZjYzU1NmY2YmUwYjBiYjAxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
b3BlZFRleHR1cmUuY3BwCkBAIC0yNiwxNCArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRleHR1cmUuaCIKIAotI2luY2x1ZGUgIlRleHR1cmVBbGxv
Y2F0b3IuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQ1Njb3BlZFRleHR1cmU6OkNDU2Nv
cGVkVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCi0gICAgOiBtX2FsbG9jYXRv
cihhbGxvY2F0b3IpCitDQ1Njb3BlZFRleHR1cmU6OkNDU2NvcGVkVGV4dHVyZShDQ1Jlc291cmNl
UHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCisgICAgOiBtX3Jlc291cmNlUHJvdmlkZXIocmVz
b3VyY2VQcm92aWRlcikKIHsKLSAgICBBU1NFUlQobV9hbGxvY2F0b3IpOworICAgIEFTU0VSVCht
X3Jlc291cmNlUHJvdmlkZXIpOwogfQogCiBDQ1Njb3BlZFRleHR1cmU6On5DQ1Njb3BlZFRleHR1
cmUoKQpAQCAtNDEsMTMgKzM5LDEzIEBAIENDU2NvcGVkVGV4dHVyZTo6fkNDU2NvcGVkVGV4dHVy
ZSgpCiAgICAgZnJlZSgpOwogfQogCi1ib29sIENDU2NvcGVkVGV4dHVyZTo6YWxsb2NhdGUoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQorYm9vbCBDQ1Njb3BlZFRleHR1cmU6
OmFsbG9jYXRlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmb3JtYXQs
IENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlSGludCBoaW50KQogewogICAgIEFTU0VS
VCghaWQoKSk7CiAgICAgQVNTRVJUKCFzaXplLmlzRW1wdHkoKSk7CiAKICAgICBzZXREaW1lbnNp
b25zKHNpemUsIGZvcm1hdCk7Ci0gICAgc2V0SWQobV9hbGxvY2F0b3ItPmNyZWF0ZVRleHR1cmUo
c2l6ZSwgZm9ybWF0KSk7CisgICAgc2V0SWQobV9yZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNv
dXJjZShwb29sLCBzaXplLCBmb3JtYXQsIGhpbnQpKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICBtX2FsbG9jYXRlVGhyZWFkSWRlbnRpZmllciA9IFdURjo6Y3VycmVudFRocmVhZCgpOwpA
QCAtNjAsNyArNTgsNyBAQCB2b2lkIENDU2NvcGVkVGV4dHVyZTo6ZnJlZSgpCiB7CiAgICAgaWYg
KGlkKCkpIHsKICAgICAgICAgQVNTRVJUKG1fYWxsb2NhdGVUaHJlYWRJZGVudGlmaWVyID09IFdU
Rjo6Y3VycmVudFRocmVhZCgpKTsKLSAgICAgICAgbV9hbGxvY2F0b3ItPmRlbGV0ZVRleHR1cmUo
aWQoKSwgc2l6ZSgpLCBmb3JtYXQoKSk7CisgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVs
ZXRlUmVzb3VyY2UoaWQoKSk7CiAgICAgfQogICAgIHNldElkKDApOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0
dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
b3BlZFRleHR1cmUuaAppbmRleCA5ZjcyNDFmNTE3ZjRhNDBlZGIyYWM4YzQxOGFmOGI3MTFmZTRk
MDA1Li43MzQ0MjBlOTBiZWMwNDQ4YjM1ZDM0NzE2MGQwOTc0MGUxMzQ3ZDBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRl
eHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njb3BlZFRleHR1cmUuaApAQCAtMjYsNyArMjYsNiBAQAogI2lmbmRlZiBDQ1Njb3BlZFRl
eHR1cmVfaAogI2RlZmluZSBDQ1Njb3BlZFRleHR1cmVfaAogCi0jaW5jbHVkZSAiVGV4dHVyZUFs
bG9jYXRvci5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZS5oIgogCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRApAQCAtMzUsMTEgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotCiBjbGFz
cyBDQ1Njb3BlZFRleHR1cmUgOiBwcm90ZWN0ZWQgQ0NUZXh0dXJlIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDQ1Njb3BlZFRleHR1cmUpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPENDU2NvcGVkVGV4dHVyZT4gY3JlYXRlKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikg
eyByZXR1cm4gYWRvcHRQdHIobmV3IENDU2NvcGVkVGV4dHVyZShhbGxvY2F0b3IpKTsgfQorICAg
IHN0YXRpYyBQYXNzT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gY3JlYXRlKENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IENDU2NvcGVkVGV4
dHVyZShyZXNvdXJjZVByb3ZpZGVyKSk7IH0KICAgICB2aXJ0dWFsIH5DQ1Njb3BlZFRleHR1cmUo
KTsKIAogICAgIHVzaW5nIENDVGV4dHVyZTo6aWQ7CkBAIC00NywxNSArNDUsMTUgQEAgcHVibGlj
OgogICAgIHVzaW5nIENDVGV4dHVyZTo6Zm9ybWF0OwogICAgIHVzaW5nIENDVGV4dHVyZTo6Ynl0
ZXM7CiAKLSAgICBib29sIGFsbG9jYXRlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQp
OworICAgIGJvb2wgYWxsb2NhdGUoaW50IHBvb2wsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBm
b3JtYXQsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlSGludCk7CiAgICAgdm9pZCBm
cmVlKCk7CiAgICAgdm9pZCBsZWFrKCk7CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBDQ1Nj
b3BlZFRleHR1cmUoVGV4dHVyZUFsbG9jYXRvciopOworICAgIGV4cGxpY2l0IENDU2NvcGVkVGV4
dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKIAogcHJpdmF0ZToKLSAgICBUZXh0dXJlQWxsb2Nh
dG9yKiBtX2FsbG9jYXRvcjsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQcm92
aWRlcjsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBUaHJlYWRJZGVudGlmaWVyIG1fYWxs
b2NhdGVUaHJlYWRJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllcklt
cGwuY3BwCmluZGV4IGYzOGZiZGEwMWY2NmUzODA2MWQxMDZmYmMwYmMxYzA0MzYyODAzMTkuLjY1
MGU3NTFmOGM4OTRlZmY1NjFjNGVmN2NjMTdkYjAxY2U5NGNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTQ1LDkgKzQ1LDkgQEAgQ0NTY3JvbGxiYXJM
YXllckltcGw6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsKGludCBpZCkKICAgICA6IENDTGF5ZXJJbXBs
KGlkKQogICAgICwgbV9zY3JvbGxMYXllcigwKQogICAgICwgbV9zY3JvbGxiYXIodGhpcykKLSAg
ICAsIG1fYmFja1RyYWNrVGV4dHVyZUlkKDApCi0gICAgLCBtX2ZvcmVUcmFja1RleHR1cmVJZCgw
KQotICAgICwgbV90aHVtYlRleHR1cmVJZCgwKQorICAgICwgbV9iYWNrVHJhY2tSZXNvdXJjZUlk
KDApCisgICAgLCBtX2ZvcmVUcmFja1Jlc291cmNlSWQoMCkKKyAgICAsIG1fdGh1bWJSZXNvdXJj
ZUlkKDApCiB7CiB9CiAKQEAgLTc2LDIzICs3NiwyMyBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YQogICAgIEludFJlY3QgdGh1bWJSZWN0LCBiYWNrVHJhY2tSZWN0LCBmb3JlVHJhY2tSZWN0Owog
ICAgIHRoZW1lLT5zcGxpdFRyYWNrKCZtX3Njcm9sbGJhciwgdGhlbWUtPnRyYWNrUmVjdCgmbV9z
Y3JvbGxiYXIpLCBiYWNrVHJhY2tSZWN0LCB0aHVtYlJlY3QsIGZvcmVUcmFja1JlY3QpOwogCi0g
ICAgaWYgKG1fdGh1bWJUZXh0dXJlSWQgJiYgdGhlbWUtPmhhc1RodW1iKCZtX3Njcm9sbGJhcikg
JiYgIXRodW1iUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdR
dWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRo
dW1iUmVjdCwgbV90aHVtYlRleHR1cmVJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwgZmxp
cHBlZCk7CisgICAgaWYgKG1fdGh1bWJSZXNvdXJjZUlkICYmIHRoZW1lLT5oYXNUaHVtYigmbV9z
Y3JvbGxiYXIpICYmICF0aHVtYlJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIE93blB0cjxDQ1Rl
eHR1cmVEcmF3UXVhZD4gcXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCB0aHVtYlJlY3QsIG1fdGh1bWJSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwg
dXZSZWN0LCBmbGlwcGVkKTsKICAgICAgICAgcXVhZC0+c2V0TmVlZHNCbGVuZGluZygpOwogICAg
ICAgICBxdWFkTGlzdC5hcHBlbmQocXVhZC5yZWxlYXNlKCkpOwogICAgIH0KIAotICAgIGlmICgh
bV9iYWNrVHJhY2tUZXh0dXJlSWQpCisgICAgaWYgKCFtX2JhY2tUcmFja1Jlc291cmNlSWQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIG9ubHkgcGFpbnQgdGhlIHRyYWNrIGluIHR3byBw
YXJ0cyBpZiB3ZSB3ZXJlIGdpdmVuIGEgdGV4dHVyZSBmb3IgdGhlIGZvcndhcmQgdHJhY2sgcGFy
dC4KLSAgICBpZiAobV9mb3JlVHJhY2tUZXh0dXJlSWQgJiYgIWZvcmVUcmFja1JlY3QuaXNFbXB0
eSgpKQotICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShz
aGFyZWRRdWFkU3RhdGUsIGZvcmVUcmFja1JlY3QsIG1fZm9yZVRyYWNrVGV4dHVyZUlkLCBwcmVt
dWx0aXBsZWRBbHBoYSwgdG9VVlJlY3QoZm9yZVRyYWNrUmVjdCwgYm91bmRzUmVjdCksIGZsaXBw
ZWQpKTsKKyAgICBpZiAobV9mb3JlVHJhY2tSZXNvdXJjZUlkICYmICFmb3JlVHJhY2tSZWN0Lmlz
RW1wdHkoKSkKKyAgICAgICAgcXVhZExpc3QuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCBmb3JlVHJhY2tSZWN0LCBtX2ZvcmVUcmFja1Jlc291cmNlSWQs
IHByZW11bHRpcGxlZEFscGhhLCB0b1VWUmVjdChmb3JlVHJhY2tSZWN0LCBib3VuZHNSZWN0KSwg
ZmxpcHBlZCkpOwogCiAgICAgLy8gT3JkZXIgbWF0dGVycyBoZXJlOiBzaW5jZSB0aGUgYmFjayB0
cmFjayB0ZXh0dXJlIGlzIGJlaW5nIGRyYXduIHRvIHRoZSBlbnRpcmUgY29udGVudHMgcmVjdCwg
d2UgbXVzdCBhcHBlbmQgaXQgYWZ0ZXIgdGhlIHRodW1iIGFuZAogICAgIC8vIGZvcmUgdHJhY2sg
cXVhZHMuIFRoZSBiYWNrIHRyYWNrIHRleHR1cmUgY29udGFpbnMgKGFuZCBkaXNwbGF5cykgdGhl
IGJ1dHRvbnMuCiAgICAgaWYgKCFib3VuZHNSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcXVhZExp
c3QuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBib3Vu
ZHNSZWN0LCBtX2JhY2tUcmFja1RleHR1cmVJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwg
ZmxpcHBlZCkpOworICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNy
ZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGJvdW5kc1JlY3QsIG1fYmFja1RyYWNrUmVzb3VyY2VJZCwg
cHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOwogfQogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFy
TGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCmluZGV4IGVjZTJiOTU3MTQxNGJmNDI1NmZkYjRlZTRm
ZDVlYTFjN2MwNDZmMzEuLjMyYTgzNWQ5MDJhYzVjMzgxY2MwMjNlNDJkZjI4MDdmZTg0MDcwNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaApAQCAtNTMsOSArNTMsOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5hYmxl
ZCA9IGVuYWJsZWQ7IH0KIAotICAgIHZvaWQgc2V0QmFja1RyYWNrVGV4dHVyZUlkKHVuc2lnbmVk
IGlkKSB7IG1fYmFja1RyYWNrVGV4dHVyZUlkID0gaWQ7IH0KLSAgICB2b2lkIHNldEZvcmVUcmFj
a1RleHR1cmVJZCh1bnNpZ25lZCBpZCkgeyBtX2ZvcmVUcmFja1RleHR1cmVJZCA9IGlkOyB9Ci0g
ICAgdm9pZCBzZXRUaHVtYlRleHR1cmVJZCh1bnNpZ25lZCBpZCkgeyBtX3RodW1iVGV4dHVyZUlk
ID0gaWQ7IH0KKyAgICB2b2lkIHNldEJhY2tUcmFja1Jlc291cmNlSWQoQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIGlkKSB7IG1fYmFja1RyYWNrUmVzb3VyY2VJZCA9IGlkOyB9CisgICAg
dm9pZCBzZXRGb3JlVHJhY2tSZXNvdXJjZUlkKENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJ
ZCBpZCkgeyBtX2ZvcmVUcmFja1Jlc291cmNlSWQgPSBpZDsgfQorICAgIHZvaWQgc2V0VGh1bWJS
ZXNvdXJjZUlkKENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZCkgeyBtX3RodW1iUmVz
b3VyY2VJZCA9IGlkOyB9CiAKICAgICBDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbExheWVyOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllcihDQ0xheWVy
SW1wbCogc2Nyb2xsTGF5ZXIpIHsgbV9zY3JvbGxMYXllciA9IHNjcm9sbExheWVyOyB9CkBAIC0x
MjQsOSArMTI0LDkgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIENDU2Nyb2xsYmFyIG1fc2Nyb2xs
YmFyOwogCi0gICAgdW5zaWduZWQgbV9iYWNrVHJhY2tUZXh0dXJlSWQ7Ci0gICAgdW5zaWduZWQg
bV9mb3JlVHJhY2tUZXh0dXJlSWQ7Ci0gICAgdW5zaWduZWQgbV90aHVtYlRleHR1cmVJZDsKKyAg
ICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9iYWNrVHJhY2tSZXNvdXJjZUlkOwor
ICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX2ZvcmVUcmFja1Jlc291cmNlSWQ7
CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fdGh1bWJSZXNvdXJjZUlkOwog
CiAgICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogICAg
IFZlY3RvcjxJbnRSZWN0PiBtX3RpY2ttYXJrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKaW5kZXggNjc4ZWZkZmYwYTM1OGEyZDI5ZmIyYTg3YTc4MmQ1N2JmN2UzNjdj
OC4uMDAyYzdhN2JmYWVhNTA1ZDRkNDRlNzVjNmUzN2FlZjcwMWQ2ZGM0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIEND
U2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgYm9vbCBpbml0aWFsaXpl
ZDsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwotICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXll
clRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKICAgICAgICAgaW5pdGlhbGl6ZWQg
PSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LnJl
bGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgICAgIGlmIChpbml0aWFsaXplZCkg
ewogICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRocmVhZCA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKQEAgLTIx
Myw3ICsyMTMsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KENDVGV4dHVy
ZVVwZGF0ZXImIHVwZGF0ZXIpCiAgICAgICAgIC8vIGhlcmUgYXMgdGhlIHRocm90dGxlZCB1cGxv
YWRlciBpc24ndCB1c2VkIGluIHNpbmdsZSB0aHJlYWQgbW9kZS4KICAgICAgICAgLy8gRm9yIGNv
cnJlY3RuZXNzLCBsb29wIHVudGlsIG5vIG1vcmUgdXBkYXRlcyBhcmUgcGVuZGluZy4KICAgICAg
ICAgd2hpbGUgKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSkKLSAgICAgICAgICAgIHVwZGF0ZXIu
dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVy
UmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJl
bmRlcmVyKCktPnRleHR1cmVVcGxvYWRlcigpLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSk7
CisgICAgICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJj
ZVByb3ZpZGVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVy
ZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVV
cGxvYWRlcigpLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSk7CiAKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5n
ZXQoKSk7CiAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0
b3AoKQogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKIAogICAgICAgICBp
ZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VM
YXN0Q29tbWl0KCkpCi0gICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRz
VGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCkpOworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50
c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlk
ZXIoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsKICAgICB9CiAgICAg
bV9sYXllclRyZWVIb3N0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKaW5kZXggMGQ1ZDlmNzY4M2U1Njll
YzZkYjQ3ODJkNjg3MTlhYWU4YTNkOTcyYS4uZDNlNGI4ZjdlODM4NzViYTU2NDMzZjI3YTdlYzEz
ZjcwNjhlOWI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUg
ImNjL0NDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwxMSArNDEsMTEgQEAgcHVibGljOgogICAgICAgICAs
IG1fc2l6ZShzaXplKQogICAgICAgICAsIG1fZm9ybWF0KGZvcm1hdCkgeyB9CiAKLSAgICB1bnNp
Z25lZCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6
OlJlc291cmNlSWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgSW50U2l6
ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIEdDM0RlbnVtIGZvcm1hdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAKLSAgICB2b2lkIHNldElkKHVuc2lnbmVkIGlk
KSB7IG1faWQgPSBpZDsgfQorICAgIHZvaWQgc2V0SWQoQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIGlkKSB7IG1faWQgPSBpZDsgfQogICAgIHZvaWQgc2V0RGltZW5zaW9ucyhjb25zdCBJ
bnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KTsKIAogICAgIHNpemVfdCBieXRlcygpIGNvbnN0OwpA
QCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBtZW1vcnlTaXplQnl0
ZXMoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CiAKIHByaXZhdGU6Ci0gICAgdW5z
aWduZWQgbV9pZDsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9pZDsKICAg
ICBJbnRTaXplIG1fc2l6ZTsKICAgICBHQzNEZW51bSBtX2Zvcm1hdDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVM
YXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcAppbmRleCA2ZGYyZmI2YmQ2NGM2ZDM2OWUwODljNzEx
MTYxY2Y4YjFhYWU3OTBkLi44MTczOTE5YTFkMTE0NDg4YWZhZWI1ZmQxYjI1MjFhYmI2MTBkZTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKIAogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIu
aCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlRHJh
d1F1YWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBDQ1RleHR1cmVMYXllckltcGw6OkNDVGV4dHVyZUxheWVySW1wbChpbnQg
aWQpCiAgICAgOiBDQ0xheWVySW1wbChpZCkKICAgICAsIG1fdGV4dHVyZUlkKDApCisgICAgLCBt
X2V4dGVybmFsVGV4dHVyZVJlc291cmNlKDApCiAgICAgLCBtX3ByZW11bHRpcGxpZWRBbHBoYSh0
cnVlKQogICAgICwgbV9mbGlwcGVkKHRydWUpCiAgICAgLCBtX3V2UmVjdCgwLCAwLCAxLCAxKQpA
QCAtNDgsMTAgKzUwLDI4IEBAIENDVGV4dHVyZUxheWVySW1wbDo6fkNDVGV4dHVyZUxheWVySW1w
bCgpCiB7CiB9CiAKK3ZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNl
UHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCit7CisgICAgQVNTRVJUKCFtX2V4dGVybmFsVGV4
dHVyZVJlc291cmNlKTsKKyAgICBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlID0gcmVzb3VyY2VQ
cm92aWRlci0+Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlkKTsK
K30KKwogdm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wm
KQogeworICAgIEFTU0VSVChtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKTsKICAgICBJbnRSZWN0
IHF1YWRSZWN0KEludFBvaW50KCksIGNvbnRlbnRCb3VuZHMoKSk7Ci0gICAgcXVhZExpc3QuYXBw
ZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwg
bV90ZXh0dXJlSWQsIG1fcHJlbXVsdGlwbGllZEFscGhhLCBtX3V2UmVjdCwgbV9mbGlwcGVkKSk7
CisgICAgcXVhZExpc3QuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBxdWFkUmVjdCwgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSwgbV9wcmVtdWx0aXBs
aWVkQWxwaGEsIG1fdXZSZWN0LCBtX2ZsaXBwZWQpKTsKK30KKwordm9pZCBDQ1RleHR1cmVMYXll
ckltcGw6OmRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQorewor
ICAgIEFTU0VSVChtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKTsKKyAgICAvLyBGSVhNRTogdGhl
IGZvbGxvd2luZyBhc3NlcnQgd2lsbCBub3QgYmUgdHJ1ZSB3aGVuIHNlbmRpbmcgcmVzb3VyY2Vz
IHRvIGEKKyAgICAvLyBwYXJlbnQgY29tcG9zaXRvci4gQSBzeW5jaHJvbml6YXRpb24gc2NoZW1l
IChkb3VibGUtYnVmZmVyaW5nIG9yCisgICAgLy8gcGlwZWxpbmlnIG9mIHVwZGF0ZXMpIGZvciB0
aGUgY2xpZW50IHdpbGwgbmVlZCB0byBleGlzdCB0byBzb2x2ZSB0aGlzLgorICAgIEFTU0VSVCgh
cmVzb3VyY2VQcm92aWRlci0+aW5Vc2VCeUNvbnN1bWVyKG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3Vy
Y2UpKTsKKyAgICByZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShtX2V4dGVybmFsVGV4
dHVyZVJlc291cmNlKTsKKyAgICBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlID0gMDsKIH0KIAog
dm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYg
dHMsIGludCBpbmRlbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCmlu
ZGV4IDRhYmRiNTFmZjkyOTkzOTMxODA5OWNmZGM4YTBkZDUxZmZlNmZjYmIuLmU3NDhiMDEzMDhh
OGVkYjk2MmEzOGY5NTRkYTBkMWJkZjk2NzkzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxh
eWVySW1wbC5oCkBAIC0zOCw3ICszOCw5IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+
Q0NUZXh0dXJlTGF5ZXJJbXBsKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNv
dXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKEND
UXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1Rp
bGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlk
ZXIqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJS
SURFOwogCkBAIC01Niw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiBsYXllclR5cGVBc1N0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJUZXh0dXJlTGF5
ZXIiOyB9CiAKICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICBDQ1Jlc291cmNlUHJvdmlk
ZXI6OlJlc291cmNlSWQgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZTsKICAgICBib29sIG1fcHJl
bXVsdGlwbGllZEFscGhhOwogICAgIGJvb2wgbV9mbGlwcGVkOwogICAgIEZsb2F0UmVjdCBtX3V2
UmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggYmMxZWQ3NWFmOWFm
NTBkOTY0Yjc0NzMxNDMzN2ZlOWM0ZWMxZmU0Yi4uOTY3YWQ1ZTNmZDViNzQxZjZkMzMwY2M1OWVk
ZmU4MDkzOGMyMzM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTg1
LDcgKzg1LDcgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZnVsbEVudHJpZXMuc2l6ZSgpIHx8IG1fcGFydGlhbEVudHJpZXMuc2l6
ZSgpIHx8IG1fY29weUVudHJpZXMuc2l6ZSgpOwogfQogCi12b2lkIENDVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciogdXBsb2FkZXIs
IHNpemVfdCBjb3VudCkKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKENDUmVzb3VyY2VQ
cm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgVGV4dHVyZUNvcGllciogY29waWVyLCBUZXh0dXJl
VXBsb2FkZXIqIHVwbG9hZGVyLCBzaXplX3QgY291bnQpCiB7CiAgICAgc2l6ZV90IGluZGV4Owog
CkBAIC05OSwxNSArOTksMTUgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoQ0NHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG8KICAgICAgICAgc2l6
ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2Z1bGxFbnRyaWVzLnNp
emUoKSk7CiAgICAgICAgIGZvciAoaW5kZXggPSBtX2VudHJ5SW5kZXg7IGluZGV4IDwgbWF4SW5k
ZXg7ICsraW5kZXgpIHsKICAgICAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZnVsbEVu
dHJpZXNbaW5kZXhdOwotICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoY29udGV4
dCwgZW50cnkudGV4dHVyZSwgYWxsb2NhdG9yLCBlbnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0
UmVjdCk7CisgICAgICAgICAgICB1cGxvYWRlci0+dXBsb2FkVGV4dHVyZShlbnRyeS50ZXh0dXJl
LCByZXNvdXJjZVByb3ZpZGVyLCBlbnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CiAg
ICAgICAgICAgICBmdWxsVXBsb2FkQ291bnQrKzsKICAgICAgICAgICAgIGlmICghKGZ1bGxVcGxv
YWRDb3VudCAlIGtVcGxvYWRGbHVzaFBlcmlvZCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+
Zmx1c2goKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5mbHVzaCgpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZXJlIGFyZSBubyBkYW5nbGluZyB1cGxv
YWRzIHdpdGhvdXQgYSBmbHVzaC4KICAgICAgICAgaWYgKGZ1bGxVcGxvYWRDb3VudCAlIGtVcGxv
YWRGbHVzaFBlcmlvZCkKLSAgICAgICAgICAgIGNvbnRleHQtPmZsdXNoKCk7CisgICAgICAgICAg
ICByZXNvdXJjZVByb3ZpZGVyLT5mbHVzaCgpOwogCiAgICAgICAgIGJvb2wgbW9yZVVwbG9hZHMg
PSBtYXhJbmRleCA8IG1fZnVsbEVudHJpZXMuc2l6ZSgpOwogCkBAIC0xMjUsMzQgKzEyNSwzMCBA
QCB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsbwogCiAgICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRl
eCA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgICAgICBVcGRh
dGVFbnRyeSYgZW50cnkgPSBtX3BhcnRpYWxFbnRyaWVzW2luZGV4XTsKLSAgICAgICAgICAgIHVw
bG9hZGVyLT51cGxvYWRUZXh0dXJlKGNvbnRleHQsIGVudHJ5LnRleHR1cmUsIGFsbG9jYXRvciwg
ZW50cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJlY3QpOworICAgICAgICAgICAgdXBsb2FkZXIt
PnVwbG9hZFRleHR1cmUoZW50cnkudGV4dHVyZSwgcmVzb3VyY2VQcm92aWRlciwgZW50cnkuc291
cmNlUmVjdCwgZW50cnkuZGVzdFJlY3QpOwogICAgICAgICAgICAgaWYgKCEoKGluZGV4KzEpICUg
a1VwbG9hZEZsdXNoUGVyaW9kKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5mbHVzaCgpOwor
ICAgICAgICAgICAgICAgIHJlc291cmNlUHJvdmlkZXItPmZsdXNoKCk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGRhbmdsaW5nIHBhcnRpYWwgdXBsb2Fk
cyB3aXRob3V0IGEgZmx1c2guCiAgICAgICAgIC8vIE5vdGU6IFdlIGRvbid0IG5lZWQgdG8gdXNl
IChpbmRleCsxKSBpbiB0aGlzIGNhc2UgYmVjYXVzZSBpbmRleCB3YXMKICAgICAgICAgLy8gaW5j
cmVtZW50ZWQgYXQgdGhlIGVuZCBvZiB0aGUgZm9yIGxvb3AuCiAgICAgICAgIGlmIChpbmRleCAl
IGtVcGxvYWRGbHVzaFBlcmlvZCkKLSAgICAgICAgICAgIGNvbnRleHQtPmZsdXNoKCk7CisgICAg
ICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5mbHVzaCgpOwogCiAgICAgICAgIHVwbG9hZGVyLT5l
bmRVcGxvYWRzKCk7CiAgICAgfQogCiAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9jb3B5
RW50cmllcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgQ29weUVudHJ5JiBjb3B5RW50cnkg
PSBtX2NvcHlFbnRyaWVzW2luZGV4XTsKLSAgICAgICAgY29waWVyLT5jb3B5VGV4dHVyZShjb250
ZXh0LCBjb3B5RW50cnkuc291cmNlVGV4dHVyZSwgY29weUVudHJ5LmRlc3RUZXh0dXJlLCBjb3B5
RW50cnkuc2l6ZSk7CisgICAgICAgIGNvcGllci0+Y29weVRleHR1cmUoY29weUVudHJ5LnNvdXJj
ZVRleHR1cmUsIGNvcHlFbnRyeS5kZXN0VGV4dHVyZSwgY29weUVudHJ5LnNpemUpOwogICAgIH0K
IAogICAgIC8vIElmIHdlJ3ZlIHBlcmZvcm1lZCBhbnkgdGV4dHVyZSBjb3BpZXMsIHdlIG5lZWQg
dG8gaW5zZXJ0IGEgZmx1c2ggaGVyZSBpbnRvIHRoZSBjb21wb3NpdG9yIGNvbnRleHQKICAgICAv
LyBiZWZvcmUgbGV0dGluZyB0aGUgbWFpbiB0aHJlYWQgcHJvY2VlZCBhcyBpdCBtYXkgbWFrZSBk
cmF3IGNhbGxzIHRvIHRoZSBzb3VyY2UgdGV4dHVyZSBvZiBvbmUgb2YKICAgICAvLyBvdXIgY29w
eSBvcGVyYXRpb25zLgotICAgIGlmIChtX2NvcHlFbnRyaWVzLnNpemUoKSkgewotICAgICAgICBX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0
M0QoKTsKLSAgICAgICAgaWYgKGNvbnRleHQzZCkKLSAgICAgICAgICAgIGNvbnRleHQzZC0+Zmx1
c2goKTsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJl
IGNvbXBvc2l0aW5nLgotICAgIH0KKyAgICBpZiAobV9jb3B5RW50cmllcy5zaXplKCkpCisgICAg
ICAgIGNvcGllci0+Zmx1c2goKTsKIAogICAgIC8vIElmIG5vIGVudHJpZXMgbGVmdCB0byBwcm9j
ZXNzLCBhdXRvLWNsZWFyLgogICAgIGNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmgKaW5kZXggOGE0Mzc5NDJiNGIwNDIyZTA1MDljMTQ4NjUxZGIzMGIxYmFjOTFhZS4uOTcyYTFj
MGVjN2U0ODEyMTM4MWQ0ZTRmZTZjOTkwNzBhOTRiODI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZVVwZGF0ZXIuaApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFRleHR1cmVBbGxvY2F0b3I7CitjbGFzcyBDQ1Jlc291cmNlUHJvdmlkZXI7CiBjbGFzcyBU
ZXh0dXJlQ29waWVyOwogY2xhc3MgVGV4dHVyZVVwbG9hZGVyOwogCkBAIC00OCw3ICs0OCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CiAKICAgICAvLyBVcGRh
dGUgc29tZSB0ZXh0dXJlcy4KLSAgICB2b2lkIHVwZGF0ZShDQ0dyYXBoaWNzQ29udGV4dCosIFRl
eHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJlQ29waWVyKiwgVGV4dHVyZVVwbG9hZGVyKiwgc2l6ZV90
IGNvdW50KTsKKyAgICB2b2lkIHVwZGF0ZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBUZXh0dXJlQ29w
aWVyKiwgVGV4dHVyZVVwbG9hZGVyKiwgc2l6ZV90IGNvdW50KTsKIAogICAgIHZvaWQgY2xlYXIo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA5OTczYTk3NGIxNTY3YmI2Njgz
MTI2MDM2ZWNkNDA0MzFmMDExZmNjLi40NDUwN2M2ZjNjNjdmNzRkZDFjNDhmNDg5MTRlZmI3ZjAw
OWViODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtNjAwLDcgKzYwMCw3IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygp
CiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rp
b25VcGRhdGVNb3JlUmVzb3VyY2VzIik7CiAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkKTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxh
eWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXll
clJlbmRlcmVyKCktPnRleHR1cmVVcGxvYWRlcigpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKTsK
KyAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJU
cmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5
ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVy
UmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUpOwog
fQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCkBAIC04NDks
NyArODQ5LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW8KICAgICBUUkFDRV9FVkVOVDAoImNj
IiwgIkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQiKTsKICAg
ICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQoKSkKLSAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7CiAgICAgbV9pbnB1dEhhbmRsZXJPbkltcGxU
aHJlYWQuY2xlYXIoKTsKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLmNsZWFyKCk7CiAgICAgbV9z
Y2hlZHVsZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCogY29tcGxldGlvbiwgQwogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94
eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkIik7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVh
ZCgpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxU
aHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwor
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpOwogICAgICpyZWNyZWF0ZVN1
Y2NlZWRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGFk
b3B0UHRyKGNvbnRleHRQdHIpLCB0ZXh0dXJlVXBsb2FkZXIpOwogICAgIGlmICgqcmVjcmVhdGVT
dWNjZWVkZWQpIHsKICAgICAgICAgKmNhcGFiaWxpdGllcyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHAKaW5kZXggZGE5YTEwYTk5ZDhjN2JmMjJkODdjODQ3Yjk1N2YyMzUwZjVkM2U0ZS4uYzll
OWIyMjY0Yjk4ZDc4YTNmMGY0ODU1NWJmNzdmODA4MTAzNmJkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5jcHAKQEAgLTU5LDEzICs1OSwxMyBAQCBjbGFzcyBEcmF3YWJsZVRpbGUg
OiBwdWJsaWMgQ0NMYXllclRpbGluZ0RhdGE6OlRpbGUgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPERyYXdhYmxlVGlsZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IERy
YXdhYmxlVGlsZSgpKTsgfQogCi0gICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25z
dCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQotICAgIHZvaWQgc2V0VGV4dHVyZUlkKFBsYXRmb3Jt
M0RPYmplY3QgdGV4dHVyZUlkKSB7IG1fdGV4dHVyZUlkID0gdGV4dHVyZUlkOyB9CisgICAgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBt
X3Jlc291cmNlSWQ7IH0KKyAgICB2b2lkIHNldFJlc291cmNlSWQoQ0NSZXNvdXJjZVByb3ZpZGVy
OjpSZXNvdXJjZUlkIHJlc291cmNlSWQpIHsgbV9yZXNvdXJjZUlkID0gcmVzb3VyY2VJZDsgfQog
CiBwcml2YXRlOgotICAgIERyYXdhYmxlVGlsZSgpIDogbV90ZXh0dXJlSWQoMCkgeyB9CisgICAg
RHJhd2FibGVUaWxlKCkgOiBtX3Jlc291cmNlSWQoMCkgeyB9CiAKLSAgICBQbGF0Zm9ybTNET2Jq
ZWN0IG1fdGV4dHVyZUlkOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jl
c291cmNlSWQ7CiB9OwogCiBDQ1RpbGVkTGF5ZXJJbXBsOjpDQ1RpbGVkTGF5ZXJJbXBsKGludCBp
ZCkKQEAgLTc5LDcgKzc5LDcgQEAgQ0NUaWxlZExheWVySW1wbDo6fkNDVGlsZWRMYXllckltcGwo
KQogewogfQogCi11bnNpZ25lZCBDQ1RpbGVkTGF5ZXJJbXBsOjpjb250ZW50c1RleHR1cmVJZCgp
IGNvbnN0CitDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgQ0NUaWxlZExheWVySW1wbDo6
Y29udGVudHNSZXNvdXJjZUlkKCkgY29uc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9u
bHkgdmFsaWQgZm9yIHNpbmdsZSB0ZXh0dXJlIGxheWVycywgZS5nLiBtYXNrcy4KICAgICBBU1NF
UlQobV90aWxlcik7CkBAIC04NywxMCArODcsMTAgQEAgdW5zaWduZWQgQ0NUaWxlZExheWVySW1w
bDo6Y29udGVudHNUZXh0dXJlSWQoKSBjb25zdAogICAgIEFTU0VSVChtX3RpbGVyLT5udW1UaWxl
c1koKSA9PSAxKTsKIAogICAgIERyYXdhYmxlVGlsZSogdGlsZSA9IHRpbGVBdCgwLCAwKTsKLSAg
ICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCA9IHRpbGUgPyB0aWxlLT50ZXh0dXJlSWQoKSA6
IDA7Ci0gICAgQVNTRVJUKHRleHR1cmVJZCk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIHJlc291cmNlSWQgPSB0aWxlID8gdGlsZS0+cmVzb3VyY2VJZCgpIDogMDsKKyAgICBB
U1NFUlQocmVzb3VyY2VJZCk7CiAKLSAgICByZXR1cm4gdGV4dHVyZUlkOworICAgIHJldHVybiBy
ZXNvdXJjZUlkOwogfQogCiB2b2lkIENDVGlsZWRMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRp
ZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CkBAIC0xMDcsNyArMTA3LDcgQEAg
Ym9vbCBDQ1RpbGVkTGF5ZXJJbXBsOjpoYXNUaWxlQXQoaW50IGksIGludCBqKSBjb25zdAogCiBi
b29sIENDVGlsZWRMYXllckltcGw6Omhhc1RleHR1cmVJZEZvclRpbGVBdChpbnQgaSwgaW50IGop
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1RpbGVBdChpLCBqKSAmJiB0aWxlQXQoaSwgaiktPnRl
eHR1cmVJZCgpOworICAgIHJldHVybiBoYXNUaWxlQXQoaSwgaikgJiYgdGlsZUF0KGksIGopLT5y
ZXNvdXJjZUlkKCk7CiB9CiAKIERyYXdhYmxlVGlsZSogQ0NUaWxlZExheWVySW1wbDo6dGlsZUF0
KGludCBpLCBpbnQgaikgY29uc3QKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIENDVGlsZWRMYXll
ckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YQogICAgICAgICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGVyLT50aWxl
Qm91bmRzKGksIGopOwogICAgICAgICAgICAgICAgIFNrQ29sb3IgYm9yZGVyQ29sb3I7CiAKLSAg
ICAgICAgICAgICAgICBpZiAobV9za2lwc0RyYXcgfHwgIXRpbGUgfHwgIXRpbGUtPnRleHR1cmVJ
ZCgpKQorICAgICAgICAgICAgICAgIGlmIChtX3NraXBzRHJhdyB8fCAhdGlsZSB8fCAhdGlsZS0+
cmVzb3VyY2VJZCgpKQogICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvciA9IFNrQ29sb3JT
ZXRBUkdCKGRlYnVnVGlsZUJvcmRlckFscGhhLCBkZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNv
bG9yUmVkLCBkZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNvbG9yR3JlZW4sIGRlYnVnVGlsZUJv
cmRlck1pc3NpbmdUaWxlQ29sb3JCbHVlKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIGJvcmRlckNvbG9yID0gU2tDb2xvclNldEFSR0IoZGVidWdUaWxlQm9yZGVy
QWxwaGEsIGRlYnVnVGlsZUJvcmRlckNvbG9yUmVkLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvckdyZWVu
LCBkZWJ1Z1RpbGVCb3JkZXJDb2xvckJsdWUpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgQ0NU
aWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhCiAgICAgICAgICAgICBpZiAodGlsZVJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAoIXRpbGUgfHwgIXRpbGUt
PnRleHR1cmVJZCgpKSB7CisgICAgICAgICAgICBpZiAoIXRpbGUgfHwgIXRpbGUtPnJlc291cmNl
SWQoKSkgewogICAgICAgICAgICAgICAgIGlmIChkcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1Rp
bGVzKCkpCiAgICAgICAgICAgICAgICAgICAgIGhhZE1pc3NpbmdUaWxlcyB8PSBxdWFkTGlzdC5h
cHBlbmQoQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGls
ZVJlY3QpKTsKICAgICAgICAgICAgICAgICBlbHNlCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBD
Q1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25z
dCBDQ1NoYXJlZFF1YWRTdGEKICAgICAgICAgICAgIGJvb2wgYm90dG9tRWRnZUFBID0gaiA9PSBt
X3RpbGVyLT5udW1UaWxlc1koKSAtIDEgJiYgdXNlQUE7CiAKICAgICAgICAgICAgIGNvbnN0IEdD
M0RpbnQgdGV4dHVyZUZpbHRlciA9IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8gR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwotICAgICAg
ICAgICAgcXVhZExpc3QuYXBwZW5kKENDVGlsZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0
YXRlLCB0aWxlUmVjdCwgdGlsZU9wYXF1ZVJlY3QsIHRpbGUtPnRleHR1cmVJZCgpLCB0ZXh0dXJl
T2Zmc2V0LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBs
ZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICAg
ICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgdGlsZVJlY3QsIHRpbGVPcGFxdWVSZWN0LCB0aWxlLT5yZXNvdXJjZUlkKCksIHRleHR1
cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBjb250ZW50c1N3aXp6bGVkKCks
IGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogICAg
ICAgICB9CiAgICAgfQogfQpAQCAtMjA0LDEyICsyMDQsMTIgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJ
bXBsOjpzZXRUaWxpbmdEYXRhKGNvbnN0IENDTGF5ZXJUaWxpbmdEYXRhJiB0aWxlcikKICAgICAq
bV90aWxlciA9IHRpbGVyOwogfQogCi12b2lkIENDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJv
cGVydGllcyhpbnQgaSwgaW50IGosIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYg
b3BhcXVlUmVjdCkKK3ZvaWQgQ0NUaWxlZExheWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVzKGlu
dCBpLCBpbnQgaiwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQsIGNv
bnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiB7CiAgICAgRHJhd2FibGVUaWxlKiB0aWxlID0gdGls
ZUF0KGksIGopOwogICAgIGlmICghdGlsZSkKICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUoaSwg
aik7Ci0gICAgdGlsZS0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7CisgICAgdGlsZS0+c2V0UmVz
b3VyY2VJZChyZXNvdXJjZUlkKTsKICAgICB0aWxlLT5zZXRPcGFxdWVSZWN0KG9wYXF1ZVJlY3Qp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggNDA1MmZlOTdjZWMyMzM1
OGRjZjg5NzJjNDVlZTNiNmQ0MWE3Mzc3MS4uODcxZDRlN2QxNmExNDdhZThiNDE0MjU0MGYxN2Fh
NGNiODMwYThjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNDQsMTMgKzQ0
LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxs
ZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZF
UlJJREU7CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNvbnRlbnRzVGV4dHVyZUlkKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgY29u
dGVudHNSZXNvdXJjZUlkKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVt
cExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3QgT1ZFUlJJREU7
CiAKICAgICB2b2lkIHNldFNraXBzRHJhdyhib29sIHNraXBzRHJhdykgeyBtX3NraXBzRHJhdyA9
IHNraXBzRHJhdzsgfQogICAgIHZvaWQgc2V0VGlsaW5nRGF0YShjb25zdCBDQ0xheWVyVGlsaW5n
RGF0YSYgdGlsZXIpOwotICAgIHZvaWQgcHVzaFRpbGVQcm9wZXJ0aWVzKGludCwgaW50LCB1bnNp
Z25lZCB0ZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpOworICAgIHZvaWQgcHVz
aFRpbGVQcm9wZXJ0aWVzKGludCwgaW50LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQs
IGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpOwogCiAgICAgdm9pZCBzZXRDb250ZW50c1N3aXp6
bGVkKGJvb2wgY29udGVudHNTd2l6emxlZCkgeyBtX2NvbnRlbnRzU3dpenpsZWQgPSBjb250ZW50
c1N3aXp6bGVkOyB9CiAgICAgYm9vbCBjb250ZW50c1N3aXp6bGVkKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50c1N3aXp6bGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmlu
ZGV4IGI1MjQ1OTZmMGRlYTYwNzdhNGM3NGE1NjFlNWU5OTQyZTFkZTE4NzMuLmU2Y2U5OWUyYjNk
OTYxOGNlZGVjZGM0ZjU3MzVmNTcyM2NjMDQ0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXll
ckltcGwuY3BwCkBAIC0zMSwxNSArMzEsMTIgQEAKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENo
cm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJMYXll
clJlbmRlcmVyQ2hyb21pdW0uaCIgLy8gRm9yIEdMQyBtYWNybwotI2luY2x1ZGUgIkxheWVyVGV4
dHVyZVN1YkltYWdlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJU
ZXh0U3RyZWFtLmgiCi0jaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgotI2luY2x1ZGUgImNj
L0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
IgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIK
KyNpbmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJjYy9DQ1N0cmVh
bVZpZGVvRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVhZC5oIgogI2lu
Y2x1ZGUgImNjL0NDWVVWVmlkZW9EcmF3UXVhZC5oIgpAQCAtNTIsNiArNDksNyBAQCBDQ1ZpZGVv
TGF5ZXJJbXBsOjpDQ1ZpZGVvTGF5ZXJJbXBsKGludCBpZCwgV2ViS2l0OjpXZWJWaWRlb0ZyYW1l
UHJvdmlkZXIqIHByb3ZpZAogICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgLCBtX3Byb3ZpZGVy
KHByb3ZpZGVyKQogICAgICwgbV9mcmFtZSgwKQorICAgICwgbV9leHRlcm5hbFRleHR1cmVSZXNv
dXJjZSgwKQogewogICAgIC8vIFRoaXMgbWF0cml4IGlzIHRoZSBkZWZhdWx0IHRyYW5zZm9ybWF0
aW9uIGZvciBzdHJlYW0gdGV4dHVyZXMsIGFuZCBmbGlwcyBvbiB0aGUgWSBheGlzLgogICAgIG1f
c3RyZWFtVGV4dHVyZU1hdHJpeCA9IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoCkBA
IC03NiwxMSArNzQsMTIgQEAgQ0NWaWRlb0xheWVySW1wbDo6fkNDVmlkZW9MYXllckltcGwoKQog
ICAgICAgICBtX3Byb3ZpZGVyLT5zZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQoMCk7CiAgICAg
ICAgIG1fcHJvdmlkZXIgPSAwOwogICAgIH0KLSAgICBmcmVlUGxhbmVEYXRhKGxheWVyVHJlZUhv
c3RJbXBsKCktPmNvbnRleHQoKSk7CisgICAgZnJlZVBsYW5lRGF0YShsYXllclRyZWVIb3N0SW1w
bCgpLT5yZXNvdXJjZVByb3ZpZGVyKCkpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBXZWJLaXQ6OldlYlZpZGVvRnJhbWU6Om1heFBsYW5lczsg
KytpKQotICAgICAgICBBU1NFUlQoIW1fZnJhbWVQbGFuZXNbaV0udGV4dHVyZUlkKTsKKyAgICAg
ICAgQVNTRVJUKCFtX2ZyYW1lUGxhbmVzW2ldLnJlc291cmNlSWQpOworICAgIEFTU0VSVCghbV9l
eHRlcm5hbFRleHR1cmVSZXNvdXJjZSk7CiAjZW5kaWYKIH0KIApAQCAtMTExLDEwICsxMTAsMTAg
QEAgc3RhdGljIEdDM0RlbnVtIGNvbnZlcnRWRkNGb3JtYXRUb0dDM0RGb3JtYXQoY29uc3QgV2Vi
S2l0OjpXZWJWaWRlb0ZyYW1lJiBmcmFtZSkKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6
OklOVkFMSURfVkFMVUU7CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXcoQ0NS
ZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lk
IENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlcikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIEND
TGF5ZXJJbXBsOjp3aWxsRHJhdyhsYXllclJlbmRlcmVyLCBjb250ZXh0KTsKKyAgICBDQ0xheWVy
SW1wbDo6d2lsbERyYXcocmVzb3VyY2VQcm92aWRlcik7CiAKICAgICAvLyBFeHBsaWNpdGx5IGxv
Y2sgYW5kIHVubG9jayB0aGUgcHJvdmlkZXIgbXV0ZXggc28gaXQgY2FuIGJlIGhlbGQgZnJvbQog
ICAgIC8vIHdpbGxEcmF3IHRvIGRpZERyYXcuIFNpbmNlIHRoZSBjb21wb3NpdG9yIHRocmVhZCBp
cyBpbiB0aGUgbWlkZGxlIG9mCkBAIC0xMjUsMTYgKzEyNCwxNyBAQCB2b2lkIENDVmlkZW9MYXll
ckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250
ZXh0KiBjbwogICAgIC8vIGxvY2sgc2hvdWxkIG5vdCBjYXVzZSBhIGRlYWRsb2NrLgogICAgIG1f
cHJvdmlkZXJNdXRleC5sb2NrKCk7CiAKLSAgICB3aWxsRHJhd0ludGVybmFsKGxheWVyUmVuZGVy
ZXIsIGNvbnRleHQpOwotICAgIGZyZWVVbnVzZWRQbGFuZURhdGEoY29udGV4dCk7CisgICAgd2ls
bERyYXdJbnRlcm5hbChyZXNvdXJjZVByb3ZpZGVyKTsKKyAgICBmcmVlVW51c2VkUGxhbmVEYXRh
KHJlc291cmNlUHJvdmlkZXIpOwogCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICBtX3Byb3Zp
ZGVyTXV0ZXgudW5sb2NrKCk7CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXdJ
bnRlcm5hbChDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dCogY29u
dGV4dCkKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXdJbnRlcm5hbChDQ1Jlc291cmNl
UHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1w
bFRocmVhZCgpKTsKKyAgICBBU1NFUlQoIW1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UpOwogCiAg
ICAgaWYgKCFtX3Byb3ZpZGVyKSB7CiAgICAgICAgIG1fZnJhbWUgPSAwOwpAQCAtMTYwLDE3ICsx
NjAsMjAgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhd0ludGVybmFsKENDUmVuZGVy
ZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb24KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmICghYWxsb2NhdGVQbGFuZURhdGEobGF5ZXJSZW5kZXJlciwgY29udGV4dCkpIHsK
KyAgICBpZiAoIWFsbG9jYXRlUGxhbmVEYXRhKHJlc291cmNlUHJvdmlkZXIpKSB7CiAgICAgICAg
IG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShtX2ZyYW1lKTsKICAgICAgICAgbV9mcmFtZSA9
IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWNvcHlQbGFuZURhdGEobGF5
ZXJSZW5kZXJlciwgY29udGV4dCkpIHsKKyAgICBpZiAoIWNvcHlQbGFuZURhdGEocmVzb3VyY2VQ
cm92aWRlcikpIHsKICAgICAgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUp
OwogICAgICAgICBtX2ZyYW1lID0gMDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlm
IChtX2Zvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCkKKyAgICAgICAgbV9l
eHRlcm5hbFRleHR1cmVSZXNvdXJjZSA9IHJlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNl
RnJvbUV4dGVybmFsVGV4dHVyZShtX2ZyYW1lLT50ZXh0dXJlSWQoKSk7CiB9CiAKIHZvaWQgQ0NW
aWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCkBAIC0yMDMsNyArMjA2
LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1
YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEKICAgICAgICAgYm9vbCBwcmVtdWx0aXBsaWVk
QWxwaGEgPSB0cnVlOwogICAgICAgICBGbG9hdFJlY3QgdXZSZWN0KDAsIDAsIHdpZHRoU2NhbGVG
YWN0b3IsIDEpOwogICAgICAgICBib29sIGZsaXBwZWQgPSBmYWxzZTsKLSAgICAgICAgT3duUHRy
PENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcGxhbmUudGV4dHVyZUlkLCBwcmVtdWx0aXBs
aWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7CisgICAgICAgIE93blB0cjxDQ1RleHR1cmVEcmF3
UXVhZD4gdGV4dHVyZVF1YWQgPSBDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgcXVhZFJlY3QsIHBsYW5lLnJlc291cmNlSWQsIHByZW11bHRpcGxpZWRBbHBoYSwgdXZS
ZWN0LCBmbGlwcGVkKTsKICAgICAgICAgcXVhZExpc3QuYXBwZW5kKHRleHR1cmVRdWFkLnJlbGVh
c2UoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTIxOCw3ICsyMjEsNyBAQCB2b2lkIEND
VmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0
IENDU2hhcmVkUXVhZFN0YQogI2Vsc2UKICAgICAgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7IC8v
IExpYlZBIChjcm9zL2ludGVsKSwgTWFjT1MuCiAjZW5kaWYKLSAgICAgICAgT3duUHRyPENDVGV4
dHVyZURyYXdRdWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hh
cmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9mcmFtZS0+dGV4dHVyZUlkKCksIHByZW11bHRpcGxp
ZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKKyAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdR
dWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0
YXRlLCBxdWFkUmVjdCwgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSwgcHJlbXVsdGlwbGllZEFs
cGhhLCB1dlJlY3QsIGZsaXBwZWQpOwogICAgICAgICBxdWFkTGlzdC5hcHBlbmQodGV4dHVyZVF1
YWQucmVsZWFzZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjMzLDE0ICsyMzYsMjQg
QEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRM
aXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEKICAgICB9CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVy
SW1wbDo6ZGlkRHJhdygpCit2b2lkIENDVmlkZW9MYXllckltcGw6OmRpZERyYXcoQ0NSZXNvdXJj
ZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0lt
cGxUaHJlYWQoKSk7Ci0gICAgQ0NMYXllckltcGw6OmRpZERyYXcoKTsKKyAgICBDQ0xheWVySW1w
bDo6ZGlkRHJhdyhyZXNvdXJjZVByb3ZpZGVyKTsKIAogICAgIGlmICghbV9mcmFtZSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKG1fZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJEKSB7CisgICAgICAgIEFTU0VSVChtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKTsKKyAg
ICAgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcgYXNzZXJ0IHdpbGwgbm90IGJlIHRydWUgd2hl
biBzZW5kaW5nIHJlc291cmNlcyB0byBhCisgICAgICAgIC8vIHBhcmVudCBjb21wb3NpdG9yLiBX
ZSB3aWxsIHByb2JhYmx5IG5lZWQgdG8gaG9sZCBvbiB0byBtX2ZyYW1lIGZvcgorICAgICAgICAv
LyBsb25nZXIsIGFuZCBoYXZlIHNldmVyYWwgImN1cnJlbnQgZnJhbWVzIiBpbiB0aGUgcGlwZWxp
bmUuCisgICAgICAgIEFTU0VSVCghcmVzb3VyY2VQcm92aWRlci0+aW5Vc2VCeUNvbnN1bWVyKG1f
ZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UpKTsKKyAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+ZGVs
ZXRlUmVzb3VyY2UobV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSk7CisgICAgICAgIG1fZXh0ZXJu
YWxUZXh0dXJlUmVzb3VyY2UgPSAwOworICAgIH0KKwogICAgIG1fcHJvdmlkZXItPnB1dEN1cnJl
bnRGcmFtZShtX2ZyYW1lKTsKICAgICBtX2ZyYW1lID0gMDsKIApAQCAtMjgzLDQ1ICsyOTYsMjcg
QEAgSW50U2l6ZSBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb21wdXRlVmlzaWJsZVNpemUoY29uc3QgV2Vi
S2l0OjpXZWJWaWRlb0ZyYW1lJiBmcmFtZSwKICAgICByZXR1cm4gSW50U2l6ZSh2aXNpYmxlV2lk
dGgsIHZpc2libGVIZWlnaHQpOwogfQogCi1ib29sIENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxh
bmU6OmFsbG9jYXRlRGF0YShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK2Jvb2wgQ0NWaWRl
b0xheWVySW1wbDo6RnJhbWVQbGFuZTo6YWxsb2NhdGVEYXRhKENDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlcikKIHsKLSAgICBpZiAodGV4dHVyZUlkKQorICAgIGlmIChyZXNvdXJj
ZUlkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQzRCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4
dDNEKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHTEMoY29udGV4dDNELCB0ZXh0dXJl
SWQgPSBjb250ZXh0M0QtPmNyZWF0ZVRleHR1cmUoKSk7Ci0gICAgR0xDKGNvbnRleHQzRCwgY29u
dGV4dDNELT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVy
ZUlkKSk7Ci0gICAgLy8gRG8gYmFzaWMgbGluZWFyIGZpbHRlcmluZyBvbiByZXNpemUuCi0gICAg
R0xDKGNvbnRleHQzRCwgY29udGV4dDNELT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFw
aGljc0NvbnRleHQzRDo6TElORUFSKSk7Ci0gICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT50
ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7Ci0g
ICAgLy8gTlBPVCB0ZXh0dXJlcyBpbiBHTCBFUyBvbmx5IHdvcmsgd2hlbiB0aGUgd3JhcCBtb2Rl
IGlzIHNldCB0byBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRS4KLSAgICBHTEMoY29u
dGV4dDNELCBjb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0
M0Q6OkNMQU1QX1RPX0VER0UpKTsKLSAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleFBh
cmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKLQot
ICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAs
IGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApKTsKLQotICAgIHJl
dHVybiB0ZXh0dXJlSWQ7CisgICAgcmVzb3VyY2VJZCA9IHJlc291cmNlUHJvdmlkZXItPmNyZWF0
ZVJlc291cmNlKENDUmVuZGVyZXI6OkltcGxQb29sLCBzaXplLCBmb3JtYXQsIENDUmVzb3VyY2VQ
cm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKKyAgICByZXR1cm4gcmVzb3VyY2VJZDsKIH0KIAot
dm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lOjpmcmVlRGF0YShDQ0dyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6ZnJlZURh
dGEoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewotICAgIGlmICghdGV4
dHVyZUlkKQorICAgIGlmICghcmVzb3VyY2VJZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNEID0gY29udGV4dC0+Y29udGV4dDNE
KCk7Ci0gICAgaWYgKCFjb250ZXh0M0QpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdMQyhjb250
ZXh0M0QsIGNvbnRleHQzRC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSWQpKTsKLSAgICB0ZXh0dXJl
SWQgPSAwOworICAgIHJlc291cmNlUHJvdmlkZXItPmRlbGV0ZVJlc291cmNlKHJlc291cmNlSWQp
OworICAgIHJlc291cmNlSWQgPSAwOwogfQogCi1ib29sIENDVmlkZW9MYXllckltcGw6OmFsbG9j
YXRlUGxhbmVEYXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQorYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjphbGxvY2F0ZVBsYW5lRGF0YShDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7Ci0gICAgaW50IG1heFRleHR1cmVT
aXplID0gbGF5ZXJSZW5kZXJlci0+Y2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemU7CisgICAg
aW50IG1heFRleHR1cmVTaXplID0gcmVzb3VyY2VQcm92aWRlci0+bWF4VGV4dHVyZVNpemUoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lSW5kZXggPSAwOyBwbGFuZUluZGV4IDwgbV9mcmFtZS0+
cGxhbmVzKCk7ICsrcGxhbmVJbmRleCkgewogICAgICAgICBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFt
ZVBsYW5lJiBwbGFuZSA9IG1fZnJhbWVQbGFuZXNbcGxhbmVJbmRleF07CiAKQEAgLTMzMSwxMyAr
MzI2LDEzIEBAIGJvb2wgQ0NWaWRlb0xheWVySW1wbDo6YWxsb2NhdGVQbGFuZURhdGEoQ0NSZW5k
ZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgaWYgKHBsYW5lLnNpemUgIT0gcmVxdWlyZWRUZXh0dXJlU2l6ZSB8fCBw
bGFuZS5mb3JtYXQgIT0gbV9mb3JtYXQpIHsKLSAgICAgICAgICAgIHBsYW5lLmZyZWVEYXRhKGNv
bnRleHQpOworICAgICAgICAgICAgcGxhbmUuZnJlZURhdGEocmVzb3VyY2VQcm92aWRlcik7CiAg
ICAgICAgICAgICBwbGFuZS5zaXplID0gcmVxdWlyZWRUZXh0dXJlU2l6ZTsKICAgICAgICAgICAg
IHBsYW5lLmZvcm1hdCA9IG1fZm9ybWF0OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFwbGFu
ZS50ZXh0dXJlSWQpIHsKLSAgICAgICAgICAgIGlmICghcGxhbmUuYWxsb2NhdGVEYXRhKGNvbnRl
eHQpKQorICAgICAgICBpZiAoIXBsYW5lLnJlc291cmNlSWQpIHsKKyAgICAgICAgICAgIGlmICgh
cGxhbmUuYWxsb2NhdGVEYXRhKHJlc291cmNlUHJvdmlkZXIpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIHBsYW5lLnZpc2libGVTaXplID0gY29tcHV0ZVZpc2li
bGVTaXplKCptX2ZyYW1lLCBwbGFuZUluZGV4KTsKICAgICAgICAgfQpAQCAtMzQ1LDQyICszNDAs
MzIgQEAgYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjphbGxvY2F0ZVBsYW5lRGF0YShDQ1JlbmRlcmVy
KiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBDQ1ZpZGVvTGF5ZXJJbXBsOjpjb3B5UGxhbmVEYXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVy
ZXIsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjpj
b3B5UGxhbmVEYXRhKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKICAg
ICBzaXplX3Qgc29mdHdhcmVQbGFuZUNvdW50ID0gbV9mcmFtZS0+cGxhbmVzKCk7CiAgICAgaWYg
KCFzb2Z0d2FyZVBsYW5lQ291bnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgV2ViS2l0
OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7
Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
IHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgdXBsb2FkZXIodHJ1ZSk7CiAgICAgZm9y
IChzaXplX3Qgc29mdHdhcmVQbGFuZUluZGV4ID0gMDsgc29mdHdhcmVQbGFuZUluZGV4IDwgc29m
dHdhcmVQbGFuZUNvdW50OyArK3NvZnR3YXJlUGxhbmVJbmRleCkgewogICAgICAgICBDQ1ZpZGVv
TGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiBwbGFuZSA9IG1fZnJhbWVQbGFuZXNbc29mdHdhcmVQbGFu
ZUluZGV4XTsKICAgICAgICAgY29uc3QgdWludDhfdCogc29mdHdhcmVQbGFuZVBpeGVscyA9IHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2ZyYW1lLT5kYXRhKHNvZnR3YXJlUGxhbmVJbmRl
eCkpOwogICAgICAgICBJbnRSZWN0IHBsYW5lUmVjdChJbnRQb2ludCgpLCBwbGFuZS5zaXplKTsK
LQotICAgICAgICBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBwbGFuZS50ZXh0dXJlSWQpOwotICAgICAgICB1cGxvYWRlci5zZXRTdWJJbWFnZVNp
emUocGxhbmUuc2l6ZSk7Ci0gICAgICAgIHVwbG9hZGVyLnVwbG9hZChzb2Z0d2FyZVBsYW5lUGl4
ZWxzLCBwbGFuZVJlY3QsIHBsYW5lUmVjdCwgcGxhbmVSZWN0LCBwbGFuZS5mb3JtYXQsIGNvbnRl
eHQpOworICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT51cGxvYWQocGxhbmUucmVzb3VyY2VJZCwg
c29mdHdhcmVQbGFuZVBpeGVscywgcGxhbmVSZWN0LCBwbGFuZVJlY3QsIHBsYW5lUmVjdCk7CiAg
ICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENDVmlkZW9MYXllckltcGw6OmZyZWVQ
bGFuZURhdGEoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIENDVmlkZW9MYXllcklt
cGw6OmZyZWVQbGFuZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQog
ewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXZWJLaXQ6OldlYlZpZGVvRnJhbWU6Om1h
eFBsYW5lczsgKytpKQotICAgICAgICBtX2ZyYW1lUGxhbmVzW2ldLmZyZWVEYXRhKGNvbnRleHQp
OworICAgICAgICBtX2ZyYW1lUGxhbmVzW2ldLmZyZWVEYXRhKHJlc291cmNlUHJvdmlkZXIpOwog
fQogCi12b2lkIENDVmlkZW9MYXllckltcGw6OmZyZWVVbnVzZWRQbGFuZURhdGEoQ0NHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCit2b2lkIENDVmlkZW9MYXllckltcGw6OmZyZWVVbnVzZWRQbGFu
ZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewogICAgIHVuc2ln
bmVkIGZpcnN0VW51c2VkUGxhbmUgPSBtX2ZyYW1lID8gbV9mcmFtZS0+cGxhbmVzKCkgOiAwOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IGZpcnN0VW51c2VkUGxhbmU7IGkgPCBXZWJLaXQ6OldlYlZp
ZGVvRnJhbWU6Om1heFBsYW5lczsgKytpKQotICAgICAgICBtX2ZyYW1lUGxhbmVzW2ldLmZyZWVE
YXRhKGNvbnRleHQpOworICAgICAgICBtX2ZyYW1lUGxhbmVzW2ldLmZyZWVEYXRhKHJlc291cmNl
UHJvdmlkZXIpOwogfQogCiB2b2lkIENDVmlkZW9MYXllckltcGw6OmRpZFJlY2VpdmVGcmFtZSgp
CkBAIC00MDAsNyArMzg1LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRVcGRhdGVNYXRy
aXgoY29uc3QgZmxvYXQgbWF0cml4WzE2XSkKIAogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRM
b3NlQ29udGV4dCgpCiB7Ci0gICAgZnJlZVBsYW5lRGF0YShsYXllclRyZWVIb3N0SW1wbCgpLT5j
b250ZXh0KCkpOworICAgIGZyZWVQbGFuZURhdGEobGF5ZXJUcmVlSG9zdEltcGwoKS0+cmVzb3Vy
Y2VQcm92aWRlcigpKTsKIH0KIAogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpzZXROZWVkc1JlZHJh
dygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggY2Q1ZGIwOWJjZDA1NmQ5MDNi
NWY1YzdiZDMyMzgwM2Q4M2Y1N2MyMi4uNGNmN2NhYmI3NmQ5M2NlZTg5MmY1NDNlMjViYzQ5ZTk4
MTRlYjRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApAQCAtNTAsOSArNTAsOSBA
QCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXllckltcGwoKTsKIAotICAg
IHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lk
IGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IE9WRVJS
SURFOwogCkBAIC02OCwxNSArNjgsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNSZWRy
YXcoKTsKIAogICAgIHN0cnVjdCBGcmFtZVBsYW5lIHsKLSAgICAgICAgdW5zaWduZWQgdGV4dHVy
ZUlkOworICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZDsK
ICAgICAgICAgSW50U2l6ZSBzaXplOwogICAgICAgICBHQzNEZW51bSBmb3JtYXQ7CiAgICAgICAg
IEludFNpemUgdmlzaWJsZVNpemU7CiAKLSAgICAgICAgRnJhbWVQbGFuZSgpIDogdGV4dHVyZUlk
KDApIHsgfQorICAgICAgICBGcmFtZVBsYW5lKCkgOiByZXNvdXJjZUlkKDApIHsgfQogCi0gICAg
ICAgIGJvb2wgYWxsb2NhdGVEYXRhKENDR3JhcGhpY3NDb250ZXh0Kik7Ci0gICAgICAgIHZvaWQg
ZnJlZURhdGEoQ0NHcmFwaGljc0NvbnRleHQqKTsKKyAgICAgICAgYm9vbCBhbGxvY2F0ZURhdGEo
Q0NSZXNvdXJjZVByb3ZpZGVyKik7CisgICAgICAgIHZvaWQgZnJlZURhdGEoQ0NSZXNvdXJjZVBy
b3ZpZGVyKik7CiAgICAgfTsKIAogcHJpdmF0ZToKQEAgLTg1LDExICs4NSwxMSBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBJbnRTaXplIGNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBXZWJLaXQ6Oldl
YlZpZGVvRnJhbWUmLCB1bnNpZ25lZCBwbGFuZSk7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBs
YXllclR5cGVBc1N0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJWaWRlb0xheWVyIjsg
fQogCi0gICAgdm9pZCB3aWxsRHJhd0ludGVybmFsKENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29u
dGV4dCopOwotICAgIGJvb2wgYWxsb2NhdGVQbGFuZURhdGEoQ0NSZW5kZXJlciosIENDR3JhcGhp
Y3NDb250ZXh0Kik7Ci0gICAgYm9vbCBjb3B5UGxhbmVEYXRhKENDUmVuZGVyZXIqLCBDQ0dyYXBo
aWNzQ29udGV4dCopOwotICAgIHZvaWQgZnJlZVBsYW5lRGF0YShDQ0dyYXBoaWNzQ29udGV4dCop
OwotICAgIHZvaWQgZnJlZVVudXNlZFBsYW5lRGF0YShDQ0dyYXBoaWNzQ29udGV4dCopOworICAg
IHZvaWQgd2lsbERyYXdJbnRlcm5hbChDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICBib29sIGFs
bG9jYXRlUGxhbmVEYXRhKENDUmVzb3VyY2VQcm92aWRlciopOworICAgIGJvb2wgY29weVBsYW5l
RGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICB2b2lkIGZyZWVQbGFuZURhdGEoQ0NSZXNv
dXJjZVByb3ZpZGVyKik7CisgICAgdm9pZCBmcmVlVW51c2VkUGxhbmVEYXRhKENDUmVzb3VyY2VQ
cm92aWRlciopOwogCiAgICAgLy8gR3VhcmRzIHRoZSBkZXN0cnVjdGlvbiBvZiBtX3Byb3ZpZGVy
IGFuZCB0aGUgZnJhbWUgdGhhdCBpdCBwcm92aWRlcwogICAgIE11dGV4IG1fcHJvdmlkZXJNdXRl
eDsKQEAgLTk5LDYgKzk5LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYktpdDo6V2ViVmlkZW9GcmFt
ZSogbV9mcmFtZTsKICAgICBHQzNEZW51bSBtX2Zvcm1hdDsKKyAgICBDQ1Jlc291cmNlUHJvdmlk
ZXI6OlJlc291cmNlSWQgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZTsKIAogICAgIC8vIEVhY2gg
aW5kZXggaW4gdGhpcyBhcnJheSBjb3JyZXNwb25kcyB0byBhIHBsYW5lIGluIFdlYktpdDo6V2Vi
VmlkZW9GcmFtZS4KICAgICBGcmFtZVBsYW5lIG1fZnJhbWVQbGFuZXNbV2ViS2l0OjpXZWJWaWRl
b0ZyYW1lOjptYXhQbGFuZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggNDBi
MjNiZTQ5N2UyN2U3NzQ2YjU1OWEyNTFiYThkYmZiZjNlYTIxMi4uODMxMjQxZGU0Mzc2YjUyNjhi
M2U3MzVlYmI0NzE1ZWM0NGM2OTE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBA
IC03OCw2ICs3OCw3IEBACiAgICAgICAgICAgICAndGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVz
dENvbW1vbi5oJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCcsCiAg
ICAgICAgICAgICAndGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAnLAorICAgICAgICAgICAg
J3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1Nj
aGVkdWxlclRlc3RDb21tb24uaCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NTY2hlZHVsZXJUZXN0
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGU5YjlmMDI4MTNjY2IzY2YzYTllNTE4YzIyYmJk
YTQ3NmNiYzNmNjAuLjM3YzNmY2M5ZGM2MDVkNTg5NWQ3ZTQ0OGI4YjEwZjE5OWQzNDkyMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwCkBAIC01OTgsMTIgKzU5OCwxMiBAQCBjbGFzcyBEaWREcmF3Q2hlY2tM
YXllciA6IHB1YmxpYyBDQ1RpbGVkTGF5ZXJJbXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c093blB0cjxEaWREcmF3Q2hlY2tMYXllcj4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IERpZERyYXdDaGVja0xheWVyKGlkKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRE
cmF3KCkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVS
UklERQogICAgIHsKICAgICAgICAgbV9kaWREcmF3Q2FsbGVkID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0KikK
KyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREUK
ICAgICB7CiAgICAgICAgIG1fd2lsbERyYXdDYWxsZWQgPSB0cnVlOwogICAgIH0KQEAgLTc1Mywx
OCArNzUzLDIwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZGlkRHJhd0NhbGxl
ZE9uQWxsTGF5ZXJzKQogCiBjbGFzcyBNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyIDogcHVi
bGljIERpZERyYXdDaGVja0xheWVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxN
aXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyPiBjcmVhdGUoaW50IGlkLCBib29sIHRpbGVNaXNz
aW5nLCBib29sIHNraXBzRHJhdywgYm9vbCBhbmltYXRpbmcpIHsgcmV0dXJuIGFkb3B0UHRyKG5l
dyBNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKGlkLCB0aWxlTWlzc2luZywgc2tpcHNEcmF3
LCBhbmltYXRpbmcpKTsgfQorICAgIHN0YXRpYyBQYXNzT3duUHRyPE1pc3NpbmdUZXh0dXJlQW5p
bWF0aW5nTGF5ZXI+IGNyZWF0ZShpbnQgaWQsIGJvb2wgdGlsZU1pc3NpbmcsIGJvb2wgc2tpcHNE
cmF3LCBib29sIGFuaW1hdGluZywgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVy
KSB7IHJldHVybiBhZG9wdFB0cihuZXcgTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcihpZCwg
dGlsZU1pc3NpbmcsIHNraXBzRHJhdywgYW5pbWF0aW5nLCByZXNvdXJjZVByb3ZpZGVyKSk7IH0K
IAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKGlu
dCBpZCwgYm9vbCB0aWxlTWlzc2luZywgYm9vbCBza2lwc0RyYXcsIGJvb2wgYW5pbWF0aW5nKQor
ICAgIGV4cGxpY2l0IE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIoaW50IGlkLCBib29sIHRp
bGVNaXNzaW5nLCBib29sIHNraXBzRHJhdywgYm9vbCBhbmltYXRpbmcsIENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlcikKICAgICAgICAgOiBEaWREcmF3Q2hlY2tMYXllcihpZCkK
ICAgICB7CiAgICAgICAgIE93blB0cjxDQ0xheWVyVGlsaW5nRGF0YT4gdGlsaW5nRGF0YSA9IEND
TGF5ZXJUaWxpbmdEYXRhOjpjcmVhdGUoSW50U2l6ZSgxMCwgMTApLCBDQ0xheWVyVGlsaW5nRGF0
YTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgICAgICB0aWxpbmdEYXRhLT5zZXRCb3VuZHMoYm91bmRz
KCkpOwogICAgICAgICBzZXRUaWxpbmdEYXRhKCp0aWxpbmdEYXRhLmdldCgpKTsKICAgICAgICAg
c2V0U2tpcHNEcmF3KHNraXBzRHJhdyk7Ci0gICAgICAgIGlmICghdGlsZU1pc3NpbmcpCi0gICAg
ICAgICAgICBwdXNoVGlsZVByb3BlcnRpZXMoMCwgMCwgMSwgSW50UmVjdCgpKTsKKyAgICAgICAg
aWYgKCF0aWxlTWlzc2luZykgeworICAgICAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIHJlc291cmNlID0gcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UoQ0NSZW5k
ZXJlcjo6Q29udGVudFBvb2wsIEludFNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEND
UmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKKyAgICAgICAgICAgIHB1c2hUaWxl
UHJvcGVydGllcygwLCAwLCByZXNvdXJjZSwgSW50UmVjdCgpKTsKKyAgICAgICAgfQogICAgICAg
ICBpZiAoYW5pbWF0aW5nKQogICAgICAgICAgICAgYWRkQW5pbWF0ZWRUcmFuc2Zvcm1Ub0xheWVy
KCp0aGlzLCAxMCwgMywgMCk7CiAgICAgfQpAQCAtNzc1LDcgKzc3Nyw3IEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgcHJlcGFyZVRvRHJhd0ZhaWxzV2hlbkFuaW1hdGlvblVzZXND
aGVja2VyYm9hcmQpCiAgICAgLy8gV2hlbiB0aGUgdGV4dHVyZSBpcyBub3QgbWlzc2luZywgd2Ug
ZHJhdyBhcyB1c3VhbC4KICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNr
TGF5ZXI6OmNyZWF0ZSgxKSk7CiAgICAgRGlkRHJhd0NoZWNrTGF5ZXIqIHJvb3QgPSBzdGF0aWNf
Y2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKLSAgICBy
b290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMiwgZmFs
c2UsIGZhbHNlLCB0cnVlKSk7CisgICAgcm9vdC0+YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVBbmlt
YXRpbmdMYXllcjo6Y3JlYXRlKDIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgbV9ob3N0SW1wbC0+cmVz
b3VyY2VQcm92aWRlcigpKSk7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEg
ZnJhbWU7CiAKQEAgLTc4Niw3ICs3ODgsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIHByZXBhcmVUb0RyYXdGYWlsc1doZW5BbmltYXRpb25Vc2VzQ2hlY2tlcmJvYXJkKQogICAg
IC8vIFdoZW4gYSB0ZXh0dXJlIGlzIG1pc3NpbmcgYW5kIHdlJ3JlIG5vdCBhbmltYXRpbmcsIHdl
IGRyYXcgYXMgdXN1YWwgd2l0aCBjaGVja2VyYm9hcmRpbmcuCiAgICAgbV9ob3N0SW1wbC0+c2V0
Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMSkpOwogICAgIHJvb3QgPSBzdGF0
aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKLSAg
ICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMiwg
dHJ1ZSwgZmFsc2UsIGZhbHNlKSk7CisgICAgcm9vdC0+YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVB
bmltYXRpbmdMYXllcjo6Y3JlYXRlKDIsIHRydWUsIGZhbHNlLCBmYWxzZSwgbV9ob3N0SW1wbC0+
cmVzb3VyY2VQcm92aWRlcigpKSk7CiAKICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVw
YXJlVG9EcmF3KGZyYW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CkBA
IC03OTUsNyArNzk3LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJl
VG9EcmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNlc0NoZWNrZXJib2FyZCkKICAgICAvLyBXaGVuIGEg
dGV4dHVyZSBpcyBtaXNzaW5nIGFuZCB3ZSdyZSBhbmltYXRpbmcsIHdlIGRvbid0IHdhbnQgdG8g
ZHJhdyBhbnl0aGluZy4KICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNr
TGF5ZXI6OmNyZWF0ZSgxKSk7CiAgICAgcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xh
eWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwotICAgIHJvb3QtPmFkZENoaWxkKE1pc3Np
bmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgyLCB0cnVlLCBmYWxzZSwgdHJ1ZSkpOwor
ICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgy
LCB0cnVlLCBmYWxzZSwgdHJ1ZSwgbV9ob3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKSk7CiAK
ICAgICBFWFBFQ1RfRkFMU0UobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwogICAg
IG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOwpAQCAtODA0LDcgKzgwNiw3IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcHJlcGFyZVRvRHJhd0ZhaWxzV2hlbkFuaW1hdGlv
blVzZXNDaGVja2VyYm9hcmQpCiAgICAgLy8gV2hlbiB0aGUgbGF5ZXIgc2tpcHMgZHJhdyBhbmQg
d2UncmUgYW5pbWF0aW5nLCB3ZSBzdGlsbCBkcmF3IHRoZSBmcmFtZS4KICAgICBtX2hvc3RJbXBs
LT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgxKSk7CiAgICAgcm9vdCA9
IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkp
OwotICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0
ZSgyLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSkpOworICAgIHJvb3QtPmFkZENoaWxkKE1pc3NpbmdUZXh0
dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgyLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgbV9ob3N0SW1w
bC0+cmVzb3VyY2VQcm92aWRlcigpKSk7CiAKICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5w
cmVwYXJlVG9EcmF3KGZyYW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7
CkBAIC0xMTY4LDcgKzExNzAsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBCbGVuZFN0YXRlQ2hlY2tM
YXllciA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRy
KG5ldyBCbGVuZFN0YXRlQ2hlY2tMYXllcihpZCkpOyB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8
QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQsIENDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IEJsZW5kU3RhdGVDaGVja0xh
eWVyKGlkLCByZXNvdXJjZVByb3ZpZGVyKSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRR
dWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBib29sJikgT1ZFUlJJREUKICAgICB7CkBAIC0xMTc5LDcgKzExODEsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBvcGFxdWVSZWN0ID0gbV9xdWFkUmVjdDsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgb3BhcXVlUmVjdCA9IG1fb3BhcXVlQ29udGVudFJlY3Q7Ci0gICAg
ICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0QmxlbmRpbmdEcmF3UXVhZCA9IENDVGlsZURyYXdR
dWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBtX3F1YWRSZWN0LCBvcGFxdWVSZWN0LCAwLCBJ
bnRQb2ludCgpLCBJbnRTaXplKDEsIDEpLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpOworICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gdGVzdEJsZW5kaW5nRHJhd1F1YWQg
PSBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgbV9xdWFkUmVjdCwgb3Bh
cXVlUmVjdCwgbV9yZXNvdXJjZUlkLCBJbnRQb2ludCgpLCBJbnRTaXplKDEsIDEpLCAwLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICB0ZXN0QmxlbmRpbmdEcmF3
UXVhZC0+c2V0UXVhZFZpc2libGVSZWN0KG1fcXVhZFZpc2libGVSZWN0KTsKICAgICAgICAgRVhQ
RUNUX0VRKG1fYmxlbmQsIHRlc3RCbGVuZGluZ0RyYXdRdWFkLT5uZWVkc0JsZW5kaW5nKCkpOwog
ICAgICAgICBFWFBFQ1RfRVEobV9oYXNSZW5kZXJTdXJmYWNlLCAhIXJlbmRlclN1cmZhY2UoKSk7
CkBAIC0xMjAxLDcgKzEyMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcGFxdWVDb250ZW50
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSB7IG1fb3BhcXVlQ29udGVudFJlY3QgPSByZWN0OyB9
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaW50IGlkKQor
ICAgIGV4cGxpY2l0IEJsZW5kU3RhdGVDaGVja0xheWVyKGludCBpZCwgQ0NSZXNvdXJjZVByb3Zp
ZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgICAgICA6IENDTGF5ZXJJbXBsKGlkKQogICAgICAg
ICAsIG1fYmxlbmQoZmFsc2UpCiAgICAgICAgICwgbV9oYXNSZW5kZXJTdXJmYWNlKGZhbHNlKQpA
QCAtMTIwOSw2ICsxMjExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX29wYXF1ZUNvbnRlbnRz
KGZhbHNlKQogICAgICAgICAsIG1fcXVhZFJlY3QoNSwgNSwgNSwgNSkKICAgICAgICAgLCBtX3F1
YWRWaXNpYmxlUmVjdCg1LCA1LCA1LCA1KQorICAgICAgICAsIG1fcmVzb3VyY2VJZChyZXNvdXJj
ZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCwgSW50U2l6
ZSgxLCAxKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4
dHVyZVVzYWdlQW55KSkKICAgICB7CiAgICAgICAgIHNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQo
MCwgMCkpOwogICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKQEAgLTEyMjMsNiAr
MTIyNiw3IEBAIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX3F1YWRSZWN0OwogICAgIEludFJlY3Qg
bV9vcGFxdWVDb250ZW50UmVjdDsKICAgICBJbnRSZWN0IG1fcXVhZFZpc2libGVSZWN0OworICAg
IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CiB9OwogCiBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVM
YXllcnMpCkBAIC0xMjM3LDcgKzEyNDEsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgfQogICAgIENDTGF5
ZXJJbXBsKiByb290ID0gbV9ob3N0SW1wbC0+cm9vdExheWVyKCk7CiAKLSAgICByb290LT5hZGRD
aGlsZChCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDIpKTsKKyAgICByb290LT5hZGRDaGls
ZChCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDIsIG1faG9zdEltcGwtPnJlc291cmNlUHJv
dmlkZXIoKSkpOwogICAgIEJsZW5kU3RhdGVDaGVja0xheWVyKiBsYXllcjEgPSBzdGF0aWNfY2Fz
dDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KHJvb3QtPmNoaWxkcmVuKClbMF0uZ2V0KCkpOwogICAg
IGxheWVyMS0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgyLCAyKSk7CiAKQEAgLTEyOTAsNyArMTI5
NCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJh
d2luZ09wYXF1ZUxheWVycykKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQo
KSk7CiAgICAgbV9ob3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CiAKLSAgICBsYXll
cjEtPmFkZENoaWxkKEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMykpOworICAgIGxheWVy
MS0+YWRkQ2hpbGQoQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgzLCBtX2hvc3RJbXBsLT5y
ZXNvdXJjZVByb3ZpZGVyKCkpKTsKICAgICBCbGVuZFN0YXRlQ2hlY2tMYXllciogbGF5ZXIyID0g
c3RhdGljX2Nhc3Q8QmxlbmRTdGF0ZUNoZWNrTGF5ZXIqPihsYXllcjEtPmNoaWxkcmVuKClbMF0u
Z2V0KCkpOwogICAgIGxheWVyMi0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCg0LCA0KSk7CiAKQEAg
LTE0NTEsNyArMTQ1NSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdmlld3Bv
cnRDb3ZlcmVkKQogICAgIEludFNpemUgdmlld3BvcnRTaXplKDEwMDAsIDEwMDApOwogICAgIG1f
aG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOwogCi0gICAgbV9ob3N0SW1w
bC0+c2V0Um9vdExheWVyKEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMSkpOworICAgIG1f
aG9zdEltcGwtPnNldFJvb3RMYXllcihCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDEsIG1f
aG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSkpOwogICAgIEJsZW5kU3RhdGVDaGVja0xheWVy
KiByb290ID0gc3RhdGljX2Nhc3Q8QmxlbmRTdGF0ZUNoZWNrTGF5ZXIqPihtX2hvc3RJbXBsLT5y
b290TGF5ZXIoKSk7CiAgICAgcm9vdC0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIHRydWUpOwogICAg
IHJvb3QtPnNldE9wYXF1ZSh0cnVlKTsKQEAgLTI5NjksOSArMjk3Myw5IEBAIHByb3RlY3RlZDoK
IAogY2xhc3MgQ0NUZXN0UmVuZGVyZXIgOiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVtLCBw
dWJsaWMgQ0NSZW5kZXJlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
Q0NUZXN0UmVuZGVyZXI+IGNyZWF0ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGVzdFJlbmRlcmVyPiBjcmVhdGUoQ0NSZXNv
dXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgIHsKLSAgICAgICAgT3duUHRyPEND
VGVzdFJlbmRlcmVyPiByZW5kZXJlcihhZG9wdFB0cihuZXcgQ0NUZXN0UmVuZGVyZXIoY29udGV4
dCkpKTsKKyAgICAgICAgT3duUHRyPENDVGVzdFJlbmRlcmVyPiByZW5kZXJlcihhZG9wdFB0cihu
ZXcgQ0NUZXN0UmVuZGVyZXIocmVzb3VyY2VQcm92aWRlcikpKTsKICAgICAgICAgaWYgKCFyZW5k
ZXJlci0+aW5pdGlhbGl6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5
OTMsNyArMjk5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5QWxsb2Nh
dGlvbkxpbWl0Qnl0ZXMoc2l6ZV90KSBPVkVSUklERSB7IH0KIAogcHJvdGVjdGVkOgotICAgIEND
VGVzdFJlbmRlcmVyKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpIDogTGF5
ZXJSZW5kZXJlckNocm9taXVtKHRoaXMsIGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpIHsg
fQorICAgIENDVGVzdFJlbmRlcmVyKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRl
cikgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0odGhpcywgcmVzb3VyY2VQcm92aWRlciwgVW50aHJv
dHRsZWRVcGxvYWRlcikgeyB9CiAKIHByaXZhdGU6CiAgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBt
X3NldHRpbmdzOwpAQCAtMzI3Niw5ICszMjgwLDEwIEBAIHN0YXRpYyB2b2lkIHZlcmlmeVJlbmRl
clBhc3NUZXN0RGF0YShUZXN0Q2FzZSYgdGVzdENhc2UsIFJlbmRlclBhc3NSZW1vdmFsVGVzdERh
CiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRlc3RSZW1vdmVSZW5kZXJQYXNzZXMp
CiB7CiAgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KGNyZWF0ZUNvbnRleHQo
KSk7Ci0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4
dC0+Y29udGV4dDNEKCk7Ci0gICAgQVNTRVJUX1RSVUUoY29udGV4dDNkKTsKLSAgICBPd25QdHI8
Q0NUZXN0UmVuZGVyZXI+IHJlbmRlcmVyKENDVGVzdFJlbmRlcmVyOjpjcmVhdGUoY29udGV4dDNk
KSk7CisgICAgQVNTRVJUX1RSVUUoY29udGV4dC0+Y29udGV4dDNEKCkpOworICAgIE93blB0cjxD
Q1Jlc291cmNlUHJvdmlkZXI+IHJlc291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpj
cmVhdGUoY29udGV4dC5nZXQoKSkpOworCisgICAgT3duUHRyPENDVGVzdFJlbmRlcmVyPiByZW5k
ZXJlcihDQ1Rlc3RSZW5kZXJlcjo6Y3JlYXRlKHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpKTsKIAog
ICAgIGludCB0ZXN0Q2FzZUluZGV4ID0gMDsKICAgICB3aGlsZSAocmVtb3ZlUmVuZGVyUGFzc2Vz
Q2FzZXNbdGVzdENhc2VJbmRleF0ubmFtZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwCmluZGV4IDIxZTBh
NzE3YzM2Yzc5ZTJhMmMwMzIzOTJlZmE4YTEwZTEyZGFhMDQuLjk3MDI3MDk1ZWRlOGViODdmN2Vl
MmM3MzQ0OTg2MDRhYjRiMTVkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAKQEAgLTI3LDcgKzI3LDkg
QEAKICNpbmNsdWRlICJjYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oIgogCiAjaW5jbHVkZSAiQ0NU
aWxlZExheWVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkZha2VDQ0dyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgImNjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIgorI2luY2x1ZGUg
ImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIgLy8gRm9yIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZAogI2luY2x1ZGUgImNjL0NDVGV4dHVyZS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAK
QEAgLTQyLDExICs0NCwxNiBAQCBwdWJsaWM6CiAgICAgQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0
KCkKICAgICAgICAgOiBtX3RleHR1cmVTaXplKDI1NiwgMjU2KQogICAgICAgICAsIG1fdGV4dHVy
ZUZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkKKyAgICAgICAgLCBtX2NvbnRleHQoV2Vi
S2l0OjpjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRleHQoKSkKICAgICB7CisgICAgICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgICAgICBtX3Jlc291cmNlUHJvdmlk
ZXIgPSBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgfkNDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCgpCiAgICAgeworICAgICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAgICAgbV9yZXNvdXJj
ZVByb3ZpZGVyLmNsZWFyKCk7CiAgICAgfQogCiAgICAgc2l6ZV90IHRleHR1cmVzTWVtb3J5U2l6
ZShzaXplX3QgdGV4dHVyZUNvdW50KQpAQCAtNTYsMTEgKzYzLDEyIEBAIHB1YmxpYzoKIAogICAg
IFBhc3NPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiBjcmVhdGVNYW5hZ2VyKHNp
emVfdCBtYXhUZXh0dXJlcykKICAgICB7Ci0gICAgICAgIHJldHVybiBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCAxMDI0
KTsKKyAgICAgICAgcmV0dXJuIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKHRl
eHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIDEwMjQsIDApOwogICAgIH0KIAogICAgIGJv
b2wgdmFsaWRhdGVUZXh0dXJlKE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4mIHRleHR1cmUs
IGJvb2wgcmVxdWVzdExhdGUpCiAgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbFRocmVhZDsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIHRleHR1cmUtPnRl
eHR1cmVNYW5hZ2VyKCktPmFzc2VydEludmFyaWFudHMoKTsKICNlbmRpZgpAQCAtNjgsMTkgKzc2
LDIwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHRleHR1cmUtPnJlcXVlc3RMYXRlKCk7CiAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpOwog
ICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgICAgIHRleHR1cmUtPmFjcXVpcmVCYWNraW5n
VGV4dHVyZShhbGxvY2F0b3IoKSk7CisgICAgICAgICAgICB0ZXh0dXJlLT5hY3F1aXJlQmFja2lu
Z1RleHR1cmUocmVzb3VyY2VQcm92aWRlcigpKTsKICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CiAg
ICAgfQogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcigpCisgICAgQ0NSZXNv
dXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKCkKICAgICB7Ci0gICAgICAgcmV0dXJuICZt
X2Zha2VUZXh0dXJlQWxsb2NhdG9yOworICAgICAgIHJldHVybiBtX3Jlc291cmNlUHJvdmlkZXIu
Z2V0KCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgbV9m
YWtlVGV4dHVyZUFsbG9jYXRvcjsKICAgICBjb25zdCBJbnRTaXplIG1fdGV4dHVyZVNpemU7CiAg
ICAgY29uc3QgR0MzRGVudW0gbV90ZXh0dXJlRm9ybWF0OworICAgIE93blB0cjxDQ0dyYXBoaWNz
Q29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1fcmVz
b3VyY2VQcm92aWRlcjsKIH07CiAKIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJl
cXVlc3RUZXh0dXJlRXhjZWVkaW5nTWF4TGltaXQpCkBAIC0xMTksNyArMTI4LDggQEAgVEVTVF9G
KENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRpbmdNYXhMaW1p
dCkKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVy
ZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1
cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVD
dXRvZmZCeXRlcygpKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxv
Y2F0b3IoKSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAg
dGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAK
IFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIGNoYW5nZU1lbW9yeUxpbWl0cykKQEAg
LTEzOCw3ICsxNDgsMTAgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdl
TWVtb3J5TGltaXRzKQogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpCiAgICAgICAgIHZh
bGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSwgZmFsc2UpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5y
ZWR1Y2VNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIHsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1v
cnkocmVzb3VyY2VQcm92aWRlcigpKTsKKyAgICB9CiAKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNN
ZW1vcnlTaXplKDgpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsK
ICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVN
YW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwpAQCAtMTQ4LDcgKzE2MSwxMCBAQCBU
RVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBjaGFuZ2VNZW1vcnlMaW1pdHMpCiAgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkKICAgICAgICAgRVhQRUNUX0VRKHZhbGlkYXRlVGV4
dHVyZSh0ZXh0dXJlc1tpXSwgZmFsc2UpLCBpIDwgNSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJl
ZHVjZU1lbW9yeShhbGxvY2F0b3IoKSk7CisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAgICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9y
eShyZXNvdXJjZVByb3ZpZGVyKCkpOworICAgIH0KIAogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01l
bW9yeVNpemUoNSksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwog
ICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1h
bmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CkBAIC0xNTgsMTIgKzE3NCwxNiBAQCBU
RVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBjaGFuZ2VNZW1vcnlMaW1pdHMpCiAgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkKICAgICAgICAgRVhQRUNUX0VRKHZhbGlkYXRlVGV4
dHVyZSh0ZXh0dXJlc1tpXSwgZmFsc2UpLCBpIDwgNCk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJl
ZHVjZU1lbW9yeShhbGxvY2F0b3IoKSk7CisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAgICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9y
eShyZXNvdXJjZVByb3ZpZGVyKCkpOworICAgIH0KIAogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01l
bW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwog
ICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1h
bmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+
Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsVGhyZWFkOworICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJj
ZVByb3ZpZGVyKCkpOwogfQogCiBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0
dXJlTWFuYWdlclBhcnRpYWxVcGRhdGVUZXh0dXJlcykKQEAgLTIyMiw3ICsyNDIsOCBAQCBURVNU
X0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlclBhcnRpYWxVcGRhdGVU
ZXh0dXJlcykKICAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZXNbMl0tPmhhdmVCYWNraW5nVGV4dHVy
ZSgpKTsKICAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZXNbM10tPmhhdmVCYWNraW5nVGV4dHVyZSgp
KTsKIAotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7Cisg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgdGV4dHVyZU1hbmFn
ZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKIFRFU1RfRihDQ1By
aW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5hZ2VyUHJpb3JpdGllc0FyZUVxdWFsKQpA
QCAtMjYxLDcgKzI4Miw4IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1
cmVNYW5hZ2VyUHJpb3JpdGllc0FyZUVxdWFsKQogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9y
eVNpemUoOCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogICAg
IEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFn
ZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+Y2xl
YXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOworICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVBy
b3ZpZGVyKCkpOwogfQogCiBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJl
TWFuYWdlckRlc3Ryb3llZEZpcnN0KQpAQCAtMjc5LDcgKzMwMSwxMCBAQCBURVNUX0YoQ0NQcmlv
cml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlckRlc3Ryb3llZEZpcnN0KQogICAgIEVY
UEVDVF9UUlVFKHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpKTsKICAgICBFWFBF
Q1RfVFJVRSh0ZXh0dXJlLT5oYXZlQmFja2luZ1RleHR1cmUoKSk7CiAKLSAgICB0ZXh0dXJlTWFu
YWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIHsKKyAgICAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5j
bGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOworICAgIH0KICAgICB0ZXh0dXJlTWFu
YWdlci5jbGVhcigpOwogCiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmUtPmNhbkFjcXVpcmVCYWNr
aW5nVGV4dHVyZSgpKTsKQEAgLTMwNCw3ICszMjksMTAgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRU
ZXh0dXJlVGVzdCwgdGV4dHVyZU1vdmVkVG9OZXdNYW5hZ2VyKQogCiAgICAgdGV4dHVyZS0+c2V0
VGV4dHVyZU1hbmFnZXIoMCk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlck9uZS0+Y2xlYXJBbGxNZW1v
cnkoYWxsb2NhdG9yKCkpOworICAgIHsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7CisgICAgICAgIHRleHR1cmVNYW5hZ2VyT25lLT5jbGVhckFsbE1lbW9yeShy
ZXNvdXJjZVByb3ZpZGVyKCkpOworICAgIH0KICAgICB0ZXh0dXJlTWFuYWdlck9uZS5jbGVhcigp
OwogCiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgp
KTsKQEAgLTMxOCw3ICszNDYsOCBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0
ZXh0dXJlTW92ZWRUb05ld01hbmFnZXIpCiAgICAgRVhQRUNUX1RSVUUodGV4dHVyZS0+Y2FuQWNx
dWlyZUJhY2tpbmdUZXh0dXJlKCkpOwogICAgIEVYUEVDVF9UUlVFKHRleHR1cmUtPmhhdmVCYWNr
aW5nVGV4dHVyZSgpKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyVHdvLT5jbGVhckFsbE1lbW9yeShh
bGxvY2F0b3IoKSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Cisg
ICAgdGV4dHVyZU1hbmFnZXJUd28tPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7
CiB9CiAKIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1cmZhY2VzUmVk
dWNlTWVtb3J5QXZhaWxhYmxlT3V0c2lkZVJvb3RTdXJmYWNlKQpAQCAtMzYzLDcgKzM5Miw4IEBA
IFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRlclN1cmZhY2VzUmVkdWNlTWVt
b3J5QXZhaWxhYmxlT3V0c2lkZVJvb3RTCiAgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6
ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclNlbGZNYW5hZ2VkVGV4dHVyZXMoKSk7CiAg
ICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFu
YWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyLT5j
bGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7CisgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNl
UHJvdmlkZXIoKSk7CiB9CiAKIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlbmRl
clN1cmZhY2VzUmVkdWNlTWVtb3J5QXZhaWxhYmxlRm9yUmVxdWVzdExhdGUpCkBAIC0zOTksNyAr
NDI5LDggQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNS
ZWR1Y2VNZW1vcnlBdmFpbGFibGVGb3JSZXF1ZXN0TGEKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNN
ZW1vcnlTaXplKDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yU2VsZk1hbmFnZWRUZXh0dXJl
cygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRl
eHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAgdGV4dHVyZU1h
bmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnko
cmVzb3VyY2VQcm92aWRlcigpKTsKIH0KIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVz
dCwgd2hlblJlbmRlclN1cmZhY2VOb3RBdmFpbGFibGVUZXh0dXJlc0Fsc29Ob3RBdmFpbGFibGUp
CkBAIC00MzgsNyArNDY5LDggQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgd2hl
blJlbmRlclN1cmZhY2VOb3RBdmFpbGFibGVUZXh0dXJlc0Fsc29Ob3RBdmEKICAgICBFWFBFQ1Rf
RVEodGV4dHVyZXNNZW1vcnlTaXplKDIpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5Rm9yU2VsZk1h
bmFnZWRUZXh0dXJlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVz
ZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0g
ICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICB0ZXh0dXJlTWFuYWdlci0+Y2xl
YXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCmlu
ZGV4IGUxZDlmYjM2NzdmNjA1NzFiZTBiYmZkMzg0MmIzMTMwOTA3NzRmMGQuLjQwOWU3NWRkNzAx
Mjk4MmYwOWNkYzMyNjliOTJmOTY5Y2UwNzJiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcApAQCAtNzUsMTEgKzc1LDExIEBAIHN0
YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+IG1ha2VMYXllcihDQ1RpbGVkTGF5ZXJJ
bXBsKiBwYXJlbnQsIGNvbnN0IFdlCiAgICAgbGF5ZXItPnNldEJvdW5kcyhsYXllclJlY3Quc2l6
ZSgpKTsKICAgICBsYXllci0+c2V0Q29udGVudEJvdW5kcyhsYXllclJlY3Quc2l6ZSgpKTsKIAot
ICAgIGludCB0ZXh0dXJlSWQgPSAxOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJ
ZCByZXNvdXJjZUlkID0gMTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbGVyLT5udW1UaWxl
c1goKTsgKytpKQogICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHRpbGVyLT5udW1UaWxlc1ko
KTsgKytqKSB7CiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVPcGFxdWVSZWN0ID0gb3BhcXVlID8g
dGlsZXItPnRpbGVCb3VuZHMoaSwgaikgOiBpbnRlcnNlY3Rpb24odGlsZXItPnRpbGVCb3VuZHMo
aSwgaiksIGxheWVyT3BhcXVlUmVjdCk7Ci0gICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQcm9w
ZXJ0aWVzKGksIGosIHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KHRleHR1cmVJZCsrKSwg
dGlsZU9wYXF1ZVJlY3QpOworICAgICAgICAgICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhp
LCBqLCByZXNvdXJjZUlkKyssIHRpbGVPcGFxdWVSZWN0KTsKICAgICAgICAgfQogCiAgICAgaWYg
KCFwYXJlbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NS
ZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
UmVzb3VyY2VQcm92aWRlclRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3MTY1ZTZjYTdmYzI1NDIxMmY5
ZGQyYjcxNWQ0YjRiMzM3NDJjOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwCkBAIC0wLDAgKzEsMzA2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1Jl
c291cmNlUHJvdmlkZXIuaCIKKworI2luY2x1ZGUgIkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3ND
b250ZXh0M0QuaCIKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgorI2luY2x1ZGUg
ImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OworCituYW1lc3BhY2UgeworCitjbGFzcyBSZXNvdXJjZVByb3ZpZGVyQ29udGV4
dCA6IHB1YmxpYyBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc093blB0cjxSZXNvdXJjZVByb3ZpZGVyQ29udGV4dD4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRQdHIobmV3IFJlc291cmNlUHJvdmlkZXJDb250ZXh0KEF0dHJpYnV0ZXMo
KSkpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmluZFRleHR1cmUoV0dDM0RlbnVtIHRhcmdldCwg
V2ViR0xJZCB0ZXh0dXJlKQorICAgIHsKKyAgICAgIEFTU0VSVCh0YXJnZXQgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQpOworICAgICAgQVNTRVJUKCF0ZXh0dXJlIHx8IG1fdGV4dHVy
ZXMuZmluZCh0ZXh0dXJlKSAhPSBtX3RleHR1cmVzLmVuZCgpKTsKKyAgICAgIG1fY3VycmVudFRl
eHR1cmUgPSB0ZXh0dXJlOworICAgIH0KKworICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVUZXh0
dXJlKCkKKyAgICB7CisgICAgICAgIFdlYkdMSWQgaWQgPSBDb21wb3NpdG9yRmFrZVdlYkdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKCk7CisgICAgICAgIG1fdGV4dHVyZXMuYWRkKGlk
LCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuIGlkOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVUZXh0dXJlKFdlYkdMSWQgaWQpCisgICAgeworICAgICAgICBUZXh0dXJlTWFwOjpp
dGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuZmluZChpZCk7CisgICAgICAgIEFTU0VSVChpdCAhPSBt
X3RleHR1cmVzLmVuZCgpKTsKKyAgICAgICAgbV90ZXh0dXJlcy5yZW1vdmUoaXQpOworICAgICAg
ICBpZiAobV9jdXJyZW50VGV4dHVyZSA9PSBpZCkKKyAgICAgICAgICAgIG1fY3VycmVudFRleHR1
cmUgPSAwOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB0ZXhTdG9yYWdlMkRFWFQoV0dDM0Rl
bnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWxzLCBXR0MzRHVpbnQgaW50ZXJuYWxmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXR0MzRGludCB3aWR0aCwgV0dDM0RpbnQg
aGVpZ2h0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmUpOworICAgICAg
ICBBU1NFUlQodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKTsKKyAgICAg
ICAgQVNTRVJUKGxldmVscyA9PSAxKTsKKyAgICAgICAgV0dDM0RlbnVtIGZvcm1hdCA9IEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBOworICAgICAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KSB7Cisg
ICAgICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpSR0JBOF9PRVM6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFeHRlbnNpb25zM0RDaHJvbWl1bTo6QkdSQThfRVhUOgorICAgICAgICAg
ICAgZm9ybWF0ID0gRXh0ZW5zaW9uczNEOjpCR1JBX0VYVDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KKyAgICAgICAgYWxsb2NhdGVUZXh0dXJlKEludFNpemUod2lkdGgsIGhlaWdodCksIGZv
cm1hdCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkQoV0dDM0RlbnVtIHRh
cmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgV0dDM0RzaXpl
aSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEaW50IGJvcmRlciwgV0dDM0RlbnVtIGZv
cm1hdCwgV0dDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUKHRhcmdldCA9PSBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCk7CisgICAgICAgIEFTU0VSVCghbGV2ZWwpOworICAg
ICAgICBBU1NFUlQoaW50ZXJuYWxmb3JtYXQgPT0gZm9ybWF0KTsKKyAgICAgICAgQVNTRVJUKCFi
b3JkZXIpOworICAgICAgICBBU1NFUlQodHlwZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfQllURSk7CisgICAgICAgIGFsbG9jYXRlVGV4dHVyZShJbnRTaXplKHdpZHRoLCBoZWlnaHQp
LCBmb3JtYXQpOworICAgICAgICBpZiAocGl4ZWxzKQorICAgICAgICAgICAgc2V0UGl4ZWxzKDAs
IDAsIHdpZHRoLCBoZWlnaHQsIHBpeGVscyk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHRl
eFN1YkltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEaW50IHhv
ZmZzZXQsIFdHQzNEaW50IHlvZmZzZXQsIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVp
Z2h0LCBXR0MzRGVudW0gZm9ybWF0LCBXR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxz
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmUpOworICAgICAgICBBU1NF
UlQodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKTsKKyAgICAgICAgQVNT
RVJUKCFsZXZlbCk7CisgICAgICAgIEFTU0VSVChtX3RleHR1cmVzLmdldChtX2N1cnJlbnRUZXh0
dXJlKSk7CisgICAgICAgIEFTU0VSVChtX3RleHR1cmVzLmdldChtX2N1cnJlbnRUZXh0dXJlKS0+
Zm9ybWF0ID09IGZvcm1hdCk7CisgICAgICAgIEFTU0VSVCh0eXBlID09IEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9CWVRFKTsKKyAgICAgICAgQVNTRVJUKHBpeGVscyk7CisgICAgICAgIHNl
dFBpeGVscyh4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBwaXhlbHMpOworICAgIH0K
KworICAgIHZvaWQgZ2V0UGl4ZWxzKGNvbnN0IEludFNpemUmIHNpemUsIFdHQzNEZW51bSBmb3Jt
YXQsIHVpbnQ4X3QqIHBpeGVscykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0
dXJlKTsKKyAgICAgICAgVGV4dHVyZSogdGV4dHVyZSA9IG1fdGV4dHVyZXMuZ2V0KG1fY3VycmVu
dFRleHR1cmUpOworICAgICAgICBBU1NFUlQodGV4dHVyZSk7CisgICAgICAgIEFTU0VSVCh0ZXh0
dXJlLT5zaXplID09IHNpemUpOworICAgICAgICBBU1NFUlQodGV4dHVyZS0+Zm9ybWF0ID09IGZv
cm1hdCk7CisgICAgICAgIG1lbWNweShwaXhlbHMsIHRleHR1cmUtPmRhdGEuZ2V0KCksIHRleHR1
cmVTaXplKHNpemUsIGZvcm1hdCkpOworICAgIH0KKworICAgIGludCB0ZXh0dXJlQ291bnQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdGV4dHVyZXMuc2l6ZSgpOworICAgIH0KKworICAgIHN0
YXRpYyBzaXplX3QgdGV4dHVyZVNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgV0dDM0RlbnVtIGZv
cm1hdCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBjb21wb25lbnRzUGVyUGl4ZWwgPSA0
OworICAgICAgICB1bnNpZ25lZCBpbnQgYnl0ZXNQZXJDb21wb25lbnQgPSAxOworICAgICAgICBH
cmFwaGljc0NvbnRleHQzRDo6Y29tcHV0ZUZvcm1hdEFuZFR5cGVQYXJhbWV0ZXJzKGZvcm1hdCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsICZjb21wb25lbnRzUGVyUGl4ZWwsICZi
eXRlc1BlckNvbXBvbmVudCk7CisgICAgICAgIHJldHVybiBzaXplLndpZHRoKCkgKiBzaXplLmhl
aWdodCgpICogY29tcG9uZW50c1BlclBpeGVsICogYnl0ZXNQZXJDb21wb25lbnQ7CisgICAgfQor
Citwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgUmVzb3VyY2VQcm92aWRlckNvbnRleHQoY29uc3Qg
QXR0cmlidXRlcyYgYXR0cnMpCisgICAgICAgIDogQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0Nv
bnRleHQzRChhdHRycykKKyAgICAgICAgLCBtX2N1cnJlbnRUZXh0dXJlKDApCisgICAgeyB9CisK
K3ByaXZhdGU6CisgICAgc3RydWN0IFRleHR1cmUgeworICAgICAgICBUZXh0dXJlKGNvbnN0IElu
dFNpemUmIHNpemVfLCBXR0MzRGVudW0gZm9ybWF0XykKKyAgICAgICAgICAgIDogc2l6ZShzaXpl
XykKKyAgICAgICAgICAgICwgZm9ybWF0KGZvcm1hdF8pCisgICAgICAgICAgICAsIGRhdGEoYWRv
cHRBcnJheVB0cihuZXcgdWludDhfdFt0ZXh0dXJlU2l6ZShzaXplLCBmb3JtYXQpXSkpCisgICAg
ICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIEludFNpemUgc2l6ZTsKKyAgICAgICAgV0dDM0Rl
bnVtIGZvcm1hdDsKKyAgICAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gZGF0YTsKKyAgICB9Owor
CisgICAgdm9pZCBhbGxvY2F0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgV0dDM0RlbnVt
IGZvcm1hdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlKTsKKyAgICAg
ICAgbV90ZXh0dXJlcy5zZXQobV9jdXJyZW50VGV4dHVyZSwgYWRvcHRQdHIobmV3IFRleHR1cmUo
c2l6ZSwgZm9ybWF0KSkpOworICAgIH0KKworICAgIHZvaWQgc2V0UGl4ZWxzKGludCB4b2Zmc2V0
LCBpbnQgeW9mZnNldCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCB2b2lkKiBwaXhlbHMp
CisgICAgeworICAgICAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZSk7CisgICAgICAgIFRleHR1
cmUqIHRleHR1cmUgPSBtX3RleHR1cmVzLmdldChtX2N1cnJlbnRUZXh0dXJlKTsKKyAgICAgICAg
QVNTRVJUKHRleHR1cmUpOworICAgICAgICBBU1NFUlQoeG9mZnNldCA+PSAwICYmIHhvZmZzZXQr
d2lkdGggPD0gdGV4dHVyZS0+c2l6ZS53aWR0aCgpKTsKKyAgICAgICAgQVNTRVJUKHlvZmZzZXQg
Pj0gMCAmJiB5b2Zmc2V0K2hlaWdodCA8PSB0ZXh0dXJlLT5zaXplLmhlaWdodCgpKTsKKyAgICAg
ICAgQVNTRVJUKHBpeGVscyk7CisgICAgICAgIHNpemVfdCBpblBpdGNoID0gdGV4dHVyZVNpemUo
SW50U2l6ZSh3aWR0aCwgMSksIHRleHR1cmUtPmZvcm1hdCk7CisgICAgICAgIHNpemVfdCBvdXRQ
aXRjaCA9IHRleHR1cmVTaXplKEludFNpemUodGV4dHVyZS0+c2l6ZS53aWR0aCgpLCAxKSwgdGV4
dHVyZS0+Zm9ybWF0KTsKKyAgICAgICAgdWludDhfdCogZGVzdCA9IHRleHR1cmUtPmRhdGEuZ2V0
KCkgKyB5b2Zmc2V0ICogb3V0UGl0Y2ggKyB0ZXh0dXJlU2l6ZShJbnRTaXplKHhvZmZzZXQsIDEp
LCB0ZXh0dXJlLT5mb3JtYXQpOworICAgICAgICBjb25zdCB1aW50OF90KiBzcmMgPSBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBoZWlnaHQ7ICsraSkgeworICAgICAgICAgICAgbWVtY3B5KGRlc3QsIHNyYywgaW5QaXRjaCk7
CisgICAgICAgICAgICBkZXN0ICs9IG91dFBpdGNoOworICAgICAgICAgICAgc3JjICs9IGluUGl0
Y2g7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViR0xJZCwgT3du
UHRyPFRleHR1cmU+ID4gVGV4dHVyZU1hcDsKKyAgICBXZWJHTElkIG1fY3VycmVudFRleHR1cmU7
CisgICAgVGV4dHVyZU1hcCBtX3RleHR1cmVzOworfTsKKworY2xhc3MgQ0NSZXNvdXJjZVByb3Zp
ZGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ1Jlc291cmNl
UHJvdmlkZXJUZXN0KCkKKyAgICAgICAgOiBtX2NvbnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZTNEKFJlc291cmNlUHJvdmlkZXJDb250ZXh0OjpjcmVhdGUoKSkpCisgICAgICAgICwgbV9y
ZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQo
KSkpCisgICAgeworICAgIH0KKworICAgIFJlc291cmNlUHJvdmlkZXJDb250ZXh0KiBjb250ZXh0
KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzb3VyY2VQcm92aWRlckNvbnRleHQqPihtX2NvbnRl
eHQtPmNvbnRleHQzRCgpKTsgfQorCisgICAgdm9pZCBnZXRSZXNvdXJjZVBpeGVscyhDQ1Jlc291
cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQsIGNvbnN0IEludFNpemUmIHNpemUsIFdHQzNEZW51
bSBmb3JtYXQsIHVpbnQ4X3QqIHBpeGVscykKKyAgICB7CisgICAgICAgIENDU2NvcGVkTG9ja1Jl
c291cmNlRm9yUmVhZCBsb2NrKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgaWQpOworICAgICAg
ICBBU1NFUlRfTkUoMFUsIGxvY2sudGV4dHVyZUlkKCkpOworICAgICAgICBjb250ZXh0KCktPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBsb2NrLnRleHR1cmVJZCgp
KTsKKyAgICAgICAgY29udGV4dCgpLT5nZXRQaXhlbHMoc2l6ZSwgZm9ybWF0LCBwaXhlbHMpOwor
ICAgIH0KKworcHJvdGVjdGVkOgorICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhy
ZWFkOworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0
cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKK307CisKK1RFU1RfRihD
Q1Jlc291cmNlUHJvdmlkZXJUZXN0LCBCYXNpYykKK3sKKyAgICBJbnRTaXplIHNpemUoMSwgMSk7
CisgICAgV0dDM0RlbnVtIGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOworICAgIGlu
dCBwb29sID0gMTsKKyAgICBzaXplX3QgcGl4ZWxTaXplID0gUmVzb3VyY2VQcm92aWRlckNvbnRl
eHQ6OnRleHR1cmVTaXplKHNpemUsIGZvcm1hdCk7CisgICAgQVNTRVJUX0VRKDRVLCBwaXhlbFNp
emUpOworCisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkID0gbV9yZXNvdXJj
ZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShwb29sLCBzaXplLCBmb3JtYXQsIENDUmVzb3VyY2VQ
cm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKKyAgICBFWFBFQ1RfRVEoMSwgY29udGV4dCgpLT50
ZXh0dXJlQ291bnQoKSk7CisKKyAgICB1aW50OF90IGRhdGFbNF0gPSB7MSwgMiwgMywgNH07Cisg
ICAgSW50UmVjdCByZWN0KEludFBvaW50KCksIHNpemUpOworICAgIG1fcmVzb3VyY2VQcm92aWRl
ci0+dXBsb2FkKGlkLCBkYXRhLCByZWN0LCByZWN0LCByZWN0KTsKKworICAgIHVpbnQ4X3QgcmVz
dWx0WzRdID0gezB9OworICAgIGdldFJlc291cmNlUGl4ZWxzKGlkLCBzaXplLCBmb3JtYXQsIHJl
c3VsdCk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChkYXRhLCByZXN1bHQsIHBpeGVsU2l6ZSkp
OworCisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShpZCk7CisgICAgRVhQ
RUNUX0VRKDAsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworfQorCitURVNUX0YoQ0NSZXNv
dXJjZVByb3ZpZGVyVGVzdCwgRGVsZXRlT3duZWRSZXNvdXJjZXMpCit7CisgICAgSW50U2l6ZSBz
aXplKDEsIDEpOworICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QTsKKyAgICBpbnQgcG9vbCA9IDE7CisKKyAgICBjb25zdCBpbnQgY291bnQgPSAzOworICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZHNbY291bnRdID0gezB9OworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgaWRzW2ldID0gbV9yZXNvdXJjZVBy
b3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShwb29sLCBzaXplLCBmb3JtYXQsIENDUmVzb3VyY2VQcm92
aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKKyAgICBFWFBFQ1RfRVEoMywgY29udGV4dCgpLT50ZXh0
dXJlQ291bnQoKSk7CisKKyAgICBtX3Jlc291cmNlUHJvdmlkZXItPmRlbGV0ZU93bmVkUmVzb3Vy
Y2VzKHBvb2wrMSk7CisgICAgRVhQRUNUX0VRKDMsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkp
OworCisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVPd25lZFJlc291cmNlcyhwb29sKTsK
KyAgICBFWFBFQ1RfRVEoMCwgY29udGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7Cit9CisKK1RFU1Rf
RihDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCBVcGxvYWQpCit7CisgICAgSW50U2l6ZSBzaXplKDIs
IDIpOworICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKKyAg
ICBpbnQgcG9vbCA9IDE7CisgICAgc2l6ZV90IHBpeGVsU2l6ZSA9IFJlc291cmNlUHJvdmlkZXJD
b250ZXh0Ojp0ZXh0dXJlU2l6ZShzaXplLCBmb3JtYXQpOworICAgIEFTU0VSVF9FUSgxNlUsIHBp
eGVsU2l6ZSk7CisKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQgPSBtX3Jl
c291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlKHBvb2wsIHNpemUsIGZvcm1hdCwgQ0NSZXNv
dXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOworCisgICAgdWludDhfdCBpbWFnZVsxNl0g
PSB7MH07CisgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgc2l6ZSk7CisgICAgbV9y
ZXNvdXJjZVByb3ZpZGVyLT51cGxvYWQoaWQsIGltYWdlLCBpbWFnZVJlY3QsIGltYWdlUmVjdCwg
aW1hZ2VSZWN0KTsKKworICAgIGZvciAodWludDhfdCBpID0gMCA7IGkgPCBwaXhlbFNpemU7ICsr
aSkKKyAgICAgICAgaW1hZ2VbaV0gPSBpOworCisgICAgdWludDhfdCByZXN1bHRbMTZdID0gezB9
OworICAgIHsKKyAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0KDAsIDAsIDEsIDEpOworICAgICAg
ICBJbnRSZWN0IGRlc3RSZWN0KDAsIDAsIDEsIDEpOworICAgICAgICBtX3Jlc291cmNlUHJvdmlk
ZXItPnVwbG9hZChpZCwgaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwor
CisgICAgICAgIHVpbnQ4X3QgZXhwZWN0ZWRbMTZdID0gezAsIDEsIDIsIDMsICAgMCwgMCwgMCwg
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgICAwLCAwLCAw
LCAwfTsKKyAgICAgICAgZ2V0UmVzb3VyY2VQaXhlbHMoaWQsIHNpemUsIGZvcm1hdCwgcmVzdWx0
KTsKKyAgICAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZCwgcmVzdWx0LCBwaXhlbFNp
emUpKTsKKyAgICB9CisgICAgeworICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QoMCwgMCwgMSwg
MSk7CisgICAgICAgIEludFJlY3QgZGVzdFJlY3QoMSwgMSwgMSwgMSk7CisgICAgICAgIG1fcmVz
b3VyY2VQcm92aWRlci0+dXBsb2FkKGlkLCBpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7CisKKyAgICAgICAgdWludDhfdCBleHBlY3RlZFsxNl0gPSB7MCwgMSwgMiwgMywg
ICAwLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAw
LCAgIDAsIDEsIDIsIDN9OworICAgICAgICBnZXRSZXNvdXJjZVBpeGVscyhpZCwgc2l6ZSwgZm9y
bWF0LCByZXN1bHQpOworICAgICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkLCByZXN1
bHQsIHBpeGVsU2l6ZSkpOworICAgIH0KKyAgICB7CisgICAgICAgIEludFJlY3Qgc291cmNlUmVj
dCgxLCAwLCAxLCAxKTsKKyAgICAgICAgSW50UmVjdCBkZXN0UmVjdCgwLCAxLCAxLCAxKTsKKyAg
ICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51cGxvYWQoaWQsIGltYWdlLCBpbWFnZVJlY3QsIHNv
dXJjZVJlY3QsIGRlc3RSZWN0KTsKKworICAgICAgICB1aW50OF90IGV4cGVjdGVkWzE2XSA9IHsw
LCAxLCAyLCAzLCAgIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQsIDUsIDYsIDcsICAgMCwgMSwgMiwgM307CisgICAgICAgIGdldFJlc291cmNlUGl4ZWxzKGlk
LCBzaXplLCBmb3JtYXQsIHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhw
ZWN0ZWQsIHJlc3VsdCwgcGl4ZWxTaXplKSk7CisgICAgfQorCisgICAgbV9yZXNvdXJjZVByb3Zp
ZGVyLT5kZWxldGVSZXNvdXJjZShpZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NvcGVkVGV4dHVyZVRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Njb3BlZFRleHR1cmVUZXN0LmNwcAppbmRl
eCA0ZDQ2NGVhNTE0MzhlYTgzZjcwMmU5ZjU2NjMwZjVkYjFmN2I2NmZhLi41MDVhZTk2MjVlY2Fj
OWQ0ODdiMTY1ZjJhYjU5NzUwZTc0ODk0YzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDU2NvcGVkVGV4dHVyZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTY29wZWRUZXh0dXJlVGVzdC5jcHAKQEAgLTI3LDcgKzI3LDEwIEBA
CiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUZXh0dXJlLmgiCiAKICNpbmNsdWRlICJDQ1RpbGVkTGF5
ZXJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiRmFrZUNDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmVyLmgiCisj
aW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkCiAKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC0zOSw4ICs0MiwxMCBA
QCBuYW1lc3BhY2UgewogCiBURVNUKENDU2NvcGVkVGV4dHVyZVRlc3QsIE5ld1Njb3BlZFRleHR1
cmUpCiB7Ci0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgYWxsb2NhdG9yOwotICAgIE93blB0cjxD
Q1Njb3BlZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZSgmYWxsb2Nh
dG9yKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQoY3JlYXRlRmFrZUND
R3JhcGhpY3NDb250ZXh0KCkpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhy
ZWFkOworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IHJlc291cmNlUHJvdmlkZXIoQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSkpOworICAgIE93blB0cjxDQ1Nj
b3BlZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShyZXNvdXJjZVBy
b3ZpZGVyLmdldCgpKTsKIAogICAgIC8vIE5ldyBzY29wZWQgdGV4dHVyZXMgZG8gbm90IGhvbGQg
YSB0ZXh0dXJlIHlldC4KICAgICBFWFBFQ1RfRVEoMHUsIHRleHR1cmUtPmlkKCkpOwpAQCAtNTIs
OSArNTcsMTEgQEAgVEVTVChDQ1Njb3BlZFRleHR1cmVUZXN0LCBOZXdTY29wZWRUZXh0dXJlKQog
CiBURVNUKENDU2NvcGVkVGV4dHVyZVRlc3QsIENyZWF0ZVNjb3BlZFRleHR1cmUpCiB7Ci0gICAg
RmFrZVRleHR1cmVBbGxvY2F0b3IgYWxsb2NhdG9yOwotICAgIE93blB0cjxDQ1Njb3BlZFRleHR1
cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZSgmYWxsb2NhdG9yKTsKLSAgICB0
ZXh0dXJlLT5hbGxvY2F0ZShJbnRTaXplKDMwLCAzMCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JB
KTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQoY3JlYXRlRmFrZUNDR3Jh
cGhpY3NDb250ZXh0KCkpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFk
OworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IHJlc291cmNlUHJvdmlkZXIoQ0NSZXNv
dXJjZVByb3ZpZGVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSkpOworICAgIE93blB0cjxDQ1Njb3Bl
ZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShyZXNvdXJjZVByb3Zp
ZGVyLmdldCgpKTsKKyAgICB0ZXh0dXJlLT5hbGxvY2F0ZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwg
SW50U2l6ZSgzMCwgMzApLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOwogCiAgICAgLy8gVGhlIHRleHR1cmUgaGFzIGFuIGFsbG9j
YXRlZCBieXRlLXNpemUgbm93LgogICAgIHNpemVfdCBleHBlY3RlZEJ5dGVzID0gMzAgKiAzMCAq
IDQ7CkBAIC02NSw5NSArNzIsNTggQEAgVEVTVChDQ1Njb3BlZFRleHR1cmVUZXN0LCBDcmVhdGVT
Y29wZWRUZXh0dXJlKQogICAgIEVYUEVDVF9FUShJbnRTaXplKDMwLCAzMCksIHRleHR1cmUtPnNp
emUoKSk7CiB9CiAKLS8vIEZha2UgVGV4dHVyZUFsbG9jYXRvciB0aGF0IHRyYWNrcyB0aGUgbnVt
YmVyIG9mIHRleHR1cmVzIGluIHVzZS4KLWNsYXNzIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvciA6
IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKLXB1YmxpYzoKLSAgICBUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IoKQotICAgICAgICA6IG1fbmV4dFRleHR1cmVJZCgxKQotICAgICAgICAsIG1fbnVt
VGV4dHVyZXMoMCkKLSAgICB7IH0KLQotICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVy
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgR0MzRGVudW0pIE9WRVJSSURFCi0gICAgewotICAg
ICAgICB1bnNpZ25lZCBpZCA9IG1fbmV4dFRleHR1cmVJZDsKLSAgICAgICAgKyttX25leHRUZXh0
dXJlSWQ7Ci0KLSAgICAgICAgbV90ZXh0dXJlcy5zZXQoaWQsIHRydWUpOwotICAgICAgICArK21f
bnVtVGV4dHVyZXM7Ci0gICAgICAgIHJldHVybiBpZDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCBpZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEdD
M0RlbnVtKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgaWYgKCFtX3RleHR1cmVzLmdldChpZCkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV90ZXh0dXJlcy5zZXQoaWQsIGZhbHNl
KTsKLSAgICAgICAgLS1tX251bVRleHR1cmVzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVBbGxUZXh0dXJlcygpIE9WRVJSSURFCi0gICAgewotICAgICAgICBtX3RleHR1cmVzLmNs
ZWFyKCk7Ci0gICAgICAgIG1fbnVtVGV4dHVyZXMgPSAwOwotICAgIH0KLQotICAgIHVuc2lnbmVk
IG51bVRleHR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1UZXh0dXJlczsgfQotCi1wcml2YXRl
OgotICAgIHVuc2lnbmVkIG1fbmV4dFRleHR1cmVJZDsKLSAgICBIYXNoTWFwPHVuc2lnbmVkLCBi
b29sPiBtX3RleHR1cmVzOwotICAgIHVuc2lnbmVkIG1fbnVtVGV4dHVyZXM7Ci19OwotCiBURVNU
KENDU2NvcGVkVGV4dHVyZVRlc3QsIFNjb3BlZFRleHR1cmVJc0RlbGV0ZWQpCiB7Ci0gICAgVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yIGFsbG9jYXRvcjsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNvbnRleHQoY3JlYXRlRmFrZUNDR3JhcGhpY3NDb250ZXh0KCkpOworICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIE93blB0cjxDQ1Jlc291cmNlUHJv
dmlkZXI+IHJlc291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY29udGV4
dC5nZXQoKSkpOwogCiAgICAgewotICAgICAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0
dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUoJmFsbG9jYXRvcik7CisgICAgICAgIE93blB0
cjxDQ1Njb3BlZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShyZXNv
dXJjZVByb3ZpZGVyLmdldCgpKTsKIAotICAgICAgICBFWFBFQ1RfRVEoMHUsIGFsbG9jYXRvci5u
dW1UZXh0dXJlcygpKTsKLSAgICAgICAgdGV4dHVyZS0+YWxsb2NhdGUoSW50U2l6ZSgzMCwgMzAp
LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgcmVzb3Vy
Y2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOworICAgICAgICB0ZXh0dXJlLT5hbGxvY2F0ZShD
Q1JlbmRlcmVyOjpJbXBsUG9vbCwgSW50U2l6ZSgzMCwgMzApLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOwogICAgICAgICBFWFBF
Q1RfTFQoMHUsIHRleHR1cmUtPmlkKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIGFsbG9jYXRv
ci5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCByZXNvdXJjZVByb3ZpZGVy
LT5udW1SZXNvdXJjZXMoKSk7CiAgICAgfQogCi0gICAgRVhQRUNUX0VRKDB1LCBhbGxvY2F0b3Iu
bnVtVGV4dHVyZXMoKSk7CisgICAgRVhQRUNUX0VRKDB1LCByZXNvdXJjZVByb3ZpZGVyLT5udW1S
ZXNvdXJjZXMoKSk7CiAKICAgICB7Ci0gICAgICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IHRl
eHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZSgmYWxsb2NhdG9yKTsKLSAgICAgICAgRVhQ
RUNUX0VRKDB1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7Ci0gICAgICAgIHRleHR1cmUtPmFs
bG9jYXRlKEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAg
ICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVh
dGUocmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgcmVzb3Vy
Y2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOworICAgICAgICB0ZXh0dXJlLT5hbGxvY2F0ZShD
Q1JlbmRlcmVyOjpJbXBsUG9vbCwgSW50U2l6ZSgzMCwgMzApLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOwogICAgICAgICBFWFBF
Q1RfTFQoMHUsIHRleHR1cmUtPmlkKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIGFsbG9jYXRv
ci5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCByZXNvdXJjZVByb3ZpZGVy
LT5udW1SZXNvdXJjZXMoKSk7CiAgICAgICAgIHRleHR1cmUtPmZyZWUoKTsKLSAgICAgICAgRVhQ
RUNUX0VRKDB1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgw
dSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOwogICAgIH0KIH0KIAogVEVTVChD
Q1Njb3BlZFRleHR1cmVUZXN0LCBMZWFrU2NvcGVkVGV4dHVyZSkKIHsKLSAgICBUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3IgYWxsb2NhdG9yOworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4g
Y29udGV4dChjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRleHQoKSk7CisgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4g
cmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShjb250ZXh0LmdldCgp
KSk7CiAKICAgICB7Ci0gICAgICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IHRleHR1cmUgPSBD
Q1Njb3BlZFRleHR1cmU6OmNyZWF0ZSgmYWxsb2NhdG9yKTsKKyAgICAgICAgT3duUHRyPENDU2Nv
cGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKHJlc291cmNlUHJv
dmlkZXIuZ2V0KCkpOwogCi0gICAgICAgIEVYUEVDVF9FUSgwdSwgYWxsb2NhdG9yLm51bVRleHR1
cmVzKCkpOwotICAgICAgICB0ZXh0dXJlLT5hbGxvY2F0ZShJbnRTaXplKDMwLCAzMCksIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgRVhQRUNUX0VRKDB1LCByZXNvdXJjZVByb3Zp
ZGVyLT5udW1SZXNvdXJjZXMoKSk7CisgICAgICAgIHRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVy
ZXI6OkltcGxQb29sLCBJbnRTaXplKDMwLCAzMCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBD
Q1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7CiAgICAgICAgIEVYUEVDVF9MVCgw
dSwgdGV4dHVyZS0+aWQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgYWxsb2NhdG9yLm51bVRl
eHR1cmVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIHJlc291cmNlUHJvdmlkZXItPm51bVJl
c291cmNlcygpKTsKIAogICAgICAgICB0ZXh0dXJlLT5sZWFrKCk7CiAgICAgICAgIEVYUEVDVF9F
USgwdSwgdGV4dHVyZS0+aWQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgYWxsb2NhdG9yLm51
bVRleHR1cmVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIHJlc291cmNlUHJvdmlkZXItPm51
bVJlc291cmNlcygpKTsKIAogICAgICAgICB0ZXh0dXJlLT5mcmVlKCk7CiAgICAgICAgIEVYUEVD
VF9FUSgwdSwgdGV4dHVyZS0+aWQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgYWxsb2NhdG9y
Lm51bVRleHR1cmVzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIHJlc291cmNlUHJvdmlkZXIt
Pm51bVJlc291cmNlcygpKTsKICAgICB9CiAKLSAgICBFWFBFQ1RfRVEoMXUsIGFsbG9jYXRvci5u
dW1UZXh0dXJlcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIHJlc291cmNlUHJvdmlkZXItPm51bVJl
c291cmNlcygpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RleHR1cmVVcGRhdGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcAppbmRleCBkMGJiZDM2ZjQ3OGVjNTg4NDJlM2M1
ZTFmYzRmOTBhMTc1ZDQzY2I5Li5iN2EyNmRmMmZkY2JmNTkxNWYwNjI2YjY4ZGVjZTdiMDFjNDYz
MWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGV4dHVyZVVw
ZGF0ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGV4dHVy
ZVVwZGF0ZXJUZXN0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZha2VXZWJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKKyNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgiIC8vIEZvciBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKICNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJUaHJlYWQuaCIKIAogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC02MywxMyArNjQs
MTIgQEAgY2xhc3MgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdCA6IHB1YmxpYyBGYWtlVGV4
dHVyZVVwbG9hZGVyIHsKIHB1YmxpYzoKICAgICBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0
KENDVGV4dHVyZVVwZGF0ZXJUZXN0ICp0ZXN0KSA6IG1fdGVzdCh0ZXN0KSB7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2Fkcygp
OwotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250
ZXh0KiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJD
b3JlOjpUZXh0dXJlQWxsb2NhdG9yKiwKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpDQ1Jlc291
cmNlUHJvdmlkZXIqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNv
cmU6OkludFJlY3Qgc291cmNlUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RSZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERTsKIAogcHJp
dmF0ZToKICAgICBDQ1RleHR1cmVVcGRhdGVyVGVzdCogbV90ZXN0OwpAQCAtNzksNyArNzksNyBA
QCBwcml2YXRlOgogY2xhc3MgVGV4dHVyZUZvclVwbG9hZFRlc3QgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiBwdWJsaWM6CiAgICAgVGV4dHVyZUZvclVwbG9hZFRlc3Qo
KSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUoYWRvcHRQdHI8Q0NQcmlvcml0aXplZFRl
eHR1cmU+KDApKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29u
dGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NS
ZXNvdXJjZVByb3ZpZGVyKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpIHsgfQogfTsKIAogCkBAIC0xNjUsNiArMTY1LDggQEAgcHJvdGVjdGVkOgog
CiAgICAgICAgIG1fY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCgKICAgICAg
ICAgICAgICAgICAgICAgYWRvcHRQdHIobmV3IFdlYkdyYXBoaWNzQ29udGV4dDNERm9yVXBsb2Fk
VGVzdCh0aGlzKSkpOworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKKyAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyID0gQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVh
dGUobV9jb250ZXh0LmdldCgpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24o
KQpAQCAtMjAwLDkgKzIwMiw5IEBAIHByb3RlY3RlZDoKIHByb3RlY3RlZDoKICAgICAvLyBDbGFz
c2VzIHJlcXVpcmVkIHRvIGludGVyYWN0IGFuZCB0ZXN0IHRoZSBDQ1RleHR1cmVVcGRhdGVyCiAg
ICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgT3duUHRyPENDUmVz
b3VyY2VQcm92aWRlcj4gbV9yZXNvdXJjZVByb3ZpZGVyOwogICAgIENDVGV4dHVyZVVwZGF0ZXIg
bV91cGRhdGVyOwogICAgIFRleHR1cmVGb3JVcGxvYWRUZXN0IG1fdGV4dHVyZTsKLSAgICBGYWtl
VGV4dHVyZUFsbG9jYXRvciBtX2FsbG9jYXRvcjsKICAgICBGYWtlVGV4dHVyZUNvcGllciBtX2Nv
cGllcjsKICAgICBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0IG1fdXBsb2FkZXI7CiAKQEAg
LTIzOSwxMSArMjQxLDEwIEBAIHZvaWQgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdDo6ZW5k
VXBsb2FkcygpCiAgICAgbV90ZXN0LT5vbkVuZFVwbG9hZHMoKTsKIH0KIAotdm9pZCBUZXh0dXJl
VXBsb2FkZXJGb3JVcGxvYWRUZXN0Ojp1cGxvYWRUZXh0dXJlKFdlYkNvcmU6OkNDR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OlRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QgZGVzdFJlY3Qp
Cit2b2lkIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3Q6OnVwbG9hZFRleHR1cmUoV2ViQ29y
ZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpDQ1Jlc291cmNlUHJv
dmlkZXIqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RS
ZWN0KQogewogICAgIG1fdGVzdC0+b25VcGxvYWQoKTsKIH0KQEAgLTI1NCw3ICsyNTUsNyBAQCBU
RVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIFplcm9VcGxvYWRzKQogewogICAgIGFwcGVuZEZ1
bGxVcGxvYWRzVG9VcGRhdGVyKDApOwogICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVy
KDApOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3Is
ICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKyAg
ICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAm
bV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwogCiAgICAgRVhQRUNUX0VR
KDAsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9udW1FbmRVcGxvYWRz
KTsKQEAgLTI2OCw3ICsyNjksOCBAQCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE9uZUZ1
bGxVcGxvYWQpCiB7CiAgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoMSk7CiAgICAgYXBw
ZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIoMCk7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX2Nv
bnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3Rh
bFVwbG9hZENvdW50RXhwZWN0ZWQpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOworICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAm
bV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CiAKICAg
ICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgxLCBtX251
bUVuZFVwbG9hZHMpOwpAQCAtMjgwLDcgKzI4Miw4IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVy
VGVzdCwgT25lUGFydGlhbFVwbG9hZCkKIHsKICAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRl
cigwKTsKICAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcigxKTsKLSAgICBtX3VwZGF0
ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3Vw
bG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJv
dmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4
cGVjdGVkKTsKIAogICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CiAgICAgRVhQ
RUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC0yOTIsNyArMjk1LDggQEAgVEVTVF9GKEND
VGV4dHVyZVVwZGF0ZXJUZXN0LCBPbmVGdWxsT25lUGFydGlhbFVwbG9hZCkKIHsKICAgICBhcHBl
bmRGdWxsVXBsb2Fkc1RvVXBkYXRlcigxKTsKICAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBk
YXRlcigxKTsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2Nh
dG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7
CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgbV91cGRhdGVy
LnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIs
IG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKIAogICAgIC8vIFdlIGV4cGVjdCB0aGUgZnVs
bCB1cGxvYWRzIHRvIGJlIGZvbGxvd2VkIGJ5IGEgZmx1c2gKICAgICAvLyBiZWZvcmUgdGhlIHBh
cnRpYWwgdXBsb2FkcyBiZWdpbi4KQEAgLTMxNSw3ICszMTksOCBAQCBURVNUX0YoQ0NUZXh0dXJl
VXBkYXRlclRlc3QsIE1hbnlGdWxsVXBsb2Fkc05vUmVtYWluZGVyKQogewogICAgIGFwcGVuZEZ1
bGxVcGxvYWRzVG9VcGRhdGVyKGZ1bGxOb1JlbWFpbmRlckNvdW50KTsKICAgICBhcHBlbmRQYXJ0
aWFsVXBsb2Fkc1RvVXBkYXRlcigwKTsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5n
ZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2Fk
Q291bnRFeHBlY3RlZCk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
CisgICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGll
ciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKIAogICAgIEVYUEVD
VF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBs
b2Fkcyk7CkBAIC0zMjcsNyArMzMyLDggQEAgVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBN
YW55UGFydGlhbFVwbG9hZHNOb1JlbWFpbmRlcikKIHsKICAgICBhcHBlbmRGdWxsVXBsb2Fkc1Rv
VXBkYXRlcigwKTsKICAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihwYXJ0aWFsTm9S
ZW1haW5kZXJDb3VudCk7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQuZ2V0KCksICZt
X2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhw
ZWN0ZWQpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIG1f
dXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3Vw
bG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CiAKICAgICBFWFBFQ1RfRVEoMSwg
bV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwpA
QCAtMzM5LDcgKzM0NSw4IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgTWFueUZ1bGxN
YW55UGFydGlhbFVwbG9hZHNOb1JlbWFpbmRlcikKIHsKICAgICBhcHBlbmRGdWxsVXBsb2Fkc1Rv
VXBkYXRlcihmdWxsTm9SZW1haW5kZXJDb3VudCk7CiAgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNU
b1VwZGF0ZXIocGFydGlhbE5vUmVtYWluZGVyQ291bnQpOwotICAgIG1fdXBkYXRlci51cGRhdGUo
bV9jb250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1f
dG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQo
KSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwog
CiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1RfRVEoMSwg
bV9udW1FbmRVcGxvYWRzKTsKQEAgLTM2MSw3ICszNjgsOCBAQCBURVNUX0YoQ0NUZXh0dXJlVXBk
YXRlclRlc3QsIE1hbnlGdWxsQW5kUGFydGlhbE1pblJlbWFpbmRlcikKIHsKICAgICBhcHBlbmRG
dWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWluUmVtYWluZGVyQ291bnQpOwogICAgIGFwcGVuZFBh
cnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNaW5SZW1haW5kZXJDb3VudCk7Ci0gICAgbV91
cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAm
bV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJj
ZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291
bnRFeHBlY3RlZCk7CiAKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwogICAg
IEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwpAQCAtMzczLDcgKzM4MSw4IEBAIFRFU1Rf
RihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgTWFueUZ1bGxBbmRQYXJ0aWFsVXBsb2Fkc01heFJlbWFp
bmRlcikKIHsKICAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWF4UmVtYWluZGVy
Q291bnQpOwogICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNYXhSZW1h
aW5kZXJDb3VudCk7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQuZ2V0KCksICZtX2Fs
bG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0
ZWQpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIG1fdXBk
YXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9h
ZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CiAKICAgICBFWFBFQ1RfRVEoMSwgbV9u
dW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwpAQCAt
Mzg1LDcgKzM5NCw4IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgTWFueUZ1bGxNaW5S
ZW1haW5kZXJNYW55UGFydGlhbE1heFJlbWFpbmRlcikKIHsKICAgICBhcHBlbmRGdWxsVXBsb2Fk
c1RvVXBkYXRlcihmdWxsTWluUmVtYWluZGVyQ291bnQpOwogICAgIGFwcGVuZFBhcnRpYWxVcGxv
YWRzVG9VcGRhdGVyKHBhcnRpYWxNYXhSZW1haW5kZXJDb3VudCk7Ci0gICAgbV91cGRhdGVyLnVw
ZGF0ZShtX2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRl
ciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsVGhyZWFkOworICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVy
LmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3Rl
ZCk7CiAKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9F
USgxLCBtX251bUVuZFVwbG9hZHMpOwpAQCAtMzk3LDcgKzQwNyw4IEBAIFRFU1RfRihDQ1RleHR1
cmVVcGRhdGVyVGVzdCwgTWFueUZ1bGxNYXhSZW1haW5kZXJNYW55UGFydGlhbE1pblJlbWFpbmRl
cikKIHsKICAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWF4UmVtYWluZGVyQ291
bnQpOwogICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNaW5SZW1haW5k
ZXJDb3VudCk7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQuZ2V0KCksICZtX2FsbG9j
YXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQp
OworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIG1fdXBkYXRl
ci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVy
LCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CiAKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1C
ZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwpAQCAtNDI5
LDcgKzQ0MCw4IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgVHJpcGxlVXBkYXRlRmlu
YWxVcGRhdGVGdWxsQW5kUGFydGlhbCkKICAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRl
cihrUGFydGlhbFVwbG9hZHMpOwogCiAgICAgLy8gRmlyc3QgdXBkYXRlICg0MCBmdWxsKQotICAg
IG1fdXBkYXRlci51cGRhdGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGll
ciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKyAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwga01heFVwbG9hZHNQZXJVcGRh
dGUpOwogCiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1Rf
RVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTQ0MSw3ICs0NTMsNyBAQCBURVNUX0YoQ0NUZXh0
dXJlVXBkYXRlclRlc3QsIFRyaXBsZVVwZGF0ZUZpbmFsVXBkYXRlRnVsbEFuZFBhcnRpYWwpCiAg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzLCBtX251bVByZXZpb3VzVXBsb2Fk
cyk7CiAKICAgICAvLyBTZWNvbmQgdXBkYXRlICg0MCBmdWxsKQotICAgIG1fdXBkYXRlci51cGRh
dGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIs
IGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwga01heFVwbG9hZHNQZXJVcGRh
dGUpOwogCiAgICAgRVhQRUNUX0VRKDIsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1Rf
RVEoMiwgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTQ1Myw3ICs0NjUsNyBAQCBURVNUX0YoQ0NUZXh0
dXJlVXBkYXRlclRlc3QsIFRyaXBsZVVwZGF0ZUZpbmFsVXBkYXRlRnVsbEFuZFBhcnRpYWwpCiAg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzLCBtX251bVByZXZpb3VzVXBsb2Fk
cyk7CiAKICAgICAvLyBUaGlyZCB1cGRhdGUgKDIwIGZ1bGwsIDIwIHBhcnRpYWwpCi0gICAgbV91
cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAm
bV91cGxvYWRlciwga01heFVwbG9hZHNQZXJVcGRhdGUpOworICAgIG1fdXBkYXRlci51cGRhdGUo
bV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBs
b2Fkc1BlclVwZGF0ZSk7CiAKICAgICBFWFBFQ1RfRVEoMywgbV9udW1CZWdpblVwbG9hZHMpOwog
ICAgIEVYUEVDVF9FUSgzLCBtX251bUVuZFVwbG9hZHMpOwpAQCAtNDgzLDcgKzQ5NSw4IEBAIFRF
U1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgVHJpcGxlVXBkYXRlRmluYWxVcGRhdGVBbGxQYXJ0
aWFsKQogICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKGtQYXJ0aWFsVXBsb2Fkcyk7
CiAKICAgICAvLyBGaXJzdCB1cGRhdGUgKDQwIGZ1bGwpCi0gICAgbV91cGRhdGVyLnVwZGF0ZSht
X2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwga01h
eFVwbG9hZHNQZXJVcGRhdGUpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhy
ZWFkOworICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9j
b3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CiAKICAgICBFWFBFQ1Rf
RVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9h
ZHMpOwpAQCAtNDk1LDcgKzUwOCw3IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgVHJp
cGxlVXBkYXRlRmluYWxVcGRhdGVBbGxQYXJ0aWFsKQogICAgIEVYUEVDVF9FUShleHBlY3RlZFBy
ZXZpb3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMpOwogCiAgICAgLy8gU2Vjb25kIHVw
ZGF0ZSAoMzAgZnVsbCwgb3B0aW9uYWxseSAxMCBwYXJ0aWFsKQotICAgIG1fdXBkYXRlci51cGRh
dGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIs
IGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwga01heFVwbG9hZHNQZXJVcGRh
dGUpOwogCiAgICAgRVhQRUNUX0VRKDIsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1Rf
RVEoMiwgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTUwNSw3ICs1MTgsNyBAQCBURVNUX0YoQ0NUZXh0
dXJlVXBkYXRlclRlc3QsIFRyaXBsZVVwZGF0ZUZpbmFsVXBkYXRlQWxsUGFydGlhbCkKICAgICAv
LyBvbkZsdXNoKCksIG9uVXBsb2FkKCksIGFuZCBvbkVuZFVwbG9hZCgpIHdpbGwgZG8gYmFzaWMg
Zmx1c2ggY2hlY2tzIGZvciB1cyBhbnl3YXkuCiAKICAgICAvLyBUaGlyZCB1cGRhdGUgKDMwIHBh
cnRpYWwgT1IgMjAgcGFydGlhbCBpZiAxMCBwYXJ0aWFsIHVwbG9hZGVkIGluIHNlY29uZCB1cGRh
dGUpCi0gICAgbV91cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwg
Jm1fY29waWVyLCAmbV91cGxvYWRlciwga01heFVwbG9hZHNQZXJVcGRhdGUpOworICAgIG1fdXBk
YXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9h
ZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CiAKICAgICBFWFBFQ1RfRVEoMywgbV9udW1CZWdp
blVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgzLCBtX251bUVuZFVwbG9hZHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcApp
bmRleCAwMGQzOGE3ZWM3ZjRiMjc1YmY5MWFiNjdkM2QxNDRiNWE3NGUwNzAxLi5hZDNkNzA0NWRk
ZjE1ZTYzNmE0MGY3Nzk0YjViNTAyMThiMjQ1ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcApAQCAtNTMsMTAgKzUz
LDEwIEBAIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNyZWF0ZUxheWVyKGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBjb25zdCBJCiAgICAgbGF5ZXItPnNldEJvdW5kcyhsYXll
clNpemUpOwogICAgIGxheWVyLT5zZXRDb250ZW50Qm91bmRzKGxheWVyU2l6ZSk7CiAKLSAgICBp
bnQgdGV4dHVyZUlkID0gMTsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVz
b3VyY2VJZCA9IDE7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aWxlci0+bnVtVGlsZXNYKCk7
ICsraSkKICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB0aWxlci0+bnVtVGlsZXNZKCk7ICsr
aikKLSAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgc3RhdGljX2Nh
c3Q8UGxhdGZvcm0zRE9iamVjdD4odGV4dHVyZUlkKyspLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsK
KyAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgcmVzb3VyY2VJZCsr
LCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKIAogICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CiB9
CkBAIC0xNDYsNyArMTQ2LDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJv
YXJkaW5nKQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlc1g7ICsraSkKICAgICAg
ICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1UaWxlc1k7ICsraikKLSAgICAgICAgICAgIGxheWVy
LT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4o
MCksIEludFJlY3QoKSk7CisgICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGks
IGosIDAsIEludFJlY3QoKSk7CiAKICAgICAvLyBBbGwgY2hlY2tlcmJvYXJkaW5nCiAgICAgewpA
QCAtMjQwLDcgKzI0MCw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIHRleHR1cmVJbmZv
Rm9yTGF5ZXJOb0JvcmRlcnMpCiAgICAgICAgIEFTU0VSVF9FUShxdWFkc1tpXS0+bWF0ZXJpYWwo
KSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFkU3RyaW5nIDw8IGk7CiAgICAgICAg
IENDVGlsZURyYXdRdWFkKiBxdWFkID0gc3RhdGljX2Nhc3Q8Q0NUaWxlRHJhd1F1YWQqPihxdWFk
c1tpXS5nZXQoKSk7CiAKLSAgICAgICAgRVhQRUNUX05FKHF1YWQtPnRleHR1cmVJZCgpLCAwdSkg
PDwgcXVhZFN0cmluZyA8PCBpOworICAgICAgICBFWFBFQ1RfTkUocXVhZC0+cmVzb3VyY2VJZCgp
LCAwdSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZC0+dGV4dHVy
ZU9mZnNldCgpLCBJbnRQb2ludCgpKSA8PCBxdWFkU3RyaW5nIDw8IGk7CiAgICAgICAgIEVYUEVD
VF9FUShxdWFkLT50ZXh0dXJlU2l6ZSgpLCB0aWxlU2l6ZSkgPDwgcXVhZFN0cmluZyA8PCBpOwog
ICAgICAgICBFWFBFQ1RfRVEoSW50UmVjdCgwLCAwLCAxLCAxKSwgcXVhZC0+b3BhcXVlUmVjdCgp
KSA8PCBxdWFkU3RyaW5nIDw8IGk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcAppbmRleCAyNmZmZDkwNzljZmRhMzRh
ZTBiZGJmMGRhNGQxNTU0ZGJmZjU1MTk5Li43Nzc4NTQ5YjY4NTQzODAyNzUyMjZjNjBmZjQwMmE5
NDE1YWZmNTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGls
ZWRMYXllclRlc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKQEAgLTQwLDEwICs0MCw5IEBAIEZha2VMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgRmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0
JikKK3ZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoQ0NS
ZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
SW50UmVjdCYpCiB7Ci0gICAgaWYgKGFsbG9jYXRvcikKLSAgICAgICAgdGV4dHVyZSgpLT5hY3F1
aXJlQmFja2luZ1RleHR1cmUoYWxsb2NhdG9yKTsKKyAgICB0ZXh0dXJlKCktPmFjcXVpcmVCYWNr
aW5nVGV4dHVyZShyZXNvdXJjZVByb3ZpZGVyKTsKICAgICBtX2xheWVyLT51cGRhdGVSZWN0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExh
eWVyVGVzdENvbW1vbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5
ZXJUZXN0Q29tbW9uLmgKaW5kZXggOTUwMWNhYmE5YWFjODBjNDQ5YzJhZjNlMGJkODUxNzNiMTgy
YTkxMi4uYmU2ODFkNzFjOTI3ZWU5OGU4Y2U1OTEzZjczOTQxNmQzNDRjZDE4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9u
LmgKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJM
YXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCi0jaW5jbHVkZSAiVGV4
dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKICNpbmNsdWRlICJU
ZXh0dXJlVXBsb2FkZXIuaCIKICNpbmNsdWRlICJUaWxlZExheWVyQ2hyb21pdW0uaCIKICNpbmNs
dWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDUHJpb3JpdGl6ZWRU
ZXh0dXJlLmgiCisjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIK
IApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoRmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlPik7
CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlUmVjdChXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dCosIFdlYkNvcmU6OlRleHR1cmVBbGxv
Y2F0b3IqICwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoV2ViQ29yZTo6Q0NS
ZXNvdXJjZVByb3ZpZGVyKiAsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CiAKICAgICBwcml2YXRlOgpAQCAtMTUx
LDE3ICsxNTEsMTAgQEAgcHJvdGVjdGVkOgogICAgIFdlYkNvcmU6OkludFNpemUgbV9mb3JjZWRD
b250ZW50Qm91bmRzOwogfTsKIAotY2xhc3MgRmFrZVRleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMg
V2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB1bnNpZ25l
ZCBjcmVhdGVUZXh0dXJlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBHQzNEZW51bSkgT1ZFUlJJ
REUgeyByZXR1cm4gMTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVk
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgR0MzRGVudW0pIE9WRVJSSURFIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVBbGxUZXh0dXJlcygpIE9WRVJSSURFIHsgfQotfTsKLQogY2xhc3Mg
RmFrZVRleHR1cmVDb3BpZXIgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVyZUNvcGllciB7CiBwdWJs
aWM6Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250
ZXh0KiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGNvcHlUb1RleHR1cmUoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQq
LCBjb25zdCB2b2lkKiwgdW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBHQzNEZW51
bSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKHVuc2lnbmVkLCB1bnNpZ25lZCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpIHsg
fQogfTsKIAogY2xhc3MgRmFrZVRleHR1cmVVcGxvYWRlciA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0
dXJlVXBsb2FkZXIgewpAQCAtMTY5LDcgKzE2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaXNCdXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxv
YWRzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
V2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgV2ViQ29yZTo6
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IHNvdXJj
ZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QgZGVzdFJlY3QpIHsgdGV4dHVyZS0+dXBkYXRl
UmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQorICAgIHZp
cnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqIHRleHR1cmUsIFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92
aWRlciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRlciwg
c291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NvbnRlbnRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NvbnRlbnRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXgg
NzUwNDE4NTM1NjBmNWM1YjFmYzAyZTNlOGY2YmY4M2Y1MWUwY2Q0My4uZmNmY2NlMTE0YzFmZjA3
Y2EyNGRkNzc5MzI2YTIyN2FmYTQ0MjIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9Db250ZW50TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ29udGVudExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtOTksNyAr
OTksNyBAQCBURVNUKENvbnRlbnRMYXllckNocm9taXVtVGVzdCwgQ29udGVudExheWVyUGFpbnRl
cldpdGhEZXZpY2VTY2FsZSkKICAgICBPcGFxdWVSZWN0RHJhd2luZ0dyYXBoaWNzQ29udGV4dFBh
aW50ZXIgcGFpbnRlcihvcGFxdWVSZWN0SW5MYXllclNwYWNlLCBjb250ZW50UmVjdCk7CiAgICAg
T3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUgb3BhcXVlUmVjdFRyYWNraW5n
Q29udGVudExheWVyRGVsZWdhdGUoJnBhaW50ZXIpOwogICAgIE1vY2tDb250ZW50TGF5ZXJEZWxl
Z2F0ZSBkZWxlZ2F0ZSgmb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUpOwot
ICAgIFJlZlB0cjxCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiB1cGRhdGVyID0gQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6
OmNyZWF0ZSgmZGVsZWdhdGUpLCBmYWxzZSk7CisgICAgUmVmUHRyPEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI+IHVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKCZkZWxlZ2F0ZSkpOwogCiAgICAg
SW50UmVjdCByZXN1bHRpbmdPcGFxdWVSZWN0OwogICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0
ZShjb250ZW50UmVjdCwgSW50U2l6ZSgyNTYsIDI1NiksIGNvbnRlbnRzU2NhbGUsIGNvbnRlbnRz
U2NhbGUsIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9GYWtlQ0NHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRmFrZUNDR3JhcGhpY3NDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJmNzE4ZjNl
YzIxNWI0OWY2MzI2YTk4MGRmNTgyZmE4NDMxYmRiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDR3JhcGhpY3NDb250ZXh0LmgKQEAgLTAsMCAr
MSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgRmFrZUNDR3JhcGhpY3NDb250ZXh0X2gKKyNkZWZpbmUg
RmFrZUNDR3JhcGhpY3NDb250ZXh0X2gKKworI2luY2x1ZGUgIkNvbXBvc2l0b3JGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGlubGluZSBQYXNzT3duUHRyPFdlYkNvcmU6OkND
R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRleHQoKQoreworICAgIHJl
dHVybiBXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoQ29tcG9zaXRvckZha2VX
ZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKFdlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzKCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBGYWtlQ0NH
cmFwaGljc0NvbnRleHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKaW5kZXggN2NkYmE4MDljZTJiNjc5
MGIzMmZjOWI5OTUwODIzZGI0MGQwOTk0YS4uMWIwN2YzZGZlYzk2YjM0NWYzZWI0ZWRmNzAyNjA2
NmQ0YjMzMWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXll
clJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgcHJp
dmF0ZToKIAogY2xhc3MgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllclJl
bmRlcmVyQ2hyb21pdW0gewogcHVibGljOgotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0o
Q0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkg
OiBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCBjb250ZXh0LCBVbnRocm90dGxlZFVwbG9h
ZGVyKSB7IH0KKyAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQq
IGNsaWVudCwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKSA6IExheWVyUmVu
ZGVyZXJDaHJvbWl1bShjbGllbnQsIHJlc291cmNlUHJvdmlkZXIsIFVudGhyb3R0bGVkVXBsb2Fk
ZXIpIHsgfQogCiAgICAgLy8gTGF5ZXJSZW5kZXJlckNocm9taXVtIG1ldGhvZHMuCiAKQEAgLTEy
Myw4ICsxMjMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCgp
CiAgICAgICAgIDogbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJZZXMoMSwgdHJ1ZSkKICAgICAgICAg
LCBtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKDEsIGZhbHNlKQotICAgICAgICAsIG1fY29udGV4
dChhZG9wdFB0cihuZXcgRnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4
dCkpCi0gICAgICAgICwgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0oJm1fbW9ja0NsaWVudCwgbV9j
b250ZXh0LmdldCgpKQorICAgICAgICAsIG1fY29udGV4dChDQ0dyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlM0QoYWRvcHRQdHIobmV3IEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0Nv
bnRleHQoKSkpKQorICAgICAgICAsIG1fcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlk
ZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpKQorICAgICAgICAsIG1fbGF5ZXJSZW5kZXJlckNo
cm9taXVtKCZtX21vY2tDbGllbnQsIG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSkKICAgICB7CiAg
ICAgfQogCkBAIC0xNDQsMTEgKzE0NSwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fbGF5ZXJS
ZW5kZXJlckNocm9taXVtLnN3YXBCdWZmZXJzKEludFJlY3QoKSk7CiAgICAgfQogCisgICAgRnJh
bWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCogY29udGV4dCgpIHsgcmV0
dXJuIHN0YXRpY19jYXN0PEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRl
eHQqPihtX2NvbnRleHQtPmNvbnRleHQzRCgpKTsgfQorCiAgICAgV2ViR3JhcGhpY3NNZW1vcnlB
bGxvY2F0aW9uIG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyWWVzOwogICAgIFdlYkdyYXBoaWNzTWVt
b3J5QWxsb2NhdGlvbiBtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vOwogCi0gICAgT3duUHRyPEZy
YW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQ+IG1fY29udGV4dDsKKyAg
ICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKICAgICBGYWtlQ0NSZW5kZXJl
ckNsaWVudCBtX21vY2tDbGllbnQ7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gbV9y
ZXNvdXJjZVByb3ZpZGVyOwogICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbV9sYXllclJl
bmRlcmVyQ2hyb21pdW07CiAgICAgQ0NTY29wZWRTZXR0aW5ncyBtX3Njb3BlZFNldHRpbmdzOwog
fTsKQEAgLTE1OCwxMiArMTYyLDEyIEBAIHByb3RlY3RlZDoKIC8vIEV4cGVjdGVkOiBpdCBkb2Vz
IG5vdGhpbmcuCiBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2ti
dWZmZXJZZXNXaGVuSXRBbHJlYWR5RXhpc3RzU2hvdWxkRG9Ob3RoaW5nKQogewotICAgIG1fY29u
dGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlclllcyk7Cisg
ICAgY29udGV4dCgpLT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVy
WWVzKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1h
Z2VDb3VudCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNG
cmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIAogICAgIHN3YXBCdWZmZXJzKCk7Ci0gICAgRVhQRUNU
X0VRKDEsIG1fY29udGV4dC0+ZnJhbWVDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMSwgY29udGV4
dCgpLT5mcmFtZUNvdW50KCkpOwogfQogCiAvLyBUZXN0IExheWVyUmVuZGVyZXJDaHJvbWl1bSBk
aXNjYXJkRnJhbWVidWZmZXIgZnVuY3Rpb25hbGl0eToKQEAgLTE3Miw3ICsxNzYsNyBAQCBURVNU
X0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJZZXNXaGVuSXRB
bHJlYWR5RXhpc3RzU2hvdWxkRAogVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN1
Z2dlc3RCYWNrYnVmZmVyTm9TaG91bGREaXNjYXJkQmFja2J1ZmZlckFuZERhbWFnZVJvb3RMYXll
cldoaWxlTm90VmlzaWJsZSkKIHsKICAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5zZXRWaXNp
YmxlKGZhbHNlKTsKLSAgICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0
SGF2ZUJhY2tidWZmZXJObyk7CisgICAgY29udGV4dCgpLT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1f
c3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDbGllbnQu
c2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXJS
ZW5kZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiB9CkBAIC0xODMsNyAr
MTg3LDcgQEAgVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RCYWNrYnVm
ZmVyTm9TaG91bGREaXNjYXJkQmFja2J1ZmZlckFuZEQKIFRFU1RfRihMYXllclJlbmRlcmVyQ2hy
b21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5vRG9Ob3RoaW5nV2hlblZpc2libGUpCiB7CiAg
ICAgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0uc2V0VmlzaWJsZSh0cnVlKTsKLSAgICBtX2NvbnRl
eHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CisgICAg
Y29udGV4dCgpLT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8p
OwogICAgIEVYUEVDVF9FUSgwLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNv
dW50KCkpOwogICAgIEVYUEVDVF9GQUxTRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1l
YnVmZmVyRGlzY2FyZGVkKCkpOwogfQpAQCAtMTk1LDExICsxOTksMTEgQEAgVEVTVF9GKExheWVy
UmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RCYWNrYnVmZmVyTm9Eb05vdGhpbmdXaGVuVmlz
aWJsZSkKIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZl
ck5vV2hlbkl0RG9lc250RXhpc3RTaG91bGREb05vdGhpbmcpCiB7CiAgICAgbV9sYXllclJlbmRl
cmVyQ2hyb21pdW0uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlB
bGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOworICAgIGNvbnRleHQoKS0+c2V0
TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1Rf
RVEoMSwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBF
WFBFQ1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVk
KCkpOwogCi0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVC
YWNrYnVmZmVyTm8pOworICAgIGNvbnRleHQoKS0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dl
c3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9tb2NrQ2xpZW50LnNldEZ1
bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBFWFBFQ1RfVFJVRShtX2xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogfQpAQCAtMjEwLDcgKzIxNCw3
IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5v
V2hlbkl0RG9lc250RXhpc3RTaG91bGREb05vCiBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVt
VGVzdCwgRGlzY2FyZGVkQmFja2J1ZmZlcklzUmVjcmVhdGVkRm9yU2NvcGVEdXJhdGlvbikKIHsK
ICAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5zZXRWaXNpYmxlKGZhbHNlKTsKLSAgICBtX2Nv
bnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7Cisg
ICAgY29udGV4dCgpLT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVy
Tm8pOwogICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmlzRnJhbWVidWZm
ZXJEaXNjYXJkZWQoKSk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9v
dExheWVyRGFtYWdlQ291bnQoKSk7CiAKQEAgLTIxOSwxMyArMjIzLDEzIEBAIFRFU1RfRihMYXll
clJlbmRlcmVyQ2hyb21pdW1UZXN0LCBEaXNjYXJkZWRCYWNrYnVmZmVySXNSZWNyZWF0ZWRGb3JT
Y29wZUR1cmF0aW9uCiAgICAgRVhQRUNUX0ZBTFNFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmlz
RnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAKICAgICBzd2FwQnVmZmVycygpOwotICAgIEVYUEVD
VF9FUSgxLCBtX2NvbnRleHQtPmZyYW1lQ291bnQoKSk7CisgICAgRVhQRUNUX0VRKDEsIGNvbnRl
eHQoKS0+ZnJhbWVDb3VudCgpKTsKIH0KIAogVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRl
c3QsIEZyYW1lYnVmZmVyRGlzY2FyZGVkQWZ0ZXJSZWFkYmFja1doZW5Ob3RWaXNpYmxlKQogewog
ICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUoZmFsc2UpOwotICAgIG1fY29u
dGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAg
ICBjb250ZXh0KCktPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJO
byk7CiAgICAgRVhQRUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZl
ckRpc2NhcmRlZCgpKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290
TGF5ZXJEYW1hZ2VDb3VudCgpKTsKIApAQCAtMzA5LDggKzMxMyw5IEBAIFRFU1QoTGF5ZXJSZW5k
ZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxpemF0aW9uRG9lc05vdE1ha2VTeW5jaHJvbm91c0Nh
bGxzKQogewogICAgIENDU2NvcGVkU2V0dGluZ3Mgc2NvcGVkU2V0dGluZ3M7CiAgICAgRmFrZUND
UmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsKLSAgICBPd25QdHI8V2ViR3JhcGhpY3NDb250ZXh0
M0Q+IGNvbnRleHQoYWRvcHRQdHIobmV3IEZvcmJpZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpKTsK
LSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9j
a0NsaWVudCwgY29udGV4dC5nZXQoKSk7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBj
b250ZXh0KENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgRm9yYmlkU3lu
Y2hyb25vdXNDYWxsQ29udGV4dCkpKTsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBy
ZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkp
KTsKKyAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgm
bW9ja0NsaWVudCwgcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CiAKICAgICBFWFBFQ1RfVFJVRShs
YXllclJlbmRlcmVyQ2hyb21pdW0uaW5pdGlhbGl6ZSgpKTsKIH0KQEAgLTM1Miw4ICszNTcsOSBA
QCBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbldpdGhRdWlj
a2x5TG9zdENvbnRleHREb2VzTm90QXNzZQogewogICAgIENDU2NvcGVkU2V0dGluZ3Mgc2NvcGVk
U2V0dGluZ3M7CiAgICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsKLSAgICBPd25Q
dHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQoYWRvcHRQdHIobmV3IExvc2VDb250ZXh0
T25GaXJzdEdldENvbnRleHQpKTsKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVy
UmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgY29udGV4dC5nZXQoKSk7CisgICAgT3duUHRy
PENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChh
ZG9wdFB0cihuZXcgTG9zZUNvbnRleHRPbkZpcnN0R2V0Q29udGV4dCkpKTsKKyAgICBPd25QdHI8
Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6
Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxh
eWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7
CiAKICAgICBsYXllclJlbmRlcmVyQ2hyb21pdW0uaW5pdGlhbGl6ZSgpOwogfQpAQCAtMzczLDgg
KzM3OSw5IEBAIHB1YmxpYzoKIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRp
YWxpemF0aW9uV2l0aG91dEdwdU1lbW9yeU1hbmFnZXJFeHRlbnNpb25TdXBwb3J0U2hvdWxkRGVm
YXVsdFRvTm9uWmVyb0FsbG9jYXRpb24pCiB7CiAgICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbW9j
a0NsaWVudDsKLSAgICBPd25QdHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQoYWRvcHRQ
dHIobmV3IENvbnRleHRUaGF0RG9lc05vdFN1cHBvcnRNZW1vcnlNYW5hZ21lbnRFeHRlbnNpb25z
KSk7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0o
Jm1vY2tDbGllbnQsIGNvbnRleHQuZ2V0KCkpOworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4
dD4gY29udGV4dChDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IENvbnRl
eHRUaGF0RG9lc05vdFN1cHBvcnRNZW1vcnlNYW5hZ21lbnRFeHRlbnNpb25zKSkpOworICAgIE93
blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IHJlc291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSkpOworICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21p
dW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCByZXNvdXJjZVByb3ZpZGVyLmdl
dCgpKTsKIAogICAgIGxheWVyUmVuZGVyZXJDaHJvbWl1bS5pbml0aWFsaXplKCk7CiAKQEAgLTM5
OSw4ICs0MDYsMTAgQEAgcHJpdmF0ZToKIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIs
IG9wYXF1ZUJhY2tncm91bmQpCiB7CiAgICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbW9ja0NsaWVu
dDsKLSAgICBPd25QdHI8Q2xlYXJDb3VudGluZ0NvbnRleHQ+IGNvbnRleHQoYWRvcHRQdHIobmV3
IENsZWFyQ291bnRpbmdDb250ZXh0KSk7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBs
YXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIGNvbnRleHQuZ2V0KCkpOworICAgIE93
blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0KENDR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGUzRChhZG9wdFB0cihuZXcgQ2xlYXJDb3VudGluZ0NvbnRleHQpKSk7CisgICAgQ2xlYXJDb3Vu
dGluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDbGVhckNvdW50aW5nQ29udGV4dCo+
KGNjQ29udGV4dC0+Y29udGV4dDNEKCkpOworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+
IHJlc291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY2NDb250ZXh0Lmdl
dCgpKSk7CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21p
dW0oJm1vY2tDbGllbnQsIHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogCiAgICAgbW9ja0NsaWVu
dC5yb290UmVuZGVyUGFzcygpLT5zZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQoZmFsc2UpOwog
CkBAIC00MjIsOCArNDMxLDEwIEBAIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIG9w
YXF1ZUJhY2tncm91bmQpCiBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCB0cmFuc3Bh
cmVudEJhY2tncm91bmQpCiB7CiAgICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbW9ja0NsaWVudDsK
LSAgICBPd25QdHI8Q2xlYXJDb3VudGluZ0NvbnRleHQ+IGNvbnRleHQoYWRvcHRQdHIobmV3IENs
ZWFyQ291bnRpbmdDb250ZXh0KSk7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXll
clJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIGNvbnRleHQuZ2V0KCkpOworICAgIE93blB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0KENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUz
RChhZG9wdFB0cihuZXcgQ2xlYXJDb3VudGluZ0NvbnRleHQpKSk7CisgICAgQ2xlYXJDb3VudGlu
Z0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxDbGVhckNvdW50aW5nQ29udGV4dCo+KGNj
Q29udGV4dC0+Y29udGV4dDNEKCkpOworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IHJl
c291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY2NDb250ZXh0LmdldCgp
KSk7CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0o
Jm1vY2tDbGllbnQsIHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogCiAgICAgbW9ja0NsaWVudC5y
b290UmVuZGVyUGFzcygpLT5zZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQodHJ1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUNvcGllclRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAK
aW5kZXggYjNlZjRjMmViZWZiODRkMWU3MjM0YjUzNDY1MThjMDU2ZTk5N2IzZC4uMGY1NmVkOWNj
NTdhNjAyNzYxMDM1YTY4MTA1NzY1NWRjNGViYTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAKQEAgLTUyLDM0ICs1MiwzMyBA
QCBwdWJsaWM6CiBURVNUKFRleHR1cmVDb3BpZXJUZXN0LCB0ZXN0RHJhd0FycmF5c0NvcHkpCiB7
CiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7Ci0gICAgT3duUHRyPEND
R3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0Qo
YWRvcHRQdHIobmV3IE1vY2tDb250ZXh0KSk7Ci0gICAgTW9ja0NvbnRleHQmIG1vY2tDb250ZXh0
ID0gKnN0YXRpY19jYXN0PE1vY2tDb250ZXh0Kj4oY2NDb250ZXh0LT5jb250ZXh0M0QoKSk7Cisg
ICAgT3duUHRyPE1vY2tDb250ZXh0PiBtb2NrQ29udGV4dCA9IGFkb3B0UHRyKG5ldyBNb2NrQ29u
dGV4dCk7CiAKICAgICB7CiAgICAgICAgIEluU2VxdWVuY2Ugc2VxdWVuY2U7CiAKICAgICAgICAg
Ly8gSGVyZSB3ZSBjaGVjayBqdXN0IHNvbWUgZXNzZW50aWFsIHByb3BlcnRpZXMgb2YgY29weVRl
eHR1cmUoKSB0byBhdm9pZCBtaXJyb3JpbmcgdGhlIGZ1bGwgaW1wbGVtZW50YXRpb24uCi0gICAg
ICAgIEVYUEVDVF9DQUxMKG1vY2tDb250ZXh0LCBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBfKSk7CisgICAgICAgIEVYUEVDVF9DQUxMKCptb2NrQ29udGV4
dCwgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgXykpOwog
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBsaW5lYXIgZmlsdGVyaW5nIGlzIGRpc2FibGVkIGR1cmlu
ZyB0aGUgY29weS4KLSAgICAgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIHRleFBhcmFtZXRl
cmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7Ci0gICAgICAgIEVY
UEVDVF9DQUxMKG1vY2tDb250ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6TkVBUkVTVCkpOworICAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQs
IHRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7
CisgICAgICAgIEVYUEVDVF9DQUxMKCptb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKIAotICAgICAgICBFWFBFQ1RfQ0FM
TChtb2NrQ29udGV4dCwgZHJhd0FycmF5cyhfLCBfLCBfKSk7CisgICAgICAgIEVYUEVDVF9DQUxM
KCptb2NrQ29udGV4dCwgZHJhd0FycmF5cyhfLCBfLCBfKSk7CiAKICAgICAgICAgLy8gTGluZWFy
IGZpbHRlcmluZyBzaG91bGQgYmUgcmVzdG9yZWQuCi0gICAgICAgIEVYUEVDVF9DQUxMKG1vY2tD
b250ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElO
RUFSKSk7Ci0gICAgICAgIEVYUEVDVF9DQUxMKG1vY2tDb250ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9N
QUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgICAgIEVYUEVDVF9D
QUxMKCptb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkxJTkVBUikpOworICAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIHRleFBh
cmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKIAogICAg
ICAgICAvLyBEZWZhdWx0IGZyYW1lYnVmZmVyIHNob3VsZCBiZSByZXN0b3JlZAotICAgICAgICBF
WFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgMCkpOworICAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIGJp
bmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKICAgICB9
CiAKICAgICBpbnQgc291cmNlVGV4dHVyZUlkID0gMTsKICAgICBpbnQgZGVzdFRleHR1cmVJZCA9
IDI7CiAgICAgSW50U2l6ZSBzaXplKDI1NiwgMTI4KTsKLSAgICBPd25QdHI8QWNjZWxlcmF0ZWRU
ZXh0dXJlQ29waWVyPiBjb3BpZXIoQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjcmVhdGUoY2ND
b250ZXh0LT5jb250ZXh0M0QoKSwgZmFsc2UpKTsKLSAgICBjb3BpZXItPmNvcHlUZXh0dXJlKGNj
Q29udGV4dC5nZXQoKSwgc291cmNlVGV4dHVyZUlkLCBkZXN0VGV4dHVyZUlkLCBzaXplKTsKKyAg
ICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBjb3BpZXIoQWNjZWxlcmF0ZWRUZXh0
dXJlQ29waWVyOjpjcmVhdGUobW9ja0NvbnRleHQuZ2V0KCksIGZhbHNlKSk7CisgICAgY29waWVy
LT5jb3B5VGV4dHVyZShzb3VyY2VUZXh0dXJlSWQsIGRlc3RUZXh0dXJlSWQsIHNpemUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggZjE1MmFiNGZiZTc4OTFlMDUzNjc5
ZWJmMzEyMjY0Nzc4NDBjZGQ2Zi4uYmE1ZDUxNmQwMTUwMzFlZDFlMWZiMzFkZjU0MjczYWE4N2Ux
Y2EwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ0NBbmlt
YXRpb25UZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ0NMYXllclRyZWVUZXN0Q29tbW9uLmgiCiAj
aW5jbHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkZha2VDQ0dyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaCIKICNp
bmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3Iu
aCIKQEAgLTcyLDI5ICs3MywzNyBAQCBwcml2YXRlOgogCiBjbGFzcyBUaWxlZExheWVyQ2hyb21p
dW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgotICAgIFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QoKSA6IGNjQ29udGV4dChDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoV2Vi
S2l0OjpDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoV2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcygpKSkpIHsgfQotICAgIHZpcnR1YWwgflRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QoKSB7IH0KKyAgICBUaWxlZExheWVyQ2hyb21pdW1UZXN0KCkK
KyAgICAgICAgOiBtX2NvbnRleHQoV2ViS2l0OjpjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRleHQo
KSkKKyAgICB7CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwor
ICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXIgPSBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZSht
X2NvbnRleHQuZ2V0KCkpOworICAgIH0KKworICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QoKQorICAgIHsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CisgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci5jbGVhcigpOworICAgIH0KIAogICAgIHZv
aWQgdXBkYXRlVGV4dHVyZXMoaW50IGNvdW50ID0gNTAwKQogICAgIHsKLSAgICAgICAgdXBkYXRl
ci51cGRhdGUoY2NDb250ZXh0LmdldCgpLCAmYWxsb2NhdG9yLCAmY29waWVyLCAmdXBsb2FkZXIs
IGNvdW50KTsKKyAgICAgICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0
KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGNvdW50KTsKICAgICB9CiBwdWJsaWM6Ci0gICAg
Ly8gRklYTUU6IFJlbmFtZSB0aGVzZSB0byBhZGQgIm1fIi4KLSAgICBPd25QdHI8Q0NHcmFwaGlj
c0NvbnRleHQ+IGNjQ29udGV4dDsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7Ci0gICAg
RmFrZVRleHR1cmVBbGxvY2F0b3IgYWxsb2NhdG9yOwotICAgIEZha2VUZXh0dXJlQ29waWVyIGNv
cGllcjsKLSAgICBGYWtlVGV4dHVyZVVwbG9hZGVyIHVwbG9hZGVyOwotICAgIENDUHJpb3JpdHlD
YWxjdWxhdG9yIHByaW9yaXR5Q2FsY3VsYXRvcjsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRl
eHQ+IG1fY29udGV4dDsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBtX3Jlc291cmNl
UHJvdmlkZXI7CisgICAgQ0NUZXh0dXJlVXBkYXRlciBtX3VwZGF0ZXI7CisgICAgRmFrZVRleHR1
cmVDb3BpZXIgbV9jb3BpZXI7CisgICAgRmFrZVRleHR1cmVVcGxvYWRlciBtX3VwbG9hZGVyOwor
ICAgIENDUHJpb3JpdHlDYWxjdWxhdG9yIG1fcHJpb3JpdHlDYWxjdWxhdG9yOwogfTsKIAogCiAK
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKIHsKLSAgICBD
Q1ByaW9yaXR5Q2FsY3VsYXRvciBwcmlvcml0eUNhbGN1bGF0b3I7Ci0gICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVu
dFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0
UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VD
Q1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsKDEpKSk7CkBAIC0xMDQsMTAgKzExMywxMCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVj
dChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoKTsKIAotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1f
dXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVz
KCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAt
MTE4LDkgKzEyNyw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlU
aWxlcykKICAgICAvLyBJbnZhbGlkYXRlcyBib3RoIHRpbGVzLi4uCiAgICAgbGF5ZXItPmludmFs
aWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgLy8gLi4uLmJ1
dCB0aGVuIG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1f
dXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogICAgIGxheWVyLT5wdXNoUHJv
cGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgb25seSBoYXZl
IHRoZSBmaXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlkYXRlZCBidXQg
bm90IHBhaW50ZWQuCkBAIC0xMzAsOCArMTM5LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKIHsKLSAgICBDQ1ByaW9yaXR5Q2FsY3VsYXRvciBwcmlv
cml0eUNhbGN1bGF0b3I7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtl
VGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNo
cm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllcklt
cGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC0xNDMsMTAgKzE1
MSwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlU
aWxlcykKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwg
MTAwLCAyMDApKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2Fs
Y3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCi0g
ICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVz
KCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAt
MTYyLDcgKzE3MCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVk
ZWREaXJ0eVRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgw
LCAwLCA1MCwgNTApKTsKICAgICAvLyAuLi4uYnV0IHRoZSBhcmVhIGlzIG9jY2x1ZGVkLgogICAg
IG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDUwLCA1MCkpOwotICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9j
Y2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAg
IGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTE3Nyw3ICsx
ODUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlU
aWxlcykKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGlsZXMp
CiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAy
NCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAy
NCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNo
cm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1
cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIo
bmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC0xODcsMTAgKzE5NSwxMCBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKICAgICBsYXllci0+
c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKIAotICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwg
MCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwogCkBAIC0xOTksNyArMjA3LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGlsZXMpCiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBs
LT5oYXNUaWxlQXQoMCwgMSkpOwogCiAgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyUHJpb3JpdGll
cygpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeSgmYWxsb2NhdG9yKTsKKyAg
ICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgp
KTsKICAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyg0KjEwMjQqMTAy
NCk7CiAKICAgICAvLyBUaGlzIHNob3VsZCBkcm9wIHRoZSB0aWxlcyBvbiB0aGUgaW1wbCB0aHJl
YWQuCkBAIC0yMTAsOSArMjE4LDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hEZWxldGVkVGlsZXMpCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAs
IDEpKTsKIAogICAgIC8vIFRoaXMgc2hvdWxkIHJlY3JlYXRlIGFuZCB1cGRhdGUgdGhlIGRlbGV0
ZWQgdGV4dHVyZXMuCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2Fs
Y3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxj
dWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
LCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSwgMCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0yMjMsNyArMjMxLDcgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGlsZXMpCiAKIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiB7Ci0gICAgT3duUHRy
PENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRy
PENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6
Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9
IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgp
KSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRy
PEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVk
TGF5ZXJJbXBsKDEpKSk7CkBAIC0yMzgsMTAgKzI0NiwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29u
dGVudFJlY3QodmlzaWJsZVJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3Qo
Y29udGVudFJlY3QpOwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5
Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlD
YWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAK
LSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwor
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsK
ICAgICB1cGRhdGVUZXh0dXJlcygpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWlu
dGluZyBmb3IgM3gzIHRpbGVzIGluIHRoZSBjZW50ZXIuCkBAIC0yNTQsMTAgKzI2MiwxMCBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogCiAgICAg
Ly8gRm9yIHRoZSBuZXh0IGZvdXIgdXBkYXRlcywgd2Ugc2hvdWxkIGRldGVjdCB3ZSBzdGlsbCBu
ZWVkIGlkbGUgcGFpbnRpbmcuCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAg
ICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Cisg
ICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7
CiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAotICAgICAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOworICAg
ICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkp
OwogICAgICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgICAgICBsYXllci0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwuZ2V0KCkpOwpAQCAtMjgxLDcgKzI4OSw3IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiB7CiAgICAgLy8gU3Rh
cnQgd2l0aCAybWIgb2YgbWVtb3J5LCBidXQgdGhlIHRlc3QgaXMgZ29pbmcgdG8gdHJ5IHRvIHVz
ZSBqdXN0IG1vcmUgdGhhbiAxbWIsIHNvIHdlIHJlZHVjZSB0byAxbWIgbGF0ZXIuCi0gICAgT3du
UHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3du
UHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgyKjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJl
cjo6Q29udGVudFBvb2wpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFk
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllcjEgPSBhZG9wdFJlZihu
ZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIE93
blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsMShhZG9wdFB0cihuZXcgRmFrZUND
VGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTMwNSwxMSArMzEzLDExIEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAgICBsYXll
cjEtPmludmFsaWRhdGVDb250ZW50UmVjdChsYXllclJlY3QpOwogCiAgICAgLy8gUGFpbnQgYSBz
aW5nbGUgdGlsZSBpbiBsYXllcjIgc28gdGhhdCBpdCB3aWxsIGlkbGUgcGFpbnQuCi0gICAgbGF5
ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIGxheWVy
MS0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjIt
PnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjEt
PnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXIxLT51cGRhdGVDb250ZW50
UmVjdCh1cGRhdGVyLCBsYXllclJlY3QsIDApOwotICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOworICAgIGxheWVyMS0+dXBk
YXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBsYXllclJlY3QsIDApOworICAgIGxheWVyMi0+dXBk
YXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CiAK
ICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciBib3RoIHJlbWFpbmluZyB0
aWxlcyBpbiBsYXllcjIuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5uZWVkc0lkbGVQYWludChs
YXllcjJSZWN0KSk7CkBAIC0zMjMsMTAgKzMzMSwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgdGV4dHVyZU1hbmFn
ZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoMTAyNCAqIDEwMjQpOwogCiAgICAgLy8gTm93IGlk
bGUgcGFpbnQgbGF5ZXIyLiBXZSBhcmUgZ29pbmcgdG8gcnVuIG91dCBvZiBtZW1vcnkgdGhvdWdo
IQotICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
LSAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Cisg
ICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7Cisg
ICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyMi0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOworICAg
IGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSwgMCk7CiAKICAgICAvLyBPaCB3ZWxsLCBjb21taXQgdGhlIGZyYW1lIGFuZCBwdXNoLgog
ICAgIHVwZGF0ZVRleHR1cmVzKCk7CkBAIC0zNDMsMTEgKzM1MSwxMSBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgRVhQ
RUNUX0ZBTFNFKGxheWVySW1wbDItPmhhc1RpbGVBdCgwLCAyKSk7CiAKICAgICAvLyBOb3cgaWYg
bGF5ZXIyIGJlY29tZXMgZnVsbHkgdmlzaWJsZSwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gcGFpbnQg
aXQgYW5kIHB1c2ggdmFsaWQgdGV4dHVyZXMuCi0gICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVz
KG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVz
KG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKCk7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBsYXllcjJS
ZWN0LCAwKTsKLSAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGxheWVyUmVj
dCwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGxheWVyMlJl
Y3QsIDApOworICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBsYXllclJl
Y3QsIDApOwogCiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsMS5nZXQoKSk7CkBAIC0zNjMsNyArMzcxLDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogCiBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludGVkT2NjbHVkZWRUaWxlcykK
IHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0
KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0
LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hy
b21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVy
ZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihu
ZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTM3Nyw5ICszODUsOSBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludGVkT2NjbHVkZWRUaWxlcykKICAg
ICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsK
ICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
KTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3Ip
OworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7
CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1
ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTM4OSw3ICszOTcs
NyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludGVkT2NjbHVk
ZWRUaWxlcykKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc01hcmtl
ZERpcnR5RHVyaW5nUGFpbnQpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0
cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRM
YXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC00MDIs
OSArNDEwLDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc01hcmtl
ZERpcnR5RHVyaW5nUGFpbnQpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVyLmdl
dCgpKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRv
cik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtNDE1LDcgKzQyMyw3IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQog
CiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0
eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAg
IFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllcjEgPSBhZG9wdFJlZihuZXcgRmFr
ZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFJlZlB0cjxG
YWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllcjIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsVGhyZWFkOwpAQCAtNDMwLDE1ICs0MzgsMTUgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uTmV4
dExheWVyKQogICAgIGxheWVyMi0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwg
MTAwLCAyMDApKTsKICAgICBsYXllcjItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSk7CiAKLSAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9y
aXR5Q2FsY3VsYXRvcik7Ci0gICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOworICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0
eUNhbGN1bGF0b3IpOworICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0
eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsK
IAotICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCksIDApOworICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKICAgICAvLyBJbnZhbGlkYXRlIGEgdGlsZSBv
biBsYXllcjEKICAgICBsYXllcjItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RU
b0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVyMS5nZXQoKSk7Ci0gICAg
bGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApLCAwKTsKIAogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIx
LT5wdXNoUHJvcGVydGllc1RvKGxheWVyMUltcGwuZ2V0KCkpOwpAQCAtNDUzLDcgKzQ2MSw3IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5
RHVyaW5nUGFpbnRPbk5leHRMYXllcikKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uUHJldmlvdXNMYXllcikKIHsK
LSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsK
KyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBD
Q1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21p
dW0+IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVN
YW5hZ2VyLmdldCgpKSk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVy
MiA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdl
dCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CkBAIC00Njgs
MTQgKzQ3NiwxNCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5
ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25QcmV2aW91c0xheQogICAgIGxheWVyMi0+c2V0Vmlz
aWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllcjItPmlu
dmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKLSAgICBsYXll
cjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgbGF5ZXIy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyMS0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyMi0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIEludmFsaWRhdGUgYSB0aWxl
IG9uIGxheWVyMgogICAgIGxheWVyMS0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVj
dFRvSW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIyLmdldCgpKTsKLSAg
ICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCAwKTsKLSAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBk
YXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyMi0+dXBkYXRlQ29u
dGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAgdXBk
YXRlVGV4dHVyZXMoKTsKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIxSW1wbC5n
ZXQoKSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVyMkltcGwuZ2V0KCkpOwpA
QCAtNDk3LDcgKzUwNSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFp
bnRPdXRPZk1lbW9yeSkKICAgICAvLyBXZSBoYXZlIGVub3VnaCBtZW1vcnkgZm9yIG9ubHkgdGhl
IHZpc2libGUgcmVjdCwgc28gd2Ugd2lsbCBydW4gb3V0IG9mIG1lbW9yeSBpbiBmaXJzdCBpZGxl
IHBhaW50LgogICAgIGludCBtZW1vcnlMaW1pdCA9IDQgKiAxMDAgKiAxMDA7IC8vIDEgdGlsZXMs
IDQgYnl0ZXMgcGVyIHBpeGVsLgogCi0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZShtZW1vcnlMaW1pdCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZShtZW1vcnlMaW1pdCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0
cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRM
YXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC01MDcs
OSArNTE1LDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9m
TWVtb3J5KQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QodmlzaWJsZVJlY3QpOwog
ICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCi0gICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QobV91cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAKICAgICAvLyBJZGxlLXBhaW50aW5nIHNo
b3VsZCBzZWUgbm8gbW9yZSBwcmlvcml0eSB0aWxlcyBmb3IgcGFpbnRpbmcuCiAgICAgRVhQRUNU
X0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtNTIwLDkgKzUy
OCw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9y
eSkKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBvbmUgdGlsZSBvbiB0aGUgaW1wbCBzaWRlLgogICAg
IEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDEsIDEpKTsKIAotICAgIGxheWVyLT5z
ZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRU
ZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1f
dXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8gV2Ugc2hvdWxkbid0IHNpZ25hbCB3
ZSBuZWVkIGFub3RoZXIgaWRsZSBwYWludC4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRz
SWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC01MzAsNyArNTM4LDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogCiBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkTGF5ZXIpCiB7Ci0gICAgT3duUHRy
PENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgyMDAwMCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSgyMDAwMCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVk
TGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEp
KSk7CkBAIC01NDcsMTEgKzU1NSwxMSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
aWRsZVBhaW50WmVyb1NpemVkTGF5ZXIpCiAgICAgICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVu
dFJlY3QoY29udGVudFJlY3QpOwogICAgICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0
KGNvbnRlbnRSZWN0KTsKIAotICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJp
b3JpdHlDYWxjdWxhdG9yKTsKKyAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1f
cHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygpOwogCiAgICAgICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBwYWludCBvciBpZGxl
LXBhaW50LgotICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVu
dFJlY3QsIDApOworICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBj
b250ZW50UmVjdCwgMCk7CiAKICAgICAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGls
ZXMuCiAgICAgICAgIEVYUEVDVF9FUSgwdSwgbGF5ZXItPm51bVBhaW50ZWRUaWxlcygpKTsKQEAg
LTU3MSw3ICs1NzksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50
Tm9uVmlzaWJsZUxheWVycykKICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoMTAwLCAxMDApOwog
ICAgIEludFJlY3QgY29udGVudFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgY29udGVudEJvdW5kcyk7
CiAKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDIwMDAwLCAxMDI0KTsKKyAg
ICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDIwMDAwLCAxMDI0LCBDQ1JlbmRlcmVy
OjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVy
ID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0
KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25Q
dHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGls
ZWRMYXllckltcGwoMSkpKTsKQEAgLTU4NSw5ICs1OTMsOSBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUxheWVycykKIAogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgMjsgaSsrKSB7CiAgICAgICAgIC8vIFBhaW50IC8gaWRsZS1wYWludC4KLSAgICAg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAg
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAg
ICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICAgICAgbGF5
ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKKyAgICAgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAg
ICAgICAgIC8vIE5vbi12aXNpYmxlIGxheWVycyBkb24ndCBuZWVkIGlkbGUgcGFpbnQuCiAgICAg
ICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKQEAg
LTYxMSw3ICs2MTksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SGF2ZU91dGVyVGlsZXMoRmFrZUNDVGls
ZWRMYXllckltcGwqIGxheWVySW1wbCwgaW50IHdpZHRoLCBpbnQgaAogCiBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xheWVycykKIHsK
LSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDgwMDAqODAwMCo4LCAxMDI0KTsK
KyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDgwMDAqODAwMCo4LCAxMDI0LCBD
Q1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGxUaHJlYWQ7CiAKICAgICBpbnQgdGlsZVdpZHRoID0gRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6
dGlsZVNpemUoKS53aWR0aCgpOwpAQCAtNjM1LDcgKzY0Myw3IEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlQW5pbWF0aW5nTGF5ZXJzKQogICAgICAg
ICAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdCh2aXNpYmxlUmVjdCk7CiAgICAgICAg
ICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAotICAgICAg
ICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Cisg
ICAgICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0
b3IpOwogICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwog
CiAgICAgICAgICAgICAvLyBJZiBpZGxlUGFpbnRSZWN0IGdpdmVzIGJhY2sgYSBub24tZW1wdHkg
cmVzdWx0IHRoZW4gd2Ugc2hvdWxkIHBhaW50IGl0LiBPdGhlcndpc2UsCkBAIC02NDcsMTAgKzY1
NSwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJs
ZUFuaW1hdGluZ0xheWVycykKIAogICAgICAgICAgICAgLy8gSWYgdGhlIGxheWVyIGlzIHRvIGJl
IHByZXBhaW50ZWQgYXQgYWxsLCB0aGVuIGFmdGVyIGZvdXIgdXBkYXRlcyB3ZSBzaG91bGQgaGF2
ZSB0aGUgb3V0ZXIgcm93L2NvbHVtbnMgcGFpbnRlZC4KICAgICAgICAgICAgIGZvciAoaW50IGsg
PSAwOyBrIDwgNDsgKytrKSB7Ci0gICAgICAgICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgICAgICAgICAgICAgbGF5ZXItPnNldFRl
eHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICAgICAgICAgICAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKLSAgICAgICAgICAgICAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOworICAgICAg
ICAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIHZpc2libGVSZWN0
LCAwKTsKICAgICAgICAgICAgICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgICAgICAgICAgICAg
IGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgICAgICAgICB9
CkBAIC02NjAsMTAgKzY2OCwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRs
ZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xheWVycykKICAgICAgICAgICAgIC8vIFdlIGRvbid0
IGN1cnJlbnRseSBpZGxlIHBhaW50IHBhc3QgdGhlIG91dGVybW9zdCB0aWxlcy4KICAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKICAg
ICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgNDsgKytrKSB7Ci0gICAgICAgICAgICAgICAg
bGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgICAg
ICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9y
KTsKICAgICAgICAgICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
CiAKLSAgICAgICAgICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlz
aWJsZVJlY3QsIDApOworICAgICAgICAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCht
X3VwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKICAgICAgICAgICAgICAgICB1cGRhdGVUZXh0dXJl
cygpOwogICAgICAgICAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5n
ZXQoKSk7CiAgICAgICAgICAgICB9CkBAIC02NzUsMjQgKzY4MywxOSBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGluZ0xheWVycykKIAog
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKIHsK
LSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsK
KyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBD
Q1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21p
dW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1h
bmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsK
ICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcg
RmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIGZh
a2VBbGxvY2F0b3I7Ci0gICAgRmFrZVRleHR1cmVDb3BpZXIgZmFrZUNvcGllcjsKLSAgICBGYWtl
VGV4dHVyZVVwbG9hZGVyIGZha2VVcGxvYWRlcjsKLSAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRl
eHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChXZWJLaXQ6OkNvbXBv
c2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzKCkpKTsKLQogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAw
eDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAg
IGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5zZXRWaXNp
YmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZh
bGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5z
ZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRU
ZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUo
Y2NDb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VDb3BpZXIsICZmYWtlVXBsb2Fk
ZXIsIDEwMDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICB1cGRhdGVUZXh0dXJlcygxMDAwKTsKICAgICBs
YXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hv
dWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtNzAyLDIxICs3MDUsMjEg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkK
ICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQo
KTsKICAgICAvLyBJbnZva2UgdXBkYXRlQ29udGVudFJlY3QgYWdhaW4uIEFzIHRoZSBsYXllciBp
cyB2YWxpZCB1cGRhdGVDb250ZW50UmVjdCBzaG91bGRuJ3QgYmUgaW52b2tlZCBvbgogICAgIC8v
IHRoZSBMYXllclRleHR1cmVVcGRhdGVyLgotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBkYXRlci51cGRhdGUo
Y2NDb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VDb3BpZXIsICZmYWtlVXBsb2Fk
ZXIsIDEwMDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICB1cGRhdGVUZXh0dXJlcygxMDAwKTsKICAgICBF
WFBFQ1RfRVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3Vu
dCgpKTsKIAogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA1
MCwgNTApKTsKICAgICAvLyBzZXRSZWN0VG9JbnZhbGlkYXRlIHRyaWdnZXJzIGludmFsaWRhdGVD
b250ZW50UmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSB1cGRhdGVDb250ZW50UmVjdC4KICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRS
ZWN0KDI1LCAyNSwgNTAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwotICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgdXBk
YXRlci51cGRhdGUoY2NDb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VDb3BpZXIs
ICZmYWtlVXBsb2FkZXIsIDEwMDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3Vw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICB1cGRhdGVUZXh0dXJlcygx
MDAwKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnByZXBhcmVDb3VudCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
Y2xlYXJQcmVwYXJlQ291bnQoKTsKICAgICAvLyBUaGUgbGF5ZXIgc2hvdWxkIHN0aWxsIGJlIGlu
dmFsaWQgYXMgdXBkYXRlQ29udGVudFJlY3QgaW52b2tlZCBpbnZhbGlkYXRlLgotICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
Ci0gICAgdXBkYXRlci51cGRhdGUoY2NDb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZh
a2VDb3BpZXIsICZmYWtlVXBsb2FkZXIsIDEwMDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICB1cGRhdGVU
ZXh0dXJlcygxMDAwKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsKIH0KIApAQCAtNzI1LDggKzcyOCw5IEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3Vu
ZHNBcmVTY2FsZWQpCiAgICAgLy8gVGhlIHVwZGF0ZVJlY3QgKHRoYXQgaW5kaWNhdGVzIHdoYXQg
d2FzIGFjdHVhbGx5IHBhaW50ZWQpIHNob3VsZCBiZSBpbgogICAgIC8vIGxheWVyIHNwYWNlLCBu
b3QgdGhlIGNvbnRlbnQgc3BhY2UuCiAKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3Jl
YXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3Jl
YXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVm
UHRyPEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcz4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
RmFrZVRpbGVkTGF5ZXJXaXRoU2NhbGVkQm91bmRzKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7Cisg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAKICAgICBJbnRSZWN0IGxh
eWVyQm91bmRzKDAsIDAsIDMwMCwgMjAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRCb3VuZHMoMCwg
MCwgMjAwLCAyNTApOwpAQCAtNzM5LDMyICs3NDMsMzIgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAg
ICAvLyBIb3dldmVyLCBpdCBzaG91bGQgc3RpbGwgYmUgaW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250
ZW50IHNwYWNlLgogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudEJvdW5k
cyk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9y
KTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3Ip
OwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7CisgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7CiAgICAgRVhQ
RUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDMwMCwgMzAwICogMC44KSwgbGF5ZXIt
PnVwZGF0ZVJlY3QoKSk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKIAogICAgIC8vIEFmdGVyIHRo
ZSB0aWxlcyBhcmUgdXBkYXRlZCBvbmNlLCBhbm90aGVyIGludmFsaWRhdGUgb25seSBuZWVkcyB0
byB1cGRhdGUgdGhlIGJvdW5kcyBvZiB0aGUgbGF5ZXIuCi0gICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50
Qm91bmRzKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJv
dW5kcywgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVu
dEJvdW5kcywgMCk7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KGxheWVyQm91
bmRzKSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKIAogICAg
IC8vIFBhcnRpYWwgcmUtcGFpbnQgc2hvdWxkIGFsc28gYmUgcmVwcmVzZW50ZWQgYnkgdGhlIHVw
ZGF0ZVJlY3QgaW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIEludFJlY3Qg
cGFydGlhbERhbWFnZSgzMCwgMTAwLCAxMCwgMTApOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29u
dGVudFJlY3QocGFydGlhbERhbWFnZSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1f
cHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3Vu
ZHMsIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRC
b3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCg0NSwgODAsIDE1
LCA4KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiB9CiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiB7Ci0g
ICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7Cisg
ICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NS
ZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVt
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5h
Z2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAg
ICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC03NzgsOSArNzgyLDkgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hh
bmdlcykKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwgMCwgMTAwLCAxMDAp
LCBsYXllci0+bGFzdE5lZWRzRGlzcGxheVJlY3QoKSk7CiAKICAgICAvLyBQdXNoIHRoZSB0aWxl
cyB0byB0aGUgaW1wbCBzaWRlIGFuZCBjaGVjayB0aGF0IHRoZXJlIGlzIGV4YWN0bHkgb25lLgot
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CisgICAgbGF5
ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCks
IDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8o
bGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgw
LCAwKSk7CkBAIC03OTUsOSArNzk5LDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICBFWFBFQ1Rf
RkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwgMCwgMTAwLCAxMDApLCBsYXllci0+bGFzdE5lZWRz
RGlzcGxheVJlY3QoKSk7CiAKICAgICAvLyBUaGUgaW1wbCBzaWRlIHNob3VsZCBnZXQgMngyIHRp
bGVzIG5vdy4KLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0
b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCksIDAp
OworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwg
MjAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJv
cGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5o
YXNUaWxlQXQoMCwgMCkpOwpAQCAtODA4LDggKzgxMiw4IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAg
ICAgLy8gSW52YWxpZGF0ZSB0aGUgZW50aXJlIGxheWVyIGFnYWluLCBidXQgZG8gbm90IHBhaW50
LiBBbGwgdGlsZXMgc2hvdWxkIGJlIGdvbmUgbm93IGZyb20gdGhlCiAgICAgLy8gaW1wbCBzaWRl
LgogICAgIGxheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgSW50UmVjdCgxLCAwLCAwLCAxKSwgMCk7CisgICAgbGF5ZXItPnNldFRleHR1
cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDEsIDAsIDAsIDEpLCAwKTsKICAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBsYXllci0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwuZ2V0KCkpOwpAQCAtODUwLDcgKzg1NCw3IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgY2NMYXllclRyZWVIb3N0
LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFZpZXdw
b3J0U2l6ZShJbnRTaXplKDMwMCwgMzAwKSk7CiAKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0
ZUxheWVycyh1cGRhdGVyLCBtZW1vcnlMaW1pdCk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRh
dGVMYXllcnMobV91cGRhdGVyLCBtZW1vcnlMaW1pdCk7CiAKICAgICAvLyBXZSdsbCBza2lwIHRo
ZSByb290IGxheWVyLgogICAgIEVYUEVDVF9UUlVFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOwpA
QCAtODYxLDEwICs4NjUsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBz
RHJhd0dldHNSZXNldCkKICAgICAvLyBSZW1vdmUgdGhlIGNoaWxkIGxheWVyLgogICAgIHJvb3RM
YXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKHVwZGF0ZXIsIG1lbW9yeUxpbWl0KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0
ZUxheWVycyhtX3VwZGF0ZXIsIG1lbW9yeUxpbWl0KTsKICAgICBFWFBFQ1RfRkFMU0Uocm9vdExh
eWVyLT5za2lwc0RyYXcoKSk7CiAKLSAgICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVy
ZU1hbmFnZXIoKS0+Y2xlYXJBbGxNZW1vcnkoJmFsbG9jYXRvcik7CisgICAgY2NMYXllclRyZWVI
b3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmNsZWFyQWxsTWVtb3J5KG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSk7CiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoMCk7CiAg
ICAgY2NMYXllclRyZWVIb3N0LmNsZWFyKCk7CiAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpz
aHV0ZG93bigpOwpAQCAtODcyLDE2ICs4NzYsMTYgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHNraXBzRHJhd0dldHNSZXNldCkKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHJlc2l6ZVRvU21hbGxlcikKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3Jl
YXRlKDYwKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZSg2MCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBS
ZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogCiAgICAgbGF5ZXItPnNl
dEJvdW5kcyhJbnRTaXplKDcwMCwgNzAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250
ZW50UmVjdChJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNzAwLCA3MDApLCAwKTsKIAogICAgIGxheWVyLT5z
ZXRCb3VuZHMoSW50U2l6ZSgyMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVu
dFJlY3QoSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpOwpAQCAtODg5LDcgKzg5Myw3IEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCByZXNpemVUb1NtYWxsZXIpCiAKIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBodWdlTGF5ZXJVcGRhdGVDcmFzaCkKIHsKLSAgICBPd25QdHI8
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDYwKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRy
PENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg2MCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6
OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOwogCiAgICAgaW50IHNpemUgPSAxIDw8IDMwOwpAQCAtODk4LDkgKzkwMiw5IEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBodWdlTGF5ZXJVcGRhdGVDcmFzaCkKICAgICBsYXll
ci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgc2l6ZSwgc2l6ZSkpOwogCiAg
ICAgLy8gRW5zdXJlIG5vIGNyYXNoIGZvciBib3VuZHMgd2hlcmUgc2l6ZSAqIHNpemUgd291bGQg
b3ZlcmZsb3cgYW4gaW50LgotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5
Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwot
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDcwMCwg
NzAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVj
dCgwLCAwLCA3MDAsIDcwMCksIDApOwogfQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcGFydGlhbFVwZGF0ZXMpCkBAIC05MjksMTcgKzkzMywxNyBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRW
aWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDIwMCkpOwogCiAgICAgLy8gRnVsbCB1cGRhdGUgb2Yg
YWxsIDYgdGlsZXMuCi0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwg
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgY2NMYXllclRyZWVIb3N0
LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFk
OwogICAgICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0
cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMo
NCk7CiAgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVw
ZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygp
KTsKICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRl
Q291bnQoKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSgy
LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBF
Q1RfRkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAgICBsYXll
ci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIH0KQEAgLTk0NywxNyAr
OTUxLDE3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykK
IAogICAgIC8vIEZ1bGwgdXBkYXRlIG9mIDMgdGlsZXMgYW5kIHBhcnRpYWwgdXBkYXRlIG9mIDMg
dGlsZXMuCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDMw
MCwgMTUwKSk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgY2NMYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnMobV91cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KTsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwog
ICAgICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihu
ZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7
CiAgICAgICAgIEVYUEVDVF9FUSgzLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0
ZXMoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsK
ICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291
bnQoKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSgzLCBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAgICBsYXllci0+
cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIH0KQEAgLTk2OCwxNCArOTcy
LDE0IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKICAg
ICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgICAg
ICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFr
ZUNDVGlsZWRMYXllckltcGwoMSkpKTsKLSAgICAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVM
YXllcnModXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAg
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAg
ICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0
ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkp
OworICAgICAgICBFWFBFQ1RfVFJVRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAg
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7
CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBF
Q1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKICAgICAgICAgbGF5ZXItPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICB9CkBAIC05OTUsMTQgKzk5OSwxNCBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgewog
ICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3du
UHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsKDEpKSk7Ci0gICAgICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJz
KHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgICAgICBj
Y0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1p
dHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAg
RVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3Vu
dCgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAg
ICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShtX3Vw
ZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVy
dGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgfQpAQCAtMTAxMywxNiArMTAxNywxOSBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgewogICAg
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRy
PEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVk
TGF5ZXJJbXBsKDEpKSk7Ci0gICAgICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVw
ZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgICAgICBjY0xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQ
RUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgp
KTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAg
ICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgfQogICAg
IGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAotICAgIGNjTGF5ZXJUcmVlSG9z
dC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jbGVhckFsbE1lbW9yeSgmYWxsb2NhdG9yKTsK
KyAgICB7CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAg
ICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y2xlYXJBbGxN
ZW1vcnkobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKKyAgICB9CiAgICAgY2NMYXllclRyZWVI
b3N0LT5zZXRSb290TGF5ZXIoMCk7CiAgICAgY2NMYXllclRyZWVIb3N0LmNsZWFyKCk7CiAgICAg
V2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwpAQCAtMTAzMCw3ICsxMDM3LDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogCiBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aG91dE9jY2x1c2lvbikKIHsK
LSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsK
KyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBD
Q1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21p
dW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1h
bmFnZXIuZ2V0KCkpKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhp
cyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgpAQCAtMTAzOCwxNSArMTA0
NSwxNSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aG91
dE9jY2x1c2lvbikKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwg
MCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9y
aXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygp
OwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIH0KIAogVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiB7Ci0gICAg
T3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAg
T3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5k
ZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBs
YXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2Vy
LmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIApAQCAtMTA1
OSw5ICsxMDY2LDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRl
ZFdpdGhPY2NsdXNpb24pCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0
KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29u
dGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwogCi0gICAgbGF5ZXItPnNldFRleHR1
cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIs
IEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQp
OwogICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3
TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTA3Miw3ICsxMDc5
LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2Ns
dXNpb24pCiAKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyNTAsIDIwMCwgMzAw
LCAxMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwg
NjAwLCA2MDApKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAg
RVhQRUNUX0VRKDM2LTIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
UmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMDgzLDcgKzEwOTAsNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikK
IAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDI1MCwgMjUwLCAzMDAsIDEwMCkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCkpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1Rf
RVEoMzYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50
KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxz
VXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMDkzLDcgKzExMDAsNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikKIAogVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRWaXNp
YmxpdHlDb25zdHJhaW50cykKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRl
KDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRl
KDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRy
PEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExh
eWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyIG9jY2x1ZGVkOwogCkBAIC0xMTA3LDkgKzExMTQsOSBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0
cmFpbnRzKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2
MDAsIDM2MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCkpOwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5
Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlD
YWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0g
ICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAz
NjApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IEludFJlY3QoMCwgMCwgNjAwLCAzNjApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgyNC0z
LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsK
IAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9h
ZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTEyMiw5ICsxMTI5LDkgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxpdHlDb25z
dHJhaW50cykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAw
LCAxNTApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwg
NjAwLCAzNTApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwg
MCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlD
YWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNh
bGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDM1
MCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwg
SW50UmVjdCgwLCAwLCA2MDAsIDM1MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDI0LTYs
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwog
CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2Fk
ZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMTM3LDkgKzExNDQsOSBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0
cmFpbnRzKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAs
IDE1MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2
MDAsIDM0MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2Fs
Y3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzQw
KSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJ
bnRSZWN0KDAsIDAsIDYwMCwgMzQwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMjQtNiwg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAK
ICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRl
ZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTExNTAsNyArMTE1Nyw3IEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3Ry
YWludHMpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc05vdFBhaW50ZWRX
aXRob3V0SW52YWxpZGF0aW9uKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQ
dHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXIgb2NjbHVkZWQ7CiAKQEAgLTExNjIsMTEgKzExNjksMTQgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlkYXRpb24pCiAg
ICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKSk7CiAg
ICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7
CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsK
ICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVk
ZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwg
MCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKLSAgICB1cGRhdGVU
ZXh0dXJlcygpOworICAgIHsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxU
aHJlYWQ7CisgICAgICAgIHVwZGF0ZVRleHR1cmVzKCk7CisgICAgfQogCiAgICAgRVhQRUNUX05F
QVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwg
MSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBs
b2FkZWRUcmFuc2x1Y2VudCgpLCAzMzAwMDAsIDEpOwpAQCAtMTE3NSw3ICsxMTg1LDcgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlk
YXRpb24pCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFy
ZVJlY3RDb3VudCgpOwogCiAgICAgLy8gUmVwYWludCB3aXRob3V0IG1hcmtpbmcgaXQgZGlydHku
IFRoZSAzIGN1bGxlZCB0aWxlcyB3aWxsIGJlIHByZS1wYWludGVkIG5vdy4KLSAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2Ns
dWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDMsIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNU
X05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwg
MCwgMSk7CkBAIC0xMTg1LDcgKzExOTUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKIAogVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRUcmFuc2Zvcm1zKQog
ewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQp
OworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQs
IENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJl
TWFuYWdlci5nZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAK
QEAgLTEyMDIsOSArMTIxMiw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxl
c1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3JtcykKICAgICBvY2NsdWRlZC5zZXRPY2Ns
dXNpb24oSW50UmVjdCgxMDAsIDEwMCwgMTUwLCA1MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxl
Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAg
ICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7Cisg
ICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIo
b2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7
CkBAIC0xMjE0LDcgKzEyMjQsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGls
ZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFRyYW5zZm9ybXMpCiAKIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKIHsKLSAg
ICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAg
ICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1Jl
bmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwogCkBAIC0x
MjMwLDkgKzEyNDAsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWlu
dGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKElu
dFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50
UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5z
ZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwg
Jm9jY2x1ZGVkKTsKICAgICAvLyBUaGUgY29udGVudCBpcyBoYWxmIHRoZSBzaXplIG9mIHRoZSBs
YXllciAoc28gdGhlIG51bWJlciBvZiB0aWxlcyBpcyBmZXdlcikuCiAgICAgLy8gSW4gdGhpcyBj
YXNlLCB0aGUgY29udGVudCBpcyAzMDB4MzAwLCBhbmQgc2luY2UgdGhlIHRpbGUgc2l6ZSBpcyAx
MDAsIHRoZQogICAgIC8vIG51bWJlciBvZiB0aWxlcyAzeDMuCkBAIC0xMjUwLDkgKzEyNjAsOSBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lv
bkFuZFNjYWxpbmcpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAs
IDMwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KElu
dFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVu
dFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAg
ICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmlj
cygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTI3MCw5ICsxMjgwLDkgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25B
bmRTY2FsaW5nKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDEwMCwgMTAwLCAx
NTAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAg
RVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVS
ZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3Mo
KS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEyODIsOSArMTI5MiwxMCBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFu
ZFNjYWxpbmcpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVu
dE9wYXF1ZVJlZ2lvbikKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
Q2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1ZGVkOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwog
CiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFu
ZCB0aGVuIHBhaW50cyB0d28gdGlsZXMgaW4gdmFyaW91cyB3YXlzLgogCkBAIC0xMjk5LDEzICsx
MzEwLDEzIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9w
YXF1ZVJlZ2lvbikKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KHZpc2libGVCb3Vu
ZHMpOwogICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKIAotICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnBy
aW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gSWYgdGhlIGxheWVyIGRvZXNuJ3QgcGFpbnQg
b3BhcXVlIGNvbnRlbnQsIHRoZW4gdGhlIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uIHNob3Vs
ZCBiZSBlbXB0eS4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3Bh
cXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVj
dChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
Y29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
bV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIG9wYXF1ZUNvbnRlbnRz
ID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX1RSVUUo
b3BhcXVlQ29udGVudHMuaXNFbXB0eSgpKTsKIApAQCAtMTMxOCw3ICsxMzI5LDcgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAg
IG9wYXF1ZVBhaW50UmVjdCA9IEludFJlY3QoMTAsIDEwLCA5MCwgMTkwKTsKICAgICBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KG9wYXF1ZVBhaW50
UmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50Qm91bmRzKTsK
LSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9j
Y2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50
Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgb3BhcXVlQ29u
dGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1Rf
RVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3Bh
cXVlQ29udGVudHMuYm91bmRzKCkpOwpAQCAtMTMzMSw3ICsxMzQyLDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogCiAgICAgLy8g
SWYgd2UgcGFpbnQgYWdhaW4gd2l0aG91dCBpbnZhbGlkYXRpbmcsIHRoZSBzYW1lIHN0dWZmIHNo
b3VsZCBiZSBvcGFxdWUuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNl
dE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgdXBk
YXRlVGV4dHVyZXMoKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVu
dE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQ
YWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CkBAIC0x
MzQ2LDcgKzEzNTcsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNv
bnRlbnRPcGFxdWVSZWdpb24pCiAgICAgLy8gbm90IGJlIGFmZmVjdGVkLgogICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsK
ICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMSwgMSkpOwot
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2Nj
bHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRC
b3VuZHMsICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBvcGFxdWVDb250
ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9F
UV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFx
dWVDb250ZW50cy5ib3VuZHMoKSk7CkBAIC0xMzYxLDcgKzEzNzIsNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgLy8gbm90
IGJlIGFmZmVjdGVkLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRP
cGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoMTAsIDEwLCAxLCAxKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICB1cGRh
dGVUZXh0dXJlcygpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50
T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKEludFJlY3Qo
MTAsIDEwMCwgOTAsIDEwMCksIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMo
KSk7CkBAIC0xMzc1LDkgKzEzODYsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcGl4ZWxzUGFpbnRlZE1ldHJpY3MpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwog
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBG
YWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBp
bnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzIGluIHZhcmlvdXMgd2F5cy4KIApA
QCAtMTM5MiwxMyArMTQwNCwxMyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4
ZWxzUGFpbnRlZE1ldHJpY3MpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdCh2aXNp
YmxlQm91bmRzKTsKICAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7CiAKLSAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0
VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIEludmFsaWRhdGVzIGFuZCBwYWlu
dHMgdGhlIHdob2xlIGxheWVyLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNv
bnRlbnRSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgdXBkYXRl
VGV4dHVyZXMoKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9w
YXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7
CkBAIC0xNDEzLDcgKzE0MjUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4
ZWxzUGFpbnRlZE1ldHJpY3MpCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29u
dGVudFJlY3QoSW50UmVjdCgwLCAwLCAxLCAxKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250
ZW50UmVjdChJbnRSZWN0KDUwLCAyMDAsIDEwLCAxMCkpOwotICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAg
ICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxl
Q29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlz
RW1wdHkoKSk7CkBAIC0xNDc0LDE0ICsxNDg2LDE0IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBkb250QWxsb2NhdGVDb250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2Nh
CiAgICAgcm9vdC0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KHJvb3RSZWN0KTsKICAgICBjaGlsZC0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNoaWxkUmVjdCk7CiAgICAgY2hpbGQyLT5pbnZhbGlkYXRl
Q29udGVudFJlY3QoY2hpbGQyUmVjdCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnModXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgY2NM
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpKTsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsVGhyZWFkOwogICAgICAgICB1cGRhdGVUZXh0dXJlcygxMDAwKTsKICAgICAgICAgRVhQ
RUNUX0VRKDYsIHJvb3QtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkp
OwogICAgICAgICBFWFBFQ1RfRVEoMywgY2hpbGQtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMywgY2hpbGQyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHVw
ZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIu
aGFzTW9yZVVwZGF0ZXMoKSk7CiAKICAgICAgICAgcm9vdC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAgICBjaGlsZC0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwpAQCAtMTUwOSwxNCArMTUyMSwxNCBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFy
Z2V0U3VyZmFjZUNhbnRCZUFsbG9jYQogICAgIHJvb3QtPmludmFsaWRhdGVDb250ZW50UmVjdChy
b290UmVjdCk7CiAgICAgY2hpbGQtPmludmFsaWRhdGVDb250ZW50UmVjdChjaGlsZFJlY3QpOwog
ICAgIGNoaWxkMi0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNoaWxkMlJlY3QpOwotICAgIGNjTGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIsICgzICogMiArIDMgKiAxKSAqICgxMDAg
KiAxMDApICogNCk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVy
LCAoMyAqIDIgKyAzICogMSkgKiAoMTAwICogMTAwKSAqIDQpOwogICAgIHsKICAgICAgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVz
KDEwMDApOwogICAgICAgICBFWFBFQ1RfRVEoNiwgcm9vdC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBjaGlsZC0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgw
LCBjaGlsZDItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAg
ICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKIAogICAgICAgICByb290LT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIGNo
aWxkLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CkBAIC0x
NTQ1LDE0ICsxNTU3LDE0IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBkb250QWxs
b2NhdGVDb250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2NhCiAgICAgcm9vdC0+aW52
YWxpZGF0ZUNvbnRlbnRSZWN0KHJvb3RSZWN0KTsKICAgICBjaGlsZC0+aW52YWxpZGF0ZUNvbnRl
bnRSZWN0KGNoaWxkUmVjdCk7CiAgICAgY2hpbGQyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY2hp
bGQyUmVjdCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgKDMg
KiAxKSAqICgxMDAgKiAxMDApICogNCk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnMobV91cGRhdGVyLCAoMyAqIDEpICogKDEwMCAqIDEwMCkgKiA0KTsKICAgICB7CiAgICAgICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgICAgICB1cGRhdGVUZXh0
dXJlcygxMDAwKTsKICAgICAgICAgRVhQRUNUX0VRKDAsIHJvb3QtPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMCwgY2hpbGQtPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMCwgY2hpbGQyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAKICAgICAgICAgcm9v
dC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAg
ICBjaGlsZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwpA
QCAtMTU3NCw3ICsxNTg2LDEwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBkb250
QWxsb2NhdGVDb250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2NhCiAgICAgfQogICAg
IGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAotICAgIGNjTGF5ZXJUcmVlSG9z
dC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jbGVhckFsbE1lbW9yeSgmYWxsb2NhdG9yKTsK
KyAgICB7CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAg
ICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y2xlYXJBbGxN
ZW1vcnkobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKKyAgICB9CiAgICAgY2NMYXllclRyZWVI
b3N0LT5zZXRSb290TGF5ZXIoMCk7CiAgICAgY2NMYXllclRyZWVIb3N0LmNsZWFyKCk7CiAgICAg
V2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwpAQCAtMTYwNSw3ICsxNjIwLDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgT3duUHRyPFRyYWNraW5nTGF5ZXJQYWludGVyPiB0cmFj
a2luZ0xheWVyUGFpbnRlcihUcmFja2luZ0xheWVyUGFpbnRlcjo6Y3JlYXRlKCkpOwogICAgICAg
ICBtX3RyYWNraW5nTGF5ZXJQYWludGVyID0gdHJhY2tpbmdMYXllclBhaW50ZXIuZ2V0KCk7Ci0g
ICAgICAgIG1fbGF5ZXJUZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNyZWF0ZSh0cmFja2luZ0xheWVyUGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsKKyAg
ICAgICAgbV9sYXllclRleHR1cmVVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Y3JlYXRlKHRyYWNraW5nTGF5ZXJQYWludGVyLnJlbGVhc2UoKSk7CiAgICAgfQogICAg
IHZpcnR1YWwgflVwZGF0ZVRyYWNraW5nVGlsZWRMYXllckNocm9taXVtKCkgeyB9CiAKQEAgLTE2
MjEsOCArMTYzNiw3IEBAIHByaXZhdGU6CiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBub25JbnRlZ2VyQ29udGVudHNTY2FsZUlzTm90RGlzdG9ydGVkRHVyaW5nUGFpbnQpCiB7Ci0g
ICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIoQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNDAwMDAwMCwgNDAwMDAwMCkpOwotICAg
IENDUHJpb3JpdHlDYWxjdWxhdG9yIGNhbGN1bGF0b3I7CisgICAgT3duUHRyPENDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpjcmVhdGUoNDAwMDAwMCwgNDAwMDAwMCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpKTsK
IAogICAgIFJlZlB0cjxVcGRhdGVUcmFja2luZ1RpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBh
ZG9wdFJlZihuZXcgVXBkYXRlVHJhY2tpbmdUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKIApAQCAtMTYzNSwyOCArMTY0OSwzMCBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgbm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRlZER1cmluZ1Bh
aW50KQogICAgIEVYUEVDVF9FUShjb250ZW50UmVjdC5zaXplKCksIGxheWVyLT5jb250ZW50Qm91
bmRzKCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwog
Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKGNhbGN1bGF0b3IpOworICAgIGxheWVy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gVXBkYXRlIHRoZSB3aG9s
ZSB0aWxlLgotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVj
dCwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudFJl
Y3QsIDApOwogICAgIGxheWVyLT50cmFja2luZ0xheWVyUGFpbnRlcigpLT5yZXNldFBhaW50ZWRS
ZWN0KCk7CiAKICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgpLCBsYXllci0+dHJhY2tp
bmdMYXllclBhaW50ZXIoKS0+cGFpbnRlZFJlY3QoKSk7CiAKLSAgICB1cGRhdGVUZXh0dXJlcygp
OworICAgIHsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Cisg
ICAgICAgIHVwZGF0ZVRleHR1cmVzKCk7CisgICAgfQogCiAgICAgLy8gSW52YWxpZGF0ZSB0aGUg
ZW50aXJlIGxheWVyIGluIGNvbnRlbnQgc3BhY2UuIFdoZW4gcGFpbnRpbmcsIHRoZSByZWN0IGdp
dmVuIHRvIHdlYmtpdCBzaG91bGQgbWF0Y2ggdGhlIGxheWVyJ3MgYm91bmRzLgogICAgIGxheWVy
LT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudFJlY3QsIDApOwogCiAgICAgRVhQRUNUX0lOVF9S
RUNUX0VRKGxheWVyUmVjdCwgbGF5ZXItPnRyYWNraW5nTGF5ZXJQYWludGVyKCktPnBhaW50ZWRS
ZWN0KCkpOwogfQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbm9uSW50ZWdlckNv
bnRlbnRzU2NhbGVJc05vdERpc3RvcnRlZER1cmluZ0ludmFsaWRhdGlvbikKIHsKLSAgICBPd25Q
dHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlcihDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0MDAwMDAwLCA0MDAwMDAwKSk7Ci0gICAgQ0NQcmlv
cml0eUNhbGN1bGF0b3IgY2FsY3VsYXRvcjsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlcihDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZSg0MDAwMDAwLCA0MDAwMDAwLCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCkpOwogCiAgICAg
UmVmUHRyPFVwZGF0ZVRyYWNraW5nVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVm
KG5ldyBVcGRhdGVUcmFja2luZ1RpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOwogCkBAIC0xNjY4LDIwICsxNjg0LDIzIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBub25JbnRlZ2VyQ29udGVudHNTY2FsZUlzTm90RGlzdG9ydGVkRHVyaW5nSW52YWxpCiAg
ICAgSW50UmVjdCBjb250ZW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Y29udGVudEJvdW5kcygp
KTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAotICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhjYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0
VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgd2hvbGUgdGls
ZS4KLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudFJlY3QsIDAp
OworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRSZWN0LCAw
KTsKICAgICBsYXllci0+dHJhY2tpbmdMYXllclBhaW50ZXIoKS0+cmVzZXRQYWludGVkUmVjdCgp
OwogCiAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoKSwgbGF5ZXItPnRyYWNraW5nTGF5
ZXJQYWludGVyKCktPnBhaW50ZWRSZWN0KCkpOwogCi0gICAgdXBkYXRlVGV4dHVyZXMoKTsKKyAg
ICB7CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgICAg
ICB1cGRhdGVUZXh0dXJlcygpOworICAgIH0KIAogICAgIC8vIEludmFsaWRhdGUgdGhlIGVudGly
ZSBsYXllciBpbiBsYXllciBzcGFjZS4gV2hlbiBwYWludGluZywgdGhlIHJlY3QgZ2l2ZW4gdG8g
d2Via2l0IHNob3VsZCBtYXRjaCB0aGUgbGF5ZXIncyBib3VuZHMuCiAgICAgbGF5ZXItPnNldE5l
ZWRzRGlzcGxheVJlY3QobGF5ZXJSZWN0KTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgY29udGVudFJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCht
X3VwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKIAogICAgIEVYUEVDVF9JTlRfUkVDVF9FUShsYXll
clJlY3QsIGxheWVyLT50cmFja2luZ0xheWVyUGFpbnRlcigpLT5wYWludGVkUmVjdCgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153137</attachid>
            <date>2012-07-18 16:30:17 -0700</date>
            <delta_ts>2012-07-18 18:31:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91044-20120718163017.patch</filename>
            <type>text/plain</type>
            <size>350680</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBmNWU0MWY1YjNlNjc2
MzNhMWRkNDI5ZWYxNDBkN2RkODYwNWFmOTllLi45OGYyYjVlYWU5YWQ2MGM0YjU3NDhlYTQ4Mjhk
ODIwNjU0YzdhYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0wNy0xMSAg
QW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBJbnRyb2R1Y2UgQ0NSZXNvdXJjZVByb3ZpZGVyLCByZXBsYWNpbmcgVGV4dHVyZUFsbG9jYXRv
ciBhbmQgaGlkaW5nIHRleHR1cmVzIGZyb20gY2xpZW50cyB0byBhbGxvdyB0cmFuc3BvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBkb2VzIHNl
dmVyYWwgdGhpbmdzOgorICAgICAgICAtIEFkZCBhIENDUmVzb3VyY2VQcm92aWRlciBjbGFzcywg
dGhhdCBoaWRlcyB0ZXh0dXJlcyBhbmQgdGhlIDNEIGNvbnRleHQKKyAgICAgICAgZnJvbSBsYXll
cnMgKGV4Y2VwdCB0aG9zZSB0aGF0IG5lZWQgaXQpLiBJbnN0ZWFkIGxheWVycyBtYW5hZ2UKKyAg
ICAgICAgInJlc291cmNlcyIuIEluIHRoZSBmdXR1cmUsIHJlc291cmNlcyBhcmUgZXhwZWN0ZWQg
dG8gYmUgdHJhbnNwb3J0YWJsZQorICAgICAgICB0byBhICJwYXJlbnQiIENDUmVzb3VyY2VQcm92
aWRlciB0byBhbGxvdyBmbGF0dGVuaW5nIG9mIG5lc3RlZAorICAgICAgICBjb21wb3NpdG9ycy4K
KyAgICAgICAgLSBSZXBsYWNlIHRleHR1cmUgaWRzIGJ5IHJlc291cmNlIGlkcyBpbiBEcmF3UXVh
ZHMgKGFsbG93aW5nIHRoZW0gdG8gYmUKKyAgICAgICAgc2VyaWFsaXphYmxlKS4KKyAgICAgICAg
LSBSZXBsYWNlIFRleHR1cmVBbGxvY2F0b3IgdXNlcyBieSB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVy
IGNsYXNzLgorICAgICAgICAtIFVwbG9hZCBvZiBkYXRhIGlzIGRvbmUgdGhyb3VnaCB0aGUgQ0NS
ZXNvdXJjZVByb3ZpZGVyIGluc3RlYWQgb2YKKyAgICAgICAgZXhwbGljaXQgR0wgY2FsbHMuCisg
ICAgICAgIC0gRXh0ZXJuYWwgdGV4dHVyZXMgYXJlIHdyYXBwZWQgaW50byBhIHJlc291cmNlIGF0
IGRyYXcgdGltZSAoc2VlCisgICAgICAgIGNhdmVhdC9GSVhNRSBpbiBDQ1RleHR1cmVMYXllcklt
cGwpLgorICAgICAgICAtIFJlbmRlcmluZyB3aXRoIHRoZSByZXNvdXJjZXMgaXMgZG9uZSB0aHJv
dWdoIGFuIGV4cGxpY2l0CisgICAgICAgIGJlZ2luUmVuZGVyRnJvbS9lbmRSZW5kZXJGcm9tIHRo
YXQgZXhwb3NlcyB0aGUgdGV4dHVyZSBvbmx5IGJldHdlZW4gdGhhdAorICAgICAgICBwYWlyLgor
ICAgICAgICAtIE1lcmdlIGFsbCB0aGUgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgaW5zdGFuY2VzIChv
bmUgcGVyIGxheWVyKSwgaW50byBhCisgICAgICAgIHNpbmdsZSBpbnN0YW5jZSBvbiB0aGUgQ0NS
ZXNvdXJjZVByb3ZpZGVyLgorCisgICAgICAgIEFkZGVkIENDUmVzb3VyY2VQcm92aWRlclRlc3Qs
IHRoZSByZWZhY3RvcmluZyBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oOgorICAgICAgICAo
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRv
clRleHR1cmVRdWFkOjpyZXNvdXJjZUlkKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvclRpbGVRdWFkLmg6CisgICAgICAgIChXZWJDb21wb3NpdG9yVGlsZVF1YWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OnJlc291cmNlSWQpOgorCiAy
MDEyLTA3LTE4ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbQ2hyb21pdW1dIENhbGwgU1FMaXRlRmlsZVN5c3RlbS1yZWxhdGVkIGZ1bmN0aW9ucyBkaXJl
Y3RseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGJjNTk0ODc4Nzg4MTM1YTI0NWIyNzc2YTEyNzg3MTI2NWE2NTJh
ZDcuLmM5ZWM2NTgyNDA1MzljMDU2YjRkYTIzMjJjZmUyMmE0NzUwMjg2YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMTAgQEAKKzIwMTItMDctMTEgIEFudG9pbmUgTGFib3VyICA8cGltYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW50cm9kdWNlIENDUmVzb3VyY2VQcm92
aWRlciwgcmVwbGFjaW5nIFRleHR1cmVBbGxvY2F0b3IgYW5kIGhpZGluZyB0ZXh0dXJlcyBmcm9t
IGNsaWVudHMgdG8gYWxsb3cgdHJhbnNwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MTA0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgZG9lcyBzZXZlcmFsIHRoaW5nczoKKyAgICAgICAgLSBB
ZGQgYSBDQ1Jlc291cmNlUHJvdmlkZXIgY2xhc3MsIHRoYXQgaGlkZXMgdGV4dHVyZXMgYW5kIHRo
ZSAzRCBjb250ZXh0CisgICAgICAgIGZyb20gbGF5ZXJzIChleGNlcHQgdGhvc2UgdGhhdCBuZWVk
IGl0KS4gSW5zdGVhZCBsYXllcnMgbWFuYWdlCisgICAgICAgICJyZXNvdXJjZXMiLiBJbiB0aGUg
ZnV0dXJlLCByZXNvdXJjZXMgYXJlIGV4cGVjdGVkIHRvIGJlIHRyYW5zcG9ydGFibGUKKyAgICAg
ICAgdG8gYSAicGFyZW50IiBDQ1Jlc291cmNlUHJvdmlkZXIgdG8gYWxsb3cgZmxhdHRlbmluZyBv
ZiBuZXN0ZWQKKyAgICAgICAgY29tcG9zaXRvcnMuCisgICAgICAgIC0gUmVwbGFjZSB0ZXh0dXJl
IGlkcyBieSByZXNvdXJjZSBpZHMgaW4gRHJhd1F1YWRzIChhbGxvd2luZyB0aGVtIHRvIGJlCisg
ICAgICAgIHNlcmlhbGl6YWJsZSkuCisgICAgICAgIC0gUmVwbGFjZSBUZXh0dXJlQWxsb2NhdG9y
IHVzZXMgYnkgdGhlIENDUmVzb3VyY2VQcm92aWRlciBjbGFzcy4KKyAgICAgICAgLSBVcGxvYWQg
b2YgZGF0YSBpcyBkb25lIHRocm91Z2ggdGhlIENDUmVzb3VyY2VQcm92aWRlciBpbnN0ZWFkIG9m
CisgICAgICAgIGV4cGxpY2l0IEdMIGNhbGxzLgorICAgICAgICAtIEV4dGVybmFsIHRleHR1cmVz
IGFyZSB3cmFwcGVkIGludG8gYSByZXNvdXJjZSBhdCBkcmF3IHRpbWUgKHNlZQorICAgICAgICBj
YXZlYXQvRklYTUUgaW4gQ0NUZXh0dXJlTGF5ZXJJbXBsKS4KKyAgICAgICAgLSBSZW5kZXJpbmcg
d2l0aCB0aGUgcmVzb3VyY2VzIGlzIGRvbmUgdGhyb3VnaCBhbiBleHBsaWNpdAorICAgICAgICBi
ZWdpblJlbmRlckZyb20vZW5kUmVuZGVyRnJvbSB0aGF0IGV4cG9zZXMgdGhlIHRleHR1cmUgb25s
eSBiZXR3ZWVuIHRoYXQKKyAgICAgICAgcGFpci4KKyAgICAgICAgLSBNZXJnZSBhbGwgdGhlIExh
eWVyVGV4dHVyZVN1YkltYWdlIGluc3RhbmNlcyAob25lIHBlciBsYXllciksIGludG8gYQorICAg
ICAgICBzaW5nbGUgaW5zdGFuY2Ugb24gdGhlIENDUmVzb3VyY2VQcm92aWRlci4KKworICAgICAg
ICBBZGRlZCBDQ1Jlc291cmNlUHJvdmlkZXJUZXN0LCB0aGUgcmVmYWN0b3JpbmcgaXMgY292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkOjpXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9z
aXRvclRpbGVRdWFkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRpbGVRdWFk
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OldlYkNv
bXBvc2l0b3JUaWxlUXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0dXJlKToK
KyAgICAgICAgKEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFjY2VsZXJh
dGVkQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFRl
eHR1cmUpOgorICAgICAgICAoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjp1
cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChJbWFnZUxheWVyVGV4
dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpjcmVh
dGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3WVVWVmlkZW9RdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVRdWFk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0lPU3VyZmFj
ZVF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3SGVh
ZHNVcERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpm
aW5pc2hEcmF3aW5nRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjp1c2VSZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dXNlU2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmZpbmlzaEN1cnJlbnRGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJv
bWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
cmVzb3VyY2VQcm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJl
U3ViSW1hZ2U6OkxheWVyVGV4dHVyZVN1YkltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
VGV4dHVyZVN1YkltYWdlOjp1cGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJl
U3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRleFN1YkltYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKExheWVyVGV4dHVyZVN1YkltYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFn
ZWRUZXh0dXJlOjpNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4
dHVyZTo6cmVzZXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6YWxsb2Nh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OnN0ZWFsKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFn
ZWRUZXh0dXJlOjpyZXNvdXJjZUlkKToKKyAgICAgICAgKE1hbmFnZWRUZXh0dXJlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0
aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
VGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZUNvcGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZFRl
eHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpmbHVzaCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oOgorICAgICAgICAoVGV4dHVy
ZUNvcGllcik6CisgICAgICAgIChBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlRXZpY3RlZFRleHR1cmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpyZW1vdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYW5hZ2VyOjphbGxvY2F0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hbmFnZXI6OnJlcXVlc3RUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFRleHR1cmVNYW5h
Z2VyKToKKyAgICAgICAgKFRleHR1cmVJbmZvKToKKyAgICAgICAgKEV2aWN0aW9uRW50cnkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oOgor
ICAgICAgICAoVGV4dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaDoKKyAgICAg
ICAgKFRocm90dGxlZFRleHR1cmVVcGxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3Bs
YXk6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9T
dXJmYWNlTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDSU9TdXJmYWNlTGF5ZXJJ
bXBsOjp3aWxsRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NJT1N1cmZhY2VMYXllckltcGwuaDoKKyAgICAgICAgKENDSU9TdXJmYWNlTGF5ZXJJbXBsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6d2lsbERyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllckltcGw6OmRpZERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcklt
cGw6OmNvbnRlbnRzUmVzb3VyY2VJZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojppbml0aWFsaXplTGF5ZXJSZW5kZXJlcik6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZUNvbnRlbnRzVGV4dHVy
ZXNPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpiZWdp
bkNvbW1pdE9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEND
TGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6cmVsZWFzZUNvbnRlbnRzVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6ZGlkRHJhd0FsbExheWVycyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpyZXNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0
dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjphY3F1aXJl
QmFja2luZ1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6
OnJlc291cmNlSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OnVw
bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YmVnaW5SZW5k
ZXJUbyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6ZW5kUmVuZGVy
VG8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoQ0NQcmlvcml0aXplZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0
aXplZFRleHR1cmU6OkJhY2tpbmc6OnJlc291cmNlSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
cmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmc6OkJhY2tpbmcpOgorICAgICAgICAoQmFja2luZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6fkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFjcXVp
cmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y2xlYXJBbGxNZW1vcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphbGxCYWNraW5nVGV4dHVyZXNXZXJlRGVs
ZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpkZXN0cm95QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgIChDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVy
UGFzc0RyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJh
d1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oOgorICAgICAgICAoQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1h
c2tSZXNvdXJjZUlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjph
cHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1JlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dHVy
ZVRvU3RvcmFnZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjppc1RleHR1cmVGb3JtYXRTdXBw
b3J0ZWRGb3JTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6fkNDUmVzb3Vy
Y2VQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmdyYXBo
aWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6aW5V
c2VCeUNvbnN1bWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Y3Jl
YXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVh
dGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjpkZWxldGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291
cmNlUHJvdmlkZXI6OmRlbGV0ZU93bmVkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVzb3VyY2VQcm92aWRlcjo6dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQ
cm92aWRlcjo6YmVnaW5SZW5kZXJUbyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJv
dmlkZXI6OmVuZFJlbmRlclRvKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRl
cjo6YmVnaW5SZW5kZXJGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRl
cjo6ZW5kUmVuZGVyRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6
OkNDUmVzb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlk
ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVzb3VyY2VQcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKENDUmVzb3VyY2VQcm92aWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6Om1heFRleHR1cmVTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6bnVtUmVzb3VyY2VzKToKKyAgICAgICAgKFJlc291cmNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY29wZWRUZXh0dXJlOjpDQ1Njb3BlZFRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY29wZWRUZXh0dXJlOjphbGxvY2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1Njb3BlZFRleHR1cmU6OmZyZWUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY29wZWRUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoQ0NTY29wZWRUZXh0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6YmVnaW5SZW5kZXJUbyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1Njb3BlZFRleHR1cmU6OmVuZFJlbmRlclRvKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6YmVnaW5SZW5kZXJGcm9tKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2NvcGVkVGV4dHVyZTo6ZW5kUmVuZGVyRnJvbSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6
OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njcm9sbGJhckxheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3JvbGxiYXJMYXll
ckltcGw6OnNldEJhY2tUcmFja1Jlc291cmNlSWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY3Jv
bGxiYXJMYXllckltcGw6OnNldEZvcmVUcmFja1Jlc291cmNlSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY3JvbGxiYXJMYXllckltcGw6OnNldFRodW1iUmVzb3VyY2VJZCk6CisgICAgICAgIChD
Q1Njcm9sbGJhckxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5n
bGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJl
YWRQcm94eTo6c3RvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmU6OmlkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZTo6c2V0SWQpOgorICAgICAgICAoQ0NUZXh0dXJlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlTGF5ZXJJbXBsOjpDQ1RleHR1cmVMYXllcklt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlTGF5ZXJJbXBsOjp3aWxsRHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6
YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlTGF5ZXJJbXBsOjpkaWRE
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVM
YXllckltcGwuaDoKKyAgICAgICAgKENDVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ0NUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmxheWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25J
bXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdhYmxlVGlsZTo6cmVzb3Vy
Y2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6OnNldFJlc291cmNlSWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhd2FibGVUaWxlOjpEcmF3YWJsZVRpbGUpOgorICAgICAgICAo
RHJhd2FibGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmNvbnRl
bnRzUmVzb3VyY2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpoYXNU
ZXh0dXJlSWRGb3JUaWxlQXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6
YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6cHVzaFRp
bGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RpbGVkTGF5ZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OkNDVmlkZW9MYXllckltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6fkNDVmlkZW9MYXllckltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXdJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1ZpZGVvTGF5ZXJJbXBsOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXll
ckltcGw6OkZyYW1lUGxhbmU6OmFsbG9jYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Zp
ZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lOjpmcmVlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1ZpZGVvTGF5ZXJJbXBsOjphbGxvY2F0ZVBsYW5lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1ZpZGVvTGF5ZXJJbXBsOjpjb3B5UGxhbmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlk
ZW9MYXllckltcGw6OmZyZWVQbGFuZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xh
eWVySW1wbDo6ZnJlZVVudXNlZFBsYW5lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVv
TGF5ZXJJbXBsOjpkaWRMb3NlQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oOgorICAgICAgICAoQ0NWaWRlb0xheWVySW1w
bCk6CisgICAgICAgIChGcmFtZVBsYW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXll
ckltcGw6OkZyYW1lUGxhbmU6OkZyYW1lUGxhbmUpOgorCiAyMDEyLTA3LTE4ICBBbmFudGFuYXJh
eWFuYW4gRyBJeWVuZ2FyICA8YW5hbnRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIEVuc3VyZSB0aGF0IHRoZSBjb21wb3NpdG9yIGNvZGUgd2hpY2ggaXMgYXdhcmUgb2YgZmxp
cHBlZCBzdGF0dXMgb2YgdmlkZW8tdGV4dHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggNTU0YzFmYzRhYzliZDliNWNlYmZiOTliMjVjMGRkNzU0ZTBjZTE2My4uOTYyNGI1NTFlMmVm
ZWU0Njg1ZjkxYmJmZTkyMzMyZWQwNjIzMTMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw5NCBAQAorMjAxMi0wNy0xMSAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBJbnRyb2R1Y2UgQ0NSZXNvdXJjZVByb3Zp
ZGVyLCByZXBsYWNpbmcgVGV4dHVyZUFsbG9jYXRvciBhbmQgaGlkaW5nIHRleHR1cmVzIGZyb20g
Y2xpZW50cyB0byBhbGxvdyB0cmFuc3BvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxMDQ0CisKKyAgICAgICAgVGhpcyBkb2VzIHNldmVyYWwgdGhp
bmdzOgorICAgICAgICAtIEFkZCBhIENDUmVzb3VyY2VQcm92aWRlciBjbGFzcywgdGhhdCBoaWRl
cyB0ZXh0dXJlcyBhbmQgdGhlIDNEIGNvbnRleHQKKyAgICAgICAgZnJvbSBsYXllcnMgKGV4Y2Vw
dCB0aG9zZSB0aGF0IG5lZWQgaXQpLiBJbnN0ZWFkIGxheWVycyBtYW5hZ2UKKyAgICAgICAgInJl
c291cmNlcyIuIEluIHRoZSBmdXR1cmUsIHJlc291cmNlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgdHJh
bnNwb3J0YWJsZQorICAgICAgICB0byBhICJwYXJlbnQiIENDUmVzb3VyY2VQcm92aWRlciB0byBh
bGxvdyBmbGF0dGVuaW5nIG9mIG5lc3RlZAorICAgICAgICBjb21wb3NpdG9ycy4KKyAgICAgICAg
LSBSZXBsYWNlIHRleHR1cmUgaWRzIGJ5IHJlc291cmNlIGlkcyBpbiBEcmF3UXVhZHMgKGFsbG93
aW5nIHRoZW0gdG8gYmUKKyAgICAgICAgc2VyaWFsaXphYmxlKS4KKyAgICAgICAgLSBSZXBsYWNl
IFRleHR1cmVBbGxvY2F0b3IgdXNlcyBieSB0aGUgQ0NSZXNvdXJjZVByb3ZpZGVyIGNsYXNzLgor
ICAgICAgICAtIFVwbG9hZCBvZiBkYXRhIGlzIGRvbmUgdGhyb3VnaCB0aGUgQ0NSZXNvdXJjZVBy
b3ZpZGVyIGluc3RlYWQgb2YKKyAgICAgICAgZXhwbGljaXQgR0wgY2FsbHMuCisgICAgICAgIC0g
RXh0ZXJuYWwgdGV4dHVyZXMgYXJlIHdyYXBwZWQgaW50byBhIHJlc291cmNlIGF0IGRyYXcgdGlt
ZSAoc2VlCisgICAgICAgIGNhdmVhdC9GSVhNRSBpbiBDQ1RleHR1cmVMYXllckltcGwpLgorICAg
ICAgICAtIFJlbmRlcmluZyB3aXRoIHRoZSByZXNvdXJjZXMgaXMgZG9uZSB0aHJvdWdoIGFuIGV4
cGxpY2l0CisgICAgICAgIGJlZ2luUmVuZGVyRnJvbS9lbmRSZW5kZXJGcm9tIHRoYXQgZXhwb3Nl
cyB0aGUgdGV4dHVyZSBvbmx5IGJldHdlZW4gdGhhdAorICAgICAgICBwYWlyLgorICAgICAgICAt
IE1lcmdlIGFsbCB0aGUgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgaW5zdGFuY2VzIChvbmUgcGVyIGxh
eWVyKSwgaW50byBhCisgICAgICAgIHNpbmdsZSBpbnN0YW5jZSBvbiB0aGUgQ0NSZXNvdXJjZVBy
b3ZpZGVyLgorCisgICAgICAgIEFkZGVkIENDUmVzb3VyY2VQcm92aWRlclRlc3QsIHRoZSByZWZh
Y3RvcmluZyBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViS2l0
Lmd5cGk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAg
ICAgICAqIHRlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHA6CisgICAgICAgIChXVEY6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdDo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0KToKKyAg
ICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0OjpjcmVhdGVNYW5hZ2VyKToKKyAg
ICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0Ojp2YWxpZGF0ZVRleHR1cmUpOgor
ICAgICAgICAoV1RGOjpDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Q6OnJlc291cmNlUHJvdmlkZXIp
OgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0KToKKyAgICAgICAgKFdURjo6VEVT
VF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0
ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoUmVzb3VyY2VQcm92aWRlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VQcm92aWRlckNvbnRleHQ6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VQcm92aWRlckNvbnRleHQ6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZVByb3ZpZGVyQ29udGV4dDo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlUHJvdmlkZXJDb250ZXh0Ojp0ZXhTdG9yYWdlMkRFWFQpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlUHJvdmlkZXJDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OmdldFBpeGVscyk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlUHJvdmlkZXJDb250ZXh0Ojp0ZXh0dXJlQ291bnQpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6dGV4dHVyZVNpemUpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6VGV4dHVyZTo6VGV4dHVyZSk6
CisgICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNv
bnRleHQ6OmFsbG9jYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlUHJvdmlk
ZXJDb250ZXh0OjpzZXRQaXhlbHMpOgorICAgICAgICAoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCk6
CisgICAgICAgIChXZWJLaXQ6OkNDUmVzb3VyY2VQcm92aWRlclRlc3Q6OkNDUmVzb3VyY2VQcm92
aWRlclRlc3QpOgorICAgICAgICAoV2ViS2l0OjpDQ1Jlc291cmNlUHJvdmlkZXJUZXN0Ojpjb250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6Q0NSZXNvdXJjZVByb3ZpZGVyVGVzdDo6Z2V0UmVzb3Vy
Y2VQaXhlbHMpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL0ND
U2NvcGVkVGV4dHVyZVRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorICAg
ICAgICAqIHRlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKENDTGF5ZXJU
ZXN0Q29tbW9uOjpjcmVhdGVMYXllcik6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6VEVT
VCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHA6CisgICAgICAg
IChXZWJLaXRUZXN0czo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJl
Y3QpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAgICAgICAg
KFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VUZXh0dXJlQ29waWVyOjpjb3B5
VGV4dHVyZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZVRleHR1cmVDb3BpZXI6OmZsdXNo
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0
dXJlKToKKyAgICAgICAgKiB0ZXN0cy9Db250ZW50TGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9GYWtlQ0NHcmFwaGljc0NvbnRl
eHQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojpj
cmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHRlc3RzL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
RmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21p
dW1UZXN0OjpMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKExheWVyUmVuZGVy
ZXJDaHJvbWl1bVRlc3Q6OmNvbnRleHQpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVt
VGVzdCk6CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogdGVz
dHMvVGV4dHVyZUNvcGllclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RleHR1cmVNYW5hZ2Vy
VGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRleHR1cmVNYW5hZ2VyVGVzdDo6VGV4dHVyZU1hbmFn
ZXJUZXN0KToKKyAgICAgICAgKFdURjo6VGV4dHVyZU1hbmFnZXJUZXN0OjpjcmVhdGVUZXh0dXJl
TWFuYWdlcik6CisgICAgICAgIChXVEY6OlRleHR1cmVNYW5hZ2VyVGVzdDo6cmVxdWVzdFRleHR1
cmUpOgorICAgICAgICAoVGV4dHVyZU1hbmFnZXJUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwogMjAxMi0wNy0xOCAgSm9zaHVhIEJlbGwgIDxqc2Jl
bGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogRml4IHNvbWUgY29kaW5nIHN0
eWxlIHZpb2xhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oCmluZGV4IDliZTZmZDNlNmQzMTgyNmYy
NTEyYTgwMjYzNzI3OWY0MzI3MjYwNjMuLjZiODg2OTU2NWMxNmEyMmE5N2YyMmVhYzY1M2RjOTBk
YWIzNWZjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tcG9zaXRvclRleHR1cmVRdWFkLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaApAQCAtNDMsMTEgKzQzLDExIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkIDogcHVibGljIFdl
YkNvbXBvc2l0b3JRdWFkIHsKIHB1YmxpYzoKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAg
ICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ+IGNyZWF0ZShjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpOworICAgIHN0YXRpYyBQYXNzT3du
UHRyPFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZD4gY3JlYXRlKGNvbnN0IFdlYkNvbXBvc2l0b3JT
aGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgdW5zaWduZWQgcmVzb3Vy
Y2VJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
dXZSZWN0LCBib29sIGZsaXBwZWQpOwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB1dlJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3V2UmVjdDsgfQogI2VuZGlmCiAKLSAgICB1bnNpZ25lZCB0ZXh0dXJl
SWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQorICAgIHVuc2lnbmVkIHJlc291cmNl
SWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlSWQ7IH0KICAgICBib29sIHByZW11bHRpcGxp
ZWRBbHBoYSgpIGNvbnN0IHsgcmV0dXJuICBtX3ByZW11bHRpcGxpZWRBbHBoYTsgfQogICAgIGJv
b2wgZmxpcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxpcHBlZDsgfQogCkBAIC01NiwxMCArNTYs
MTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQq
IG1hdGVyaWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCopOwogcHJpdmF0ZToKICNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQoY29uc3Qg
V2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIHVuc2lnbmVkIHRleHR1cmVfaWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKTsKKyAgICBXZWJDb21w
b3NpdG9yVGV4dHVyZVF1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHJlc291cmNlSWQsIGJvb2wg
cHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9v
bCBmbGlwcGVkKTsKICNlbmRpZgogCi0gICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgdW5z
aWduZWQgbV9yZXNvdXJjZUlkOwogICAgIGJvb2wgbV9wcmVtdWx0aXBsaWVkQWxwaGE7CiAgICAg
V2ViRmxvYXRSZWN0IG1fdXZSZWN0OwogICAgIGJvb2wgbV9mbGlwcGVkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGlsZVF1YWQuaCBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmgK
aW5kZXggZTBhMjU1YmIyNWRhMzc4YmJhZjQ1OTk2NWU2MjJkNDIzZTI5Nzg2YS4uZTIwZGU3MjMz
MTBhNjg5NTdhNzk5YzJlYjk3YTgwMTU0YWIxYmI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGlsZVF1YWQuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5oCkBAIC0zOSw5
ICszOSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29tcG9zaXRvclRpbGVRdWFk
IDogcHVibGljIFdlYkNvbXBvc2l0b3JRdWFkIHsKIHB1YmxpYzoKICNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KLSAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGlsZVF1YWQ+IGNy
ZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIG9wYXF1ZVJlY3QsIFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGV4dHVy
ZU9mZnNldCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4
dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0
b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGlsZVF1YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcXVhZFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIG9wYXF1ZVJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVD
b250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VB
QSwgYm9vbCBib3R0b21FZGdlQUEpOwogCi0gICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQorICAgIHVuc2lnbmVkIHJlc291cmNlSWQo
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlSWQ7IH0KICAgICBXZWJDb3JlOjpJbnRQb2ludCB0
ZXh0dXJlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlT2Zmc2V0OyB9CiAgICAgV2Vi
Q29yZTo6SW50U2l6ZSB0ZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZVNpemU7
IH0KICAgICBHQzNEaW50IHRleHR1cmVGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVG
aWx0ZXI7IH0KQEAgLTU4LDEwICs1OCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFdl
YkNvbXBvc2l0b3JUaWxlUXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdlYkNvbXBvc2l0b3JRdWFk
Kik7CiBwcml2YXRlOgogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgICBXZWJDb21wb3Np
dG9yVGlsZVF1YWQoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBvcGFxdWVS
ZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHRleHR1cmVPZmZzZXQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRleHR1cmVTaXplLCBHQzNE
aW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEs
IGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7Cisg
ICAgIFdlYkNvbXBvc2l0b3JUaWxlUXVhZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0
YXRlKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIG9wYXF1ZVJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0ZXh0dXJlU2l6
ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0
RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdl
QUEpOwogI2VuZGlmCiAKLSAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZUlkOworICAgIHVu
c2lnbmVkIG1fcmVzb3VyY2VJZDsKICAgICBXZWJQb2ludCBtX3RleHR1cmVPZmZzZXQ7CiAgICAg
V2ViU2l6ZSBtX3RleHR1cmVTaXplOwogICAgIEdDM0RpbnQgbV90ZXh0dXJlRmlsdGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDA5ZDk3MGYxZjlmZGQ0MDY5YzY5YjBiMjFmMTg0ZDZmNGRhZTljNTYu
LmQyNTJlYmY1YjY0OTQ2MDc0NjkwNTBkNGYwOWRhOThiNTVmM2ZlNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTgyODgsOCArODI4OCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oJywKLSAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3IuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVHJlZVN5bmNocm9uaXplci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcCcsCkBAIC04MzcxLDYg
KzgzNjksOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZUZpbHRlcnMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyaW5nU3RhdHMuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNw
cCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJj
ZVByb3ZpZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkLmNwcAppbmRleCBlNWY0NWZkYzRjYjJhNThmNzI4N2Y1ZmFjNWRj
NTZiZGQyMzA0MDdiLi5kZDBiNjdhNDFhMjNmNmExYjgwODI2OTY2MzAyMGYwN2ZkNjA1OTI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNv
bXBvc2l0b3JUZXh0dXJlUXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3BwCkBAIC0zMSwxNCArMzEs
MTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Q
YXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZD4gV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCB1bnNpZ25lZCB0ZXh0dXJl
SWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9v
bCBmbGlwcGVkKQorUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ+IFdlYkNvbXBv
c2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5z
aWduZWQgcmVzb3VyY2VJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVj
dCYgdXZSZWN0LCBib29sIGZsaXBwZWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJD
b21wb3NpdG9yVGV4dHVyZVF1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGV4dHVyZUlk
LCBwcmVtdWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOworICAgIHJldHVybiBhZG9w
dFB0cihuZXcgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJl
Y3QsIHJlc291cmNlSWQsIHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7CiB9
CiAKLVdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKGNv
bnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11
bHRpcGxpZWRBbHBoYSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkKK1dl
YkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKGNvbnN0IFdl
YktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25z
dCBJbnRSZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgcmVzb3VyY2VJZCwgYm9vbCBwcmVtdWx0aXBs
aWVkQWxwaGEsIGNvbnN0IEZsb2F0UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpCiAgICAgOiBX
ZWJDb21wb3NpdG9yUXVhZChzaGFyZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpUZXh0
dXJlQ29udGVudCwgcXVhZFJlY3QpCi0gICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCisgICAg
LCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKICAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHBy
ZW11bHRpcGxpZWRBbHBoYSkKICAgICAsIG1fdXZSZWN0KHV2UmVjdCkKICAgICAsIG1fZmxpcHBl
ZChmbGlwcGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJDb21wb3NpdG9yVGlsZVF1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGlsZVF1YWQuY3BwCmluZGV4IDI3YWE3
NzUwODE3NDFiMTE0MTliODExNzY4N2E5OTZhZjkyZDFjZWMuLmRlMGU4MWRmY2ZlY2UwMjAzODc3
YTgyYzRmZjZiZWI2ODAzZDMxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5j
cHAKQEAgLTMxLDE0ICszMSwxNCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVBhc3NPd25QdHI8V2ViQ29tcG9zaXRvclRpbGVRdWFkPiBXZWJDb21w
b3NpdG9yVGlsZVF1YWQ6OmNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0
JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQm
IHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1
cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9w
RWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKK1Bhc3NPd25QdHI8
V2ViQ29tcG9zaXRvclRpbGVRdWFkPiBXZWJDb21wb3NpdG9yVGlsZVF1YWQ6OmNyZWF0ZShjb25z
dCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCB1bnNpZ25lZCByZXNv
dXJjZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4
dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJv
b2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90
dG9tRWRnZUFBKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclRpbGVR
dWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIHRleHR1cmVJZCwgdGV4
dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIHN3aXp6bGVDb250ZW50cywg
bGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJDb21wb3NpdG9yVGlsZVF1YWQoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgb3BhcXVlUmVjdCwgcmVzb3VyY2VJZCwgdGV4dHVyZU9mZnNldCwgdGV4dHVy
ZVNpemUsIHRleHR1cmVGaWx0ZXIsIHN3aXp6bGVDb250ZW50cywgbGVmdEVkZ2VBQSwgdG9wRWRn
ZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7CiB9CiAKLVdlYkNvbXBvc2l0b3JUaWxl
UXVhZDo6V2ViQ29tcG9zaXRvclRpbGVRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IElu
dFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQ
b2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQg
dGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9v
bCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQorV2ViQ29t
cG9zaXRvclRpbGVRdWFkOjpXZWJDb21wb3NpdG9yVGlsZVF1YWQoY29uc3QgV2ViQ29tcG9zaXRv
clNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgdW5zaWduZWQgcmVzb3VyY2VJZCwgY29uc3Qg
SW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNE
aW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEs
IGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKICAg
ICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgV2ViQ29tcG9zaXRvclF1YWQ6
OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCi0gICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCisg
ICAgLCBtX3Jlc291cmNlSWQocmVzb3VyY2VJZCkKICAgICAsIG1fdGV4dHVyZU9mZnNldCh0ZXh0
dXJlT2Zmc2V0KQogICAgICwgbV90ZXh0dXJlU2l6ZSh0ZXh0dXJlU2l6ZSkKICAgICAsIG1fdGV4
dHVyZUZpbHRlcih0ZXh0dXJlRmlsdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBkNzVjZjA1NGRjNTJlOWIyN2Y4NTU0YWE1
ZTVhZDdiZjU5ZTgyMmFkLi5kMjQ0ZGU2NzRhMjZiYTRkN2FlYzVhYWNlNmEyYWVkMTRhMWFlYTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcApAQCAtMzMsOCArMzMsNiBAQAogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNr
aWEuaCIKLSNpbmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAiY2MvQ0NHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksMjAgKzQ3LDE5IEBAIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KENDR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVy
ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0
KTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChyZXNvdXJjZVByb3Zp
ZGVyLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAotUGFzc1JlZlB0cjxC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwg
Ym9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKK1Bhc3NSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcj4gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NP
d25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIsIHVzZU1hcFRl
eFN1YkltYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKHBhaW50ZXIpKTsKIH0KIAotQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQorQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQ
YXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQogICAgIDogQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyKQogICAgICwgbV9vcGFxdWUoZmFsc2UpCi0gICAgLCBt
X3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQogewogfQogCkBAIC04NCw4ICs4MSw2IEBA
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpzYW1wbGVkCiAKIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwgZmxvYXQgY29udGVudHNXaWR0aFNjYWxlLCBmbG9hdCBjb250
ZW50c0hlaWdodFNjYWxlLCBJbnRSZWN0JiByZXN1bHRpbmdPcGFxdWVSZWN0KQogewotICAgIG1f
dGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKLQogICAgIGlmIChtX2NhbnZh
c1NpemUgIT0gY29udGVudFJlY3Quc2l6ZSgpKSB7CiAgICAgICAgIG1fY2FudmFzU2l6ZSA9IGNv
bnRlbnRSZWN0LnNpemUoKTsKICAgICAgICAgbV9jYW52YXMgPSBhZG9wdFB0cihza2lhOjpDcmVh
dGVCaXRtYXBDYW52YXMobV9jYW52YXNTaXplLndpZHRoKCksIG1fY2FudmFzU2l6ZS5oZWlnaHQo
KSwgbV9vcGFxdWUpKTsKQEAgLTk0LDEzICs4OSwxMiBAQCB2b2lkIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dAogICAgIHBhaW50Q29udGVudHMobV9jYW52YXMuZ2V0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50
c1dpZHRoU2NhbGUsIGNvbnRlbnRzSGVpZ2h0U2NhbGUsIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwog
fQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVS
ZWN0KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJj
ZVByb3ZpZGVyLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgY29uc3QgU2tCaXRt
YXAmIGJpdG1hcCA9IG1fY2FudmFzLT5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZhbHNlKTsK
ICAgICBiaXRtYXAubG9ja1BpeGVscygpOwogCi0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29u
dGV4dCwgYWxsb2NhdG9yKTsKLSAgICBtX3RleFN1YkltYWdlLnVwbG9hZChzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYml0bWFwLmdldFBpeGVscygpKSwgY29udGVudFJlY3QoKSwgc291cmNl
UmVjdCwgZGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsKKyAgICB0ZXh0dXJl
LT51cGxvYWQocmVzb3VyY2VQcm92aWRlciwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJp
dG1hcC5nZXRQaXhlbHMoKSksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
ICAgICBiaXRtYXAudW5sb2NrUGl4ZWxzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAyNzZlMmIzOTE3OTI2NzNjNGE0ZjJi
NDQyOWZkYWQ4ODZiNGVkZWE5Li5hN2YxMWZhNTM2YzI5ODc5ZjQ5NzdjNGU0OWQ2MDQxN2U5OTM3
NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCkBAIC0zMCwxNSArMzAsMTIgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAKICNpbmNsdWRlICJDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCi0jaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKIAogY2xhc3MgU2tDYW52YXM7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07Ci1jbGFzcyBDQ0dyYXBoaWNzQ29u
dGV4dDsKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiAKIC8vIFRoaXMgY2xhc3MgcmFzdGVyaXpl
cyB0aGUgY29udGVudFJlY3QgaW50byBhIHNraWEgYml0bWFwIGNhbnZhcy4gSXQgdGhlbiB1cGRh
dGVzCiAvLyB0ZXh0dXJlcyBieSBjb3B5aW5nIGZyb20gdGhlIGNhbnZhcyBpbnRvIHRoZSB0ZXh0
dXJlLCB1c2luZyBNYXBTdWJJbWFnZSBpZgpAQCAtNTAsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8
Q0NQcmlvcml0aXplZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVy
ZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NSZXNv
dXJjZVByb3ZpZGVyKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpIE9WRVJSSURFOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVV
cGRhdGVyOyB9CkBAIC01OCwyMyArNTUsMjIgQEAgcHVibGljOgogICAgICAgICBCaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOwogICAgIH07CiAKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUo
UGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2Up
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+
IGNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CiAgICAgdmlydHVhbCB+
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOwogCiAgICAgdmlydHVhbCBQYXNzT3du
UHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2Ft
cGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwogICAgIHZpcnR1YWwgdm9p
ZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNp
emUmIHRpbGVTaXplLCBmbG9hdCBjb250ZW50c1dpZHRoU2NhbGUsIGZsb2F0IGNvbnRlbnRzSGVp
Z2h0U2NhbGUsIEludFJlY3QmIHJlc3VsdGluZ09wYXF1ZVJlY3QpIE9WRVJSSURFOwotICAgIHZv
aWQgdXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9y
KiwgQ0NQcmlvcml0aXplZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChDQ1Jlc291
cmNlUHJvdmlkZXIqLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRP
cGFxdWUoYm9vbCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VN
YXBUZXhTdWJJbWFnZSk7CisgICAgZXhwbGljaXQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CiAKICAgICBPd25QdHI8U2tD
YW52YXM+IG1fY2FudmFzOwogICAgIEludFNpemUgbV9jYW52YXNTaXplOwogICAgIGJvb2wgbV9v
cGFxdWU7Ci0gICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90ZXhTdWJJbWFnZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggODZmYjJjOGMzYjQx
Mzg4NWZlYjlmZGU4MjNmOTUyMDgyODllYjE2OS4uMjg1OTI0MjUzOTg0ZTI3MjhkNWRlZDFiM2Fl
YmQxYjg4MmY0ZWYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiU2tDYW52YXMuaCIKICNpbmNsdWRl
ICJTa0RldmljZS5oIgotI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJj
Yy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDI0
ICs1MywyMSBAQCB2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OnByZXBhcmVSZWN0KGNvbnN0IEludFJlYwogICAgIHRleHR1cmVVcGRhdGVyKCkt
PnBhaW50Q29udGVudHNSZWN0KCZjYW52YXMsIHNvdXJjZVJlY3QpOwogfQogCi12b2lkIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3Qo
Q0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lk
IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0
ZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlKCkt
PmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0KICAgICBtX2JpdG1hcC5sb2NrUGl4
ZWxzKCk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwg
dGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJlY3QsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX2Jp
dG1hcC5nZXRQaXhlbHMoKSkpOworICAgIHRleHR1cmUoKS0+dXBsb2FkKHJlc291cmNlUHJvdmlk
ZXIsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX2JpdG1hcC5nZXRQaXhlbHMoKSksIGRlc3RSZWN0
LCBkZXN0UmVjdCwgZGVzdFJlY3QpOwogICAgIG1fYml0bWFwLnVubG9ja1BpeGVscygpOwogICAg
IG1fYml0bWFwLnJlc2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJv
b2wgdXNlTWFwVGV4U3ViSW1hZ2UpCitQYXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcihwYWludGVyLCB1c2VNYXBUZXhTdWJJbWFnZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyKSk7
CiB9CiAKLUJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKK0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKICAg
ICA6IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikKLSAgICAsIG1f
dGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCiB7CiB9CiAKQEAgLTkyLDEyICs4Nyw2IEBA
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyCiAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVy
OjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRl
eGVsRm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBmbG9hdCBjb250ZW50c1dpZHRoU2NhbGUsIGZsb2F0IGNv
bnRlbnRzSGVpZ2h0U2NhbGUsIEludFJlY3QmIHJlc3VsdGluZ09wYXF1ZVJlY3QpCi17Ci0gICAg
bV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwotICAgIFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb250ZW50UmVjdCwgdGls
ZVNpemUsIGNvbnRlbnRzV2lkdGhTY2FsZSwgY29udGVudHNIZWlnaHRTY2FsZSwgcmVzdWx0aW5n
T3BhcXVlUmVjdCk7Ci19Ci0KIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqIGNhbnZhcywgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCkKIHsKICAgICAvLyBUcmFuc2xhdGUgdGhlIG9yaWdpbiBvZiBjb250ZW50
UmVjdCB0byB0aGF0IG9mIHNvdXJjZVJlY3QuCkBAIC0xMDYsMTAgKzk1LDUgQEAgdm9pZCBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzUmVjdChT
a0NhbnZhcyogY2FudmEKICAgICBkcmF3UGljdHVyZShjYW52YXMpOwogfQogCi12b2lkIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEND
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHQzNEZW51bSBmb3JtYXQsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCB1aW50OF90KiBwaXhlbHMpCi17Ci0gICAgbV90ZXhTdWJJbWFnZS51
cGxvYWQocGl4ZWxzLCBkZXN0UmVjdCwgZGVzdFJlY3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRl
eHQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDlmMTM4ODgyN2IzNmQ3N2NhODkz
ZjMzZjNiNzEzMGY1NjMxNmRmZjkuLjg1NWQ0MDU4NTZlNDBlNTg2YTlhODA3MWEyNzQ2ZGJiMzY3
ZDgzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTI4LDE0ICsyOCwxMSBAQAogI2RlZmluZSBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLSNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgogI2lu
Y2x1ZGUgIlNrQml0bWFwLmgiCiAjaW5jbHVkZSAiU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRleHR1cmVBbGxvY2F0
b3I7Ci0KIC8vIFRoaXMgY2xhc3MgcmVjb3JkcyB0aGUgY29udGVudFJlY3QgaW50byBhbiBTa1Bp
Y3R1cmUsIHRoZW4gc29mdHdhcmUgcmFzdGVyaXplcwogLy8gdGhlIFNrUGljdHVyZSBpbnRvIGJp
dG1hcHMgZm9yIGVhY2ggdGlsZS4gVGhpcyBpbXBsZW1lbnRzIENDU2V0dGluZ3M6OnBlclRpbGVQ
YWludGluZy4KIGNsYXNzIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIg
OiBwdWJsaWMgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CkBAIC00NSw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4pOwogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
KSBPVkVSUklERTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NHcmFwaGljc0Nv
bnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRl
cigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTU0LDE5ICs1MSwxNSBAQCBwdWJs
aWM6CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIG1f
dGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRyPExheWVy
UGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRl
KFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKICAgICB2aXJ0dWFsIH5CaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKICAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhl
bEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGZsb2F0IGNvbnRlbnRzV2lkdGhTY2Fs
ZSwgZmxvYXQgY29udGVudHNIZWlnaHRTY2FsZSwgSW50UmVjdCYgcmVzdWx0aW5nT3BhcXVlUmVj
dCkgT1ZFUlJJREU7CiAgICAgdm9pZCBwYWludENvbnRlbnRzUmVjdChTa0NhbnZhcyosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoQ0NHcmFw
aGljc0NvbnRleHQqLCBHQzNEZW51bSBmb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBj
b25zdCB1aW50OF90KiBwaXhlbHMpOwogCiBwcml2YXRlOgotICAgIEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4s
IGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOwotCi0gICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90
ZXhTdWJJbWFnZTsKKyAgICBleHBsaWNpdCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKIH07CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDlmNDBmN2ZlMTg4YjkzOWRk
MTY0YWU0YTUyYmVkNzk5ZTRiZTg4MWYuLjcxOWY5ZDg5OTExNmUzYTQxYTk5YTg3ZDY3Zjg4MjY2
MjgxMDU0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTEyMiw5
ICsxMjIsOSBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRl
cklmTmVlZGVkKCkKICAgICBpZiAobGF5ZXJUcmVlSG9zdCgpLT5zZXR0aW5ncygpLmFjY2VsZXJh
dGVQYWludGluZykKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6
OmNyZWF0ZShtX2RlbGVnYXRlKSk7CiAgICAgZWxzZSBpZiAoQ0NTZXR0aW5nczo6cGVyVGlsZVBh
aW50aW5nRW5hYmxlZCgpKQotICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6
OmNyZWF0ZShtX2RlbGVnYXRlKSwgbGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkudXNpbmdNYXBTdWIpOworICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBh
aW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7CiAgICAgZWxzZQotICAgICAgICBtX3RleHR1cmVV
cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRM
YXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgbGF5ZXJUcmVlSG9zdCgpLT5sYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOworICAgICAgICBtX3RleHR1cmVVcGRh
dGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXll
clBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7CiAgICAgbV90ZXh0dXJlVXBkYXRlci0+c2V0
T3BhcXVlKG9wYXF1ZSgpKTsKIAogICAgIEdDM0RlbnVtIHRleHR1cmVGb3JtYXQgPSBsYXllclRy
ZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5iZXN0VGV4dHVyZUZvcm1hdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDdlOWFjMGE2YzY1ZmEwMGY1OWU2ODAw
NDlhNTJjZDA5ZTVmYWQ2NmMuLjQzNmYzNDZkNGIxMWE1ZDU4ZTlkOTg4ODg0YWM4ZmUyMjBjYjIx
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtMzksMjAgKzM5LDE2IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBQYXNzT3duUHRyPFNrQ2FudmFzPiBjcmVhdGVB
Y2NlbGVyYXRlZENhbnZhcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZSBjYW52YXNTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHRleHR1cmVJZCkKIHsKLSAgICAvLyBBbGxvY2F0ZSBzbyB0aGF0IHdlIGhhdmUgYSB2YWxp
ZCB0ZXh0dXJlIGlkLgotICAgIHRleHR1cmUtPmFjcXVpcmVCYWNraW5nVGV4dHVyZShhbGxvY2F0
b3IpOwotCiAgICAgR3JDb250ZXh0KiBnckNvbnRleHQgPSBjb250ZXh0LT5nckNvbnRleHQoKTsK
LSAgICBJbnRTaXplIGNhbnZhc1NpemUgPSB0ZXh0dXJlLT5zaXplKCk7CiAgICAgR3JQbGF0Zm9y
bVRleHR1cmVEZXNjIHRleHR1cmVEZXNjOwogICAgIHRleHR1cmVEZXNjLmZGbGFncyA9IGtSZW5k
ZXJUYXJnZXRfR3JQbGF0Zm9ybVRleHR1cmVGbGFnOwogICAgIHRleHR1cmVEZXNjLmZXaWR0aCA9
IGNhbnZhc1NpemUud2lkdGgoKTsKICAgICB0ZXh0dXJlRGVzYy5mSGVpZ2h0ID0gY2FudmFzU2l6
ZS5oZWlnaHQoKTsKICAgICB0ZXh0dXJlRGVzYy5mQ29uZmlnID0ga1NraWE4ODg4X1BNX0dyUGl4
ZWxDb25maWc7Ci0gICAgdGV4dHVyZURlc2MuZlRleHR1cmVIYW5kbGUgPSB0ZXh0dXJlLT50ZXh0
dXJlSWQoKTsKKyAgICB0ZXh0dXJlRGVzYy5mVGV4dHVyZUhhbmRsZSA9IHRleHR1cmVJZDsKICAg
ICBTa0F1dG9UVW5yZWY8R3JUZXh0dXJlPiB0YXJnZXQoZ3JDb250ZXh0LT5jcmVhdGVQbGF0Zm9y
bVRleHR1cmUodGV4dHVyZURlc2MpKTsKICAgICBTa0F1dG9UVW5yZWY8U2tEZXZpY2U+IGRldmlj
ZShuZXcgU2tHcHVEZXZpY2UoZ3JDb250ZXh0LCB0YXJnZXQuZ2V0KCkpKTsKICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFNrQ2FudmFzKGRldmljZS5nZXQoKSkpOwpAQCAtNjgsMTIgKzY0LDEyIEBA
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
flRleHR1cmUoKQogewogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCosIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIq
IHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KQogewogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gc2hhcmVkQ29u
dGV4dCA9IENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSA/IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRGb3JJbXBsVGhyZWFkKCkgOiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCk7CiAg
ICAgaWYgKCFzaGFyZWRDb250ZXh0KQogICAgICAgICByZXR1cm47Ci0gICAgdGV4dHVyZVVwZGF0
ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3Qoc2hhcmVkQ29udGV4dC5yZWxlYXNlKCksIGFsbG9jYXRv
ciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgdGV4dHVyZVVwZGF0ZXIo
KS0+dXBkYXRlVGV4dHVyZVJlY3Qoc2hhcmVkQ29udGV4dC5yZWxlYXNlKCksIHJlc291cmNlUHJv
dmlkZXIsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCiBQYXNzUmVmUHRy
PEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093blB0cjxM
YXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKQEAgLTEwMSwxNSArOTcsMTcgQEAgTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXAKICAgICByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxl
ZFRleGVsRm9ybWF0UkdCQTsKIH0KIAotdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IHBycENvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgQ0NQcmlv
cml0aXplZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IHBycENvbnRleHQsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwg
Q0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dChwcnBDb250ZXh0KTsKIAogICAgIC8vIE1ha2Ugc3VyZSBnYW5lc2ggdXNlcyB0
aGUgY29ycmVjdCBHTCBjb250ZXh0LgogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
OwogCisgICAgdGV4dHVyZS0+YWNxdWlyZUJhY2tpbmdUZXh0dXJlKHJlc291cmNlUHJvdmlkZXIp
OworICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUgbG9jayhyZXNvdXJjZVByb3ZpZGVy
LCB0ZXh0dXJlLT5yZXNvdXJjZUlkKCkpOwogICAgIC8vIENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBj
YW52YXMgdG8gZHJhdyBvbi4KLSAgICBPd25QdHI8U2tDYW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFj
Y2VsZXJhdGVkQ2FudmFzKGNvbnRleHQuZ2V0KCksIGFsbG9jYXRvciwgdGV4dHVyZSk7CisgICAg
T3duUHRyPFNrQ2FudmFzPiBjYW52YXMgPSBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhjb250ZXh0
LmdldCgpLCB0ZXh0dXJlLT5zaXplKCksIGxvY2sudGV4dHVyZUlkKCkpOwogCiAgICAgLy8gVGhl
IGNvbXBvc2l0b3IgZXhwZWN0cyB0aGUgdGV4dHVyZXMgdG8gYmUgdXBzaWRlLWRvd24gc28gaXQg
Y2FuIGZsaXAKICAgICAvLyB0aGUgZmluYWwgY29tcG9zaXRlZCBpbWFnZS4gR2FuZXNoIHJlbmRl
cnMgdGhlIGltYWdlIHVwcmlnaHQgc28gd2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXgg
OGY2MzBhOTIyODI2NDEyM2JkZmY1ZjdkODRkOWI4NzNiOGFhMjk2OS4uNDQ2NDllNDczYzY5ZDI0
NGM5MWMwOWE1NmFiNzE5YzIwZTFhNGViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8Q0NQcmlvcml0aXplZFRl
eHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSBPVkVSUklE
RTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIE9WRVJS
SURFOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVw
ZGF0ZXI7IH0KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzT3du
UHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxG
b3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpIE9WRVJSSURF
OwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4sIFRleHR1cmVBbGxvY2F0b3IqLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2b2lkIHVwZGF0
ZVRleHR1cmVSZWN0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBDQ1Jlc291cmNlUHJv
dmlkZXIqLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXll
clBhaW50ZXJDaHJvbWl1bT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXgg
Njk2NTYzYWNmZTlhYzExZGNmYjY5OTViMmE1ZGYxODZiZTE3NDRkNS4uYmE2MDk0Mzc5YmFjNGQ0
YzEzZjY0ZjJiZTVhZGM1N2VhNTFiNDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
Y3BwCkBAIC0zNCw3ICszNCw2IEBACiAKICNpbmNsdWRlICJJbWFnZUxheWVyQ2hyb21pdW0uaCIK
IAotI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0
dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3QuaCIKQEAgLTUxLDkgKzUwLDkgQEAgcHVibGljOgogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREUKKyAgICAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3Zp
ZGVyLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkg
T1ZFUlJJREUKICAgICAgICAgewotICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRl
VGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRl
c3RSZWN0KTsKKyAgICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0
KHJlc291cmNlUHJvdmlkZXIsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgpAQCAtNjIsOSArNjEsOSBAQCBwdWJsaWM6CiAgICAgICAg
IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKICAgICB9OwogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUoYm9v
bCB1c2VNYXBUZXhTdWJJbWFnZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUxheWVyVGV4
dHVyZVVwZGF0ZXI+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcih1c2VNYXBUZXhTdWJJbWFnZSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcigpKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTgwLDEwICs3
OSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1w
bGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9y
bWF0QkdSQTsKICAgICB9CiAKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENDUHJpb3JpdGl6
ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KENDUmVzb3VyY2VQcm92
aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogICAgIHsK
LSAgICAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLQogICAg
ICAgICAvLyBTb3VyY2UgcmVjdCBzaG91bGQgbmV2ZXIgZ28gb3V0c2lkZSB0aGUgaW1hZ2UgcGl4
ZWxzLCBldmVuIGlmIHRoaXMKICAgICAgICAgLy8gaXMgcmVxdWVzdGVkIGJlY2F1c2UgdGhlIHRl
eHR1cmUgZXh0ZW5kcyBvdXRzaWRlIHRoZSBpbWFnZS4KICAgICAgICAgSW50UmVjdCBjbGlwcGVk
U291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CkBAIC05NSw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgY2xpcHBlZERlc3RSZWN0LnNldFNpemUoY2xpcHBlZFNvdXJjZVJlY3Quc2l6ZSgpKTsKIAog
ICAgICAgICBTa0F1dG9Mb2NrUGl4ZWxzIGxvY2sobV9iaXRtYXApOwotICAgICAgICBtX3RleFN1
YkltYWdlLnVwbG9hZChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4
ZWxzKCkpLCBpbWFnZVJlY3QsIGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIHRl
eHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsKKyAgICAgICAgdGV4dHVyZS0+dXBsb2FkKHJlc291
cmNlUHJvdmlkZXIsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2JpdG1hcC5nZXRQaXhl
bHMoKSksIGltYWdlUmVjdCwgY2xpcHBlZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0UmVjdCk7CiAg
ICAgfQogCiAgICAgdm9pZCBzZXRCaXRtYXAoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCkKQEAgLTEw
NCwxMyArMTAxLDkgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBJ
bWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIoYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKLSAgICAgICAg
OiBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQotICAgIHsKLSAgICB9CisgICAgSW1h
Z2VMYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CiAKICAgICBTa0JpdG1hcCBtX2JpdG1hcDsKLSAg
ICBMYXllclRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOwogfTsKIAogUGFzc1JlZlB0cjxJ
bWFnZUxheWVyQ2hyb21pdW0+IEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKQEAgLTE2Niw3
ICsxNTksNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJ
Zk5lZWRlZCgpCiAgICAgaWYgKG1fdGV4dHVyZVVwZGF0ZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShs
YXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1Yik7
CisgICAgbV90ZXh0dXJlVXBkYXRlciA9IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRl
KCk7CiAgICAgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCA9IGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcygpLmJlc3RUZXh0dXJlRm9ybWF0OwogICAgIHNldFRleHR1cmVG
b3JtYXQodGV4dHVyZUZvcm1hdCk7CiAgICAgc2V0U2FtcGxlZFRleGVsRm9ybWF0KHRleHR1cmVV
cGRhdGVyKCktPnNhbXBsZWRUZXhlbEZvcm1hdCh0ZXh0dXJlRm9ybWF0KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA5NTBiOTMyMDg5ZDY4Mjg2NzY4OWI2YTlk
MmZiMDY1YzYxZDBlOTVkLi4zNDZiMGE3ZjBlNDE3ZjUyM2Q2ZTRjY2I3NGE0MTRlMjg4NTEzNjkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTQ1LDcgKzQ1LDYg
QEAKICNpbmNsdWRlICJTa0NvbG9yLmgiCiAjaW5jbHVkZSAiVGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgotI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVy
ZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJRdWFkLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKQEAgLTEyNSw3ICsxMjQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIE9WRVJSSURFIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIE9WRVJSSURFIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHVwbG9hZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29u
c3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERSB7
IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlk
ZXIsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgT1ZF
UlJJREUgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KHJlc291cmNlUHJvdmlkZXIsIHNvdXJjZVJlY3Qs
IGRlc3RSZWN0KTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXIoKSB7IH0KQEAgLTEzMyw5ICsxMzIsOSBAQCBwcm90ZWN0ZWQ6CiAKIH0gLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQogCi1QYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRl
clNldHRpbmcpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBDQ1Jlc291cmNlUHJv
dmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBs
b2FkZXJTZXR0aW5nKQogewotICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVy
UmVuZGVyZXIoYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRl
eHQsIHRleHR1cmVVcGxvYWRlclNldHRpbmcpKSk7CisgICAgT3duUHRyPExheWVyUmVuZGVyZXJD
aHJvbWl1bT4gbGF5ZXJSZW5kZXJlcihhZG9wdFB0cihuZXcgTGF5ZXJSZW5kZXJlckNocm9taXVt
KGNsaWVudCwgcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZVVwbG9hZGVyU2V0dGluZykpKTsKICAg
ICBpZiAoIWxheWVyUmVuZGVyZXItPmluaXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKQEAgLTE0MywxNCArMTQyLDE1IEBAIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9t
aXVtPiBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50CiB9CiAK
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVyZXJD
bGllbnQqIGNsaWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3Zp
ZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlclNldHRpbmcpCiAgICAgOiBDQ1JlbmRlcmVy
KGNsaWVudCkKICAgICAsIG1fY3VycmVudFJlbmRlclBhc3MoMCkKICAgICAsIG1fY3VycmVudFRl
eHR1cmUoMCkKICAgICAsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCgwKQogICAgICwgbV9zaGFy
ZWRHZW9tZXRyeVF1YWQoRmxvYXRSZWN0KC0wLjVmLCAtMC41ZiwgMS4wZiwgMS4wZikpCi0gICAg
LCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVBy
b3ZpZGVyKQorICAgICwgbV9jb250ZXh0KHJlc291cmNlUHJvdmlkZXItPmdyYXBoaWNzQ29udGV4
dDNEKCkpCiAgICAgLCBtX2RlZmF1bHRSZW5kZXJQYXNzKDApCiAgICAgLCBtX2lzVmlld3BvcnRD
aGFuZ2VkKGZhbHNlKQogICAgICwgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKGZhbHNlKQpAQCAt
MzQxLDcgKzM0MSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQ
YXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhCiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHJlbmRlclBhc3Nlc0luRHJhd09yZGVyLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIGlmICghbV9yZW5kZXJQYXNzVGV4dHVyZXMuY29udGFpbnMocmVuZGVyUGFzc2VzSW5EcmF3
T3JkZXJbaV0tPmlkKCkpKSB7Ci0gICAgICAgICAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0
ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUobV9pbXBsVGV4dHVyZUFsbG9jYXRvci5n
ZXQoKSk7CisgICAgICAgICAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NT
Y29wZWRUZXh0dXJlOjpjcmVhdGUobV9yZXNvdXJjZVByb3ZpZGVyKTsKICAgICAgICAgICAgIG1f
cmVuZGVyUGFzc1RleHR1cmVzLnNldChyZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+aWQoKSwg
dGV4dHVyZS5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTE1LDcgKzUxNSw5IEBA
IHN0YXRpYyBpbmxpbmUgU2tCaXRtYXAgYXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1
bSogbGF5ZXJSZW5kZXJlciwgY29uc3QKIAogICAgIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+
Zmx1c2goKTsKIAotICAgIHJldHVybiBDQ1JlbmRlclN1cmZhY2VGaWx0ZXJzOjphcHBseShmaWx0
ZXJzLCBzb3VyY2VUZXh0dXJlLT5pZCgpLCBzb3VyY2VUZXh0dXJlLT5zaXplKCksIGZpbHRlckNv
bnRleHQuZ2V0KCkpOworICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUgbG9jayhsYXll
clJlbmRlcmVyLT5yZXNvdXJjZVByb3ZpZGVyKCksIHNvdXJjZVRleHR1cmUtPmlkKCkpOworICAg
IFNrQml0bWFwIHNvdXJjZSA9IENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KGZpbHRlcnMs
IGxvY2sudGV4dHVyZUlkKCksIHNvdXJjZVRleHR1cmUtPnNpemUoKSwgZmlsdGVyQ29udGV4dC5n
ZXQoKSk7CisgICAgcmV0dXJuIHNvdXJjZTsKIH0KIAogUGFzc093blB0cjxDQ1Njb3BlZFRleHR1
cmU+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEND
UmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
Y29udGVudHNEZXZpY2VUcmFuc2Zvcm0pCkBAIC01NTUsNyArNTU3LDcgQEAgUGFzc093blB0cjxD
Q1Njb3BlZFRleHR1cmU+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0
ZXJzKGNvbnN0IEMKIAogICAgIGRldmljZVJlY3QuaW50ZXJzZWN0KG1fY3VycmVudFJlbmRlclBh
c3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpKTsKIAotICAgIE93blB0cjxDQ1Njb3BlZFRleHR1
cmU+IGRldmljZUJhY2tncm91bmRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUobV9p
bXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4g
ZGV2aWNlQmFja2dyb3VuZFRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShtX3Jlc291
cmNlUHJvdmlkZXIpOwogICAgIGlmICghZ2V0RnJhbWVidWZmZXJUZXh0dXJlKGRldmljZUJhY2tn
cm91bmRUZXh0dXJlLmdldCgpLCBkZXZpY2VSZWN0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTU2Niw4ICs1NjgsOCBAQCBQYXNzT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQwogICAgIEdyVGV4
dHVyZSogdGV4dHVyZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JUZXh0dXJlKj4oZmlsdGVyZWREZXZp
Y2VCYWNrZ3JvdW5kLmdldFRleHR1cmUoKSk7CiAgICAgaW50IGZpbHRlcmVkRGV2aWNlQmFja2dy
b3VuZFRleHR1cmVJZCA9IHRleHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKIAotICAgIE93blB0
cjxDQ1Njb3BlZFRleHR1cmU+IGJhY2tncm91bmRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpj
cmVhdGUobV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7Ci0gICAgaWYgKCFiYWNrZ3JvdW5k
VGV4dHVyZS0+YWxsb2NhdGUocXVhZC0+cXVhZFJlY3QoKS5zaXplKCksIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBKSkKKyAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBiYWNrZ3JvdW5kVGV4dHVy
ZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKG1fcmVzb3VyY2VQcm92aWRlcik7CisgICAgaWYg
KCFiYWNrZ3JvdW5kVGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIHF1YWQt
PnF1YWRSZWN0KCkuc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpUZXh0dXJlVXNhZ2VGcmFtZWJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiB0YXJnZXRSZW5kZXJQYXNzID0gbV9jdXJyZW50
UmVuZGVyUGFzczsKQEAgLTYxMiwxNiArNjE0LDIxIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQp
CiAgICAgLy8gRklYTUU6IENhY2hlIHRoaXMgdmFsdWUgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRv
IGRvIGl0IGZvciBib3RoIHRoZSBzdXJmYWNlIGFuZCBpdHMgcmVwbGljYS4KICAgICAvLyBBcHBs
eSBmaWx0ZXJzIHRvIHRoZSBjb250ZW50cyB0ZXh0dXJlLgogICAgIFNrQml0bWFwIGZpbHRlckJp
dG1hcCA9IGFwcGx5RmlsdGVycyh0aGlzLCBxdWFkLT5maWx0ZXJzKCksIGNvbnRlbnRzVGV4dHVy
ZSk7Ci0gICAgaW50IGNvbnRlbnRzVGV4dHVyZUlkID0gY29udGVudHNUZXh0dXJlLT5pZCgpOwor
ICAgIE93blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQ+IGNvbnRlbnRzUmVzb3VyY2VM
b2NrOworICAgIHVuc2lnbmVkIGNvbnRlbnRzVGV4dHVyZUlkID0gMDsKICAgICBpZiAoZmlsdGVy
Qml0bWFwLmdldFRleHR1cmUoKSkgewogICAgICAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWlu
dGVycHJldF9jYXN0PEdyVGV4dHVyZSo+KGZpbHRlckJpdG1hcC5nZXRUZXh0dXJlKCkpOwogICAg
ICAgICBjb250ZW50c1RleHR1cmVJZCA9IHRleHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBjb250ZW50c1Jlc291cmNlTG9jayA9IGFkb3B0UHRyKG5ldyBD
Q1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQobV9yZXNvdXJjZVByb3ZpZGVyLCBjb250ZW50c1Rl
eHR1cmUtPmlkKCkpKTsKKyAgICAgICAgY29udGVudHNUZXh0dXJlSWQgPSBjb250ZW50c1Jlc291
cmNlTG9jay0+dGV4dHVyZUlkKCk7CiAgICAgfQogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3Vu
ZCB0ZXh0dXJlIGlmIHRoZXJlIGlzIG9uZS4KICAgICBpZiAoYmFja2dyb3VuZFRleHR1cmUpIHsK
ICAgICAgICAgQVNTRVJUKGJhY2tncm91bmRUZXh0dXJlLT5zaXplKCkgPT0gcXVhZC0+cXVhZFJl
Y3QoKS5zaXplKCkpOwotICAgICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoYmFja2dyb3Vu
ZFRleHR1cmUtPmlkKCksIHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpLCBxdWFkLT5kcmF3VHJhbnNm
b3JtKCkpOworICAgICAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgbG9jayhtX3Jlc291
cmNlUHJvdmlkZXIsIGJhY2tncm91bmRUZXh0dXJlLT5pZCgpKTsKKyAgICAgICAgY29weVRleHR1
cmVUb0ZyYW1lYnVmZmVyKGxvY2sudGV4dHVyZUlkKCksIHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgp
LCBxdWFkLT5kcmF3VHJhbnNmb3JtKCkpOwogICAgIH0KIAogICAgIGJvb2wgY2xpcHBlZCA9IGZh
bHNlOwpAQCAtNjM3LDcgKzY0NCwxMiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgICAg
ICBkZXZpY2VMYXllckVkZ2VzLmluZmxhdGVBbnRpQWxpYXNpbmdEaXN0YW5jZSgpOwogICAgIH0K
IAotICAgIGJvb2wgdXNlTWFzayA9IHF1YWQtPm1hc2tUZXh0dXJlSWQoKTsKKyAgICBPd25QdHI8
Q0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkPiBtYXNrUmVzb3VyY2VMb2NrOworICAgIHVuc2ln
bmVkIG1hc2tUZXh0dXJlSWQgPSAwOworICAgIGlmIChxdWFkLT5tYXNrUmVzb3VyY2VJZCgpKSB7
CisgICAgICAgIG1hc2tSZXNvdXJjZUxvY2sgPSBhZG9wdFB0cihuZXcgQ0NTY29wZWRMb2NrUmVz
b3VyY2VGb3JSZWFkKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+bWFza1Jlc291cmNlSWQoKSkp
OworICAgICAgICBtYXNrVGV4dHVyZUlkID0gbWFza1Jlc291cmNlTG9jay0+dGV4dHVyZUlkKCk7
CisgICAgfQogCiAgICAgLy8gRklYTUU6IHVzZSB0aGUgYmFja2dyb3VuZFRleHR1cmUgYW5kIGJs
ZW5kIHRoZSBiYWNrZ3JvdW5kIGluIHdpdGggdGhpcyBkcmF3IGluc3RlYWQgb2YgaGF2aW5nIGEg
c2VwYXJhdGUgY29weSBvZiB0aGUgYmFja2dyb3VuZCB0ZXh0dXJlLgogCkBAIC02NDksNyArNjYx
LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25z
dCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCkKICAgICBpbnQgc2hhZGVyTWFza1NhbXBsZXJM
b2NhdGlvbiA9IC0xOwogICAgIGludCBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IC0xOwogICAgIGlu
dCBzaGFkZXJBbHBoYUxvY2F0aW9uID0gLTE7Ci0gICAgaWYgKHVzZUFBICYmIHVzZU1hc2spIHsK
KyAgICBpZiAodXNlQUEgJiYgbWFza1RleHR1cmVJZCkgewogICAgICAgICBjb25zdCBSZW5kZXJQ
YXNzTWFza1Byb2dyYW1BQSogcHJvZ3JhbSA9IHJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKCk7CiAg
ICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9n
cmFtKCkpKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtMWkocHJv
Z3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwpAQCAtNjU5LDcg
KzY3MSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQo
Y29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgICAgIHNoYWRlck1hc2tTYW1w
bGVyTG9jYXRpb24gPSBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRp
b24oKTsKICAgICAgICAgc2hhZGVyTWF0cml4TG9jYXRpb24gPSBwcm9ncmFtLT52ZXJ0ZXhTaGFk
ZXIoKS5tYXRyaXhMb2NhdGlvbigpOwogICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9uID0gcHJv
Z3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCk7Ci0gICAgfSBlbHNlIGlmICgh
dXNlQUEgJiYgdXNlTWFzaykgeworICAgIH0gZWxzZSBpZiAoIXVzZUFBICYmIG1hc2tUZXh0dXJl
SWQpIHsKICAgICAgICAgY29uc3QgUmVuZGVyUGFzc01hc2tQcm9ncmFtKiBwcm9ncmFtID0gcmVu
ZGVyUGFzc01hc2tQcm9ncmFtKCk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+
dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9j
YXRpb24oKSwgMCkpOwpAQCAtNjY3LDcgKzY3OSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQp
CiAgICAgICAgIHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24gPSBwcm9ncmFtLT5mcmFnbWVudFNo
YWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKTsKICAgICAgICAgc2hhZGVyTWF0cml4TG9jYXRp
b24gPSBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpOwogICAgICAgICBz
aGFkZXJBbHBoYUxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0
aW9uKCk7Ci0gICAgfSBlbHNlIGlmICh1c2VBQSAmJiAhdXNlTWFzaykgeworICAgIH0gZWxzZSBp
ZiAodXNlQUEgJiYgIW1hc2tUZXh0dXJlSWQpIHsKICAgICAgICAgY29uc3QgUmVuZGVyUGFzc1By
b2dyYW1BQSogcHJvZ3JhbSA9IHJlbmRlclBhc3NQcm9ncmFtQUEoKTsKICAgICAgICAgR0xDKGNv
bnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAg
ICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVu
dFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CkBAIC02ODgsNyArNzAwLDcgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRl
clBhc3NEcmF3UXVhZCogcXVhZCkKICAgICBpZiAoc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiAh
PSAtMSkgewogICAgICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNv
bnRleHQoKS0+dW5pZm9ybTFpKHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIDEpKTsKLSAgICAg
ICAgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
cXVhZC0+bWFza1RleHR1cmVJZCgpKTsKKyAgICAgICAgY29udGV4dCgpLT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbWFza1RleHR1cmVJZCk7CiAgICAgICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRTApKTsKICAgICB9CiAKQEAgLTgyMyw3ICs4MzUsOCBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURyYXdRdWFkKiBxdWFkKQogICAg
IEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbSh1bmlmb3Jtcy5wcm9ncmFtKSk7
CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtMWkodW5pZm9ybXMuc2FtcGxl
ckxvY2F0aW9uLCAwKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotICAgIEdMQyhjb250ZXh0KCksIGNv
bnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHF1YWQt
PnRleHR1cmVJZCgpKSk7CisgICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHF1YWRSZXNv
dXJjZUxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLCBxdWFkLT5yZXNvdXJjZUlkKCkpOworICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIHF1YWRSZXNvdXJjZUxvY2sudGV4dHVyZUlkKCkpKTsKICAgICBHTEMoY29udGV4
dCgpLCBjb250ZXh0KCktPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIHF1YWQtPnRleHR1cmVG
aWx0ZXIoKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
TUFHX0ZJTFRFUiwgcXVhZC0+dGV4dHVyZUZpbHRlcigpKSk7CiAKQEAgLTkxNywxMiArOTMwLDE1
IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3WVVWVmlkZW9RdWFkKGNvbnN0IEND
WVVWVmlkZW9EcmF3UXVhZCogcXVhZCkKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFt
ZVBsYW5lJiB1UGxhbmUgPSBxdWFkLT51UGxhbmUoKTsKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjpGcmFtZVBsYW5lJiB2UGxhbmUgPSBxdWFkLT52UGxhbmUoKTsKIAorICAgIENDU2NvcGVk
TG9ja1Jlc291cmNlRm9yUmVhZCB5UGxhbmVMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgeVBsYW5l
LnJlc291cmNlSWQpOworICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCB1UGxhbmVMb2Nr
KG1fcmVzb3VyY2VQcm92aWRlciwgdVBsYW5lLnJlc291cmNlSWQpOworICAgIENDU2NvcGVkTG9j
a1Jlc291cmNlRm9yUmVhZCB2UGxhbmVMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgdlBsYW5lLnJl
c291cmNlSWQpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsKLSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0
KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB5UGxhbmUudGV4
dHVyZUlkKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgeVBsYW5lTG9jay50ZXh0dXJlSWQoKSkpOwogICAg
IEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRTIpKTsKLSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB1UGxhbmUudGV4dHVyZUlkKSk7CisgICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgdVBsYW5lTG9jay50ZXh0dXJlSWQoKSkpOwogICAgIEdMQyhjb250ZXh0KCks
IGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTMpKTsK
LSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCB2UGxhbmUudGV4dHVyZUlkKSk7CisgICAgR0xDKGNvbnRleHQoKSwg
Y29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdlBs
YW5lTG9jay50ZXh0dXJlSWQoKSkpOwogCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51
c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogCkBAIC0xMDMzLDcgKzEwNDksOCBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVRdWFkKGNvbnN0IENDVGV4dHVy
ZURyYXdRdWFkKiBxdWFkKQogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTRm
KGJpbmRpbmcudGV4VHJhbnNmb3JtTG9jYXRpb24sIHV2UmVjdC54KCksIHV2UmVjdC55KCksIHV2
UmVjdC53aWR0aCgpLCB1dlJlY3QuaGVpZ2h0KCkpKTsKIAogICAgIEdMQyhjb250ZXh0KCksIGNv
bnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAg
ICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBxdWFkLT50ZXh0dXJlSWQoKSkpOworICAgIENDU2NvcGVkTG9ja1Jlc291
cmNlRm9yUmVhZCBxdWFkUmVzb3VyY2VMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+cmVz
b3VyY2VJZCgpKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBxdWFkUmVzb3VyY2VMb2NrLnRleHR1cmVJZCgp
KSk7CiAKICAgICAvLyBGSVhNRTogc2V0dGluZyB0aGUgdGV4dHVyZSBwYXJhbWV0ZXJzIGV2ZXJ5
IHRpbWUgaXMgcmVkdW5kYW50LiBNb3ZlIHRoaXMgY29kZSBzb21ld2hlcmUKICAgICAvLyB3aGVy
ZSBpdCB3aWxsIG9ubHkgaGFwcGVuIG9uY2UgcGVyIHRleHR1cmUuCkBAIC0xMDgwLDEzICsxMDk3
LDYgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdJT1N1cmZhY2VRdWFkKGNvbnN0
IENDSU9TdXJmYWNlRHJhd1F1YWQqIHF1YWQpCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgp
LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhj
b250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JF
Q1RBTkdMRV9BUkIsIHF1YWQtPmlvU3VyZmFjZVRleHR1cmVJZCgpKSk7CiAKLSAgICAvLyBGSVhN
RTogc2V0dGluZyB0aGUgdGV4dHVyZSBwYXJhbWV0ZXJzIGV2ZXJ5IHRpbWUgaXMgcmVkdW5kYW50
LiBNb3ZlIHRoaXMgY29kZSBzb21ld2hlcmUKLSAgICAvLyB3aGVyZSBpdCB3aWxsIG9ubHkgaGFw
cGVuIG9uY2UgcGVyIHRleHR1cmUuCi0gICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQ
YXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7Ci0gICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFw
aGljc0NvbnRleHQzRDo6TElORUFSKSk7Ci0gICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50
ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7
Ci0gICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdy
YXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7Ci0KICAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBxdWFkVHJhbnNmb3JtID0gcXVhZC0+cXVhZFRyYW5zZm9ybSgpOwogICAgIEludFJl
Y3QgcXVhZFJlY3QgPSBxdWFkLT5xdWFkUmVjdCgpOwogICAgIHF1YWRUcmFuc2Zvcm0udHJhbnNs
YXRlKHF1YWRSZWN0LngoKSArIHF1YWRSZWN0LndpZHRoKCkgLyAyLjAsIHF1YWRSZWN0LnkoKSAr
IHF1YWRSZWN0LmhlaWdodCgpIC8gMi4wKTsKQEAgLTExMDgsNyArMTExOCw4IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3SGVhZHNVcERpc3BsYXkoY29uc3QgQ0NTY29wZWRUZXh0
dXJlKiBodWRUZXh0dXJlCiAgICAgY29uc3QgSGVhZHNVcERpc3BsYXlQcm9ncmFtKiBwcm9ncmFt
ID0gaGVhZHNVcERpc3BsYXlQcm9ncmFtKCk7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3Jh
bS0+aW5pdGlhbGl6ZWQoKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5hY3RpdmVU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGh1
ZFRleHR1cmUtPmlkKCkpKTsKKyAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgbG9jayht
X3Jlc291cmNlUHJvdmlkZXIsIGh1ZFRleHR1cmUtPmlkKCkpOworICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxv
Y2sudGV4dHVyZUlkKCkpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dy
YW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51
bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkp
OwogCkBAIC0xMTIyLDYgKzExMzMsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0hlYWRzVXBEaXNwbGF5KGNvbnN0IENDU2NvcGVkVGV4dHVyZSogaHVkVGV4dHVyZQogCiB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKCkKIHsKKyAgICBtX2N1
cnJlbnRGcmFtZWJ1ZmZlckxvY2suY2xlYXIoKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsK
IH0KQEAgLTEzNTYsMTAgKzEzNjgsMTEgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06Omdl
dEZyYW1lYnVmZmVyVGV4dHVyZShDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUsIGNvbnMKIHsKICAg
ICBBU1NFUlQoIXRleHR1cmUtPmlkKCkgfHwgKHRleHR1cmUtPnNpemUoKSA9PSBkZXZpY2VSZWN0
LnNpemUoKSAmJiB0ZXh0dXJlLT5mb3JtYXQoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6UkdCKSk7
CiAKLSAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKGRldmljZVJl
Y3Quc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCKSkKKyAgICBpZiAoIXRleHR1cmUtPmlk
KCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBkZXZpY2VSZWN0
LnNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQiwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0
dXJlVXNhZ2VBbnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0
ZXh0dXJlLT5pZCgpKSk7CisgICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSBsb2NrKG1f
cmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9jay50
ZXh0dXJlSWQoKSkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdl
MkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54
KCksIGRldmljZVJlY3QueSgpLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0
KCksIDApKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzNzYsNiArMTM4OSw3IEBAIGJvb2wgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVu
ZGVyUGFzcykKICAgICBtX2N1cnJlbnRUZXh0dXJlID0gMDsKIAogICAgIGlmIChyZW5kZXJQYXNz
ID09IG1fZGVmYXVsdFJlbmRlclBhc3MpIHsKKyAgICAgICAgbV9jdXJyZW50RnJhbWVidWZmZXJM
b2NrLmNsZWFyKCk7CiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOwogICAgICAgICBzZXRE
cmF3RnJhbWVidWZmZXJSZWN0KHJlbmRlclBhc3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpLCB0
cnVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzg0LDcgKzEzOTgsNyBAQCBib29sIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJl
bmRlclBhc3MpCiAgICAgQ0NTY29wZWRUZXh0dXJlKiB0ZXh0dXJlID0gbV9yZW5kZXJQYXNzVGV4
dHVyZXMuZ2V0KHJlbmRlclBhc3MtPmlkKCkpOwogICAgIEFTU0VSVCh0ZXh0dXJlKTsKIAotICAg
IGlmICghdGV4dHVyZS0+aWQoKSAmJiAhdGV4dHVyZS0+YWxsb2NhdGUocmVuZGVyUGFzc1RleHR1
cmVTaXplKHJlbmRlclBhc3MpLCByZW5kZXJQYXNzVGV4dHVyZUZvcm1hdChyZW5kZXJQYXNzKSkp
CisgICAgaWYgKCF0ZXh0dXJlLT5pZCgpICYmICF0ZXh0dXJlLT5hbGxvY2F0ZShDQ1JlbmRlcmVy
OjpJbXBsUG9vbCwgcmVuZGVyUGFzc1RleHR1cmVTaXplKHJlbmRlclBhc3MpLCByZW5kZXJQYXNz
VGV4dHVyZUZvcm1hdChyZW5kZXJQYXNzKSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNh
Z2VGcmFtZWJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBiaW5k
RnJhbWVidWZmZXJUb1RleHR1cmUodGV4dHVyZSwgcmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRw
dXRSZWN0KCkpOwpAQCAtMTM5Myw3ICsxNDA3LDYgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVzZVJlbmRlclBhc3MoY29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogYm9vbCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVNjb3BlZFRleHR1cmUoY29uc3QgQ0NTY29wZWRUZXh0
dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpCiB7CiAgICAgQVNTRVJU
KHRleHR1cmUtPmlkKCkpOwotCiAgICAgbV9jdXJyZW50UmVuZGVyUGFzcyA9IDA7CiAgICAgbV9j
dXJyZW50VGV4dHVyZSA9IHRleHR1cmU7CiAKQEAgLTE0MDUsNyArMTQxOCw4IEBAIGJvb2wgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoY29uc3QgQ0NTY29w
ZWRUZXh0dXJlKiB0ZXh0CiAgICAgQVNTRVJUKHRleHR1cmUtPmlkKCkpOwogCiAgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpKTsKLSAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZS0+aWQoKSwgMCkpOworICAgIG1fY3VycmVudEZy
YW1lYnVmZmVyTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRl
KG1fcmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+aWQoKSkpOworICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBtX2N1cnJlbnRGcmFtZWJ1ZmZlckxvY2stPnRleHR1cmVJZCgp
LCAwKSk7CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJVRyApCiAgICAgaWYgKG1fY29udGV4dC0+Y2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9IEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewpAQCAtMTQ4MiwxNCArMTQ5
Niw2IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0
cygpCiAgICAgICAgIG1fdGV4dHVyZVVwbG9hZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
OjpjcmVhdGUobV9jb250ZXh0KTsKICAgICBlbHNlCiAgICAgICAgIG1fdGV4dHVyZVVwbG9hZGVy
ID0gVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmNyZWF0ZSgpOwotICAgIG1fY29udGVudHNU
ZXh0dXJlQWxsb2NhdG9yID0gVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250
ZXh0LCBtX2NhcGFiaWxpdGllcy5tYXhUZXh0dXJlU2l6ZSk7Ci0gICAgbV9pbXBsVGV4dHVyZUFs
bG9jYXRvciA9IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dCwgbV9j
YXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUpOwotICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2lu
Z1RleHR1cmVVc2FnZUhpbnQpCi0gICAgICAgIG1faW1wbFRleHR1cmVBbGxvY2F0b3ItPnNldFRl
eHR1cmVVc2FnZUhpbnQoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQpOwotICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1RleHR1cmVTdG9yYWdlRXh0ZW5z
aW9uKSB7Ci0gICAgICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yLT5zZXRVc2VUZXh0dXJl
U3RvcmFnZUV4dCh0cnVlKTsKLSAgICAgICAgbV9pbXBsVGV4dHVyZUFsbG9jYXRvci0+c2V0VXNl
VGV4dHVyZVN0b3JhZ2VFeHQodHJ1ZSk7Ci0gICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDVmYWNkNmY3NzQ1YTlmYWY5OTBm
NmM3ODllODU0YWM2MjY4ODJiYmUuLjEzZjkyMGRkZGVlNDNjM2RkMDc4ZTA1ZTcwOWZhY2UyZjE2
ZDEwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0zNiw3ICszNiw2
IEBACiAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRleHR1
cmVDb3BpZXIuaCIKLSNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNs
dWRlICJjYy9DQ0NoZWNrZXJib2FyZERyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0Jv
cmRlckRyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgpAQCAt
NjYsNyArNjUsNyBAQCBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgQ0NSZW5k
ZXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJLaXQ6OldlYkdy
YXBoaWNzQ29udGV4dDNEOjpXZWJHcmFwaGljc0NvbnRleHRMb3N0Q2FsbGJhY2sgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKExheWVyUmVuZGVyZXJDaHJvbWl1bSk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUoQ0NSZW5kZXJl
ckNsaWVudCosIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlVXBsb2FkZXJP
cHRpb24pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3Jl
YXRlKENDUmVuZGVyZXJDbGllbnQqLCBDQ1Jlc291cmNlUHJvdmlkZXIqLCBUZXh0dXJlVXBsb2Fk
ZXJPcHRpb24pOwogCiAgICAgdmlydHVhbCB+TGF5ZXJSZW5kZXJlckNocm9taXVtKCk7CiAKQEAg
LTEwMyw4ICsxMDIsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFRleHR1cmVDb3BpZXIqIHRl
eHR1cmVDb3BpZXIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3RleHR1cmVDb3BpZXIuZ2V0
KCk7IH0KICAgICB2aXJ0dWFsIFRleHR1cmVVcGxvYWRlciogdGV4dHVyZVVwbG9hZGVyKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gbV90ZXh0dXJlVXBsb2FkZXIuZ2V0KCk7IH0KLSAgICB2aXJ0
dWFsIFRleHR1cmVBbGxvY2F0b3IqIGltcGxUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQotICAgIHZpcnR1YWwg
VGV4dHVyZUFsbG9jYXRvciogY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9jb250ZW50c1RleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIApA
QCAtMTE2LDkgKzExMywxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UXVhZCYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXRyaXhMb2NhdGlvbiwgaW50IGFscGhh
TG9jYXRpb24sIGludCBxdWFkTG9jYXRpb24pOwogICAgIHZvaWQgY29weVRleHR1cmVUb0ZyYW1l
YnVmZmVyKGludCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGJvdW5kcywgY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCk7CisgICAgQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVByb3Zp
ZGVyOyB9CiAKIHByb3RlY3RlZDoKLSAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJl
ckNsaWVudCosIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlVXBsb2FkZXJP
cHRpb24pOworICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xpZW50KiwgQ0NS
ZXNvdXJjZVByb3ZpZGVyKiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKKwogCiAgICAgYm9vbCBp
c0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyYW1lYnVmZmVyRGlz
Y2FyZGVkOyB9CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CkBAIC0xNzUsNiArMTc0LDcgQEAgcHJp
dmF0ZToKIAogICAgIGNvbnN0IENDUmVuZGVyUGFzcyogbV9jdXJyZW50UmVuZGVyUGFzczsKICAg
ICBjb25zdCBDQ1Njb3BlZFRleHR1cmUqIG1fY3VycmVudFRleHR1cmU7CisgICAgT3duUHRyPEND
U2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGU+IG1fY3VycmVudEZyYW1lYnVmZmVyTG9jazsKICAg
ICB1bnNpZ25lZCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQ7CiAKICAgICBPd25QdHI8R2VvbWV0
cnlCaW5kaW5nPiBtX3NoYXJlZEdlb21ldHJ5OwpAQCAtMjYwLDEwICsyNjAsOSBAQCBwcml2YXRl
OgogICAgIE93blB0cjxTb2xpZENvbG9yUHJvZ3JhbT4gbV9zb2xpZENvbG9yUHJvZ3JhbTsKICAg
ICBPd25QdHI8SGVhZHNVcERpc3BsYXlQcm9ncmFtPiBtX2hlYWRzVXBEaXNwbGF5UHJvZ3JhbTsK
IAorICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwogICAgIE93blB0
cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IG1fdGV4dHVyZUNvcGllcjsKICAgICBPd25QdHI8
VGV4dHVyZVVwbG9hZGVyPiBtX3RleHR1cmVVcGxvYWRlcjsKLSAgICBPd25QdHI8VHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yPiBtX2NvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcjsKLSAgICBPd25QdHI8
VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yPiBtX2ltcGxUZXh0dXJlQWxsb2NhdG9yOwogCiAgICAg
SGFzaE1hcDxpbnQsIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+ID4gbV9yZW5kZXJQYXNzVGV4dHVy
ZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmNwcAppbmRleCBiODdiNDNkOTQw
MWEwMWZkMTk5OGI3M2YyY2VmZWI2ZmMwMjRmNDVjLi5iNjZkNzllMDRlYmRhZjhhNjQyNzlkOGEz
MzdiZTgzZTQxZmFjNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwCkBA
IC0zMiwxMiArMzIsMTUgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBGb3IgR0xDKCkgbWFjcm8KICNpbmNs
dWRlICJUcmFjZUV2ZW50LmgiCi0jaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKwordXNpbmcgV2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMYXllclRleHR1
cmVTdWJJbWFnZTo6TGF5ZXJUZXh0dXJlU3ViSW1hZ2UoYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkK
ICAgICA6IG1fdXNlTWFwVGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCisgICAgLCBtX3N1
YkltYWdlU2l6ZSgwKQogewogfQogCkBAIC00NSwxOCArNDgsOSBAQCBMYXllclRleHR1cmVTdWJJ
bWFnZTo6fkxheWVyVGV4dHVyZVN1YkltYWdlKCkKIHsKIH0KIAotdm9pZCBMYXllclRleHR1cmVT
dWJJbWFnZTo6c2V0U3ViSW1hZ2VTaXplKGNvbnN0IEludFNpemUmIHN1YkltYWdlU2l6ZSkKLXsK
LSAgICBpZiAoc3ViSW1hZ2VTaXplID09IG1fc3ViSW1hZ2VTaXplKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3N1YkltYWdlU2l6ZSA9IHN1YkltYWdlU2l6ZTsKLSAgICBtX3N1YkltYWdlLmNs
ZWFyKCk7Ci19Ci0KIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZChjb25zdCB1aW50
OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZv
cm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkKIHsKICAgICBpZiAobV91c2VNYXBUZXhTdWJJbWFnZSkKICAgICAgICAgdXBsb2FkV2l0aE1h
cFRleFN1YkltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBmb3Jt
YXQsIGNvbnRleHQpOwpAQCAtNjYsMTEgKzYwLDkgQEAgdm9pZCBMYXllclRleHR1cmVTdWJJbWFn
ZTo6dXBsb2FkKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QK
IAogdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlKGNvbnN0
IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBDQ0dyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHQzNEZW51bSBmb3JtYXQsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewog
ICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhU
ZXhTdWJJbWFnZSIpOwotICAgIGlmICghbV9zdWJJbWFnZSkKLSAgICAgICAgbV9zdWJJbWFnZSA9
IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbbV9zdWJJbWFnZVNpemUud2lkdGgoKSAqIG1fc3Vi
SW1hZ2VTaXplLmhlaWdodCgpICogNF0pOwogCiAgICAgLy8gT2Zmc2V0IGZyb20gaW1hZ2UtcmVj
dCB0byBzb3VyY2UtcmVjdC4KICAgICBJbnRQb2ludCBvZmZzZXQoc291cmNlUmVjdC54KCkgLSBp
bWFnZVJlY3QueCgpLCBzb3VyY2VSZWN0LnkoKSAtIGltYWdlUmVjdC55KCkpOwpAQCAtNzksNiAr
NzEsMTEgQEAgdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdl
KGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnQKICAgICBpZiAoaW1hZ2VSZWN0LndpZHRo
KCkgPT0gc291cmNlUmVjdC53aWR0aCgpICYmICFvZmZzZXQueCgpKQogICAgICAgICBwaXhlbFNv
dXJjZSA9ICZpbWFnZVs0ICogb2Zmc2V0LnkoKSAqIGltYWdlUmVjdC53aWR0aCgpXTsKICAgICBl
bHNlIHsKKyAgICAgICAgc2l6ZV90IG5lZWRlZFNpemUgPSA0ICogZGVzdFJlY3Qud2lkdGgoKSAq
IGRlc3RSZWN0LmhlaWdodCgpOworICAgICAgICBpZiAobV9zdWJJbWFnZVNpemUgPCBuZWVkZWRT
aXplKSB7CisgICAgICAgICAgbV9zdWJJbWFnZSA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3Rb
bmVlZGVkU2l6ZV0pOworICAgICAgICAgIG1fc3ViSW1hZ2VTaXplID0gbmVlZGVkU2l6ZTsKKyAg
ICAgICAgfQogICAgICAgICAvLyBTdHJpZGVzIG5vdCBlcXVhbCwgc28gZG8gYSByb3ctYnktcm93
IG1lbWNweSBmcm9tIHRoZQogICAgICAgICAvLyBwYWludCByZXN1bHRzIGludG8gYSB0ZW1wIGJ1
ZmZlciBmb3IgdXBsb2FkaW5nLgogICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBkZXN0
UmVjdC5oZWlnaHQoKTsgKytyb3cpCkBAIC04OSwzMCArODYsMTkgQEAgdm9pZCBMYXllclRleHR1
cmVTdWJJbWFnZTo6dXBsb2FkV2l0aFRleFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBj
b25zdCBJbnQKICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV9zdWJJbWFnZVswXTsKICAgICB9CiAK
LSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5j
b250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT50ZXhTdWJJbWFnZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0Lnko
KSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHBpeGVsU291cmNlKSk7CisgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAs
IGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5o
ZWlnaHQoKSwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgcGl4ZWxT
b3VyY2UpKTsKIH0KIAogdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRl
eFN1YkltYWdlKGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9y
bWF0LCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIFdlYkdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0KQogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiTGF5ZXJUZXh0
dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSIpOwotICAgIFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwotICAg
IGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRo
IGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IC8vIE9mZnNldCBmcm9tIGltYWdlLXJlY3QgdG8gc291cmNlLXJlY3QuCiAgICAgSW50UG9pbnQg
b2Zmc2V0KHNvdXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwgc291cmNlUmVjdC55KCkgLSBp
bWFnZVJlY3QueSgpKTsKIAogICAgIC8vIFVwbG9hZCB0aWxlIGRhdGEgdmlhIGEgbWFwcGVkIHRy
YW5zZmVyIGJ1ZmZlcgotICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihjb250ZXh0M2QtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0Lndp
ZHRoKCksIGRlc3RSZWN0LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOworICAgIHVpbnQ4
X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb250ZXh0LT5tYXBUZXhTdWJJ
bWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0
LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwg
Zm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hy
b21pdW06OldSSVRFX09OTFkpKTsKIAogICAgIGlmICghcGl4ZWxEZXN0KSB7CiAgICAgICAgIHVw
bG9hZFdpdGhUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCwgZm9ybWF0LCBjb250ZXh0KTsKQEAgLTEzNiw3ICsxMjIsNyBAQCB2b2lkIExheWVyVGV4dHVy
ZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2Us
IGNvbnN0CiAgICAgICAgICAgICAgICAgICAgJmltYWdlWzQgKiAob2Zmc2V0LngoKSArIChvZmZz
ZXQueSgpICsgcm93KSAqIGltYWdlUmVjdC53aWR0aCgpKV0sCiAgICAgICAgICAgICAgICAgICAg
ZGVzdFJlY3Qud2lkdGgoKSAqIGNvbXBvbmVudHNQZXJQaXhlbCAqIGJ5dGVzUGVyQ29tcG9uZW50
KTsKICAgICB9Ci0gICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT51bm1hcFRleFN1YkltYWdl
MkRDSFJPTUlVTShwaXhlbERlc3QpKTsKKyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5tYXBU
ZXhTdWJJbWFnZTJEQ0hST01JVU0ocGl4ZWxEZXN0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oCmluZGV4IDRmMWM0MTUyMTRkMjMy
OWFiNmU3MmNkZTFiMWYyZmUyMmYyOGEyNzAuLjM1N2I2NDEzNDRiMmUwY2ZkZjVlM2FmZTkzMmM4
ZDE4YWZhZTcxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaApAQCAtMzQsMzAg
KzM0LDMxIEBACiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0
ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdl
YkdyYXBoaWNzQ29udGV4dDNEOworfQogCi1jbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKK25hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgewogcHVibGljOgog
ICAgIGV4cGxpY2l0IExheWVyVGV4dHVyZVN1YkltYWdlKGJvb2wgdXNlTWFwU3ViRm9yVXBsb2Fk
KTsKICAgICB+TGF5ZXJUZXh0dXJlU3ViSW1hZ2UoKTsKIAotICAgIHZvaWQgc2V0U3ViSW1hZ2VT
aXplKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIHVwbG9hZChjb25zdCB1aW50OF90KiBpbWFn
ZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAg
IEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqKTsKKyAgICAgICAgICAgICAgICBH
QzNEZW51bSBmb3JtYXQsIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsKIAogcHJpdmF0
ZToKICAgICB2b2lkIHVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwg
Y29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0Nv
bnRleHQqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQs
IFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHVwbG9hZFdpdGhNYXBU
ZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqKTsKIAogICAgIGJvb2wgbV91c2VNYXBUZXhTdWJJbWFnZTsKLSAgICBJ
bnRTaXplIG1fc3ViSW1hZ2VTaXplOworICAgIHNpemVfdCBtX3N1YkltYWdlU2l6ZTsKICAgICBP
d25BcnJheVB0cjx1aW50OF90PiBtX3N1YkltYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCmluZGV4IGZkOGVkODgzY2M3MzQwY2E5Yzc2ZDU2M2NmZGU5OTkyNDM4NmYzODYu
LjE4OTk0MmUyNTM0YjA2ODYzNzNiZTNjMTI0NDQ2YzA4NTYyZWViYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTMwLDE2ICszMCwxMyBAQAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgotI2luY2x1ZGUg
ImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcmlvcml0aXplZFRleHR1
cmUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIENDR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNp
emU7Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgVGV4dHVyZU1hbmFnZXI7CiAKIGNs
YXNzIExheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxMYXllclRleHR1cmVV
cGRhdGVyPiB7CkBAIC01Miw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgQ0NQcmlvcml0aXpl
ZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KICAgICAgICAg
dm9pZCBzd2FwVGV4dHVyZVdpdGgoT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiYgdGV4dHVy
ZSkgeyBtX3RleHR1cmUuc3dhcCh0ZXh0dXJlKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlcios
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8Q0NQ
cmlvcml0aXplZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3Jv
bGxiYXJMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGUwMGEyNmUzOWY5ZmM3
OTIyYzczY2ViMTQ5NzI1MGE2OGJiMGJkNTMuLjQ5ODhiMzI3ZjQyNTBmZjZlMmU0OTMyNDJkYWZi
ZmVkYmQyNmY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCkBA
IC03NywxOSArNzcsMTkgQEAgdm9pZCBTY3JvbGxiYXJMYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICBzY3JvbGxiYXJMYXllci0+c2V0U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKTsKIAogICAgIGlmIChtX2Jh
Y2tUcmFjayAmJiBtX2JhY2tUcmFjay0+dGV4dHVyZSgpLT5oYXZlQmFja2luZ1RleHR1cmUoKSkK
LSAgICAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldEJhY2tUcmFja1RleHR1cmVJZChtX2JhY2tUcmFj
ay0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRC
YWNrVHJhY2tSZXNvdXJjZUlkKG1fYmFja1RyYWNrLT50ZXh0dXJlKCktPnJlc291cmNlSWQoKSk7
CiAgICAgZWxzZQotICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0QmFja1RyYWNrVGV4dHVyZUlk
KDApOworICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0QmFja1RyYWNrUmVzb3VyY2VJZCgwKTsK
IAogICAgIGlmIChtX2ZvcmVUcmFjayAmJiBtX2ZvcmVUcmFjay0+dGV4dHVyZSgpLT5oYXZlQmFj
a2luZ1RleHR1cmUoKSkKLSAgICAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldEZvcmVUcmFja1RleHR1
cmVJZChtX2ZvcmVUcmFjay0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgICAgIHNjcm9s
bGJhckxheWVyLT5zZXRGb3JlVHJhY2tSZXNvdXJjZUlkKG1fZm9yZVRyYWNrLT50ZXh0dXJlKCkt
PnJlc291cmNlSWQoKSk7CiAgICAgZWxzZQotICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0Rm9y
ZVRyYWNrVGV4dHVyZUlkKDApOworICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0Rm9yZVRyYWNr
UmVzb3VyY2VJZCgwKTsKIAogICAgIGlmIChtX3RodW1iICYmIG1fdGh1bWItPnRleHR1cmUoKS0+
aGF2ZUJhY2tpbmdUZXh0dXJlKCkpCi0gICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRUaHVtYlRl
eHR1cmVJZChtX3RodW1iLT50ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICAgICAgc2Nyb2xs
YmFyTGF5ZXItPnNldFRodW1iUmVzb3VyY2VJZChtX3RodW1iLT50ZXh0dXJlKCktPnJlc291cmNl
SWQoKSk7CiAgICAgZWxzZQotICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0VGh1bWJUZXh0dXJl
SWQoMCk7CisgICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRUaHVtYlJlc291cmNlSWQoMCk7CiAK
ICAgICBWZWN0b3I8SW50UmVjdD4gdGlja21hcmtzOwogICAgIG1fc2Nyb2xsYmFyLT5nZXRUaWNr
bWFya3ModGlja21hcmtzKTsKQEAgLTIwNSwyNCArMjA1LDIzIEBAIHZvaWQgU2Nyb2xsYmFyTGF5
ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAKIHZv
aWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgp
CiB7Ci0gICAgYm9vbCB1c2VNYXBTdWJJbWFnZSA9IGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViOwogICAgIG1fdGV4dHVyZUZvcm1hdCA9IGxh
eWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLmJlc3RUZXh0dXJlRm9y
bWF0OwogCiAgICAgaWYgKCFtX2JhY2tUcmFja1VwZGF0ZXIpCi0gICAgICAgIG1fYmFja1RyYWNr
VXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxi
YXJCYWNrZ3JvdW5kUGFpbnRlcjo6Y3JlYXRlKG1fc2Nyb2xsYmFyLmdldCgpLCB0aGVtZSgpLCBC
YWNrVHJhY2tQYXJ0KSwgdXNlTWFwU3ViSW1hZ2UpOworICAgICAgICBtX2JhY2tUcmFja1VwZGF0
ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFj
a2dyb3VuZFBhaW50ZXI6OmNyZWF0ZShtX3Njcm9sbGJhci5nZXQoKSwgdGhlbWUoKSwgQmFja1Ry
YWNrUGFydCkpOwogICAgIGlmICghbV9iYWNrVHJhY2spCiAgICAgICAgIG1fYmFja1RyYWNrID0g
bV9iYWNrVHJhY2tVcGRhdGVyLT5jcmVhdGVUZXh0dXJlKGxheWVyVHJlZUhvc3QoKS0+Y29udGVu
dHNUZXh0dXJlTWFuYWdlcigpKTsKIAogICAgIC8vIE9ubHkgY3JlYXRlIHR3by1wYXJ0IHRyYWNr
IGlmIHdlIHRoaW5rIHRoZSB0d28gcGFydHMgY291bGQgYmUgZGlmZmVyZW50IGluIGFwcGVhcmFu
Y2UuCiAgICAgaWYgKG1fc2Nyb2xsYmFyLT5pc0N1c3RvbVNjcm9sbGJhcigpKSB7CiAgICAgICAg
IGlmICghbV9mb3JlVHJhY2tVcGRhdGVyKQotICAgICAgICAgICAgbV9mb3JlVHJhY2tVcGRhdGVy
ID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFNjcm9sbGJhckJhY2tn
cm91bmRQYWludGVyOjpjcmVhdGUobV9zY3JvbGxiYXIuZ2V0KCksIHRoZW1lKCksIEZvcndhcmRU
cmFja1BhcnQpLCB1c2VNYXBTdWJJbWFnZSk7CisgICAgICAgICAgICBtX2ZvcmVUcmFja1VwZGF0
ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFj
a2dyb3VuZFBhaW50ZXI6OmNyZWF0ZShtX3Njcm9sbGJhci5nZXQoKSwgdGhlbWUoKSwgRm9yd2Fy
ZFRyYWNrUGFydCkpOwogICAgICAgICBpZiAoIW1fZm9yZVRyYWNrKQogICAgICAgICAgICAgbV9m
b3JlVHJhY2sgPSBtX2ZvcmVUcmFja1VwZGF0ZXItPmNyZWF0ZVRleHR1cmUobGF5ZXJUcmVlSG9z
dCgpLT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCkpOwogICAgIH0KIAogICAgIGlmICghbV90aHVt
YlVwZGF0ZXIpCi0gICAgICAgIG1fdGh1bWJVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6Y3JlYXRlKFNjcm9sbGJhclRodW1iUGFpbnRlcjo6Y3JlYXRlKG1fc2Nyb2xs
YmFyLmdldCgpLCB0aGVtZSgpKSwgdXNlTWFwU3ViSW1hZ2UpOworICAgICAgICBtX3RodW1iVXBk
YXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxiYXJU
aHVtYlBhaW50ZXI6OmNyZWF0ZShtX3Njcm9sbGJhci5nZXQoKSwgdGhlbWUoKSkpOwogICAgIGlm
ICghbV90aHVtYikKICAgICAgICAgbV90aHVtYiA9IG1fdGh1bWJVcGRhdGVyLT5jcmVhdGVUZXh0
dXJlKGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVB
bGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rl
eHR1cmVBbGxvY2F0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThkZTExNTIy
YjRhYWRhZTE2YmNiMjdlMDU0ZmY3MzdiODg2YjgzZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotCi0jaWZuZGVmIFRleHR1cmVBbGxvY2F0b3JfaAotI2RlZmluZSBU
ZXh0dXJlQWxsb2NhdG9yX2gKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5j
bHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHVu
c2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmUsIGNvbnN0
IEludFNpemUmLCBHQzNEZW51bSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxUZXh0
dXJlcygpID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgflRleHR1cmVBbGxvY2F0b3Io
KSB7IH0KLX07Ci0KLX0KLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcAppbmRleCAz
MzI0M2M4NTUyZDNmYTJlODUxZWY3Zjg2M2E1ZGU2MjAzNWM1MDg1Li4wYjU5NTk3YTVlZTgwOTAw
N2EyNDg0MWI1ZDVmN2U5YWY5Yzk0NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcApAQCAtNjYs
NTUgKzY2LDU0IEBAIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6fkFjY2VsZXJhdGVkVGV4dHVy
ZUNvcGllcigpCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVi
dWZmZXIobV9mYm8pKTsKIH0KIAotdm9pZCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNvcHlU
ZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiBjY0NvbnRleHQsIHVuc2lnbmVkIHNvdXJjZVRleHR1
cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3ZvaWQg
QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSh1bnNpZ25lZCBzb3VyY2VUZXh0
dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAg
ICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSIpOwogCi0g
ICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGNjQ29udGV4dC0+Y29u
dGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQogICAgIC8vIE5vdGU6IHRoaXMgY29kZSBkb2VzIG5vdCByZXN0b3JlIHRoZSB2aWV3
cG9ydCwgYm91bmQgcHJvZ3JhbSwgMkQgdGV4dHVyZSwgZnJhbWVidWZmZXIsIGJ1ZmZlciBvciBi
bGVuZCBlbmFibGUuCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKSk7Ci0gICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgZGVzdFRleHR1cmVJZCwgMCkpOworICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgbV9mYm8pKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgZGVzdFRl
eHR1cmVJZCwgMCkpOwogCiAjaWYgT1MoQU5EUk9JRCkKICAgICAvLyBDbGVhciBkZXN0aW5hdGlv
biB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9uIHRpbGluZyBHUFVzLgogICAgIC8vIFRPRE86IFVz
ZSBFWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlciBvciBza2lwIGNsZWFyaW5nIGlmIGl0IGlzbid0IGF2
YWlsYWJsZS4KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0JVRkZFUl9CSVQpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmNs
ZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKSk7CiAjZW5kaWYKIAotICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgc291cmNlVGV4dHVyZUlkKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRl
eFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7Ci0g
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpORUFSRVNUKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5i
aW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgc291cmNlVGV4dHVyZUlk
KSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklM
VEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5F
QVJFU1QpKTsKIAogICAgIGlmICghbV9ibGl0UHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSkKLSAgICAg
ICAgbV9ibGl0UHJvZ3JhbS0+aW5pdGlhbGl6ZShjb250ZXh0LCBtX3VzaW5nQmluZFVuaWZvcm1z
KTsKKyAgICAgICAgbV9ibGl0UHJvZ3JhbS0+aW5pdGlhbGl6ZShtX2NvbnRleHQsIG1fdXNpbmdC
aW5kVW5pZm9ybXMpOwogCiAgICAgLy8gVE9ETzogVXNlIEVYVF9mcmFtZWJ1ZmZlcl9ibGl0IGlm
IGF2YWlsYWJsZS4KLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbShtX2JsaXRQ
cm9ncmFtLT5wcm9ncmFtKCkpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVBy
b2dyYW0obV9ibGl0UHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAKICAgICBjb25zdCBpbnQga1Bvc2l0
aW9uQXR0cmlidXRlID0gMDsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX3Bvc2l0aW9uQnVmZmVyKSk7Ci0gICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoa1Bvc2l0aW9uQXR0cmli
dXRlLCA0LCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCAwLCAwKSk7Ci0gICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGtQb3NpdGlvbkF0dHJp
YnV0ZSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpBUlJBWV9CVUZGRVIsIDApKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV9wb3NpdGlvbkJ1
ZmZlcikpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRl
cihrUG9zaXRpb25BdHRyaWJ1dGUsIDQsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVCwgZmFsc2Us
IDAsIDApKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KGtQb3NpdGlvbkF0dHJpYnV0ZSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCAwKSk7CiAKLSAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+dmlld3BvcnQoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRpc2FibGUoR3JhcGhpY3ND
b250ZXh0M0Q6OkJMRU5EKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRyYXdBcnJheXMo
R3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgMCwgNCkpOworICAgIEdMQyhtX2NvbnRl
eHQsIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4
dDNEOjpCTEVORCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZHJhd0FycmF5cyhH
cmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVfRkFOLCAwLCA0KSk7CiAKLSAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkxJTkVBUikpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdf
RklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShrUG9zaXRpb25BdHRyaWJ1dGUpKTsKKyAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdy
YXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQt
PnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsK
KyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShr
UG9zaXRpb25BdHRyaWJ1dGUpKTsKIAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51c2VQcm9n
cmFtKDApKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dyYW0oMCkpOwog
Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1F
TlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCkpOwotICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCAwKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCAwKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdy
YXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIDAsIDApKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKKyAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwKSk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpmbHVzaCgpCit7
CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mbHVzaCgpKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNv
cGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZUNvcGllci5oCmluZGV4IGMyYmNkNDI3YzMxMDBjMmE1NDhhODEyMzI4YWE3NzJhZWE0ZmFhMzQu
LmIzODVmNDVlNTQzYTc0MzZlNTU3ODAzMjJiYTFkMmIxNGUyNzdhZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29w
aWVyLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgog
I2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVkZSAiU2hhZGVyQ2hyb21pdW0uaCIK
LSNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwpAQCAtNDIsNyArNDEsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gQ29weSB0aGUgYmFzZSBsZXZlbCBjb250ZW50cyBvZiB8c291cmNlVGV4dHVyZUlkfCB0
byB8ZGVzdFRleHR1cmVJZHwuIEJvdGggdGV4dHVyZSBvYmplY3RzCiAgICAgLy8gbXVzdCBiZSBj
b21wbGV0ZSBhbmQgaGF2ZSBhIGJhc2UgbGV2ZWwgb2YgfHNpemV8IGRpbWVuc2lvbnMuIFRoZSBj
b2xvciBmb3JtYXRzIGRvIG5vdCBuZWVkCiAgICAgLy8gdG8gbWF0Y2gsIGJ1dCB8ZGVzdFRleHR1
cmVJZHwgbXVzdCBoYXZlIGEgcmVuZGVyYWJsZSBmb3JtYXQuCi0gICAgdmlydHVhbCB2b2lkIGNv
cHlUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1
bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjb3B5VGV4dHVyZSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RU
ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZsdXNoKCkg
PSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+VGV4dHVyZUNvcGllcigpIHsgfQpAQCAt
NTksNyArNTksOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkVGV4
dHVyZUNvcGllcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKENDR3JhcGhpY3ND
b250ZXh0KiwgdW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlk
LCBjb25zdCBJbnRTaXplJik7CisgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKHVuc2lnbmVk
IHNvdXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYp
OworICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQWNjZWxlcmF0
ZWRUZXh0dXJlQ29waWVyKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqLCBib29sIHVzaW5n
QmluZFVuaWZvcm1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKaW5kZXggMGVhZTJlNjVkZDAyNDY0
Y2QyMGZiZjM4ZmRiYjc4ZWNjZGRjODkxYi4uOTI4NzBjYjVhNWJmZDkwZWFmYzI4NzNkNzBjYzBj
ZjEwZDFiZTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJl
Z2luVXBsb2FkcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVwbG9hZFRleHR1cmUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIENDUmVzb3VyY2VQ
cm92aWRlciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVj
dCkgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5j
cHAKaW5kZXggYTgyNTNkMDY1NTE2MjVmMGIwNzNhZWNmNWRlZjc1Y2RhZTAyYWZiZC4uMjgxZTA4
ZmYwNDk4NzgxMjhhODQzMjcwOWVmZmU2OTY5MWI4MGQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwCkBAIC0xMjAsOSArMTIwLDkgQEAgdm9pZCBUaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXI6OmVuZFVwbG9hZHMoKQogICAgIG1fcGVuZGluZ1F1ZXJpZXMuYXBw
ZW5kKG1fYXZhaWxhYmxlUXVlcmllcy50YWtlRmlyc3QoKSk7CiB9CiAKLXZvaWQgVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0
UmVjdCkKK3ZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIENDUmVzb3VyY2VQcm92aWRlciogcmVz
b3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRl
c3RSZWN0KQogewotICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgdGV4dHVyZS0+dXBkYXRlUmVjdChyZXNvdXJjZVBy
b3ZpZGVyLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKIHZvaWQgVGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyOjpwcm9jZXNzUXVlcmllcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVV
cGxvYWRlci5oCmluZGV4IGFlNWI3NDkxZjI4NDg0NDBmNDEzMWNlNmJiMTQzZTc1YTRkNmM5ZGEu
LmY4YzQzZGMyZDQzMDM5ZjJmZDI3OGNmYTdjNzE3Y2FhMjkwYmE0YzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVV
cGxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2lu
VXBsb2FkcygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqLCBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IElu
dFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSos
IENDUmVzb3VyY2VQcm92aWRlciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgUXVlcnkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWVkNWNmYzlhY2UxNjlmNTUxNTI4
NzZhMTRlNzRkYzY0MjFhNjFjYi4uOGU0ODkxOTVlNDJjMGRlNTIxMmE1MjFlMTliNTIyODMyMjlk
YTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0yMjYsNyArMjI2LDcg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwq
IGxheWVyKQogICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eUZvckN1cnJlbnRGcmFtZSgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgdGlsZWRMYXllci0+cHVzaFRpbGVQcm9wZXJ0
aWVzKGksIGosIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnRleHR1cmVJZCgpLCB0aWxlLT5vcGFx
dWVSZWN0KCkpOworICAgICAgICB0aWxlZExheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwg
dGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+cmVzb3VyY2VJZCgpLCB0aWxlLT5vcGFxdWVSZWN0KCkp
OwogICAgICAgICB0aWxlLT5pc0luVXNlT25JbXBsID0gdHJ1ZTsKICAgICB9CiAgICAgZm9yIChW
ZWN0b3I8VXBkYXRhYmxlVGlsZSo+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gaW52YWxpZFRpbGVz
LmJlZ2luKCk7IGl0ZXIgIT0gaW52YWxpZFRpbGVzLmVuZCgpOyArK2l0ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1
cmVBbGxvY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggN2FlMjlmOTEyYjg4ZTMzOGI4ZGIwZjAzOGE0YjVhODI1MDVjNTM3Yy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKLQotI2luY2x1
ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgiIC8vIEZvciB0aGUgR0xDKCkgbWFjcm8KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1UcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3I6OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcihXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBpbnQgbWF4VGV4dHVyZVNpemUpCi0gICAgOiBt
X2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fbWF4VGV4dHVyZVNpemUobWF4VGV4dHVyZVNpemUp
Ci0gICAgLCBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlcygwKQotICAgICwgbV90ZXh0dXJlVXNhZ2VI
aW50KEFueSkKLSAgICAsIG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQoZmFsc2UpCi17Ci0gICAgQVNT
RVJUKG1fY29udGV4dCk7Ci19Ci0KLVRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6flRyYWNraW5n
VGV4dHVyZUFsbG9jYXRvcigpCi17Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRNZW1vcnlVc2VCeXRl
cyk7Ci19Ci0KLXN0YXRpYyBHQzNEZW51bSB0ZXh0dXJlVG9TdG9yYWdlRm9ybWF0KEdDM0RlbnVt
IHRleHR1cmVGb3JtYXQpCi17Ci0gICAgR0MzRGVudW0gc3RvcmFnZUZvcm1hdCA9IEV4dGVuc2lv
bnMzRDo6UkdCQThfT0VTOwotICAgIHN3aXRjaCAodGV4dHVyZUZvcm1hdCkgewotICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXh0ZW5z
aW9uczNEOjpCR1JBX0VYVDoKLSAgICAgICAgc3RvcmFnZUZvcm1hdCA9IEV4dGVuc2lvbnMzRENo
cm9taXVtOjpCR1JBOF9FWFQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1
cm4gc3RvcmFnZUZvcm1hdDsKLX0KLQotc3RhdGljIGJvb2wgaXNUZXh0dXJlRm9ybWF0U3VwcG9y
dGVkRm9yU3RvcmFnZShHQzNEZW51bSBmb3JtYXQpCi17Ci0gICAgcmV0dXJuIChmb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEgfHwgZm9ybWF0ID09IEV4dGVuc2lvbnMzRDo6QkdSQV9F
WFQpOwotfQotCi11bnNpZ25lZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZVRleHR1
cmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQotewotICAgIGlmIChzaXpl
LndpZHRoKCkgPiBtX21heFRleHR1cmVTaXplIHx8IHNpemUuaGVpZ2h0KCkgPiBtX21heFRleHR1
cmVTaXplKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVz
ICs9IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5dGVzKHNpemUsIGZvcm1hdCk7Ci0KLSAgICB1bnNp
Z25lZCB0ZXh0dXJlSWQgPSAwOwotICAgIEdMQyhtX2NvbnRleHQsIHRleHR1cmVJZCA9IG1fY29u
dGV4dC0+Y3JlYXRlVGV4dHVyZSgpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQpKTsKLSAg
ICAvLyBEbyBiYXNpYyBsaW5lYXIgZmlsdGVyaW5nIG9uIHJlc2l6ZS4KLSAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4
dDNEOjpMSU5FQVIpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRl
cmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAvLyBOUE9U
IHRleHR1cmVzIGluIEdMIEVTIG9ubHkgd29yayB3aGVuIHRoZSB3cmFwIG1vZGUgaXMgc2V0IHRv
IEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFLgotICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBf
VE9fRURHRSkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
V1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotCi0gICAgaWYgKG1f
dGV4dHVyZVVzYWdlSGludCA9PSBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQpCi0gICAgICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkdMX1RFWFRVUkVfVVNBR0VfQU5HTEUsIEV4
dGVuc2lvbnMzRENocm9taXVtOjpHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFKSk7Ci0g
ICAgaWYgKG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQgJiYgaXNUZXh0dXJlRm9ybWF0U3VwcG9ydGVk
Rm9yU3RvcmFnZShmb3JtYXQpKSB7Ci0gICAgICAgIEdDM0RlbnVtIHN0b3JhZ2VGb3JtYXQgPSB0
ZXh0dXJlVG9TdG9yYWdlRm9ybWF0KGZvcm1hdCk7Ci0gICAgICAgIG1fY29udGV4dC0+dGV4U3Rv
cmFnZTJERVhUKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAxLCBzdG9yYWdlRm9ybWF0
LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotICAgIH0gZWxzZQotICAgICAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIDAsIGZvcm1hdCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCAwLCBmb3JtYXQs
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAwKSk7Ci0gICAgbV9hbGxvY2F0ZWRU
ZXh0dXJlSWRzLmFkZCh0ZXh0dXJlSWQpOwotICAgIHJldHVybiB0ZXh0dXJlSWQ7Ci19Ci0KLXZv
aWQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1
cmVJZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQotewotICAgIG1fY3Vy
cmVudE1lbW9yeVVzZUJ5dGVzIC09IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5dGVzKHNpemUsIGZv
cm1hdCk7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1
cmVJZCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh0ZXh0
dXJlSWQpKTsKLSAgICBBU1NFUlQobV9hbGxvY2F0ZWRUZXh0dXJlSWRzLmNvbnRhaW5zKHRleHR1
cmVJZCkpOwotICAgIG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5yZW1vdmUodGV4dHVyZUlkKTsKLX0K
LQotdm9pZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmRlbGV0ZUFsbFRleHR1cmVzKCkKLXsK
LSAgICBmb3IgKEhhc2hTZXQ8dW5zaWduZWQ+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fYWxsb2Nh
dGVkVGV4dHVyZUlkcy5iZWdpbigpOyBpdCAhPSBtX2FsbG9jYXRlZFRleHR1cmVJZHMuZW5kKCk7
ICsraXQpCi0gICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSgq
aXQpKTsKLSAgICBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlcyA9IDA7Ci0gICAgbV9hbGxvY2F0ZWRU
ZXh0dXJlSWRzLmNsZWFyKCk7Ci19Ci0KLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhmN2NhMDQzYjRmZDk3
MDViNTliZDMzZjNhOWJiNzAxNTYwZDEyZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcl9oCi0j
ZGVmaW5lIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcl9oCi0KLSNpbmNsdWRlICJUZXh0dXJlQWxs
b2NhdG9yLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNE
OwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFRyYWNraW5nVGV4dHVyZUFsbG9j
YXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gY3JlYXRlKFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIGludCBtYXhUZXh0dXJlU2l6ZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKGNvbnRleHQsIG1heFRl
eHR1cmVTaXplKSk7Ci0gICAgfQotICAgIHZpcnR1YWwgflRyYWNraW5nVGV4dHVyZUFsbG9jYXRv
cigpOwotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUm
LCBHQzNEZW51bSBmb3JtYXQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0
dXJlKHVuc2lnbmVkIHRleHR1cmUsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxUZXh0dXJlcygpIE9WRVJSSURFOwot
Ci0gICAgc2l6ZV90IGN1cnJlbnRNZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fY3Vy
cmVudE1lbW9yeVVzZUJ5dGVzOyB9Ci0KLSAgICBlbnVtIFRleHR1cmVVc2FnZUhpbnQgeyBBbnks
IEZyYW1lYnVmZmVyQXR0YWNobWVudCB9OwotCi0gICAgdm9pZCBzZXRUZXh0dXJlVXNhZ2VIaW50
KFRleHR1cmVVc2FnZUhpbnQgaGludCkgeyBtX3RleHR1cmVVc2FnZUhpbnQgPSBoaW50OyB9Ci0g
ICAgdm9pZCBzZXRVc2VUZXh0dXJlU3RvcmFnZUV4dChib29sIHVzZVN0b3JhZ2VFeHQpIHsgbV91
c2VUZXh0dXJlU3RvcmFnZUV4dCA9IHVzZVN0b3JhZ2VFeHQ7IH0KLQotcHJvdGVjdGVkOgotICAg
IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcihXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiwg
aW50IG1heFRleHR1cmVTaXplKTsKLQotICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Qq
IG1fY29udGV4dDsKLSAgICBpbnQgbV9tYXhUZXh0dXJlU2l6ZTsKLSAgICBzaXplX3QgbV9jdXJy
ZW50TWVtb3J5VXNlQnl0ZXM7Ci0gICAgVGV4dHVyZVVzYWdlSGludCBtX3RleHR1cmVVc2FnZUhp
bnQ7Ci0gICAgYm9vbCBtX3VzZVRleHR1cmVTdG9yYWdlRXh0OwotICAgIEhhc2hTZXQ8dW5zaWdu
ZWQ+IG1fYWxsb2NhdGVkVGV4dHVyZUlkczsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IGJlMTk5ODNlZmI2MjYzNmMwNTZiNjkwNjc5ZjVm
ZDAxZTk2ZjQ4ZGQuLjBmNmY2ZWUwZTIzZTk1YTJjZTRlY2VkYjQ5NDBmZGJiNjAwZGY4ODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
SGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5j
bHVkZSAiY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmgiCiAjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVD
b3VudGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgotI2luY2x1ZGUg
PHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCwxMyArNjcsOCBAQCBib29sIEND
SGVhZHNVcERpc3BsYXk6OnNob3dEZWJ1Z1JlY3RzKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mm
IHNldHRpbmdzKSBjb25zdAogdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJUcmVl
SG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogewogICAgIENDUmVuZGVyZXIqIGxheWVyUmVu
ZGVyZXIgPSBsYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpOwotICAgIFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclRyZWVIb3N0SW1wbC0+Y29udGV4
dCgpLT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgICAgICBy
ZXR1cm47Ci0gICAgfQogICAgIGlmICghbV9odWRUZXh0dXJlKQotICAgICAgICBtX2h1ZFRleHR1
cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVyZUFs
bG9jYXRvcigpKTsKKyAgICAgICAgbV9odWRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVh
dGUobGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7CiAKICAgICBjb25zdCBD
Q0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncyA9IGxheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5n
cygpOwogICAgIC8vIFVzZSBhIGZ1bGxzY3JlZW4gdGV4dHVyZSBvbmx5IGlmIHdlIG5lZWQgdG8u
Li4KQEAgLTg3LDcgKzgxLDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KENDTGF5ZXJU
cmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogICAgICAgICBodWRTaXplLnNldEhlaWdo
dCgxMjgpOwogICAgIH0KIAotICAgIGlmICghbV9odWRUZXh0dXJlLT5pZCgpICYmICFtX2h1ZFRl
eHR1cmUtPmFsbG9jYXRlKGh1ZFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKKyAgICBp
ZiAoIW1faHVkVGV4dHVyZS0+aWQoKSAmJiAhbV9odWRUZXh0dXJlLT5hbGxvY2F0ZShDQ1JlbmRl
cmVyOjpJbXBsUG9vbCwgaHVkU2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3Vy
Y2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
UmVuZGVyIHBpeGVscyBpbnRvIHRoZSB0ZXh0dXJlLgpAQCAtMTAyLDIyICs5Niw4IEBAIHZvaWQg
Q0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0
SW1wbCkKICAgICAvLyBVcGxvYWQgdG8gR0wuCiAgICAgewogICAgICAgICBQbGF0Zm9ybUNhbnZh
czo6QXV0b0xvY2tlciBsb2NrZXIoJmNhbnZhcyk7Ci0KLSAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2h1ZFRl
eHR1cmUtPmlkKCkpKTsKLSAgICAgICAgYm9vbCB1cGxvYWRlZFZpYU1hcCA9IGZhbHNlOwotICAg
ICAgICBpZiAobGF5ZXJSZW5kZXJlci0+Y2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpIHsKLSAg
ICAgICAgICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb250
ZXh0LT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIDAsIDAsIDAsIGh1ZFNpemUud2lkdGgoKSwgaHVkU2l6ZS5oZWlnaHQoKSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNp
b25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOwotCi0gICAgICAgICAgICBpZiAocGl4ZWxEZXN0
KSB7Ci0gICAgICAgICAgICAgICAgdXBsb2FkZWRWaWFNYXAgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIG1lbWNweShwaXhlbERlc3QsIGxvY2tlci5waXhlbHMoKSwgaHVkU2l6ZS53aWR0aCgpICog
aHVkU2l6ZS5oZWlnaHQoKSAqIDQpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnVubWFwVGV4
U3ViSW1hZ2UyRENIUk9NSVVNKHBpeGVsRGVzdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoIXVwbG9hZGVkVmlhTWFwKSB7Ci0gICAgICAgICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIGNhbnZhcy5zaXplKCkud2lkdGgoKSwgY2FudmFzLnNp
emUoKS5oZWlnaHQoKSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9CWVRFLCBsb2NrZXIucGl4ZWxzKCkpKTsKLSAgICAgICAgfQorICAgICAg
ICBJbnRSZWN0IHJlY3QoSW50UG9pbnQoMCwgMCksIGh1ZFNpemUpOworICAgICAgICBsYXllclRy
ZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpLT51cGxvYWQobV9odWRUZXh0dXJlLT5pZCgp
LCBsb2NrZXIucGl4ZWxzKCksIHJlY3QsIHJlY3QsIHJlY3QpOwogICAgIH0KIAogICAgIGxheWVy
UmVuZGVyZXItPmRyYXdIZWFkc1VwRGlzcGxheShtX2h1ZFRleHR1cmUuZ2V0KCksIGh1ZFNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCmluZGV4IDM3MzI1ZDAx
ZTM2NzNjMjdiZDFhZDY2M2FmZmUzNjQ2YWI1ZjFhMWIuLjZkYWMyZTdhNzcyOTNhYTg2ODU5NDcx
MmYwYjEzODM3YTllMmM3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1w
bC5jcHAKQEAgLTYwLDEyICs2MCwxMiBAQCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6fkNDSU9TdXJm
YWNlTGF5ZXJJbXBsKCkKICAgICAgICAgY29udGV4dDNkLT5kZWxldGVUZXh0dXJlKG1faW9TdXJm
YWNlVGV4dHVyZUlkKTsKIH0KIAotdm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6d2lsbERyYXco
Q0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2
b2lkIENDSU9TdXJmYWNlTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJl
c291cmNlUHJvdmlkZXIpCiB7Ci0gICAgQ0NMYXllckltcGw6OndpbGxEcmF3KGxheWVyUmVuZGVy
ZXIsIGNvbnRleHQpOworICAgIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhyZXNvdXJjZVByb3ZpZGVy
KTsKIAogICAgIGlmIChtX2lvU3VyZmFjZUNoYW5nZWQpIHsKLSAgICAgICAgV2ViS2l0OjpXZWJH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAg
ICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IHJlc291cmNlUHJv
dmlkZXItPmdyYXBoaWNzQ29udGV4dDNEKCk7CiAgICAgICAgIGlmICghY29udGV4dDNkKSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29t
cG9zaXRpbmcuCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VM
YXllckltcGwuaAppbmRleCAyOGEzNWNkMGYyMDgzYTg2MjEwMTcxODc5YzFiOTI2YjUyYmQwNGUy
Li40MjM2ODgwOWMxMzQzNmMwNmE0YjcyMDRhZWQxNGJjYmZlOWFjNDQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxh
eWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgdm9pZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkg
Y29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggOTQzNGRjNTljZDhl
OWU1ODU2MmY0ZjZiNjBiNDllZDZkMDZmZmY1Mi4uMjNkZTdlNGE4OTAzYjc0N2YzYjRkNGY5ZDY2
N2I0NjhhN2JjMTEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTU3LDcgKzE1Nyw3
IEBAIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDTGF5ZXJJbXBsOjpjcmVhdGVTaGFy
ZWRRdWFkU3RhdGUoKSBjb25zdAogICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRl
KHF1YWRUcmFuc2Zvcm1hdGlvbiwgbV92aXNpYmxlQ29udGVudFJlY3QsIG1fc2Npc3NvclJlY3Qs
IG1fZHJhd09wYWNpdHksIG1fb3BhcXVlKTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6d2lsbERy
YXcoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0KikKK3ZvaWQgQ0NMYXllckltcGw6Ondp
bGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIHdp
bGxEcmF3L2RpZERyYXcgbXVzdCBiZSBtYXRjaGVkLgpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQg
Q0NMYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopCiAj
ZW5kaWYKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6ZGlkRHJhdygpCit2b2lkIENDTGF5ZXJJbXBs
OjpkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIEFT
U0VSVChtX2JldHdlZW5XaWxsRHJhd0FuZERpZERyYXcpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHZv
aWQgQ0NMYXllckltcGw6OmFwcGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImIHF1YWRM
aXN0LCBjb25zdCBDQ1NoYXJlZFF1CiAgICAgcXVhZExpc3QuYXBwZW5kKENDRGVidWdCb3JkZXJE
cmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QsIGRlYnVnQm9yZGVy
Q29sb3IoKSwgZGVidWdCb3JkZXJXaWR0aCgpKSk7CiB9CiAKLXVuc2lnbmVkIENDTGF5ZXJJbXBs
Ojpjb250ZW50c1RleHR1cmVJZCgpIGNvbnN0CitDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNl
SWQgQ0NMYXllckltcGw6OmNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCBh
NWNhY2Q2NGJmZjRhNjE0YmMzNTExMDFiMDVkMGMyODcwZDExZmJjLi5kOWVhZmRhYzBmODE1ZTNm
MGMwZGM4MTk5NDA5MWEzNmIxZTNiOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNl
LmgiCisjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NT
aGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgpAQCAtNDQsNyAr
NDUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgQ0NMYXllclNvcnRlcjsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFz
cyBDQ1F1YWRDdWxsZXI7CkBAIC05MiwxMiArOTIsMTIgQEAgcHVibGljOgogICAgIC8vIGRpZERy
YXcgaXMgZ3VhcmFudGVlZCB0byBiZSBjYWxsZWQgYmVmb3JlIGFub3RoZXIgd2lsbERyYXcgb3Ig
YmVmb3JlCiAgICAgLy8gdGhlIGxheWVyIGlzIGRlc3Ryb3llZC4gVG8gZW5mb3JjZSB0aGlzLCBh
bnkgY2xhc3MgdGhhdCBvdmVycmlkZXMKICAgICAvLyB3aWxsRHJhdy9kaWREcmF3IG11c3QgY2Fs
bCB0aGUgYmFzZSBjbGFzcyB2ZXJzaW9uLgotICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jl
bmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXco
Q0NSZXNvdXJjZVByb3ZpZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVh
ZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVz
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdygpOworICAgIHZpcnR1YWwgdm9pZCBkaWRE
cmF3KENDUmVzb3VyY2VQcm92aWRlciopOwogICAgIHZvaWQgYXBwZW5kRGVidWdCb3JkZXJRdWFk
KENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKikgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIHVuc2lnbmVkIGNvbnRlbnRzVGV4dHVyZUlkKCkgY29uc3Q7CisgICAgdmlydHVhbCBD
Q1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgY29udGVudHNSZXNvdXJjZUlkKCkgY29uc3Q7
CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBsYXllciBoYXMgY29udGVudCB0byBkcmF3
LgogICAgIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAKaW5kZXggMWY1MWYxOWQ0NWIxMTI2ODBiYzYxZWIxN2FmNDM0OWNmZWYyOGZhYi4u
Mzc3Zjc0ZDU0NDgxOWVjZDI0NDI5ZWQ0YjU5YzY3MDExOGI1NzlhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmluaXRpYWxpemVMYXllclJlbmRlcmVyKCkKICAgICAvLyBVcGRhdGUgbV9zZXR0aW5ncyBi
YXNlZCBvbiBwYXJ0aWFsIHVwZGF0ZSBjYXBhYmlsaXR5LgogICAgIG1fc2V0dGluZ3MubWF4UGFy
dGlhbFRleHR1cmVVcGRhdGVzID0gbWluKG1fc2V0dGluZ3MubWF4UGFydGlhbFRleHR1cmVVcGRh
dGVzLCBtX3Byb3h5LT5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSk7CiAKLSAgICBtX2NvbnRl
bnRzVGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgw
LCBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwor
ICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKDAsIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0
dXJlU2l6ZSwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIG1fc3VyZmFjZU1lbW9yeVBs
YWNlaG9sZGVyID0gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jcmVhdGVUZXh0dXJlKEludFNp
emUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOwogCiAgICAgbV9sYXllclJlbmRlcmVySW5p
dGlhbGl6ZWQgPSB0cnVlOwpAQCAtMTk3LDExICsxOTcsMTEgQEAgQ0NMYXllclRyZWVIb3N0OjpS
ZWNyZWF0ZVJlc3VsdCBDQ0xheWVyVHJlZUhvc3Q6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgcmV0
dXJuIFJlY3JlYXRlRmFpbGVkQW5kR2F2ZVVwOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6
ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1w
bFRocmVhZChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgQVNT
RVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBpZiAobV9sYXllclJlbmRlcmVySW5p
dGlhbGl6ZWQpCi0gICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1v
cnkoYWxsb2NhdG9yKTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jbGVhckFs
bE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFj
cXVpcmVMYXllclRleHR1cmVzKCkKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6YmVnaW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdElt
cGwpCiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBUUkFDRV9FVkVO
VDAoImNjIiwgIkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iKTsKIAotICAgIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KGhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IoKSk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoaG9z
dEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gY29tbWl0
cyB0aGUgQ0NMYXllclRyZWVIb3N0IHRvIGFuIGltcGwgdHJlZS4gV2hlbiBtb2RpZnlpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggYmQ2NTY1MGY0ZDM3YmQwYzkxOWIzYzUyMDQ0
NjRhYWRkODUzZjliNC4uODM5Nzg1OTA1M2VjZTYyMDJkMWQxOTA5ZGQ5NmUxYjAyN2YxOGEyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTUyLDcgKzUyLDYgQEAgY2xhc3MgQ0NM
YXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQ7CiBjbGFz
cyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgUmVnaW9uOwotY2xhc3MgVGV4dHVyZUFsbG9jYXRv
cjsKIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKIHN0cnVjdCBDQ1JlbmRlcmlu
Z1N0YXRzOwogc3RydWN0IENDU2Nyb2xsQW5kU2NhbGVTZXQ7CkBAIC0xODIsNyArMTgxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgd2lsbENvbW1pdCgpIHsgbV9jbGllbnQtPndpbGxDb21taXQoKTsg
fQogICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgeyBtX2NsaWVudC0+ZGlkQ29tbWl0
QW5kRHJhd0ZyYW1lKCk7IH0KICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSB7IG1f
Y2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7IH0KLSAgICB2b2lkIGRlbGV0ZUNvbnRl
bnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgZGVs
ZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChDQ1Jlc291cmNlUHJvdmlkZXIqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgYWNxdWlyZUxheWVyVGV4dHVyZXMoKTsKICAgICAvLyBSZXR1cm5zIGZh
bHNlIGlmIHdlIHNob3VsZCBhYm9ydCB0aGlzIGZyYW1lIGR1ZSB0byBpbml0aWFsaXphdGlvbiBm
YWlsdXJlLgogICAgIGJvb2wgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJJZk5lZWRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCAwNGJiNzg2NzE1OWQ3Njg4
MzIwODY5NDljNGM5Mjg2N2JhNDE4ZTliLi4yZTYwNWJlMTEyNDViNDExOGRkNTcwNTU3MmZhYTNm
YzFhMjAzN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCi0jaW5jbHVkZSAiVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NBY3RpdmVHZXN0dXJlQW5p
bWF0aW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NEYW1hZ2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NEZWJ1Z1JlY3RIaXN0b3J5LmgiCkBAIC0zMzAsNyArMzI5LDcgQEAgYm9vbCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKICAgICAg
ICAgICAgIENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcyA9IHN1cmZhY2VQYXNz
TWFwLmdldChpdC0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1
YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKCppdCwgY29udHJpYnV0aW5nUmVuZGVyUGFzcywgJm9j
Y2x1c2lvblRyYWNrZXIpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYo
KSAmJiAhb2NjbHVzaW9uVHJhY2tlci5vY2NsdWRlZCgqaXQsIGl0LT52aXNpYmxlQ29udGVudFJl
Y3QoKSkgJiYgIWl0LT52aXNpYmxlQ29udGVudFJlY3QoKS5pc0VtcHR5KCkgJiYgIWl0LT5zY2lz
c29yUmVjdCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fbGF5ZXJS
ZW5kZXJlci5nZXQoKSwgY29udGV4dCgpKTsKKyAgICAgICAgICAgIGl0LT53aWxsRHJhdyhtX3Jl
c291cmNlUHJvdmlkZXIuZ2V0KCkpOwogICAgICAgICAgICAgZnJhbWUud2lsbERyYXdMYXllcnMu
YXBwZW5kKCppdCk7CiAKICAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0
LCAmb2NjbHVzaW9uVHJhY2tlciwgaGFkTWlzc2luZ1RpbGVzKTsKQEAgLTUyMyw3ICs1MjIsNyBA
QCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OnByZXBhcmVUb0RyYXcoRnJhbWVEYXRhJiBmcmFt
ZSkKIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZWxlYXNlQ29udGVudHNUZXh0dXJlcygp
CiB7Ci0gICAgY29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCktPmRlbGV0ZUFsbFRleHR1cmVzKCk7
CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVPd25lZFJlc291cmNlcyhDQ1JlbmRlcmVy
OjpDb250ZW50UG9vbCk7CiAgICAgbV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFz
dENvbW1pdCA9IHRydWU7CiAgICAgbV9jbGllbnQtPnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFk
KCk7CiB9CkBAIC01ODAsNyArNTc5LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpkcmF3
TGF5ZXJzKGNvbnN0IEZyYW1lRGF0YSYgZnJhbWUpCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6
OmRpZERyYXdBbGxMYXllcnMoY29uc3QgRnJhbWVEYXRhJiBmcmFtZSkKIHsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZyYW1lLndpbGxEcmF3TGF5ZXJzLnNpemUoKTsgKytpKQotICAgICAg
ICBmcmFtZS53aWxsRHJhd0xheWVyc1tpXS0+ZGlkRHJhdygpOworICAgICAgICBmcmFtZS53aWxs
RHJhd0xheWVyc1tpXS0+ZGlkRHJhdyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogfQogCiB2
b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmZpbmlzaEFsbFJlbmRlcmluZygpCkBAIC01OTksMTEg
KzU5OCw2IEBAIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMmIENDTGF5ZXJUcmVlSG9z
dEltcGw6OmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoCiAgICAgcmV0dXJuIG1fbGF5ZXJSZW5k
ZXJlci0+Y2FwYWJpbGl0aWVzKCk7CiB9CiAKLVRleHR1cmVBbGxvY2F0b3IqIENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fbGF5ZXJSZW5kZXJlciA/IG1fbGF5ZXJSZW5kZXJlci0+Y29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yKCkgOiAwOwotfQotCiBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OnN3YXBCdWZmZXJzKCkK
IHsKICAgICBBU1NFUlQobV9sYXllclJlbmRlcmVyKTsKQEAgLTcwOSw4ICs3MDMsMTEgQEAgYm9v
bCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5kZXJlcihQYXNzT3duUHRy
PENDR3JhcGhpY3NDb250ZXh0PgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAg
T3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0UmVmKGNvbnRleHQpOworICAgIE93blB0
cjxDQ1Jlc291cmNlUHJvdmlkZXI+IHJlc291cmNlUHJvdmlkZXIgPSBDQ1Jlc291cmNlUHJvdmlk
ZXI6OmNyZWF0ZShjb250ZXh0UmVmLmdldCgpKTsKICAgICBPd25QdHI8TGF5ZXJSZW5kZXJlckNo
cm9taXVtPiBsYXllclJlbmRlcmVyOwotICAgIGxheWVyUmVuZGVyZXIgPSBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNyZWF0ZSh0aGlzLCBjb250ZXh0M2QsIHRleHR1cmVVcGxvYWRlcik7CisgICAg
aWYgKHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpCisgICAgICAgIGxheWVyUmVuZGVyZXIgPSBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCByZXNvdXJjZVByb3ZpZGVyLmdldCgpLCB0
ZXh0dXJlVXBsb2FkZXIpOwogCiAgICAgLy8gU2luY2Ugd2Ugbm93IGhhdmUgYSBuZXcgY29udGV4
dC9sYXllclJlbmRlcmVyLCB3ZSBjYW5ub3QgY29udGludWUgdG8gdXNlIHRoZSBvbGQKICAgICAv
LyByZXNvdXJjZXMgKGkuZS4gcmVuZGVyU3VyZmFjZXMgYW5kIHRleHR1cmUgSURzKS4KQEAgLTcy
MCw4ICs3MTcsOSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmluaXRpYWxpemVMYXllclJl
bmRlcmVyKFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+CiAgICAgfQogCiAgICAgbV9sYXll
clJlbmRlcmVyID0gbGF5ZXJSZW5kZXJlci5yZWxlYXNlKCk7CisgICAgbV9yZXNvdXJjZVByb3Zp
ZGVyID0gcmVzb3VyY2VQcm92aWRlci5yZWxlYXNlKCk7CiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJl
cikKLSAgICAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgbV9jb250ZXh0ID0gY29u
dGV4dFJlZi5yZWxlYXNlKCk7CiAKICAgICBpZiAoIW1fdmlzaWJsZSAmJiBtX2xheWVyUmVuZGVy
ZXIpCiAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFZpc2libGUobV92aXNpYmxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCA3NTNhYTM4NGEzZDAwNzZlYTFm
MGE5OGMxNzRhNGI1NzVhNzA3OTBlLi5mOTM2ZTM0ZGQyYzNjNDMyOTJmMjNiMjhmMDE5OTMxNjVl
NTNiNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC00Niw4ICs0
Niw4IEBAIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbFRpbWVT
b3VyY2VBZGFwdGVyOwogY2xhc3MgQ0NQYWdlU2NhbGVBbmltYXRpb247CiBjbGFzcyBDQ1JlbmRl
clBhc3NEcmF3UXVhZDsKK2NsYXNzIENDUmVzb3VyY2VQcm92aWRlcjsKIGNsYXNzIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTsKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBzdHJ1Y3QgTGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllczsKIAogLy8gQ0NMYXllclRyZWVIb3N0LT5DQ1Byb3h5IGNhbGxiYWNr
IGludGVyZmFjZS4KQEAgLTEyNyw3ICsxMjcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbnRl
eHRMb3N0KCk7CiAgICAgQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlcigpIHsgcmV0dXJuIG1fbGF5
ZXJSZW5kZXJlci5nZXQoKTsgfQogICAgIGNvbnN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMm
IGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKSBjb25zdDsKLSAgICBUZXh0dXJlQWxsb2NhdG9y
KiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdDsKIAogICAgIGJvb2wgc3dhcEJ1ZmZl
cnMoKTsKIApAQCAtMTc3LDYgKzE3Niw3IEBAIHB1YmxpYzoKIAogICAgIENDRnJhbWVSYXRlQ291
bnRlciogZnBzQ291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnBzQ291bnRlci5nZXQoKTsgfQog
ICAgIENDRGVidWdSZWN0SGlzdG9yeSogZGVidWdSZWN0SGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVidWdSZWN0SGlzdG9yeS5nZXQoKTsgfQorICAgIENDUmVzb3VyY2VQcm92aWRlciogcmVz
b3VyY2VQcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKTsg
fQogCiAgICAgY2xhc3MgQ3VsbFJlbmRlclBhc3Nlc1dpdGhDYWNoZWRUZXh0dXJlcyB7CiAgICAg
cHVibGljOgpAQCAtMjUyLDYgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkdW1wUmVuZGVy
U3VyZmFjZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQsIGNvbnN0IENDTGF5ZXJJbXBsKikgY29u
c3Q7CiAKICAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBPd25Q
dHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBtX3Jlc291cmNlUHJvdmlkZXI7CiAgICAgT3duUHRyPEND
UmVuZGVyZXI+IG1fbGF5ZXJSZW5kZXJlcjsKICAgICBPd25QdHI8Q0NMYXllckltcGw+IG1fcm9v
dExheWVySW1wbDsKICAgICBDQ0xheWVySW1wbCogbV9yb290U2Nyb2xsTGF5ZXJJbXBsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cmlvcml0aXplZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwCmluZGV4IDFkZjc3MTM4NmNhYmNi
NGFhOThiZDFlNmE1Y2I4Mzc5NGY1NzQ1Y2MuLjYwY2YxYTFlMmNlNTc4NzEwN2ZhNzM4M2FhNTU0
MWI5ZGUwYmRkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAK
QEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJDQ1ByaW9yaXR5Q2FsY3VsYXRvci5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC05MCw0NiArODksMjkgQEAg
Ym9vbCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6cmVxdWVzdExhdGUoKQogICAgIHJldHVybiBtX21h
bmFnZXItPnJlcXVlc3RMYXRlKHRoaXMpOwogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJl
OjphY3F1aXJlQmFja2luZ1RleHR1cmUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9p
ZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlKENDUmVzb3VyY2VQ
cm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKICAgICBBU1NFUlQobV9pc0Fib3ZlUHJpb3Jp
dHlDdXRvZmYpOwogICAgIGlmIChtX2lzQWJvdmVQcmlvcml0eUN1dG9mZikKLSAgICAgICAgbV9t
YW5hZ2VyLT5hY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZCh0aGlzLCBhbGxvY2F0b3IpOwor
ICAgICAgICBtX21hbmFnZXItPmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKHRoaXMsIHJl
c291cmNlUHJvdmlkZXIpOwogfQogCi11bnNpZ25lZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dGV4
dHVyZUlkKCkKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1ByaW9yaXRpemVkVGV4
dHVyZTo6cmVzb3VyY2VJZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYmFja2luZykKICAgICAgICAg
cmV0dXJuIG1fYmFja2luZy0+aWQoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBDQ1ByaW9y
aXRpemVkVGV4dHVyZTo6YmluZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OnVw
bG9hZChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3Qm
IGltYWdlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBBU1NFUlQo
bV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwogICAgIGlmIChtX2lzQWJvdmVQcmlvcml0eUN1dG9m
ZikKLSAgICAgICAgYWNxdWlyZUJhY2tpbmdUZXh0dXJlKGFsbG9jYXRvcik7CisgICAgICAgIGFj
cXVpcmVCYWNraW5nVGV4dHVyZShyZXNvdXJjZVByb3ZpZGVyKTsKICAgICBBU1NFUlQobV9iYWNr
aW5nKTsKLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250
ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKCkpOwotfQotCi12b2lkIENDUHJpb3JpdGl6ZWRU
ZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotewotICAgIEFTU0VSVChtX2lzQWJvdmVQcmlv
cml0eUN1dG9mZik7Ci0gICAgaWYgKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKQotICAgICAgICBh
Y3F1aXJlQmFja2luZ1RleHR1cmUoYWxsb2NhdG9yKTsKLSAgICBBU1NFUlQobV9iYWNraW5nKTsK
LSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5j
b250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY29udGV4dDNkLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5U
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCgpLCAwKTsKKyAgICBy
ZXNvdXJjZVByb3ZpZGVyLT51cGxvYWQocmVzb3VyY2VJZCgpLCBpbWFnZSwgaW1hZ2VSZWN0LCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6Omxp
bmsoQmFja2luZyogYmFja2luZykKQEAgLTE1OSw0ICsxNDEsMyBAQCB2b2lkIENDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpzZXRUb1NlbGZNYW5hZ2VkTWVtb3J5UGxhY2Vob2xkZXIoc2l6ZV90IGJ5dGVz
KQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRp
emVkVGV4dHVyZS5oCmluZGV4IDQ2MDczYzVmMzQ2ODhlZGUyZTE4OGEzZmViYWU0ZjQwYzM1MjU1
ZmUuLjc2NGNiZWNlZGMzZGNkMjdhMmIzYzY1MDkzOTkzNTA0MTZkOTA3YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6
ZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaApAQCAtMjUsMTggKzI1LDE2IEBACiAjaWZuZGVm
IENDUHJpb3JpdGl6ZWRUZXh0dXJlX2gKICNkZWZpbmUgQ0NQcmlvcml0aXplZFRleHR1cmVfaAog
Ci0jaW5jbHVkZSAiQ0NQcmlvcml0eUNhbGN1bGF0b3IuaCIKLSNpbmNsdWRlICJDQ1RleHR1cmUu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiY2MvQ0NQcmlvcml0eUNhbGN1bGF0b3Iu
aCIKKyNpbmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI7Ci1jbGFzcyBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjsKLWNsYXNzIENDR3JhcGhp
Y3NDb250ZXh0OwotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIAogY2xhc3MgQ0NQcmlvcml0aXpl
ZFRleHR1cmUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUHJpb3JpdGl6ZWRUZXh0dXJl
KTsKQEAgLTc2LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAgLy8gSWYgY2FuQWNxdWlyZUJhY2tp
bmdUZXh0dXJlKCkgaXMgdHJ1ZSBhY3F1aXJlQmFja2luZ1RleHR1cmUoKSB3aWxsIGFjcXVpcmUK
ICAgICAvLyBhIGJhY2tpbmcgdGV4dHVyZSBmb3IgdXNlLiBDYWxsIHRoaXMgd2hlbmV2ZXIgdGhl
IHRleHR1cmUgaXMgYWN0dWFsbHkgbmVlZGVkLgotICAgIHZvaWQgYWNxdWlyZUJhY2tpbmdUZXh0
dXJlKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIGFjcXVpcmVCYWNraW5nVGV4dHVyZShD
Q1Jlc291cmNlUHJvdmlkZXIqKTsKIAogICAgIC8vIEZJWE1FOiBSZXF1ZXN0IGxhdGUgaXMgcmVh
bGx5IGEgaGFjayBmb3Igd2hlbiB3ZSBhcmUgdG90YWxseSBvdXQgb2YgbWVtb3J5CiAgICAgLy8g
ICAgICAgIChhbGwgdGV4dHVyZXMgYXJlIHZpc2libGUpIGJ1dCB3ZSBjYW4gc3RpbGwgc3F1ZWV6
ZSBpbnRvIHRoZSBsaW1pdApAQCAtODcsMTEgKzg1LDEwIEBAIHB1YmxpYzoKICAgICAvLyAgICAg
ICAgcmVncmVzcyBPT01zIHNpdHVhdGlvbnMuCiAgICAgYm9vbCByZXF1ZXN0TGF0ZSgpOwogCi0g
ICAgLy8gVGhlc2UgZnVuY3Rpb25zIHdpbGwgYWNxdWlyZSB0aGUgdGV4dHVyZSBpZiBwb3NzaWJs
ZS4gSWYgbmVpdGhlciBoYXZlQmFja2luZ1RleHR1cmUoKQotICAgIC8vIG5vciBjYW5BY3F1aXJl
QmFja2luZ1RleHR1cmUoKSBpcyB0cnVlLCBhbiBJRCBvZiB6ZXJvIHdpbGwgYmUgdXNlZC9yZXR1
cm5lZC4KLSAgICB2b2lkIGJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFs
bG9jYXRvciopOwotICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRl
eHQqLCBUZXh0dXJlQWxsb2NhdG9yKik7Ci0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCk7CisgICAg
Ly8gVXBsb2FkcyBwaXhlbHMgaW50byB0aGUgYmFja2luZyByZXNvdXJjZS4gVGhpcyBmdW5jdGlv
bnMgd2lsbCBhcXVpcmUgdGhlIGJhY2tpbmcgaWYgbmVlZGVkLgorICAgIHZvaWQgdXBsb2FkKEND
UmVzb3VyY2VQcm92aWRlciosIGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBp
bWFnZVJlY3QsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKKworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKCkg
Y29uc3Q7CiAKICAgICAvLyBTZWxmLW1hbmFnZWQgdGV4dHVyZXMgYXJlIGFjY291bnRlZCBmb3Ig
d2hlbiBwcmlvcml0aXppbmcgb3RoZXIgdGV4dHVyZXMsCiAgICAgLy8gYnV0IHRoZXkgYXJlIG5v
dCBhbGxvY2F0ZWQvcmVjeWNsZWQvZGVsZXRlZCwgc28gdGhpcyBuZWVkcyB0byBiZSBkb25lCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcAppbmRl
eCBkMTllNWFhMTljOGY4ZjM2Y2JlNjIwNzM0NWYyOWRlZWNlNjU2YjViLi40YTI0MTc5YzU3ODBh
NjgyYzRlZDRhZDgzM2MxNmEyN2U2ZDBkOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKQEAgLTM2LDExICszNiwxMiBAQCB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKHNpemVfdCBtYXhNZW1vcnlM
aW1pdEJ5dGVzLCBpbnQpCitDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OkNDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgaW50LCBpbnQgcG9v
bCkKICAgICA6IG1fbWF4TWVtb3J5TGltaXRCeXRlcyhtYXhNZW1vcnlMaW1pdEJ5dGVzKQogICAg
ICwgbV9tZW1vcnlVc2VCeXRlcygwKQogICAgICwgbV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKDAp
CiAgICAgLCBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzKDApCisgICAgLCBtX3Bvb2wocG9vbCkKIHsK
IH0KIApAQCAtNDksNyArNTAsNyBAQCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6On5DQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXIoKQogICAgIHdoaWxlIChtX3RleHR1cmVzLnNpemUoKSA+
IDApCiAgICAgICAgIHVucmVnaXN0ZXJUZXh0dXJlKCptX3RleHR1cmVzLmJlZ2luKCkpOwogCi0g
ICAgLy8gRWFjaCByZW1haW5pbmcgYmFja2luZyBpcyBhIGxlYWtlZCBvcGVuZ2wgdGV4dHVyZS4g
V2UgZG9uJ3QgaGF2ZSB0aGUgYWxsb2NhdG9yCisgICAgLy8gRWFjaCByZW1haW5pbmcgYmFja2lu
ZyBpcyBhIGxlYWtlZCBvcGVuZ2wgdGV4dHVyZS4gV2UgZG9uJ3QgaGF2ZSB0aGUgcmVzb3VyY2VQ
cm92aWRlcgogICAgIC8vIHRvIGRlbGV0ZSB0aGUgdGV4dHVyZXMgYXQgdGhpcyB0aW1lIHNvIGNs
ZWFyTWVtb3J5KCkgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGlzLgogICAgIHdoaWxlICht
X2JhY2tpbmdzLnNpemUoKSA+IDApCiAgICAgICAgIGRlc3Ryb3lCYWNraW5nKCptX2JhY2tpbmdz
LmJlZ2luKCksIDApOwpAQCAtMTY4LDcgKzE2OSw3IEBAIGJvb2wgQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpyZXF1ZXN0TGF0ZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFj
cXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJl
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQoQ0NQcmlvcml0aXplZFRleHR1
cmUqIHRleHR1cmUsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKICAg
ICBBU1NFUlQoIXRleHR1cmUtPmlzU2VsZk1hbmFnZWQoKSk7CiAgICAgQVNTRVJUKHRleHR1cmUt
PmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKTsKQEAgLTE5MCw4ICsxOTEsOCBAQCB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQoQ0NQ
cmlvcml0aXplZFRleAogCiAgICAgLy8gT3RoZXJ3aXNlIHJlZHVjZSBtZW1vcnkgYW5kIGp1c3Qg
YWxsb2NhdGUgYSBuZXcgYmFja2luZyB0ZXh1cmVzLgogICAgIGlmICghYmFja2luZykgewotICAg
ICAgICByZWR1Y2VNZW1vcnkobV9tZW1vcnlBdmFpbGFibGVCeXRlcyAtIHRleHR1cmUtPmJ5dGVz
KCksIGFsbG9jYXRvcik7Ci0gICAgICAgIGJhY2tpbmcgPSBjcmVhdGVCYWNraW5nKHRleHR1cmUt
PnNpemUoKSwgdGV4dHVyZS0+Zm9ybWF0KCksIGFsbG9jYXRvcik7CisgICAgICAgIHJlZHVjZU1l
bW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+Ynl0ZXMoKSwgcmVzb3VyY2VQ
cm92aWRlcik7CisgICAgICAgIGJhY2tpbmcgPSBjcmVhdGVCYWNraW5nKHRleHR1cmUtPnNpemUo
KSwgdGV4dHVyZS0+Zm9ybWF0KCksIHJlc291cmNlUHJvdmlkZXIpOwogICAgIH0KIAogICAgIC8v
IE1vdmUgdGhlIHVzZWQgYmFja2luZyB0ZXh0dXJlIHRvIHRoZSBlbmQgb2YgdGhlIGV2aWN0aW9u
IGxpc3QuCkBAIC0yMDIsNyArMjAzLDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXgKICAgICBt
X2JhY2tpbmdzLmFkZChiYWNraW5nKTsKIH0KIAotdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OnJlZHVjZU1lbW9yeShzaXplX3QgbGltaXRCeXRlcywgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9y
eShzaXplX3QgbGltaXRCeXRlcywgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVy
KQogewogICAgIGlmIChtZW1vcnlVc2VCeXRlcygpIDw9IGxpbWl0Qnl0ZXMpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIxMiwxMyArMjEzLDEzIEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpyZWR1Y2VNZW1vcnkoc2l6ZV90IGxpbWl0Qnl0ZXMsIFRleHR1cmVBbGxvY2F0CiAgICAg
ICAgIEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigpOwogICAgICAg
ICBpZiAoKCppdCktPm93bmVyKCkgJiYgKCppdCktPm93bmVyKCktPmlzQWJvdmVQcmlvcml0eUN1
dG9mZigpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlc3Ryb3lCYWNraW5nKCgqaXQp
LCBhbGxvY2F0b3IpOworICAgICAgICBkZXN0cm95QmFja2luZygoKml0KSwgcmVzb3VyY2VQcm92
aWRlcik7CiAgICAgfQogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVk
dWNlTWVtb3J5KFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJj
ZVByb3ZpZGVyKQogewotICAgIHJlZHVjZU1lbW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzLCBh
bGxvY2F0b3IpOworICAgIHJlZHVjZU1lbW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzLCByZXNv
dXJjZVByb3ZpZGVyKTsKICAgICBBU1NFUlQobWVtb3J5VXNlQnl0ZXMoKSA8PSBtYXhNZW1vcnlM
aW1pdEJ5dGVzKCkpOwogCiAgICAgLy8gV2UgY3VycmVudGx5IGNvbGxlY3QgYmFja2luZ3MgZnJv
bSBkZWxldGVkIHRleHR1cmVzIGZvciBsYXRlciByZWN5Y2xpbmcuCkBAIC0yMzUsMTcgKzIzNiwx
NyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKICAgICBzaXplX3QgdGVuUGVyY2VudE9mTWVtb3J5ID0g
bV9tZW1vcnlBdmFpbGFibGVCeXRlcyAvIDEwOwogICAgIGlmICh3YXN0ZWRNZW1vcnkgPD0gdGVu
UGVyY2VudE9mTWVtb3J5KQogICAgICAgICByZXR1cm47Ci0gICAgcmVkdWNlTWVtb3J5KG1lbW9y
eVVzZUJ5dGVzKCkgLSAod2FzdGVkTWVtb3J5IC0gdGVuUGVyY2VudE9mTWVtb3J5KSwgYWxsb2Nh
dG9yKTsKKyAgICByZWR1Y2VNZW1vcnkobWVtb3J5VXNlQnl0ZXMoKSAtICh3YXN0ZWRNZW1vcnkg
LSB0ZW5QZXJjZW50T2ZNZW1vcnkpLCByZXNvdXJjZVByb3ZpZGVyKTsKIH0KIAotdm9pZCBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNsZWFyQWxsTWVtb3J5KFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1l
bW9yeShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgLy8gVW5s
aW5rIGFuZCBkZXN0cm95IGFsbCBiYWNraW5nIHRleHR1cmVzLgogICAgIHdoaWxlIChtX2JhY2tp
bmdzLnNpemUoKSA+IDApIHsKICAgICAgICAgQmFja2luZ1NldDo6aXRlcmF0b3IgaXQgPSBtX2Jh
Y2tpbmdzLmJlZ2luKCk7CiAgICAgICAgIGlmICgoKml0KS0+b3duZXIoKSkKICAgICAgICAgICAg
ICgqaXQpLT5vd25lcigpLT51bmxpbmsoKTsKLSAgICAgICAgZGVzdHJveUJhY2tpbmcoKCppdCks
IGFsbG9jYXRvcik7CisgICAgICAgIGRlc3Ryb3lCYWNraW5nKCgqaXQpLCByZXNvdXJjZVByb3Zp
ZGVyKTsKICAgICB9CiB9CiAKQEAgLTI1Myw3ICsyNTQsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6YWxsQmFja2luZ1RleHR1cmVzV2VyZURlbGV0ZWQoKQogewogICAgIC8v
IFNhbWUgYXMgY2xlYXJBbGxNZW1vcnksIGV4Y2VwdCBhbGwgb3VyIHRleHR1cmVzIHdlcmUgYWxy
ZWFkeQogICAgIC8vIGRlbGV0ZWQgZXh0ZXJuYWxseSwgc28gd2UgZG9uJ3QgZGVsZXRlIHRoZW0u
IFBhc3Npbmcgbm8KLSAgICAvLyBhbGxvY2F0b3IgcmVzdWx0cyBpbiBsZWFraW5nIHRoZSAobm93
IGludmFsaWQpIHRleHR1cmUgaWRzLgorICAgIC8vIHJlc291cmNlUHJvdmlkZXIgcmVzdWx0cyBp
biBsZWFraW5nIHRoZSAobm93IGludmFsaWQpIHRleHR1cmUgaWRzLgogICAgIGNsZWFyQWxsTWVt
b3J5KDApOwogfQogCkBAIC0yOTEsMjYgKzI5MiwyNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6cmV0dXJuQmFja2luZ1RleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRl
eAogICAgIH0KIH0KIAotQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIENDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlQmFja2luZyhJbnRTaXplIHNpemUsIEdDM0RlbnVtIGZv
cm1hdCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQorQ0NQcmlvcml0aXplZFRleHR1cmU6
OkJhY2tpbmcqIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlQmFja2luZyhJbnRT
aXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVBy
b3ZpZGVyKQogewotICAgIEFTU0VSVChhbGxvY2F0b3IpOworICAgIEFTU0VSVChyZXNvdXJjZVBy
b3ZpZGVyKTsKIAotICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nID0g
bmV3IENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKGFsbG9jYXRvci0+Y3JlYXRlVGV4dHVy
ZShzaXplLCBmb3JtYXQpLCBzaXplLCBmb3JtYXQpOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCByZXNvdXJjZUlkID0gcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2Uo
bV9wb29sLCBzaXplLCBmb3JtYXQsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55
KTsKKyAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZyA9IG5ldyBDQ1By
aW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyhyZXNvdXJjZUlkLCBzaXplLCBmb3JtYXQpOwogICAg
IG1fbWVtb3J5VXNlQnl0ZXMgKz0gYmFja2luZy0+Ynl0ZXMoKTsKICAgICAvLyBQdXQgYmFja2lu
ZyB0ZXh0dXJlIGF0IHRoZSBmcm9udCBmb3IgZXZpY3Rpb24sIHNpbmNlIGl0IGlzbid0IGluIHVz
ZSB5ZXQuCiAgICAgbV9iYWNraW5ncy5pbnNlcnRCZWZvcmUobV9iYWNraW5ncy5iZWdpbigpLCBi
YWNraW5nKTsKICAgICByZXR1cm4gYmFja2luZzsKIH0KIAotdm9pZCBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmRlc3Ryb3lCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5n
KiBiYWNraW5nLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIENDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcjo6ZGVzdHJveUJhY2tpbmcoQ0NQcmlvcml0aXplZFRleHR1cmU6OkJh
Y2tpbmcqIGJhY2tpbmcsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsK
ICAgICBBU1NFUlQoYmFja2luZyk7CiAgICAgQVNTRVJUKCFiYWNraW5nLT5vd25lcigpIHx8ICFi
YWNraW5nLT5vd25lcigpLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSk7CiAgICAgQVNTRVJUKCFi
YWNraW5nLT5vd25lcigpIHx8ICFiYWNraW5nLT5vd25lcigpLT5pc1NlbGZNYW5hZ2VkKCkpOwog
ICAgIEFTU0VSVChtX2JhY2tpbmdzLmZpbmQoYmFja2luZykgIT0gbV9iYWNraW5ncy5lbmQoKSk7
CiAKLSAgICBpZiAoYWxsb2NhdG9yKQotICAgICAgICBhbGxvY2F0b3ItPmRlbGV0ZVRleHR1cmUo
YmFja2luZy0+aWQoKSwgYmFja2luZy0+c2l6ZSgpLCBiYWNraW5nLT5mb3JtYXQoKSk7CisgICAg
aWYgKHJlc291cmNlUHJvdmlkZXIpCisgICAgICAgIHJlc291cmNlUHJvdmlkZXItPmRlbGV0ZVJl
c291cmNlKGJhY2tpbmctPmlkKCkpOwogICAgIGlmIChiYWNraW5nLT5vd25lcigpKQogICAgICAg
ICBiYWNraW5nLT5vd25lcigpLT51bmxpbmsoKTsKICAgICBtX21lbW9yeVVzZUJ5dGVzIC09IGJh
Y2tpbmctPmJ5dGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlci5oCmluZGV4IDAxOWM0NWNmNGUzMzNlNTRjZjllYTRkMGJjZDU5YzY3OTkxYjNjZTgu
LmIxNmVjMTAzNGQzOWI2YzNlYmEzODRmZDVlODgxYjU5N2Y2ZTIwNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oCkBAIC00MCw5ICs0MCw5IEBA
IGNsYXNzIENDUHJpb3JpdHlDYWxjdWxhdG9yOwogY2xhc3MgQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcj4gY3JlYXRlKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4
dHVyZVNpemUpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyPiBjcmVhdGUoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6
ZSwgaW50IHBvb2wpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcihtYXhNZW1vcnlMaW1pdEJ5dGVzLCBtYXhUZXh0dXJlU2l6ZSkp
OworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cihtYXhNZW1vcnlMaW1pdEJ5dGVzLCBtYXhUZXh0dXJlU2l6ZSwgcG9vbCkpOwogICAgIH0KICAg
ICBQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKEludFNpemUg
c2l6ZSwgR0MzRGVudW0gZm9ybWF0KQogICAgIHsKQEAgLTczLDExICs3MywxMSBAQCBwdWJsaWM6
CiAKICAgICBib29sIHJlcXVlc3RMYXRlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKik7CiAKLSAgICB2
b2lkIHJlZHVjZU1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKik7Ci0gICAgdm9pZCBjbGVhckFsbE1l
bW9yeShUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCByZWR1Y2VNZW1vcnkoQ0NSZXNvdXJj
ZVByb3ZpZGVyKik7CisgICAgdm9pZCBjbGVhckFsbE1lbW9yeShDQ1Jlc291cmNlUHJvdmlkZXIq
KTsKICAgICB2b2lkIGFsbEJhY2tpbmdUZXh0dXJlc1dlcmVEZWxldGVkKCk7CiAKLSAgICB2b2lk
IGFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiwgVGV4
dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgYWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQo
Q0NQcmlvcml0aXplZFRleHR1cmUqLCBDQ1Jlc291cmNlUHJvdmlkZXIqKTsKIAogICAgIHZvaWQg
cmVnaXN0ZXJUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKik7CiAgICAgdm9pZCB1bnJlZ2lz
dGVyVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSopOwpAQCAtMTA1LDE4ICsxMDUsMTkgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIENDUHJpb3JpdHlDYWxjdWxhdG9yOjpwcmlvcml0eUlz
TG93ZXIocHJpb3JpdHlBLCBwcmlvcml0eUIpOwogICAgIH0KIAotICAgIENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVT
aXplKTsKKyAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxp
bWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSwgaW50IHBvb2wpOwogCi0gICAgdm9pZCByZWR1
Y2VNZW1vcnkoc2l6ZV90IGxpbWl0LCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCByZWR1
Y2VNZW1vcnkoc2l6ZV90IGxpbWl0LCBDQ1Jlc291cmNlUHJvdmlkZXIqKTsKIAotICAgIENDUHJp
b3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBjcmVhdGVCYWNraW5nKEludFNpemUsIEdDM0RlbnVt
IGZvcm1hdCwgVGV4dHVyZUFsbG9jYXRvciopOwotICAgIHZvaWQgZGVzdHJveUJhY2tpbmcoQ0NQ
cmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgQ0NQ
cmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGNyZWF0ZUJhY2tpbmcoSW50U2l6ZSwgR0MzRGVu
dW0gZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICB2b2lkIGRlc3Ryb3lCYWNraW5n
KENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiwgQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAK
ICAgICBzaXplX3QgbV9tYXhNZW1vcnlMaW1pdEJ5dGVzOwogICAgIHVuc2lnbmVkIG1fcHJpb3Jp
dHlDdXRvZmY7CiAgICAgc2l6ZV90IG1fbWVtb3J5VXNlQnl0ZXM7CiAgICAgc2l6ZV90IG1fbWVt
b3J5QWJvdmVDdXRvZmZCeXRlczsKICAgICBzaXplX3QgbV9tZW1vcnlBdmFpbGFibGVCeXRlczsK
KyAgICBpbnQgbV9wb29sOwogCiAgICAgdHlwZWRlZiBIYXNoU2V0PENDUHJpb3JpdGl6ZWRUZXh0
dXJlKj4gVGV4dHVyZVNldDsKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PENDUHJpb3JpdGl6ZWRU
ZXh0dXJlOjpCYWNraW5nKj4gQmFja2luZ1NldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmNwcAppbmRleCA1OWFiZmJiY2MwYTNlYmZmMGY4YWNhMDg5MzcyYTUxNWQ2YWMx
OTc1Li4yZDc0YTIyNzgwM2ZlNGFmYWU5MWZjM2NiMTUyZjcxZjM5NzYzYThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3NEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCkBAIC0zMSwxOSArMzEsMTkgQEAgdXNp
bmcgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3Jl
YXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBp
c1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFu
c2Zvcm0sIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3Qg
V2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQg
bWFza1RleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJh
bWUpCitQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVh
ZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRlclBhc3NJZCwg
Ym9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRy
YXdUcmFuc2Zvcm0sIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywg
Y29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0
JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENDUmVuZGVyUGFzc0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHJlbmRl
clBhc3NJZCwgaXNSZXBsaWNhLCBkcmF3VHJhbnNmb3JtLCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmls
dGVycywgbWFza1RleHR1cmVJZCwgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpKTsKKyAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENDUmVuZGVyUGFzc0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgcXVhZFJlY3QsIHJlbmRlclBhc3NJZCwgaXNSZXBsaWNhLCBkcmF3VHJhbnNmb3JtLCBmaWx0
ZXJzLCBiYWNrZ3JvdW5kRmlsdGVycywgbWFza1Jlc291cmNlSWQsIGNvbnRlbnRzQ2hhbmdlZFNp
bmNlTGFzdEZyYW1lKSk7CiB9CiAKLUNDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NE
cmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGludCByZW5kZXJQYXNzSWQsIGJv
b2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3
VHJhbnNmb3JtLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNv
bnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2ln
bmVkIG1hc2tUZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFz
dEZyYW1lKQorQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0
IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2Es
IGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNv
bnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpX
ZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5n
ZWRTaW5jZUxhc3RGcmFtZSkKICAgICA6IFdlYkNvbXBvc2l0b3JRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgV2ViQ29tcG9zaXRvclF1YWQ6OlJlbmRlclBhc3MsIHF1YWRSZWN0KQogICAgICwgbV9yZW5k
ZXJQYXNzSWQocmVuZGVyUGFzc0lkKQogICAgICwgbV9pc1JlcGxpY2EoaXNSZXBsaWNhKQogICAg
ICwgbV9kcmF3VHJhbnNmb3JtKGRyYXdUcmFuc2Zvcm0pCiAgICAgLCBtX2ZpbHRlcnMoZmlsdGVy
cykKICAgICAsIG1fYmFja2dyb3VuZEZpbHRlcnMoYmFja2dyb3VuZEZpbHRlcnMpCi0gICAgLCBt
X21hc2tUZXh0dXJlSWQobWFza1RleHR1cmVJZCkKKyAgICAsIG1fbWFza1Jlc291cmNlSWQobWFz
a1Jlc291cmNlSWQpCiAgICAgLCBtX2NvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKGNvbnRl
bnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKQogewogICAgIEFTU0VSVChtX3JlbmRlclBhc3NJZCA+
IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKaW5kZXggYTEyZjIwNGNh
NWY2Mjg2MjEzNDcxZGIwNDU0NzI3ZmQ4MmE0YzM5YS4uNmYzOTliZTY3Zjg2NTI5Nzg3NTZkNjVi
ZjFiNzQ4NmEyZmIyZTg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENDUmVuZGVyUGFzc0RyYXdRdWFkX2gKICNkZWZp
bmUgQ0NSZW5kZXJQYXNzRHJhd1F1YWRfaAogCisjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JRdWFkLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXguaD4KQEAgLTM4LDExICszOSwxMSBAQCBjbGFzcyBDQ1JlbmRlclBhc3M7
CiBjbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZCA6IHB1YmxpYyBXZWJLaXQ6OldlYkNvbXBvc2l0
b3JRdWFkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3NEcmF3UXVhZCk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNy
ZWF0ZShjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJ
bnRSZWN0JiwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3Vu
ZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRz
Q2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBh
c3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFdlYktpdDo6V2Vi
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRp
b25zJiBiYWNrZ3JvdW5kRmlsdGVycywgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1h
c2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFt
ZSk7CiAKICAgICBpbnQgcmVuZGVyUGFzc0lkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQYXNz
SWQ7IH0KICAgICBib29sIGlzUmVwbGljYSgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXBsaWNhOyB9
Ci0gICAgdW5zaWduZWQgbWFza1RleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1RleHR1
cmVJZDsgfQorICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1Jlc291cmNlSWQ7IH0KICAgICBjb25zdCBJbnRSZWN0
JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dHNDaGFuZ2VkU2luY2VMYXN0RnJhbWU7IH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSByZW1vdmVkIGFuZCB3ZSBzaG91bGQgZHJhdyB0aGUgUmVuZGVyUGFzcyB3aXRoIHRoZSBxdWFk
VHJhbnNmb3JtLgpAQCAtNTMsMTQgKzU0LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25z
dCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogbWF0ZXJpYWxDYXN0KGNvbnN0IFdlYktpdDo6V2ViQ29t
cG9zaXRvclF1YWQqKTsKIHByaXZhdGU6Ci0gICAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3Qg
V2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGlu
dCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJz
LCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1
bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5j
ZUxhc3RGcmFtZSk7CisgICAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJD
b21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGludCByZW5kZXJQYXNz
SWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCBDQ1Jlc291cmNlUHJv
dmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRz
Q2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKIAogICAgIGludCBtX3JlbmRlclBhc3NJZDsKICAgICBi
b29sIG1faXNSZXBsaWNhOwogICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9k
cmF3VHJhbnNmb3JtOwogICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7
CiAgICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7Ci0g
ICAgdW5zaWduZWQgbV9tYXNrVGV4dHVyZUlkOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCBtX21hc2tSZXNvdXJjZUlkOwogICAgIEludFJlY3QgbV9jb250ZW50c0NoYW5nZWRT
aW5jZUxhc3RGcmFtZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4
IGU3MjYwOTY2YTA3MDhhMDJlMTllMDhjOGVlYzJhMzBjYjkzNzExNzMuLjVkOTliNmFiMWY4Yzlm
ZTczMTk3YjgwMTRhNmY5MTlmOGM1MDhhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNl
LmNwcApAQCAtMjA5LDE0ICsyMDksMTQgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1
YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlKiBzaGEKICAgICAg
ICAgICAgIG1hc2tMYXllciA9IDA7CiAgICAgfQogCi0gICAgaW50IG1hc2tUZXh0dXJlSWQgPSBt
YXNrTGF5ZXIgPyBtYXNrTGF5ZXItPmNvbnRlbnRzVGV4dHVyZUlkKCkgOiAwOworICAgIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCA9IG1hc2tMYXllciA/IG1h
c2tMYXllci0+Y29udGVudHNSZXNvdXJjZUlkKCkgOiAwOwogICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGRyYXdUcmFuc2Zvcm0gPSBmb3JSZXBsaWNhID8gbV9yZXBsaWNhRHJhd1RyYW5zZm9y
bSA6IG1fZHJhd1RyYW5zZm9ybTsKICAgICBJbnRSZWN0IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFz
dEZyYW1lID0gY29udGVudHNDaGFuZ2VkKCkgPyBtX2NvbnRlbnRSZWN0IDogSW50UmVjdCgpOwog
CiAgICAgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzID0gbV9vd25p
bmdMYXllci0+ZmlsdGVycygpOwogICAgIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9u
cyYgYmFja2dyb3VuZEZpbHRlcnMgPSBtX293bmluZ0xheWVyLT5iYWNrZ3JvdW5kRmlsdGVycygp
OwogCi0gICAgcXVhZExpc3QuYXBwZW5kU3VyZmFjZShDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3Jl
YXRlKHNoYXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgcmVuZGVyUGFzc0lkLCBmb3JSZXBs
aWNhLCBkcmF3VHJhbnNmb3JtLCBmaWx0ZXJzLCBiYWNrZ3JvdW5kRmlsdGVycywgbWFza1RleHR1
cmVJZCwgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpKTsKKyAgICBxdWFkTGlzdC5hcHBl
bmRTdXJmYWNlKENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBj
b250ZW50UmVjdCgpLCByZW5kZXJQYXNzSWQsIGZvclJlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZp
bHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFuZ2Vk
U2luY2VMYXN0RnJhbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCmluZGV4IGRlZDBlZmRj
MzhlZjkzMWFmYjMwMTdlMjcwMmY1YzdmMmQxMDRmOTAuLjZjYzFkZWJmZWI3ZDFjYWE2MjBlMTlk
YTdkZTY4ZDcyNWZlNTliNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKQEAgLTM2LDkgKzM2LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NTY29wZWRUZXh0dXJlOwotY2xhc3MgVGV4
dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRleHR1cmVDb3BpZXI7Ci1jbGFzcyBUZXh0dXJlTWFuYWdl
cjsKIGNsYXNzIFRleHR1cmVVcGxvYWRlcjsKIAogZW51bSBUZXh0dXJlVXBsb2FkZXJPcHRpb24g
eyBUaHJvdHRsZWRVcGxvYWRlciwgVW50aHJvdHRsZWRVcGxvYWRlciB9OwpAQCAtNTcsNiArNTUs
MTMgQEAgcHVibGljOgogY2xhc3MgQ0NSZW5kZXJlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ0NSZW5kZXJlcik7CiBwdWJsaWM6CisgICAgLy8gVGhpcyBlbnVtIGRlZmluZXMgdGhlIHZh
cmlvdXMgcmVzb3VyY2UgcG9vbHMgZm9yIHRoZSBDQ1Jlc291cmNlUHJvdmlkZXIKKyAgICAvLyB3
aGVyZSB0ZXh0dXJlcyBnZXQgYWxsb2NhdGVkLgorICAgIGVudW0gUmVzb3VyY2VQb29sIHsKKyAg
ICAgIEltcGxQb29sID0gMSwgLy8gVGhpcyBwb29sIGlzIGZvciB0ZXh0dXJlcyB0aGF0IGdldCBh
bGxvY2F0ZWQgb24gdGhlIGltcGwgdGhyZWFkIChlLmcuIFJlbmRlclN1cmZhY2VzKS4KKyAgICAg
IENvbnRlbnRQb29sIC8vIFRoaXMgcG9vbCBpcyBmb3IgdGV4dHVyZXMgdGhhdCBnZXQgYWxsb2Nh
dGVkIG9uIHRoZSBtYWluIHRocmVhZCAoZS5nLiB0aWxlcykuCisgICAgfTsKKwogICAgIHZpcnR1
YWwgfkNDUmVuZGVyZXIoKSB7IH0KIAogICAgIHZpcnR1YWwgY29uc3QgTGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwpAQCAtOTIsOCArOTcsNiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFRleHR1cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBUZXh0dXJlVXBsb2FkZXIqIHRleHR1cmVVcGxvYWRlcigpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0b3IqIGltcGxUZXh0dXJlQWxsb2Nh
dG9yKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciogY29udGVudHNU
ZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldFNjaXNz
b3JUb1JlY3QoY29uc3QgSW50UmVjdCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQ
cm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY4MmJmMjJhNTk1ZWQ3ZDk4NmIxNDRhZTE2NjcyZDA1
NmYwNDg5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAKQEAgLTAsMCArMSwyNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1Jl
c291cmNlUHJvdmlkZXIuaCIKKworI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCisj
aW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAv
LyBGb3IgdGhlIEdMQygpIG1hY3JvCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIK
KyNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgImNjL0NDUHJveHku
aCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KKwordXNpbmcgV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgR0MzRGVudW0gdGV4dHVyZVRvU3RvcmFnZUZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0
KQoreworICAgIEdDM0RlbnVtIHN0b3JhZ2VGb3JtYXQgPSBFeHRlbnNpb25zM0Q6OlJHQkE4X09F
UzsKKyAgICBzd2l0Y2ggKHRleHR1cmVGb3JtYXQpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4dGVuc2lvbnMzRDo6QkdSQV9F
WFQ6CisgICAgICAgIHN0b3JhZ2VGb3JtYXQgPSBFeHRlbnNpb25zM0RDaHJvbWl1bTo6QkdSQThf
RVhUOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHN0b3JhZ2VGb3Jt
YXQ7Cit9CisKK3N0YXRpYyBib29sIGlzVGV4dHVyZUZvcm1hdFN1cHBvcnRlZEZvclN0b3JhZ2Uo
R0MzRGVudW0gZm9ybWF0KQoreworICAgIHJldHVybiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBIHx8IGZvcm1hdCA9PSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUKTsKK30KKworUGFz
c093blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKEND
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQoreworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlk
ZXI+IHJlc291cmNlUHJvdmlkZXIoYWRvcHRQdHIobmV3IENDUmVzb3VyY2VQcm92aWRlcihjb250
ZXh0KSkpOworICAgIGlmICghcmVzb3VyY2VQcm92aWRlci0+aW5pdGlhbGl6ZSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcmVzb3VyY2VQcm92aWRlci5yZWxlYXNlKCk7
Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6fkNDUmVzb3VyY2VQcm92aWRlcigpCit7Cit9CisK
K1dlYkdyYXBoaWNzQ29udGV4dDNEKiBDQ1Jlc291cmNlUHJvdmlkZXI6OmdyYXBoaWNzQ29udGV4
dDNEKCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIHJldHVy
biBtX2NvbnRleHQtPmNvbnRleHQzRCgpOworfQorCitib29sIENDUmVzb3VyY2VQcm92aWRlcjo6
aW5Vc2VCeUNvbnN1bWVyKFJlc291cmNlSWQgaWQpCit7CisgICAgQVNTRVJUKENDUHJveHk6Omlz
SW1wbFRocmVhZCgpKTsKKyAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNl
cy5maW5kKGlkKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkpOworICAgIHJl
dHVybiAhIWl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudDsKK30KKworQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2UoaW50IHBv
b2wsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGlu
dCBoaW50KQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgdW5z
aWduZWQgdGV4dHVyZUlkID0gMDsKKyAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNk
ID0gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcu
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBHTEMoY29udGV4dDNkLCB0ZXh0dXJlSWQg
PSBjb250ZXh0M2QtPmNyZWF0ZVRleHR1cmUoKSk7CisgICAgR0xDKGNvbnRleHQzZCwgY29udGV4
dDNkLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlk
KSk7CisgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklM
VEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgR0xDKGNvbnRleHQzZCwgY29u
dGV4dDNkLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElO
RUFSKSk7CisgICAgR0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQ
X1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7CisgICAgR0xDKGNvbnRleHQz
ZCwgY29udGV4dDNkLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpD
TEFNUF9UT19FREdFKSk7CisKKyAgICBpZiAobV91c2VUZXh0dXJlVXNhZ2VIaW50ICYmIGhpbnQg
PT0gVGV4dHVyZVVzYWdlRnJhbWVidWZmZXIpCisgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRl
eHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgRXh0ZW5z
aW9uczNEQ2hyb21pdW06OkdMX1RFWFRVUkVfVVNBR0VfQU5HTEUsIEV4dGVuc2lvbnMzRENocm9t
aXVtOjpHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFKSk7CisgICAgaWYgKG1fdXNlVGV4
dHVyZVN0b3JhZ2VFeHQgJiYgaXNUZXh0dXJlRm9ybWF0U3VwcG9ydGVkRm9yU3RvcmFnZShmb3Jt
YXQpKSB7CisgICAgICAgIEdDM0RlbnVtIHN0b3JhZ2VGb3JtYXQgPSB0ZXh0dXJlVG9TdG9yYWdl
Rm9ybWF0KGZvcm1hdCk7CisgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4U3Rv
cmFnZTJERVhUKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAxLCBzdG9yYWdlRm9ybWF0
LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgR0xD
KGNvbnRleHQzZCwgY29udGV4dDNkLT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwLCBmb3JtYXQsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgZm9ybWF0
LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgMCkpOworICAgIFJlc291cmNlSWQg
aWQgPSBtX25leHRJZCsrOworICAgIFJlc291cmNlIHJlc291cmNlID0ge3RleHR1cmVJZCwgcG9v
bCwgMCwgZmFsc2UsIGZhbHNlLCBzaXplLCBmb3JtYXR9OworICAgIG1fcmVzb3VyY2VzLmFkZChp
ZCwgcmVzb3VyY2UpOworICAgIHJldHVybiBpZDsKK30KKworQ0NSZXNvdXJjZVByb3ZpZGVyOjpS
ZXNvdXJjZUlkIENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxU
ZXh0dXJlKHVuc2lnbmVkIHRleHR1cmVJZCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBs
VGhyZWFkKCkpOworICAgIFJlc291cmNlSWQgaWQgPSBtX25leHRJZCsrOworICAgIFJlc291cmNl
IHJlc291cmNlID0ge3RleHR1cmVJZCwgMCwgMCwgZmFsc2UsIHRydWUsIEludFNpemUoKSwgMH07
CisgICAgbV9yZXNvdXJjZXMuYWRkKGlkLCByZXNvdXJjZSk7CisgICAgcmV0dXJuIGlkOworfQor
Cit2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6ZGVsZXRlUmVzb3VyY2UoUmVzb3VyY2VJZCBpZCkK
K3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIFdlYkdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlmICgh
Y29udGV4dDNkKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBz
b2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSZXNvdXJj
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKKyAgICBBU1NFUlQoaXQg
IT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0
LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCk7CisgICAgaWYgKCFpdC0+c2Vjb25kLmV4dGVybmFs
KQorICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPmRlbGV0ZVRleHR1cmUoaXQtPnNl
Y29uZC5nbElkKSk7CisgICAgbV9yZXNvdXJjZXMucmVtb3ZlKGl0KTsKK30KKwordm9pZCBDQ1Jl
c291cmNlUHJvdmlkZXI6OmRlbGV0ZU93bmVkUmVzb3VyY2VzKGludCBwb29sKQoreworICAgIEFT
U0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgVmVjdG9yPFJlc291cmNlSWQ+IHRv
RGVsZXRlOworICAgIGZvciAoUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMu
YmVnaW4oKTsgaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKGl0
LT5zZWNvbmQucG9vbCA9PSBwb29sICYmICFpdC0+c2Vjb25kLmV4dGVybmFsKQorICAgICAgICAg
ICAgdG9EZWxldGUuYXBwZW5kKGl0LT5maXJzdCk7CisgICAgfQorICAgIGZvciAoVmVjdG9yPFJl
c291cmNlSWQ+OjppdGVyYXRvciBpdCA9IHRvRGVsZXRlLmJlZ2luKCk7IGl0ICE9IHRvRGVsZXRl
LmVuZCgpOyArK2l0KQorICAgICAgICBkZWxldGVSZXNvdXJjZSgqaXQpOworfQorCit2b2lkIEND
UmVzb3VyY2VQcm92aWRlcjo6dXBsb2FkKFJlc291cmNlSWQgaWQsIGNvbnN0IHVpbnQ4X3QqIGlt
YWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxU
aHJlYWQoKSk7CisgICAgQVNTRVJUKG1fdGV4U3ViSW1hZ2UuZ2V0KCkpOworICAgIFdlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQtPmNvbnRleHQzRCgpOworICAgIGlm
ICghY29udGV4dDNkKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZv
ciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSZXNv
dXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKKyAgICBBU1NFUlQo
aXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYg
IWl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCk7CisK
KyAgICBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBpdC0+c2Vjb25kLmdsSWQpOworICAgIG1fdGV4U3ViSW1hZ2UtPnVwbG9hZChpbWFnZSwgaW1h
Z2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgaXQtPnNlY29uZC5mb3JtYXQsIGNvbnRleHQz
ZCk7Cit9CisKK3Vuc2lnbmVkIENDUmVzb3VyY2VQcm92aWRlcjo6bG9ja0ZvcldyaXRlKFJlc291
cmNlSWQgaWQpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICBS
ZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKKyAgICBBU1NF
UlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgIWl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUg
JiYgIWl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCk7
CisgICAgaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSA9IHRydWU7CisgICAgcmV0dXJuIGl0LT5z
ZWNvbmQuZ2xJZDsKK30KKwordm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVubG9ja0ZvcldyaXRl
KFJlc291cmNlSWQgaWQpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
KyAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsKKyAg
ICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgaXQtPnNlY29uZC5sb2NrZWRGb3JX
cml0ZSAmJiAhaXQtPnNlY29uZC5leHRlcm5hbCk7CisgICAgaXQtPnNlY29uZC5sb2NrZWRGb3JX
cml0ZSA9IGZhbHNlOworfQorCit2b2lkIENDUmVzb3VyY2VQcm92aWRlcjo6Zmx1c2goKQorewor
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgV2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250
ZXh0M2QpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3
YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbnRleHQzZC0+
Zmx1c2goKTsKK30KKwordW5zaWduZWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpsb2NrRm9yUmVhZChS
ZXNvdXJjZUlkIGlkKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Cisg
ICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAg
QVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+c2Vjb25kLmxvY2tlZEZvcldy
aXRlKTsKKyAgICArKyhpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQpOworICAgIHJldHVybiBp
dC0+c2Vjb25kLmdsSWQ7Cit9CisKK3ZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JS
ZWFkKFJlc291cmNlSWQgaWQpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgp
KTsKKyAgICBSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5maW5kKGlkKTsK
KyAgICBBU1NFUlQoaXQgIT0gbV9yZXNvdXJjZXMuZW5kKCkgJiYgaXQtPnNlY29uZC5sb2NrRm9y
UmVhZENvdW50ID4gMCk7CisgICAgLS0oaXQtPnNlY29uZC5sb2NrRm9yUmVhZENvdW50KTsKK30K
KworQ0NSZXNvdXJjZVByb3ZpZGVyOjpDQ1Jlc291cmNlUHJvdmlkZXIoQ0NHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fbmV4dElkKDEp
CisgICAgLCBtX3VzZVRleHR1cmVTdG9yYWdlRXh0KGZhbHNlKQorICAgICwgbV91c2VUZXh0dXJl
VXNhZ2VIaW50KGZhbHNlKQorICAgICwgbV9tYXhUZXh0dXJlU2l6ZSgwKQoreworfQorCitib29s
IENDUmVzb3VyY2VQcm92aWRlcjo6aW5pdGlhbGl6ZSgpCit7CisgICAgQVNTRVJUKENDUHJveHk6
OmlzSW1wbFRocmVhZCgpKTsKKyAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0g
bV9jb250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCB8fCAhY29udGV4dDNk
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJpbmcgPSBjb250ZXh0M2QtPmdldFN0cmlu
ZyhHcmFwaGljc0NvbnRleHQzRDo6RVhURU5TSU9OUyk7CisgICAgVmVjdG9yPFN0cmluZz4gZXh0
ZW5zaW9uczsKKyAgICBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJywgZXh0ZW5zaW9ucyk7Cisg
ICAgYm9vbCB1c2VNYXBTdWIgPSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4
dGVuc2lvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGV4dGVuc2lvbnNbaV0gPT0gIkdM
X0VYVF90ZXh0dXJlX3N0b3JhZ2UiKQorICAgICAgICAgICAgbV91c2VUZXh0dXJlU3RvcmFnZUV4
dCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbnNbaV0gPT0gIkdMX0FOR0xFX3Rl
eHR1cmVfdXNhZ2UiKQorICAgICAgICAgICAgbV91c2VUZXh0dXJlVXNhZ2VIaW50ID0gdHJ1ZTsK
KyAgICAgICAgZWxzZSBpZiAoZXh0ZW5zaW9uc1tpXSA9PSAiR0xfQ0hST01JVU1fbWFwX3N1YiIp
CisgICAgICAgICAgICB1c2VNYXBTdWIgPSB0cnVlOworICAgIH0KKworICAgIG1fdGV4U3ViSW1h
Z2UgPSBhZG9wdFB0cihuZXcgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UodXNlTWFwU3ViKSk7CisgICAg
R0xDKGNvbnRleHQzZCwgY29udGV4dDNkLT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6
TUFYX1RFWFRVUkVfU0laRSwgJm1fbWF4VGV4dHVyZVNpemUpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDc2
ZjBlODg2YzllMzMxMTIxM2VhYWZjMjMxMTkyMWY0YjQ1M2Y4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVBy
b3ZpZGVyLmgKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgQ0NSZXNvdXJjZVBy
b3ZpZGVyX2gKKyNkZWZpbmUgQ0NSZXNvdXJjZVByb3ZpZGVyX2gKKworI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7Cit9CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBD
Q1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQ7CitjbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZv
cldyaXRlOworY2xhc3MgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U7CisKKy8vIFRocmVhZC1zYWZldHkg
bm90ZXM6IHRoaXMgY2xhc3MgaXMgbm90IHRocmVhZC1zYWZlIGFuZCBjYW4gb25seSBiZSBjYWxs
ZWQKKy8vIGZyb20gdGhlIHRocmVhZCBpdCB3YXMgY3JlYXRlZCBvbiAoaW4gcHJhY3RpY2UsIHRo
ZSBjb21wb3NpdG9yIHRocmVhZCkuCitjbGFzcyBDQ1Jlc291cmNlUHJvdmlkZXIgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKENDUmVzb3VyY2VQcm92aWRlcik7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiB1bnNpZ25lZCBSZXNvdXJjZUlkOworICAgIGVudW0gVGV4dHVyZVVzYWdlSGludCB7IFRl
eHR1cmVVc2FnZUFueSwgVGV4dHVyZVVzYWdlRnJhbWVidWZmZXIgfTsKKworICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gY3JlYXRlKENDR3JhcGhpY3NDb250ZXh0Kik7
CisKKyAgICB2aXJ0dWFsIH5DQ1Jlc291cmNlUHJvdmlkZXIoKTsKKworICAgIFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgaW50IG1heFRleHR1
cmVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhUZXh0dXJlU2l6ZTsgfQorICAgIHVuc2lnbmVk
IG51bVJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VzLnNpemUoKTsgfQorCisg
ICAgLy8gQ2hlY2tzIHdoZXRoZXIgYSByZXNvdXJjZSBpcyBpbiB1c2UgYnkgYSBjb25zdW1lci4K
KyAgICBib29sIGluVXNlQnlDb25zdW1lcihSZXNvdXJjZUlkKTsKKworCisgICAgLy8gUHJvZHVj
ZXIgaW50ZXJmYWNlLgorCisgICAgLy8gQ3JlYXRlcyBhIHJlc291cmNlIG9mIHRoZSBnaXZlbiBz
aXplL2Zvcm1hdCwgaW50byB0aGUgZ2l2ZW4gcG9vbC4KKyAgICBSZXNvdXJjZUlkIGNyZWF0ZVJl
c291cmNlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJl
VXNhZ2VIaW50KTsKKworICAgIC8vIFdyYXBzIGFuIGV4dGVybmFsIHRleHR1cmUgaW50byBhIHJl
c291cmNlLgorICAgIFJlc291cmNlSWQgY3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJl
KHVuc2lnbmVkIHRleHR1cmVJZCk7CisgICAgdm9pZCBkZWxldGVSZXNvdXJjZShSZXNvdXJjZUlk
KTsKKworICAgIC8vIERlbGV0ZXMgYWxsIHJlc291cmNlcyBvd25lZCBieSBhIGdpdmVuIHBvb2wu
CisgICAgdm9pZCBkZWxldGVPd25lZFJlc291cmNlcyhpbnQgcG9vbCk7CisKKyAgICAvLyBVcGxv
YWQgZGF0YSBmcm9tIGltYWdlLCBjb3B5aW5nIHNvdXJjZVJlY3QgKGluIGltYWdlKSBpbnRvIGRl
c3RSZWN0IChpbiB0aGUgcmVzb3VyY2UpLgorICAgIHZvaWQgdXBsb2FkKFJlc291cmNlSWQsIGNv
bnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIC8vIEZsdXNo
IGFsbCBjb250ZXh0IG9wZXJhdGlvbnMsIGtpY2tpbmcgdXBsb2FkcyBhbmQgZW5zdXJpbmcgb3Jk
ZXJpbmcgd2l0aAorICAgIC8vIHJlc3BlY3QgdG8gb3RoZXIgY29udGV4dHMuCisgICAgdm9pZCBm
bHVzaCgpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJj
ZUZvclJlYWQ7CisgICAgZnJpZW5kIGNsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGU7
CisKKyAgICBzdHJ1Y3QgUmVzb3VyY2UgeworICAgICAgICB1bnNpZ25lZCBnbElkOworICAgICAg
ICBpbnQgcG9vbDsKKyAgICAgICAgaW50IGxvY2tGb3JSZWFkQ291bnQ7CisgICAgICAgIGJvb2wg
bG9ja2VkRm9yV3JpdGU7CisgICAgICAgIGJvb2wgZXh0ZXJuYWw7CisgICAgICAgIEludFNpemUg
c2l6ZTsKKyAgICAgICAgR0MzRGVudW0gZm9ybWF0OworICAgIH07CisgICAgdHlwZWRlZiBIYXNo
TWFwPFJlc291cmNlSWQsIFJlc291cmNlPiBSZXNvdXJjZU1hcDsKKworICAgIGV4cGxpY2l0IEND
UmVzb3VyY2VQcm92aWRlcihDQ0dyYXBoaWNzQ29udGV4dCopOworICAgIGJvb2wgaW5pdGlhbGl6
ZSgpOworCisgICAgLy8gR2V0cyBhIEdMIHRleHR1cmUgaWQgcmVwcmVzZW50aW5nIHRoZSByZXNv
dXJjZSwgdGhhdCBjYW4gYmUgcmVuZGVyZWQgaW50by4KKyAgICB1bnNpZ25lZCBsb2NrRm9yV3Jp
dGUoUmVzb3VyY2VJZCk7CisgICAgdm9pZCB1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkKTsKKwor
ICAgIC8vIEdldHMgYSBHTCB0ZXh0dXJlIGlkIHJlcHJlc2VudGluZyB0aGUgcmVzb3VyY2UsIHRo
YXQgY2FuIGJlIHJlbmRlcmVkIHdpdGguCisgICAgdW5zaWduZWQgbG9ja0ZvclJlYWQoUmVzb3Vy
Y2VJZCk7CisgICAgdm9pZCB1bmxvY2tGb3JSZWFkKFJlc291cmNlSWQpOworCisgICAgQ0NHcmFw
aGljc0NvbnRleHQqIG1fY29udGV4dDsKKyAgICBSZXNvdXJjZUlkIG1fbmV4dElkOworICAgIFJl
c291cmNlTWFwIG1fcmVzb3VyY2VzOworCisgICAgYm9vbCBtX3VzZVRleHR1cmVTdG9yYWdlRXh0
OworICAgIGJvb2wgbV91c2VUZXh0dXJlVXNhZ2VIaW50OworICAgIE93blB0cjxMYXllclRleHR1
cmVTdWJJbWFnZT4gbV90ZXhTdWJJbWFnZTsKKyAgICBpbnQgbV9tYXhUZXh0dXJlU2l6ZTsKK307
CisKK2NsYXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkKTsKK3B1YmxpYzoKKyAgICBDQ1Nj
b3BlZExvY2tSZXNvdXJjZUZvclJlYWQoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3Zp
ZGVyLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCkKKyAgICAgICAg
OiBtX3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAgICAgLCBtX3Jlc291
cmNlSWQocmVzb3VyY2VJZCkKKyAgICAgICAgLCBtX3RleHR1cmVJZChyZXNvdXJjZVByb3ZpZGVy
LT5sb2NrRm9yUmVhZChyZXNvdXJjZUlkKSkgeyB9CisKKyAgICB+Q0NTY29wZWRMb2NrUmVzb3Vy
Y2VGb3JSZWFkKCkKKyAgICB7CisgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dW5sb2NrRm9y
UmVhZChtX3Jlc291cmNlSWQpOworICAgIH0KKworICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CisKK3ByaXZhdGU6CisgICAgQ0NSZXNvdXJjZVBy
b3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIG1fcmVzb3VyY2VJZDsKKyAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKK307CisKK2Ns
YXNzIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUpOworcHVibGljOgorICAgIENDU2NvcGVk
TG9ja1Jlc291cmNlRm9yV3JpdGUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVy
LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCkKKyAgICAgICAgOiBt
X3Jlc291cmNlUHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAgICAgLCBtX3Jlc291cmNl
SWQocmVzb3VyY2VJZCkKKyAgICAgICAgLCBtX3RleHR1cmVJZChyZXNvdXJjZVByb3ZpZGVyLT5s
b2NrRm9yV3JpdGUocmVzb3VyY2VJZCkpIHsgfQorCisgICAgfkNDU2NvcGVkTG9ja1Jlc291cmNl
Rm9yV3JpdGUoKQorICAgIHsKKyAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51bmxvY2tGb3JX
cml0ZShtX3Jlc291cmNlSWQpOworICAgIH0KKworICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CisKK3ByaXZhdGU6CisgICAgQ0NSZXNvdXJjZVBy
b3ZpZGVyKiBtX3Jlc291cmNlUHJvdmlkZXI7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIG1fcmVzb3VyY2VJZDsKKyAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKK307CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcAppbmRleCBiOWY3NWQxODRj
M2E2ODAxZmJiZThmZGZiYTQxZTQzMzY4ZmEzMzkyLi4yMWVmOTlhNjU0NTIyOTJhMWYzMDBhNmNj
NTU2ZjZiZTBiMGJiMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHAKQEAgLTI2
LDE0ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImNjL0NDU2NvcGVk
VGV4dHVyZS5oIgogCi0jaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUNDU2NvcGVkVGV4dHVyZTo6Q0NTY29wZWRUZXh0dXJlKFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvcikKLSAgICA6IG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKK0NDU2NvcGVk
VGV4dHVyZTo6Q0NTY29wZWRUZXh0dXJlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92
aWRlcikKKyAgICA6IG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQogewotICAg
IEFTU0VSVChtX2FsbG9jYXRvcik7CisgICAgQVNTRVJUKG1fcmVzb3VyY2VQcm92aWRlcik7CiB9
CiAKIENDU2NvcGVkVGV4dHVyZTo6fkNDU2NvcGVkVGV4dHVyZSgpCkBAIC00MSwxMyArMzksMTMg
QEAgQ0NTY29wZWRUZXh0dXJlOjp+Q0NTY29wZWRUZXh0dXJlKCkKICAgICBmcmVlKCk7CiB9CiAK
LWJvb2wgQ0NTY29wZWRUZXh0dXJlOjphbGxvY2F0ZShjb25zdCBJbnRTaXplJiBzaXplLCBHQzNE
ZW51bSBmb3JtYXQpCitib29sIENDU2NvcGVkVGV4dHVyZTo6YWxsb2NhdGUoaW50IHBvb2wsIGNv
bnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpU
ZXh0dXJlVXNhZ2VIaW50IGhpbnQpCiB7CiAgICAgQVNTRVJUKCFpZCgpKTsKICAgICBBU1NFUlQo
IXNpemUuaXNFbXB0eSgpKTsKIAogICAgIHNldERpbWVuc2lvbnMoc2l6ZSwgZm9ybWF0KTsKLSAg
ICBzZXRJZChtX2FsbG9jYXRvci0+Y3JlYXRlVGV4dHVyZShzaXplLCBmb3JtYXQpKTsKKyAgICBz
ZXRJZChtX3Jlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291cmNlKHBvb2wsIHNpemUsIGZvcm1h
dCwgaGludCkpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIG1fYWxsb2NhdGVUaHJlYWRJ
ZGVudGlmaWVyID0gV1RGOjpjdXJyZW50VGhyZWFkKCk7CkBAIC02MCw3ICs1OCw3IEBAIHZvaWQg
Q0NTY29wZWRUZXh0dXJlOjpmcmVlKCkKIHsKICAgICBpZiAoaWQoKSkgewogICAgICAgICBBU1NF
UlQobV9hbGxvY2F0ZVRocmVhZElkZW50aWZpZXIgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpOwot
ICAgICAgICBtX2FsbG9jYXRvci0+ZGVsZXRlVGV4dHVyZShpZCgpLCBzaXplKCksIGZvcm1hdCgp
KTsKKyAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZShpZCgpKTsKICAg
ICB9CiAgICAgc2V0SWQoMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCmluZGV4IDlm
NzI0MWY1MTdmNGE0MGVkYjJhYzhjNDE4YWY4YjcxMWZlNGQwMDUuLjczNDQyMGU5MGJlYzA0NDhi
MzVkMzQ3MTYwZDA5NzQwZTEzNDdkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCkBA
IC0yNiw3ICsyNiw2IEBACiAjaWZuZGVmIENDU2NvcGVkVGV4dHVyZV9oCiAjZGVmaW5lIENDU2Nv
cGVkVGV4dHVyZV9oCiAKLSNpbmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NUZXh0dXJlLmgiCiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0zNSwxMSArMzQsMTAg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0KIGNsYXNzIENDU2NvcGVkVGV4dHVyZSA6IHBy
b3RlY3RlZCBDQ1RleHR1cmUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU2NvcGVkVGV4
dHVyZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiBj
cmVhdGUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKSB7IHJldHVybiBhZG9wdFB0cihuZXcg
Q0NTY29wZWRUZXh0dXJlKGFsbG9jYXRvcikpOyB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NT
Y29wZWRUZXh0dXJlPiBjcmVhdGUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVy
KSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NTY29wZWRUZXh0dXJlKHJlc291cmNlUHJvdmlkZXIp
KTsgfQogICAgIHZpcnR1YWwgfkNDU2NvcGVkVGV4dHVyZSgpOwogCiAgICAgdXNpbmcgQ0NUZXh0
dXJlOjppZDsKQEAgLTQ3LDE1ICs0NSwxNSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ0NUZXh0dXJl
Ojpmb3JtYXQ7CiAgICAgdXNpbmcgQ0NUZXh0dXJlOjpieXRlczsKIAotICAgIGJvb2wgYWxsb2Nh
dGUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CisgICAgYm9vbCBhbGxvY2F0ZShp
bnQgcG9vbCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpUZXh0dXJlVXNhZ2VIaW50KTsKICAgICB2b2lkIGZyZWUoKTsKICAgICB2b2lkIGxlYWso
KTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IENDU2NvcGVkVGV4dHVyZShUZXh0dXJlQWxs
b2NhdG9yKik7CisgICAgZXhwbGljaXQgQ0NTY29wZWRUZXh0dXJlKENDUmVzb3VyY2VQcm92aWRl
ciopOwogCiBwcml2YXRlOgotICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworICAg
IENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwogCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgIFRocmVhZElkZW50aWZpZXIgbV9hbGxvY2F0ZVRocmVhZElkZW50aWZpZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKaW5kZXggZjM4ZmJkYTAx
ZjY2ZTM4MDYxZDEwNmZiYzBiYzFjMDQzNjI4MDMxOS4uNjUwZTc1MWY4Yzg5NGVmZjU2MWM0ZWY3
Y2MxN2RiMDFjZTk0Y2JkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBs
LmNwcApAQCAtNDUsOSArNDUsOSBAQCBDQ1Njcm9sbGJhckxheWVySW1wbDo6Q0NTY3JvbGxiYXJM
YXllckltcGwoaW50IGlkKQogICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgLCBtX3Njcm9sbExh
eWVyKDApCiAgICAgLCBtX3Njcm9sbGJhcih0aGlzKQotICAgICwgbV9iYWNrVHJhY2tUZXh0dXJl
SWQoMCkKLSAgICAsIG1fZm9yZVRyYWNrVGV4dHVyZUlkKDApCi0gICAgLCBtX3RodW1iVGV4dHVy
ZUlkKDApCisgICAgLCBtX2JhY2tUcmFja1Jlc291cmNlSWQoMCkKKyAgICAsIG1fZm9yZVRyYWNr
UmVzb3VyY2VJZCgwKQorICAgICwgbV90aHVtYlJlc291cmNlSWQoMCkKIHsKIH0KIApAQCAtNzYs
MjMgKzc2LDIzIEBAIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVh
ZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhCiAgICAgSW50UmVjdCB0aHVtYlJl
Y3QsIGJhY2tUcmFja1JlY3QsIGZvcmVUcmFja1JlY3Q7CiAgICAgdGhlbWUtPnNwbGl0VHJhY2so
Jm1fc2Nyb2xsYmFyLCB0aGVtZS0+dHJhY2tSZWN0KCZtX3Njcm9sbGJhciksIGJhY2tUcmFja1Jl
Y3QsIHRodW1iUmVjdCwgZm9yZVRyYWNrUmVjdCk7CiAKLSAgICBpZiAobV90aHVtYlRleHR1cmVJ
ZCAmJiB0aGVtZS0+aGFzVGh1bWIoJm1fc2Nyb2xsYmFyKSAmJiAhdGh1bWJSZWN0LmlzRW1wdHko
KSkgewotICAgICAgICBPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHF1YWQgPSBDQ1RleHR1cmVE
cmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGh1bWJSZWN0LCBtX3RodW1iVGV4dHVy
ZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKKyAgICBpZiAobV90aHVt
YlJlc291cmNlSWQgJiYgdGhlbWUtPmhhc1RodW1iKCZtX3Njcm9sbGJhcikgJiYgIXRodW1iUmVj
dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBxdWFkID0g
Q0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRodW1iUmVjdCwgbV90
aHVtYlJlc291cmNlSWQsIHByZW11bHRpcGxlZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOwogICAg
ICAgICBxdWFkLT5zZXROZWVkc0JsZW5kaW5nKCk7CiAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChx
dWFkLnJlbGVhc2UoKSk7CiAgICAgfQogCi0gICAgaWYgKCFtX2JhY2tUcmFja1RleHR1cmVJZCkK
KyAgICBpZiAoIW1fYmFja1RyYWNrUmVzb3VyY2VJZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gV2Ugb25seSBwYWludCB0aGUgdHJhY2sgaW4gdHdvIHBhcnRzIGlmIHdlIHdlcmUgZ2l2ZW4g
YSB0ZXh0dXJlIGZvciB0aGUgZm9yd2FyZCB0cmFjayBwYXJ0LgotICAgIGlmIChtX2ZvcmVUcmFj
a1RleHR1cmVJZCAmJiAhZm9yZVRyYWNrUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHF1YWRMaXN0
LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgZm9yZVRy
YWNrUmVjdCwgbV9mb3JlVHJhY2tUZXh0dXJlSWQsIHByZW11bHRpcGxlZEFscGhhLCB0b1VWUmVj
dChmb3JlVHJhY2tSZWN0LCBib3VuZHNSZWN0KSwgZmxpcHBlZCkpOworICAgIGlmIChtX2ZvcmVU
cmFja1Jlc291cmNlSWQgJiYgIWZvcmVUcmFja1JlY3QuaXNFbXB0eSgpKQorICAgICAgICBxdWFk
TGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGZv
cmVUcmFja1JlY3QsIG1fZm9yZVRyYWNrUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHRv
VVZSZWN0KGZvcmVUcmFja1JlY3QsIGJvdW5kc1JlY3QpLCBmbGlwcGVkKSk7CiAKICAgICAvLyBP
cmRlciBtYXR0ZXJzIGhlcmU6IHNpbmNlIHRoZSBiYWNrIHRyYWNrIHRleHR1cmUgaXMgYmVpbmcg
ZHJhd24gdG8gdGhlIGVudGlyZSBjb250ZW50cyByZWN0LCB3ZSBtdXN0IGFwcGVuZCBpdCBhZnRl
ciB0aGUgdGh1bWIgYW5kCiAgICAgLy8gZm9yZSB0cmFjayBxdWFkcy4gVGhlIGJhY2sgdHJhY2sg
dGV4dHVyZSBjb250YWlucyAoYW5kIGRpc3BsYXlzKSB0aGUgYnV0dG9ucy4KICAgICBpZiAoIWJv
dW5kc1JlY3QuaXNFbXB0eSgpKQotICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGJvdW5kc1JlY3QsIG1fYmFja1RyYWNrVGV4
dHVyZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7CisgICAgICAgIHF1
YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwg
Ym91bmRzUmVjdCwgbV9iYWNrVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZS
ZWN0LCBmbGlwcGVkKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBs
LmgKaW5kZXggZWNlMmI5NTcxNDE0YmY0MjU2ZmRiNGVlNGZkNWVhMWM3YzA0NmYzMS4uMzJhODM1
ZDkwMmFjNWMzODFjYzAyM2U0MmRmMjgwN2ZlODQwNzA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5oCkBAIC01Myw5ICs1Myw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfQogCi0gICAg
dm9pZCBzZXRCYWNrVHJhY2tUZXh0dXJlSWQodW5zaWduZWQgaWQpIHsgbV9iYWNrVHJhY2tUZXh0
dXJlSWQgPSBpZDsgfQotICAgIHZvaWQgc2V0Rm9yZVRyYWNrVGV4dHVyZUlkKHVuc2lnbmVkIGlk
KSB7IG1fZm9yZVRyYWNrVGV4dHVyZUlkID0gaWQ7IH0KLSAgICB2b2lkIHNldFRodW1iVGV4dHVy
ZUlkKHVuc2lnbmVkIGlkKSB7IG1fdGh1bWJUZXh0dXJlSWQgPSBpZDsgfQorICAgIHZvaWQgc2V0
QmFja1RyYWNrUmVzb3VyY2VJZChDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQpIHsg
bV9iYWNrVHJhY2tSZXNvdXJjZUlkID0gaWQ7IH0KKyAgICB2b2lkIHNldEZvcmVUcmFja1Jlc291
cmNlSWQoQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkKSB7IG1fZm9yZVRyYWNrUmVz
b3VyY2VJZCA9IGlkOyB9CisgICAgdm9pZCBzZXRUaHVtYlJlc291cmNlSWQoQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZUlkIGlkKSB7IG1fdGh1bWJSZXNvdXJjZUlkID0gaWQ7IH0KIAogICAg
IENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXI7
IH0KICAgICB2b2lkIHNldFNjcm9sbExheWVyKENDTGF5ZXJJbXBsKiBzY3JvbGxMYXllcikgeyBt
X3Njcm9sbExheWVyID0gc2Nyb2xsTGF5ZXI7IH0KQEAgLTEyNCw5ICsxMjQsOSBAQCBwcml2YXRl
OgogICAgIH07CiAgICAgQ0NTY3JvbGxiYXIgbV9zY3JvbGxiYXI7CiAKLSAgICB1bnNpZ25lZCBt
X2JhY2tUcmFja1RleHR1cmVJZDsKLSAgICB1bnNpZ25lZCBtX2ZvcmVUcmFja1RleHR1cmVJZDsK
LSAgICB1bnNpZ25lZCBtX3RodW1iVGV4dHVyZUlkOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBtX2JhY2tUcmFja1Jlc291cmNlSWQ7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpSZXNvdXJjZUlkIG1fZm9yZVRyYWNrUmVzb3VyY2VJZDsKKyAgICBDQ1Jlc291cmNlUHJvdmlk
ZXI6OlJlc291cmNlSWQgbV90aHVtYlJlc291cmNlSWQ7CiAKICAgICBTY3JvbGxiYXJPdmVybGF5
U3R5bGUgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CiAgICAgVmVjdG9yPEludFJlY3Q+IG1fdGlj
a21hcmtzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCA2Nzhl
ZmRmZjBhMzU4YTJkMjlmYjJhODdhNzgyZDU3YmY3ZTM2N2M4Li4wMDJjN2E3YmZhZWE1MDVkNGQ0
NGU3NWM2ZTM3YWVmNzAxZDZkYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6cmVj
cmVhdGVDb250ZXh0KCkKICAgICBib29sIGluaXRpYWxpemVkOwogICAgIHsKICAgICAgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVs
ZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRl
Q29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJj
ZVByb3ZpZGVyKCkpOwogICAgICAgICBpbml0aWFsaXplZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVw
bG9hZGVyKTsKICAgICAgICAgaWYgKGluaXRpYWxpemVkKSB7CiAgICAgICAgICAgICBtX2xheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXNGb3JNYWluVGhyZWFkID0gbV9sYXllclRyZWVIb3N0SW1wbC0+
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgQ0NT
aW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKICAg
ICAgICAgLy8gaGVyZSBhcyB0aGUgdGhyb3R0bGVkIHVwbG9hZGVyIGlzbid0IHVzZWQgaW4gc2lu
Z2xlIHRocmVhZCBtb2RlLgogICAgICAgICAvLyBGb3IgY29ycmVjdG5lc3MsIGxvb3AgdW50aWwg
bm8gbW9yZSB1cGRhdGVzIGFyZSBwZW5kaW5nLgogICAgICAgICB3aGlsZSAodXBkYXRlci5oYXNN
b3JlVXBkYXRlcygpKQotICAgICAgICAgICAgdXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29w
aWVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9h
ZGVyKCksIG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKTsKKyAgICAgICAgICAgIHVwZGF0ZXIu
dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSwgbV9sYXllclRy
ZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCksIG1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlcygpKTsKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1p
dE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKIApAQCAtMjYyLDcgKzI2
Miw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsOwogCiAgICAgICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQoKSkKLSAgICAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQo
bV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0SW1wbC5jbGVhcigpOwogICAgIH0KICAgICBtX2xheWVyVHJlZUhvc3QgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmUuaAppbmRleCAwZDVkOWY3NjgzZTU2OWVjNmRiNDc4MmQ2ODcxOWFhZThhM2Q5
NzJhLi5kM2U0YjhmN2U4Mzg3NWJhNTY0MzNmMjdhN2VjMTNmNzA2OGU5YjY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmUuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQwLDExICs0MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zaXplKHNpemUpCiAgICAgICAg
ICwgbV9mb3JtYXQoZm9ybWF0KSB7IH0KIAotICAgIHVuc2lnbmVkIGlkKCkgY29uc3QgeyByZXR1
cm4gbV9pZDsgfQorICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZCgpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CiAgICAgR0MzRGVudW0gZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3Jt
YXQ7IH0KIAotICAgIHZvaWQgc2V0SWQodW5zaWduZWQgaWQpIHsgbV9pZCA9IGlkOyB9CisgICAg
dm9pZCBzZXRJZChDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQpIHsgbV9pZCA9IGlk
OyB9CiAgICAgdm9pZCBzZXREaW1lbnNpb25zKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3Jt
YXQpOwogCiAgICAgc2l6ZV90IGJ5dGVzKCkgY29uc3Q7CkBAIC01Miw3ICs1Myw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgc2l6ZV90IG1lbW9yeVNpemVCeXRlcyhjb25zdCBJbnRTaXplJiwgR0Mz
RGVudW0gZm9ybWF0KTsKIAogcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX2lkOworICAgIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX2lkOwogICAgIEludFNpemUgbV9zaXplOwogICAg
IEdDM0RlbnVtIG1fZm9ybWF0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwu
Y3BwCmluZGV4IDZkZjJmYjZiZDY0YzZkMzY5ZTA4OWM3MTExNjFjZjhiMWFhZTc5MGQuLjZmYzkx
OTk2MjAwMzJmNTMyMmZlNWMyZjkxZmQ2YThjNzIwMjU1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlTGF5ZXJJbXBsLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiVGV4dFN0
cmVhbS5oIgogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2luY2x1ZGUgImNjL0NDUmVu
ZGVyZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVEcmF3UXVhZC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zOCw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIENDVGV4dHVy
ZUxheWVySW1wbDo6Q0NUZXh0dXJlTGF5ZXJJbXBsKGludCBpZCkKICAgICA6IENDTGF5ZXJJbXBs
KGlkKQogICAgICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3Vy
Y2UoMCkKICAgICAsIG1fcHJlbXVsdGlwbGllZEFscGhhKHRydWUpCiAgICAgLCBtX2ZsaXBwZWQo
dHJ1ZSkKICAgICAsIG1fdXZSZWN0KDAsIDAsIDEsIDEpCkBAIC00OCwxMCArNTAsMjggQEAgQ0NU
ZXh0dXJlTGF5ZXJJbXBsOjp+Q0NUZXh0dXJlTGF5ZXJJbXBsKCkKIHsKIH0KIAordm9pZCBDQ1Rl
eHR1cmVMYXllckltcGw6OndpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92
aWRlcikKK3sKKyAgICBBU1NFUlQoIW1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UpOworICAgIG1f
ZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UgPSByZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJj
ZUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSWQpOworfQorCiB2b2lkIENDVGV4dHVyZUxh
eWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCiB7CisgICAgQVNTRVJUKG1fZXh0
ZXJuYWxUZXh0dXJlUmVzb3VyY2UpOwogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwg
Y29udGVudEJvdW5kcygpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX3RleHR1cmVJZCwgbV9wcmVtdWx0
aXBsaWVkQWxwaGEsIG1fdXZSZWN0LCBtX2ZsaXBwZWQpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQo
Q0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2V4
dGVybmFsVGV4dHVyZVJlc291cmNlLCBtX3ByZW11bHRpcGxpZWRBbHBoYSwgbV91dlJlY3QsIG1f
ZmxpcHBlZCkpOworfQorCit2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6ZGlkRHJhdyhDQ1Jlc291
cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCit7CisgICAgQVNTRVJUKG1fZXh0ZXJuYWxU
ZXh0dXJlUmVzb3VyY2UpOworICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIGFzc2VydCB3aWxs
IG5vdCBiZSB0cnVlIHdoZW4gc2VuZGluZyByZXNvdXJjZXMgdG8gYQorICAgIC8vIHBhcmVudCBj
b21wb3NpdG9yLiBBIHN5bmNocm9uaXphdGlvbiBzY2hlbWUgKGRvdWJsZS1idWZmZXJpbmcgb3IK
KyAgICAvLyBwaXBlbGluaW5nIG9mIHVwZGF0ZXMpIGZvciB0aGUgY2xpZW50IHdpbGwgbmVlZCB0
byBleGlzdCB0byBzb2x2ZSB0aGlzLgorICAgIEFTU0VSVCghcmVzb3VyY2VQcm92aWRlci0+aW5V
c2VCeUNvbnN1bWVyKG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UpKTsKKyAgICByZXNvdXJjZVBy
b3ZpZGVyLT5kZWxldGVSZXNvdXJjZShtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKTsKKyAgICBt
X2V4dGVybmFsVGV4dHVyZVJlc291cmNlID0gMDsKIH0KIAogdm9pZCBDQ1RleHR1cmVMYXllcklt
cGw6OmR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCmluZGV4IDRhYmRiNTFmZjkyOTkzOTMx
ODA5OWNmZGM4YTBkZDUxZmZlNmZjYmIuLmU3NDhiMDEzMDhhOGVkYjk2MmEzOGY5NTRkYTBkMWJk
Zjk2NzkzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCkBAIC0zOCw3ICsz
OCw5IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NUZXh0dXJlTGF5ZXJJbXBsKCk7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFOwogCkBAIC01Niw2ICs1OCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBsYXllclR5cGVBc1N0cmluZygp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJUZXh0dXJlTGF5ZXIiOyB9CiAKICAgICB1bnNpZ25l
ZCBtX3RleHR1cmVJZDsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9leHRl
cm5hbFRleHR1cmVSZXNvdXJjZTsKICAgICBib29sIG1fcHJlbXVsdGlwbGllZEFscGhhOwogICAg
IGJvb2wgbV9mbGlwcGVkOwogICAgIEZsb2F0UmVjdCBtX3V2UmVjdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggYmMxZWQ3NWFmOWFmNTBkOTY0Yjc0NzMxNDMzN2ZlOWM0
ZWMxZmU0Yi4uOTY3YWQ1ZTNmZDViNzQxZjZkMzMwY2M1OWVkZmU4MDkzOGMyMzM4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBDQ1Rl
eHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZnVsbEVu
dHJpZXMuc2l6ZSgpIHx8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpIHx8IG1fY29weUVudHJpZXMu
c2l6ZSgpOwogfQogCi12b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShDQ0dyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlQ29waWVy
KiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciogdXBsb2FkZXIsIHNpemVfdCBjb3VudCkKK3ZvaWQg
Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92
aWRlciwgVGV4dHVyZUNvcGllciogY29waWVyLCBUZXh0dXJlVXBsb2FkZXIqIHVwbG9hZGVyLCBz
aXplX3QgY291bnQpCiB7CiAgICAgc2l6ZV90IGluZGV4OwogCkBAIC05OSwxNSArOTksMTUgQEAg
dm9pZCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG8KICAgICAgICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1f
ZW50cnlJbmRleCArIGNvdW50LCBtX2Z1bGxFbnRyaWVzLnNpemUoKSk7CiAgICAgICAgIGZvciAo
aW5kZXggPSBtX2VudHJ5SW5kZXg7IGluZGV4IDwgbWF4SW5kZXg7ICsraW5kZXgpIHsKICAgICAg
ICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZnVsbEVudHJpZXNbaW5kZXhdOwotICAgICAg
ICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoY29udGV4dCwgZW50cnkudGV4dHVyZSwgYWxs
b2NhdG9yLCBlbnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CisgICAgICAgICAgICB1
cGxvYWRlci0+dXBsb2FkVGV4dHVyZShlbnRyeS50ZXh0dXJlLCByZXNvdXJjZVByb3ZpZGVyLCBl
bnRyeS5zb3VyY2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7CiAgICAgICAgICAgICBmdWxsVXBsb2Fk
Q291bnQrKzsKICAgICAgICAgICAgIGlmICghKGZ1bGxVcGxvYWRDb3VudCAlIGtVcGxvYWRGbHVz
aFBlcmlvZCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Zmx1c2goKTsKKyAgICAgICAgICAg
ICAgICByZXNvdXJjZVByb3ZpZGVyLT5mbHVzaCgpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
TWFrZSBzdXJlIHRoZXJlIGFyZSBubyBkYW5nbGluZyB1cGxvYWRzIHdpdGhvdXQgYSBmbHVzaC4K
ICAgICAgICAgaWYgKGZ1bGxVcGxvYWRDb3VudCAlIGtVcGxvYWRGbHVzaFBlcmlvZCkKLSAgICAg
ICAgICAgIGNvbnRleHQtPmZsdXNoKCk7CisgICAgICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5m
bHVzaCgpOwogCiAgICAgICAgIGJvb2wgbW9yZVVwbG9hZHMgPSBtYXhJbmRleCA8IG1fZnVsbEVu
dHJpZXMuc2l6ZSgpOwogCkBAIC0xMjUsMzQgKzEyNSwzMCBAQCB2b2lkIENDVGV4dHVyZVVwZGF0
ZXI6OnVwZGF0ZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsbwogCiAgICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fcGFydGlhbEVudHJpZXMu
c2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX3Bh
cnRpYWxFbnRyaWVzW2luZGV4XTsKLSAgICAgICAgICAgIHVwbG9hZGVyLT51cGxvYWRUZXh0dXJl
KGNvbnRleHQsIGVudHJ5LnRleHR1cmUsIGFsbG9jYXRvciwgZW50cnkuc291cmNlUmVjdCwgZW50
cnkuZGVzdFJlY3QpOworICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoZW50cnku
dGV4dHVyZSwgcmVzb3VyY2VQcm92aWRlciwgZW50cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJl
Y3QpOwogICAgICAgICAgICAgaWYgKCEoKGluZGV4KzEpICUga1VwbG9hZEZsdXNoUGVyaW9kKSkK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5mbHVzaCgpOworICAgICAgICAgICAgICAgIHJlc291
cmNlUHJvdmlkZXItPmZsdXNoKCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlcmUgYXJlIG5vIGRhbmdsaW5nIHBhcnRpYWwgdXBsb2FkcyB3aXRob3V0IGEgZmx1c2guCiAg
ICAgICAgIC8vIE5vdGU6IFdlIGRvbid0IG5lZWQgdG8gdXNlIChpbmRleCsxKSBpbiB0aGlzIGNh
c2UgYmVjYXVzZSBpbmRleCB3YXMKICAgICAgICAgLy8gaW5jcmVtZW50ZWQgYXQgdGhlIGVuZCBv
ZiB0aGUgZm9yIGxvb3AuCiAgICAgICAgIGlmIChpbmRleCAlIGtVcGxvYWRGbHVzaFBlcmlvZCkK
LSAgICAgICAgICAgIGNvbnRleHQtPmZsdXNoKCk7CisgICAgICAgICAgICByZXNvdXJjZVByb3Zp
ZGVyLT5mbHVzaCgpOwogCiAgICAgICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRzKCk7CiAgICAgfQog
CiAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9jb3B5RW50cmllcy5zaXplKCk7ICsraW5k
ZXgpIHsKICAgICAgICAgQ29weUVudHJ5JiBjb3B5RW50cnkgPSBtX2NvcHlFbnRyaWVzW2luZGV4
XTsKLSAgICAgICAgY29waWVyLT5jb3B5VGV4dHVyZShjb250ZXh0LCBjb3B5RW50cnkuc291cmNl
VGV4dHVyZSwgY29weUVudHJ5LmRlc3RUZXh0dXJlLCBjb3B5RW50cnkuc2l6ZSk7CisgICAgICAg
IGNvcGllci0+Y29weVRleHR1cmUoY29weUVudHJ5LnNvdXJjZVRleHR1cmUsIGNvcHlFbnRyeS5k
ZXN0VGV4dHVyZSwgY29weUVudHJ5LnNpemUpOwogICAgIH0KIAogICAgIC8vIElmIHdlJ3ZlIHBl
cmZvcm1lZCBhbnkgdGV4dHVyZSBjb3BpZXMsIHdlIG5lZWQgdG8gaW5zZXJ0IGEgZmx1c2ggaGVy
ZSBpbnRvIHRoZSBjb21wb3NpdG9yIGNvbnRleHQKICAgICAvLyBiZWZvcmUgbGV0dGluZyB0aGUg
bWFpbiB0aHJlYWQgcHJvY2VlZCBhcyBpdCBtYXkgbWFrZSBkcmF3IGNhbGxzIHRvIHRoZSBzb3Vy
Y2UgdGV4dHVyZSBvZiBvbmUgb2YKICAgICAvLyBvdXIgY29weSBvcGVyYXRpb25zLgotICAgIGlm
IChtX2NvcHlFbnRyaWVzLnNpemUoKSkgewotICAgICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICAgICAgaWYgKGNv
bnRleHQzZCkKLSAgICAgICAgICAgIGNvbnRleHQzZC0+Zmx1c2goKTsKLSAgICAgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgotICAgIH0K
KyAgICBpZiAobV9jb3B5RW50cmllcy5zaXplKCkpCisgICAgICAgIGNvcGllci0+Zmx1c2goKTsK
IAogICAgIC8vIElmIG5vIGVudHJpZXMgbGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgogICAg
IGNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5kZXggOGE0Mzc5NDJiNGIw
NDIyZTA1MDljMTQ4NjUxZGIzMGIxYmFjOTFhZS4uOTcyYTFjMGVjN2U0ODEyMTM4MWQ0ZTRmZTZj
OTkwNzBhOTRiODI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzIsNyAr
MzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7
CitjbGFzcyBDQ1Jlc291cmNlUHJvdmlkZXI7CiBjbGFzcyBUZXh0dXJlQ29waWVyOwogY2xhc3Mg
VGV4dHVyZVVwbG9hZGVyOwogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhh
c01vcmVVcGRhdGVzKCkgY29uc3Q7CiAKICAgICAvLyBVcGRhdGUgc29tZSB0ZXh0dXJlcy4KLSAg
ICB2b2lkIHVwZGF0ZShDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0
dXJlQ29waWVyKiwgVGV4dHVyZVVwbG9hZGVyKiwgc2l6ZV90IGNvdW50KTsKKyAgICB2b2lkIHVw
ZGF0ZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBUZXh0dXJlQ29waWVyKiwgVGV4dHVyZVVwbG9hZGVy
Kiwgc2l6ZV90IGNvdW50KTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcAppbmRleCA5OTczYTk3NGIxNTY3YmI2NjgzMTI2MDM2ZWNkNDA0MzFmMDExZmNj
Li40NDUwN2M2ZjNjNjdmNzRkZDFjNDhmNDg5MTRlZmI3ZjAwOWViODM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcApAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQw
KCJjYyIsICJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2Vz
Iik7CiAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAg
ICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVy
ZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVV
cGxvYWRlcigpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKTsKKyAgICBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNl
UHJvdmlkZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJl
Q29waWVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVw
bG9hZGVyKCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUpOwogfQogCiB2b2lkIENDVGhyZWFkUHJv
eHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCkBAIC04NDksNyArODQ5LDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50KiBjb21wbGV0aW8KICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6Omxh
eWVyVHJlZUhvc3RDbG9zZWRPbkltcGxUaHJlYWQiKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFk
KCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1dlcmVQ
dXJnZWRTaW5jZUxhc3RDb21taXQoKSkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVD
b250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250
ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJv
dmlkZXIoKSk7CiAgICAgbV9pbnB1dEhhbmRsZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKICAgICBt
X2xheWVyVHJlZUhvc3RJbXBsLmNsZWFyKCk7CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQu
Y2xlYXIoKTsKQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRl
Q29udGV4dE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgQwogewog
ICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25J
bXBsVGhyZWFkIik7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBtX2xheWVyVHJl
ZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+
ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLT5y
ZXNvdXJjZVByb3ZpZGVyKCkpOwogICAgICpyZWNyZWF0ZVN1Y2NlZWRlZCA9IG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGFkb3B0UHRyKGNvbnRleHRQdHIpLCB0
ZXh0dXJlVXBsb2FkZXIpOwogICAgIGlmICgqcmVjcmVhdGVTdWNjZWVkZWQpIHsKICAgICAgICAg
KmNhcGFiaWxpdGllcyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggZGE5YTEwYTk5
ZDhjN2JmMjJkODdjODQ3Yjk1N2YyMzUwZjVkM2U0ZS4uYzllOWIyMjY0Yjk4ZDc4YTNmMGY0ODU1
NWJmNzdmODA4MTAzNmJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAg
LTU5LDEzICs1OSwxMyBAQCBjbGFzcyBEcmF3YWJsZVRpbGUgOiBwdWJsaWMgQ0NMYXllclRpbGlu
Z0RhdGE6OlRpbGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPERyYXdhYmxlVGls
ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IERyYXdhYmxlVGlsZSgpKTsgfQogCi0g
ICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJ
ZDsgfQotICAgIHZvaWQgc2V0VGV4dHVyZUlkKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKSB7
IG1fdGV4dHVyZUlkID0gdGV4dHVyZUlkOyB9CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIHJlc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlSWQ7IH0KKyAgICB2
b2lkIHNldFJlc291cmNlSWQoQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNl
SWQpIHsgbV9yZXNvdXJjZUlkID0gcmVzb3VyY2VJZDsgfQogCiBwcml2YXRlOgotICAgIERyYXdh
YmxlVGlsZSgpIDogbV90ZXh0dXJlSWQoMCkgeyB9CisgICAgRHJhd2FibGVUaWxlKCkgOiBtX3Jl
c291cmNlSWQoMCkgeyB9CiAKLSAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZUlkOworICAg
IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CiB9OwogCiBDQ1Rp
bGVkTGF5ZXJJbXBsOjpDQ1RpbGVkTGF5ZXJJbXBsKGludCBpZCkKQEAgLTc5LDcgKzc5LDcgQEAg
Q0NUaWxlZExheWVySW1wbDo6fkNDVGlsZWRMYXllckltcGwoKQogewogfQogCi11bnNpZ25lZCBD
Q1RpbGVkTGF5ZXJJbXBsOjpjb250ZW50c1RleHR1cmVJZCgpIGNvbnN0CitDQ1Jlc291cmNlUHJv
dmlkZXI6OlJlc291cmNlSWQgQ0NUaWxlZExheWVySW1wbDo6Y29udGVudHNSZXNvdXJjZUlkKCkg
Y29uc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIHNpbmdsZSB0
ZXh0dXJlIGxheWVycywgZS5nLiBtYXNrcy4KICAgICBBU1NFUlQobV90aWxlcik7CkBAIC04Nywx
MCArODcsMTAgQEAgdW5zaWduZWQgQ0NUaWxlZExheWVySW1wbDo6Y29udGVudHNUZXh0dXJlSWQo
KSBjb25zdAogICAgIEFTU0VSVChtX3RpbGVyLT5udW1UaWxlc1koKSA9PSAxKTsKIAogICAgIERy
YXdhYmxlVGlsZSogdGlsZSA9IHRpbGVBdCgwLCAwKTsKLSAgICBQbGF0Zm9ybTNET2JqZWN0IHRl
eHR1cmVJZCA9IHRpbGUgPyB0aWxlLT50ZXh0dXJlSWQoKSA6IDA7Ci0gICAgQVNTRVJUKHRleHR1
cmVJZCk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQgPSB0
aWxlID8gdGlsZS0+cmVzb3VyY2VJZCgpIDogMDsKKyAgICBBU1NFUlQocmVzb3VyY2VJZCk7CiAK
LSAgICByZXR1cm4gdGV4dHVyZUlkOworICAgIHJldHVybiByZXNvdXJjZUlkOwogfQogCiB2b2lk
IENDVGlsZWRMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGlu
dCBpbmRlbnQpIGNvbnN0CkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBDQ1RpbGVkTGF5ZXJJbXBs
OjpoYXNUaWxlQXQoaW50IGksIGludCBqKSBjb25zdAogCiBib29sIENDVGlsZWRMYXllckltcGw6
Omhhc1RleHR1cmVJZEZvclRpbGVBdChpbnQgaSwgaW50IGopIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGhhc1RpbGVBdChpLCBqKSAmJiB0aWxlQXQoaSwgaiktPnRleHR1cmVJZCgpOworICAgIHJldHVy
biBoYXNUaWxlQXQoaSwgaikgJiYgdGlsZUF0KGksIGopLT5yZXNvdXJjZUlkKCk7CiB9CiAKIERy
YXdhYmxlVGlsZSogQ0NUaWxlZExheWVySW1wbDo6dGlsZUF0KGludCBpLCBpbnQgaikgY29uc3QK
QEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKEND
UXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YQogICAgICAgICAgICAg
ICAgIEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGVyLT50aWxlQm91bmRzKGksIGopOwogICAgICAg
ICAgICAgICAgIFNrQ29sb3IgYm9yZGVyQ29sb3I7CiAKLSAgICAgICAgICAgICAgICBpZiAobV9z
a2lwc0RyYXcgfHwgIXRpbGUgfHwgIXRpbGUtPnRleHR1cmVJZCgpKQorICAgICAgICAgICAgICAg
IGlmIChtX3NraXBzRHJhdyB8fCAhdGlsZSB8fCAhdGlsZS0+cmVzb3VyY2VJZCgpKQogICAgICAg
ICAgICAgICAgICAgICBib3JkZXJDb2xvciA9IFNrQ29sb3JTZXRBUkdCKGRlYnVnVGlsZUJvcmRl
ckFscGhhLCBkZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNvbG9yUmVkLCBkZWJ1Z1RpbGVCb3Jk
ZXJNaXNzaW5nVGlsZUNvbG9yR3JlZW4sIGRlYnVnVGlsZUJvcmRlck1pc3NpbmdUaWxlQ29sb3JC
bHVlKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNv
bG9yID0gU2tDb2xvclNldEFSR0IoZGVidWdUaWxlQm9yZGVyQWxwaGEsIGRlYnVnVGlsZUJvcmRl
ckNvbG9yUmVkLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvckdyZWVuLCBkZWJ1Z1RpbGVCb3JkZXJDb2xv
ckJsdWUpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5k
UXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhCiAgICAg
ICAgICAgICBpZiAodGlsZVJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgICAgICBpZiAoIXRpbGUgfHwgIXRpbGUtPnRleHR1cmVJZCgpKSB7CisgICAg
ICAgICAgICBpZiAoIXRpbGUgfHwgIXRpbGUtPnJlc291cmNlSWQoKSkgewogICAgICAgICAgICAg
ICAgIGlmIChkcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGhhZE1pc3NpbmdUaWxlcyB8PSBxdWFkTGlzdC5hcHBlbmQoQ0NDaGVja2VyYm9hcmRE
cmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QpKTsKICAgICAgICAgICAg
ICAgICBlbHNlCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEKICAg
ICAgICAgICAgIGJvb2wgYm90dG9tRWRnZUFBID0gaiA9PSBtX3RpbGVyLT5udW1UaWxlc1koKSAt
IDEgJiYgdXNlQUE7CiAKICAgICAgICAgICAgIGNvbnN0IEdDM0RpbnQgdGV4dHVyZUZpbHRlciA9
IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6
IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwotICAgICAgICAgICAgcXVhZExpc3QuYXBwZW5k
KENDVGlsZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwgdGlsZU9w
YXF1ZVJlY3QsIHRpbGUtPnRleHR1cmVJZCgpLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwg
dGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEs
IHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVu
ZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGVP
cGFxdWVSZWN0LCB0aWxlLT5yZXNvdXJjZUlkKCksIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXpl
LCB0ZXh0dXJlRmlsdGVyLCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEsIHRvcEVkZ2VB
QSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAt
MjA0LDEyICsyMDQsMTIgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpzZXRUaWxpbmdEYXRhKGNv
bnN0IENDTGF5ZXJUaWxpbmdEYXRhJiB0aWxlcikKICAgICAqbV90aWxlciA9IHRpbGVyOwogfQog
Ci12b2lkIENDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVydGllcyhpbnQgaSwgaW50IGos
IHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKK3ZvaWQgQ0NU
aWxlZExheWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVzKGludCBpLCBpbnQgaiwgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJl
Y3QpCiB7CiAgICAgRHJhd2FibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwogICAgIGlmICgh
dGlsZSkKICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUoaSwgaik7Ci0gICAgdGlsZS0+c2V0VGV4
dHVyZUlkKHRleHR1cmVJZCk7CisgICAgdGlsZS0+c2V0UmVzb3VyY2VJZChyZXNvdXJjZUlkKTsK
ICAgICB0aWxlLT5zZXRPcGFxdWVSZWN0KG9wYXF1ZVJlY3QpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmgKaW5kZXggNDA1MmZlOTdjZWMyMzM1OGRjZjg5NzJjNDVlZTNiNmQ0MWE3
Mzc3MS4uODcxZDRlN2QxNmExNDdhZThiNDE0MjU0MGYxN2FhNGNiODMwYThjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNDQsMTMgKzQ0LDEzIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHVuc2lnbmVkIGNvbnRlbnRzVGV4dHVyZUlkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgY29udGVudHNSZXNvdXJjZUlkKCkgY29u
c3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0
U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIHNldFNraXBz
RHJhdyhib29sIHNraXBzRHJhdykgeyBtX3NraXBzRHJhdyA9IHNraXBzRHJhdzsgfQogICAgIHZv
aWQgc2V0VGlsaW5nRGF0YShjb25zdCBDQ0xheWVyVGlsaW5nRGF0YSYgdGlsZXIpOwotICAgIHZv
aWQgcHVzaFRpbGVQcm9wZXJ0aWVzKGludCwgaW50LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0
IEludFJlY3QmIG9wYXF1ZVJlY3QpOworICAgIHZvaWQgcHVzaFRpbGVQcm9wZXJ0aWVzKGludCwg
aW50LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIG9wYXF1
ZVJlY3QpOwogCiAgICAgdm9pZCBzZXRDb250ZW50c1N3aXp6bGVkKGJvb2wgY29udGVudHNTd2l6
emxlZCkgeyBtX2NvbnRlbnRzU3dpenpsZWQgPSBjb250ZW50c1N3aXp6bGVkOyB9CiAgICAgYm9v
bCBjb250ZW50c1N3aXp6bGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c1N3aXp6bGVkOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCmluZGV4IGQ1YTE1OTk2NWE0OTdiODU3
NjJiYjNkZjQ3YzU1ZjIzYWU3OGUwMTMuLmFlNTM4YzJlNTM2OTMzMTI0NDRjZDUwOWUyMzEyODMx
ZDg0YTM5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC0zMSwxNiAr
MzEsMTMgQEAKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIg
Ly8gRm9yIEdMQyBtYWNybwotI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCi0jaW5jbHVk
ZSAiVGV4dHVyZUFsbG9jYXRvci5oIgotI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NRdWFkQ3VsbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgiCiAjaW5j
bHVkZSAiY2MvQ0NTdHJlYW1WaWRlb0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJl
RHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1lVVlZpZGVvRHJhd1F1YWQuaCIKQEAgLTUzLDYg
KzUwLDcgQEAgQ0NWaWRlb0xheWVySW1wbDo6Q0NWaWRlb0xheWVySW1wbChpbnQgaWQsIFdlYktp
dDo6V2ViVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWQKICAgICA6IENDTGF5ZXJJbXBsKGlkKQog
ICAgICwgbV9wcm92aWRlcihwcm92aWRlcikKICAgICAsIG1fZnJhbWUoMCkKKyAgICAsIG1fZXh0
ZXJuYWxUZXh0dXJlUmVzb3VyY2UoMCkKIHsKICAgICAvLyBUaGlzIG1hdHJpeCBpcyB0aGUgZGVm
YXVsdCB0cmFuc2Zvcm1hdGlvbiBmb3Igc3RyZWFtIHRleHR1cmVzLCBhbmQgZmxpcHMgb24gdGhl
IFkgYXhpcy4KICAgICBtX3N0cmVhbVRleHR1cmVNYXRyaXggPSBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4KApAQCAtNzcsMTEgKzc1LDEyIEBAIENDVmlkZW9MYXllckltcGw6On5DQ1Zp
ZGVvTGF5ZXJJbXBsKCkKICAgICAgICAgbV9wcm92aWRlci0+c2V0VmlkZW9GcmFtZVByb3ZpZGVy
Q2xpZW50KDApOwogICAgICAgICBtX3Byb3ZpZGVyID0gMDsKICAgICB9Ci0gICAgZnJlZVBsYW5l
RGF0YShsYXllclRyZWVIb3N0SW1wbCgpLT5jb250ZXh0KCkpOworICAgIGZyZWVQbGFuZURhdGEo
bGF5ZXJUcmVlSG9zdEltcGwoKS0+cmVzb3VyY2VQcm92aWRlcigpKTsKIAogI2lmICFBU1NFUlRf
RElTQUJMRUQKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJWaWRlb0Zy
YW1lOjptYXhQbGFuZXM7ICsraSkKLSAgICAgICAgQVNTRVJUKCFtX2ZyYW1lUGxhbmVzW2ldLnRl
eHR1cmVJZCk7CisgICAgICAgIEFTU0VSVCghbV9mcmFtZVBsYW5lc1tpXS5yZXNvdXJjZUlkKTsK
KyAgICBBU1NFUlQoIW1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UpOwogI2VuZGlmCiB9CiAKQEAg
LTExMiwxMCArMTExLDEwIEBAIHN0YXRpYyBHQzNEZW51bSBjb252ZXJ0VkZDRm9ybWF0VG9HQzNE
Rm9ybWF0KGNvbnN0IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYgZnJhbWUpCiAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFOwogfQogCi12b2lkIENDVmlkZW9MYXllcklt
cGw6OndpbGxEcmF3KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJv
dmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpKTsKLSAgICBDQ0xheWVySW1wbDo6d2lsbERyYXcobGF5ZXJSZW5kZXJlciwgY29udGV4
dCk7CisgICAgQ0NMYXllckltcGw6OndpbGxEcmF3KHJlc291cmNlUHJvdmlkZXIpOwogCiAgICAg
Ly8gRXhwbGljaXRseSBsb2NrIGFuZCB1bmxvY2sgdGhlIHByb3ZpZGVyIG11dGV4IHNvIGl0IGNh
biBiZSBoZWxkIGZyb20KICAgICAvLyB3aWxsRHJhdyB0byBkaWREcmF3LiBTaW5jZSB0aGUgY29t
cG9zaXRvciB0aHJlYWQgaXMgaW4gdGhlIG1pZGRsZSBvZgpAQCAtMTI2LDE2ICsxMjUsMTcgQEAg
dm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVy
LCBDQ0dyYXBoaWNzQ29udGV4dCogY28KICAgICAvLyBsb2NrIHNob3VsZCBub3QgY2F1c2UgYSBk
ZWFkbG9jay4KICAgICBtX3Byb3ZpZGVyTXV0ZXgubG9jaygpOwogCi0gICAgd2lsbERyYXdJbnRl
cm5hbChsYXllclJlbmRlcmVyLCBjb250ZXh0KTsKLSAgICBmcmVlVW51c2VkUGxhbmVEYXRhKGNv
bnRleHQpOworICAgIHdpbGxEcmF3SW50ZXJuYWwocmVzb3VyY2VQcm92aWRlcik7CisgICAgZnJl
ZVVudXNlZFBsYW5lRGF0YShyZXNvdXJjZVByb3ZpZGVyKTsKIAogICAgIGlmICghbV9mcmFtZSkK
ICAgICAgICAgbV9wcm92aWRlck11dGV4LnVubG9jaygpOwogfQogCi12b2lkIENDVmlkZW9MYXll
ckltcGw6OndpbGxEcmF3SW50ZXJuYWwoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50
ZXJuYWwoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgQVNTRVJUKCFtX2V4dGVybmFsVGV4dHVy
ZVJlc291cmNlKTsKIAogICAgIGlmICghbV9wcm92aWRlcikgewogICAgICAgICBtX2ZyYW1lID0g
MDsKQEAgLTE2MSwxNyArMTYxLDIwIEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERyYXdJ
bnRlcm5hbChDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29uCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWFsbG9jYXRlUGxhbmVEYXRhKGxheWVyUmVuZGVy
ZXIsIGNvbnRleHQpKSB7CisgICAgaWYgKCFhbGxvY2F0ZVBsYW5lRGF0YShyZXNvdXJjZVByb3Zp
ZGVyKSkgewogICAgICAgICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUobV9mcmFtZSk7CiAg
ICAgICAgIG1fZnJhbWUgPSAwOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFj
b3B5UGxhbmVEYXRhKGxheWVyUmVuZGVyZXIsIGNvbnRleHQpKSB7CisgICAgaWYgKCFjb3B5UGxh
bmVEYXRhKHJlc291cmNlUHJvdmlkZXIpKSB7CiAgICAgICAgIG1fcHJvdmlkZXItPnB1dEN1cnJl
bnRGcmFtZShtX2ZyYW1lKTsKICAgICAgICAgbV9mcmFtZSA9IDA7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisKKyAgICBpZiAobV9mb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQpCisgICAgICAgIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UgPSByZXNvdXJjZVByb3ZpZGVy
LT5jcmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUobV9mcmFtZS0+dGV4dHVyZUlkKCkp
OwogfQogCiB2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wm
KQpAQCAtMjA0LDcgKzIwNyw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMo
Q0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhCiAgICAgICAgIGJv
b2wgcHJlbXVsdGlwbGllZEFscGhhID0gdHJ1ZTsKICAgICAgICAgRmxvYXRSZWN0IHV2UmVjdCgw
LCAwLCB3aWR0aFNjYWxlRmFjdG9yLCAxKTsKICAgICAgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7
Ci0gICAgICAgIE93blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gdGV4dHVyZVF1YWQgPSBDQ1RleHR1
cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHBsYW5lLnRleHR1
cmVJZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOworICAgICAgICBPd25Q
dHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHRleHR1cmVRdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNy
ZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBwbGFuZS5yZXNvdXJjZUlkLCBwcmVtdWx0
aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7CiAgICAgICAgIHF1YWRMaXN0LmFwcGVuZCh0
ZXh0dXJlUXVhZC5yZWxlYXNlKCkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMTksNyAr
MjIyLDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXIm
IHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEKICNlbHNlCiAgICAgICAgIGJvb2wgZmxp
cHBlZCA9IGZhbHNlOyAvLyBMaWJWQSAoY3Jvcy9pbnRlbCksIE1hY09TLgogI2VuZGlmCi0gICAg
ICAgIE93blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gdGV4dHVyZVF1YWQgPSBDQ1RleHR1cmVEcmF3
UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fZnJhbWUtPnRleHR1cmVJ
ZCgpLCBwcmVtdWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7CisgICAgICAgIE93blB0
cjxDQ1RleHR1cmVEcmF3UXVhZD4gdGV4dHVyZVF1YWQgPSBDQ1RleHR1cmVEcmF3UXVhZDo6Y3Jl
YXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2Us
IHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKICAgICAgICAgcXVhZExpc3Qu
YXBwZW5kKHRleHR1cmVRdWFkLnJlbGVhc2UoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTI0MCwxNCArMjQzLDI0IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NR
dWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhCiAgICAgfQogfQogCi12
b2lkIENDVmlkZW9MYXllckltcGw6OmRpZERyYXcoKQordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpk
aWREcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKICAgICBBU1NF
UlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwotICAgIENDTGF5ZXJJbXBsOjpkaWREcmF3KCk7
CisgICAgQ0NMYXllckltcGw6OmRpZERyYXcocmVzb3VyY2VQcm92aWRlcik7CiAKICAgICBpZiAo
IW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2Zvcm1hdCA9PSBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCkgeworICAgICAgICBBU1NFUlQobV9leHRlcm5hbFRleHR1
cmVSZXNvdXJjZSk7CisgICAgICAgIC8vIEZJWE1FOiB0aGUgZm9sbG93aW5nIGFzc2VydCB3aWxs
IG5vdCBiZSB0cnVlIHdoZW4gc2VuZGluZyByZXNvdXJjZXMgdG8gYQorICAgICAgICAvLyBwYXJl
bnQgY29tcG9zaXRvci4gV2Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGhvbGQgb24gdG8gbV9mcmFt
ZSBmb3IKKyAgICAgICAgLy8gbG9uZ2VyLCBhbmQgaGF2ZSBzZXZlcmFsICJjdXJyZW50IGZyYW1l
cyIgaW4gdGhlIHBpcGVsaW5lLgorICAgICAgICBBU1NFUlQoIXJlc291cmNlUHJvdmlkZXItPmlu
VXNlQnlDb25zdW1lcihtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKSk7CisgICAgICAgIHJlc291
cmNlUHJvdmlkZXItPmRlbGV0ZVJlc291cmNlKG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UpOwor
ICAgICAgICBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlID0gMDsKKyAgICB9CisKICAgICBtX3By
b3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUobV9mcmFtZSk7CiAgICAgbV9mcmFtZSA9IDA7CiAKQEAg
LTI5MCw0NSArMzAzLDI3IEBAIEludFNpemUgQ0NWaWRlb0xheWVySW1wbDo6Y29tcHV0ZVZpc2li
bGVTaXplKGNvbnN0IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYgZnJhbWUsCiAgICAgcmV0dXJuIElu
dFNpemUodmlzaWJsZVdpZHRoLCB2aXNpYmxlSGVpZ2h0KTsKIH0KIAotYm9vbCBDQ1ZpZGVvTGF5
ZXJJbXBsOjpGcmFtZVBsYW5lOjphbGxvY2F0ZURhdGEoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQpCitib29sIENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmU6OmFsbG9jYXRlRGF0YShDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7Ci0gICAgaWYgKHRleHR1cmVJZCkK
KyAgICBpZiAocmVzb3VyY2VJZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsK
LSAgICBpZiAoIWNvbnRleHQzRCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR0xDKGNv
bnRleHQzRCwgdGV4dHVyZUlkID0gY29udGV4dDNELT5jcmVhdGVUZXh0dXJlKCkpOwotICAgIEdM
Qyhjb250ZXh0M0QsIGNvbnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIHRleHR1cmVJZCkpOwotICAgIC8vIERvIGJhc2ljIGxpbmVhciBmaWx0ZXJpbmcg
b24gcmVzaXplLgotICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
TUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwotICAgIEdMQyhjb250ZXh0
M0QsIGNvbnRleHQzRC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkxJTkVBUikpOwotICAgIC8vIE5QT1QgdGV4dHVyZXMgaW4gR0wgRVMgb25seSB3b3JrIHdo
ZW4gdGhlIHdyYXAgbW9kZSBpcyBzZXQgdG8gR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VE
R0UuCi0gICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1Ms
IEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7Ci0gICAgR0xDKGNvbnRleHQzRCwg
Y29udGV4dDNELT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFN
UF9UT19FREdFKSk7Ci0KLSAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleEltYWdlMkQo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGZvcm1hdCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpLCAwLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRF
LCAwKSk7Ci0KLSAgICByZXR1cm4gdGV4dHVyZUlkOworICAgIHJlc291cmNlSWQgPSByZXNvdXJj
ZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwgc2l6ZSwgZm9y
bWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7CisgICAgcmV0dXJuIHJl
c291cmNlSWQ7CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6ZnJlZURh
dGEoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIENDVmlkZW9MYXllckltcGw6OkZy
YW1lUGxhbmU6OmZyZWVEYXRhKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikK
IHsKLSAgICBpZiAoIXRleHR1cmVJZCkKKyAgICBpZiAoIXJlc291cmNlSWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCA9IGNv
bnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dDNEKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlk
KSk7Ci0gICAgdGV4dHVyZUlkID0gMDsKKyAgICByZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNv
dXJjZShyZXNvdXJjZUlkKTsKKyAgICByZXNvdXJjZUlkID0gMDsKIH0KIAotYm9vbCBDQ1ZpZGVv
TGF5ZXJJbXBsOjphbGxvY2F0ZVBsYW5lRGF0YShDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBD
Q0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK2Jvb2wgQ0NWaWRlb0xheWVySW1wbDo6YWxsb2Nh
dGVQbGFuZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewotICAg
IGludCBtYXhUZXh0dXJlU2l6ZSA9IGxheWVyUmVuZGVyZXItPmNhcGFiaWxpdGllcygpLm1heFRl
eHR1cmVTaXplOworICAgIGludCBtYXhUZXh0dXJlU2l6ZSA9IHJlc291cmNlUHJvdmlkZXItPm1h
eFRleHR1cmVTaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZUluZGV4ID0gMDsgcGxhbmVJ
bmRleCA8IG1fZnJhbWUtPnBsYW5lcygpOyArK3BsYW5lSW5kZXgpIHsKICAgICAgICAgQ0NWaWRl
b0xheWVySW1wbDo6RnJhbWVQbGFuZSYgcGxhbmUgPSBtX2ZyYW1lUGxhbmVzW3BsYW5lSW5kZXhd
OwogCkBAIC0zMzgsMTMgKzMzMywxMyBAQCBib29sIENDVmlkZW9MYXllckltcGw6OmFsbG9jYXRl
UGxhbmVEYXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDbwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmIChwbGFuZS5zaXplICE9IHJlcXVpcmVk
VGV4dHVyZVNpemUgfHwgcGxhbmUuZm9ybWF0ICE9IG1fZm9ybWF0KSB7Ci0gICAgICAgICAgICBw
bGFuZS5mcmVlRGF0YShjb250ZXh0KTsKKyAgICAgICAgICAgIHBsYW5lLmZyZWVEYXRhKHJlc291
cmNlUHJvdmlkZXIpOwogICAgICAgICAgICAgcGxhbmUuc2l6ZSA9IHJlcXVpcmVkVGV4dHVyZVNp
emU7CiAgICAgICAgICAgICBwbGFuZS5mb3JtYXQgPSBtX2Zvcm1hdDsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmICghcGxhbmUudGV4dHVyZUlkKSB7Ci0gICAgICAgICAgICBpZiAoIXBsYW5lLmFs
bG9jYXRlRGF0YShjb250ZXh0KSkKKyAgICAgICAgaWYgKCFwbGFuZS5yZXNvdXJjZUlkKSB7Cisg
ICAgICAgICAgICBpZiAoIXBsYW5lLmFsbG9jYXRlRGF0YShyZXNvdXJjZVByb3ZpZGVyKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBwbGFuZS52aXNpYmxlU2l6
ZSA9IGNvbXB1dGVWaXNpYmxlU2l6ZSgqbV9mcmFtZSwgcGxhbmVJbmRleCk7CiAgICAgICAgIH0K
QEAgLTM1Miw0MiArMzQ3LDMyIEBAIGJvb2wgQ0NWaWRlb0xheWVySW1wbDo6YWxsb2NhdGVQbGFu
ZURhdGEoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgQ0NWaWRlb0xheWVySW1wbDo6Y29weVBsYW5lRGF0YShDQ1JlbmRl
cmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK2Jvb2wgQ0NW
aWRlb0xheWVySW1wbDo6Y29weVBsYW5lRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIpCiB7CiAgICAgc2l6ZV90IHNvZnR3YXJlUGxhbmVDb3VudCA9IG1fZnJhbWUtPnBs
YW5lcygpOwogICAgIGlmICghc29mdHdhcmVQbGFuZUNvdW50KQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRl
eHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIExheWVyVGV4dHVyZVN1YkltYWdlIHVwbG9hZGVy
KHRydWUpOwogICAgIGZvciAoc2l6ZV90IHNvZnR3YXJlUGxhbmVJbmRleCA9IDA7IHNvZnR3YXJl
UGxhbmVJbmRleCA8IHNvZnR3YXJlUGxhbmVDb3VudDsgKytzb2Z0d2FyZVBsYW5lSW5kZXgpIHsK
ICAgICAgICAgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgcGxhbmUgPSBtX2ZyYW1lUGxh
bmVzW3NvZnR3YXJlUGxhbmVJbmRleF07CiAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHNvZnR3YXJl
UGxhbmVQaXhlbHMgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9mcmFtZS0+ZGF0YShz
b2Z0d2FyZVBsYW5lSW5kZXgpKTsKICAgICAgICAgSW50UmVjdCBwbGFuZVJlY3QoSW50UG9pbnQo
KSwgcGxhbmUuc2l6ZSk7Ci0KLSAgICAgICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcGxhbmUudGV4dHVyZUlkKTsKLSAgICAgICAgdXBsb2Fk
ZXIuc2V0U3ViSW1hZ2VTaXplKHBsYW5lLnNpemUpOwotICAgICAgICB1cGxvYWRlci51cGxvYWQo
c29mdHdhcmVQbGFuZVBpeGVscywgcGxhbmVSZWN0LCBwbGFuZVJlY3QsIHBsYW5lUmVjdCwgcGxh
bmUuZm9ybWF0LCBjb250ZXh0KTsKKyAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+dXBsb2FkKHBs
YW5lLnJlc291cmNlSWQsIHNvZnR3YXJlUGxhbmVQaXhlbHMsIHBsYW5lUmVjdCwgcGxhbmVSZWN0
LCBwbGFuZVJlY3QpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDQ1ZpZGVv
TGF5ZXJJbXBsOjpmcmVlUGxhbmVEYXRhKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9p
ZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpmcmVlUGxhbmVEYXRhKENDUmVzb3VyY2VQcm92aWRlciogcmVz
b3VyY2VQcm92aWRlcikKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV2ViS2l0OjpX
ZWJWaWRlb0ZyYW1lOjptYXhQbGFuZXM7ICsraSkKLSAgICAgICAgbV9mcmFtZVBsYW5lc1tpXS5m
cmVlRGF0YShjb250ZXh0KTsKKyAgICAgICAgbV9mcmFtZVBsYW5lc1tpXS5mcmVlRGF0YShyZXNv
dXJjZVByb3ZpZGVyKTsKIH0KIAotdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpmcmVlVW51c2VkUGxh
bmVEYXRhKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBs
OjpmcmVlVW51c2VkUGxhbmVEYXRhKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRl
cikKIHsKICAgICB1bnNpZ25lZCBmaXJzdFVudXNlZFBsYW5lID0gbV9mcmFtZSA/IG1fZnJhbWUt
PnBsYW5lcygpIDogMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBmaXJzdFVudXNlZFBsYW5lOyBp
IDwgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lOjptYXhQbGFuZXM7ICsraSkKLSAgICAgICAgbV9mcmFt
ZVBsYW5lc1tpXS5mcmVlRGF0YShjb250ZXh0KTsKKyAgICAgICAgbV9mcmFtZVBsYW5lc1tpXS5m
cmVlRGF0YShyZXNvdXJjZVByb3ZpZGVyKTsKIH0KIAogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpk
aWRSZWNlaXZlRnJhbWUoKQpAQCAtNDA3LDcgKzM5Miw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1w
bDo6ZGlkVXBkYXRlTWF0cml4KGNvbnN0IGZsb2F0IG1hdHJpeFsxNl0pCiAKIHZvaWQgQ0NWaWRl
b0xheWVySW1wbDo6ZGlkTG9zZUNvbnRleHQoKQogewotICAgIGZyZWVQbGFuZURhdGEobGF5ZXJU
cmVlSG9zdEltcGwoKS0+Y29udGV4dCgpKTsKKyAgICBmcmVlUGxhbmVEYXRhKGxheWVyVHJlZUhv
c3RJbXBsKCktPnJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKIHZvaWQgQ0NWaWRlb0xheWVySW1w
bDo6c2V0TmVlZHNSZWRyYXcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCmluZGV4IGNk
NWRiMDliY2QwNTZkOTAzYjVmNWM3YmQzMjM4MDNkODNmNTdjMjIuLjRjZjdjYWJiNzZkOTNjZWU4
OTJmNTQzZTI1YmM0OWU5ODE0ZWI0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgK
QEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1ZpZGVvTGF5
ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZW5kZXJlciosIENDR3Jh
cGhpY3NDb250ZXh0KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVz
b3VyY2VQcm92aWRlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhD
Q1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdU
aWxlcykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5k
ZW50KSBjb25zdCBPVkVSUklERTsKIApAQCAtNjgsMTUgKzY4LDE1IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldE5lZWRzUmVkcmF3KCk7CiAKICAgICBzdHJ1Y3QgRnJhbWVQbGFuZSB7Ci0gICAgICAg
IHVuc2lnbmVkIHRleHR1cmVJZDsKKyAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJj
ZUlkIHJlc291cmNlSWQ7CiAgICAgICAgIEludFNpemUgc2l6ZTsKICAgICAgICAgR0MzRGVudW0g
Zm9ybWF0OwogICAgICAgICBJbnRTaXplIHZpc2libGVTaXplOwogCi0gICAgICAgIEZyYW1lUGxh
bmUoKSA6IHRleHR1cmVJZCgwKSB7IH0KKyAgICAgICAgRnJhbWVQbGFuZSgpIDogcmVzb3VyY2VJ
ZCgwKSB7IH0KIAotICAgICAgICBib29sIGFsbG9jYXRlRGF0YShDQ0dyYXBoaWNzQ29udGV4dCop
OwotICAgICAgICB2b2lkIGZyZWVEYXRhKENDR3JhcGhpY3NDb250ZXh0Kik7CisgICAgICAgIGJv
b2wgYWxsb2NhdGVEYXRhKENDUmVzb3VyY2VQcm92aWRlciopOworICAgICAgICB2b2lkIGZyZWVE
YXRhKENDUmVzb3VyY2VQcm92aWRlciopOwogICAgIH07CiAKIHByaXZhdGU6CkBAIC04NSwxMSAr
ODUsMTEgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wdXRlVmlzaWJsZVNpemUo
Y29uc3QgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lJiwgdW5zaWduZWQgcGxhbmUpOwogICAgIHZpcnR1
YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biAiVmlkZW9MYXllciI7IH0KIAotICAgIHZvaWQgd2lsbERyYXdJbnRlcm5hbChDQ1JlbmRlcmVy
KiwgQ0NHcmFwaGljc0NvbnRleHQqKTsKLSAgICBib29sIGFsbG9jYXRlUGxhbmVEYXRhKENDUmVu
ZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopOwotICAgIGJvb2wgY29weVBsYW5lRGF0YShDQ1Jl
bmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKTsKLSAgICB2b2lkIGZyZWVQbGFuZURhdGEoQ0NH
cmFwaGljc0NvbnRleHQqKTsKLSAgICB2b2lkIGZyZWVVbnVzZWRQbGFuZURhdGEoQ0NHcmFwaGlj
c0NvbnRleHQqKTsKKyAgICB2b2lkIHdpbGxEcmF3SW50ZXJuYWwoQ0NSZXNvdXJjZVByb3ZpZGVy
Kik7CisgICAgYm9vbCBhbGxvY2F0ZVBsYW5lRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAg
ICBib29sIGNvcHlQbGFuZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CisgICAgdm9pZCBmcmVl
UGxhbmVEYXRhKENDUmVzb3VyY2VQcm92aWRlciopOworICAgIHZvaWQgZnJlZVVudXNlZFBsYW5l
RGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKIAogICAgIC8vIEd1YXJkcyB0aGUgZGVzdHJ1Y3Rp
b24gb2YgbV9wcm92aWRlciBhbmQgdGhlIGZyYW1lIHRoYXQgaXQgcHJvdmlkZXMKICAgICBNdXRl
eCBtX3Byb3ZpZGVyTXV0ZXg7CkBAIC05OSw2ICs5OSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJL
aXQ6OldlYlZpZGVvRnJhbWUqIG1fZnJhbWU7CiAgICAgR0MzRGVudW0gbV9mb3JtYXQ7CisgICAg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2U7
CiAKICAgICAvLyBFYWNoIGluZGV4IGluIHRoaXMgYXJyYXkgY29ycmVzcG9uZHMgdG8gYSBwbGFu
ZSBpbiBXZWJLaXQ6OldlYlZpZGVvRnJhbWUuCiAgICAgRnJhbWVQbGFuZSBtX2ZyYW1lUGxhbmVz
W1dlYktpdDo6V2ViVmlkZW9GcmFtZTo6bWF4UGxhbmVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXBpCmluZGV4IDQwYjIzYmU0OTdlMjdlNzc0NmI1NTlhMjUxYmE4ZGJmYmYzZWEyMTIuLjgz
MTI0MWRlNDM3NmI1MjY4YjNlNzM1ZWJiNDcxNWVjNDRjNjkxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaQpAQCAtNzgsNiArNzgsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0NDT2Nj
bHVzaW9uVHJhY2tlclRlc3RDb21tb24uaCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NRdWFkQ3Vs
bGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3Bw
JywKKyAgICAgICAgICAgICd0ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcCcsCiAgICAg
ICAgICAgICAndGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvQ0NTY2hlZHVsZXJUZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ3Rlc3Rz
L0NDU2NoZWR1bGVyVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBmODQyNzI3YzBmMTQy
OGQ2ZDJjYzJhNzI0ZTIzZjc4ZDFmMWQ3MTM4Li5jN2Y5Mjg4NzgzODJmMDMyNzY4ODRhMzg4ODYy
NDI4NjQ5ZDI5OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNjAwLDEyICs2MDAsMTIgQEAgY2xh
c3MgRGlkRHJhd0NoZWNrTGF5ZXIgOiBwdWJsaWMgQ0NUaWxlZExheWVySW1wbCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8RGlkRHJhd0NoZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQp
IHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBEaWREcmF3Q2hlY2tMYXllcihpZCkpOyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkRHJhdygpCisgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJj
ZVByb3ZpZGVyKikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1fZGlkRHJhd0NhbGxlZCA9IHRy
dWU7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVuZGVyZXIqLCBDQ0dy
YXBoaWNzQ29udGV4dCopCisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92
aWRlciopIE9WRVJSSURFCiAgICAgewogICAgICAgICBtX3dpbGxEcmF3Q2FsbGVkID0gdHJ1ZTsK
ICAgICB9CkBAIC03NTUsMTggKzc1NSwyMCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIGRpZERyYXdDYWxsZWRPbkFsbExheWVycykKIAogY2xhc3MgTWlzc2luZ1RleHR1cmVBbmlt
YXRpbmdMYXllciA6IHB1YmxpYyBEaWREcmF3Q2hlY2tMYXllciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcj4gY3JlYXRlKGludCBp
ZCwgYm9vbCB0aWxlTWlzc2luZywgYm9vbCBza2lwc0RyYXcsIGJvb2wgYW5pbWF0aW5nKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcihpZCwgdGlsZU1p
c3NpbmcsIHNraXBzRHJhdywgYW5pbWF0aW5nKSk7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxN
aXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyPiBjcmVhdGUoaW50IGlkLCBib29sIHRpbGVNaXNz
aW5nLCBib29sIHNraXBzRHJhdywgYm9vbCBhbmltYXRpbmcsIENDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IE1pc3NpbmdUZXh0dXJlQW5p
bWF0aW5nTGF5ZXIoaWQsIHRpbGVNaXNzaW5nLCBza2lwc0RyYXcsIGFuaW1hdGluZywgcmVzb3Vy
Y2VQcm92aWRlcikpOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTWlzc2luZ1RleHR1cmVB
bmltYXRpbmdMYXllcihpbnQgaWQsIGJvb2wgdGlsZU1pc3NpbmcsIGJvb2wgc2tpcHNEcmF3LCBi
b29sIGFuaW1hdGluZykKKyAgICBleHBsaWNpdCBNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVy
KGludCBpZCwgYm9vbCB0aWxlTWlzc2luZywgYm9vbCBza2lwc0RyYXcsIGJvb2wgYW5pbWF0aW5n
LCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiAgICAgICAgIDogRGlkRHJh
d0NoZWNrTGF5ZXIoaWQpCiAgICAgewogICAgICAgICBPd25QdHI8Q0NMYXllclRpbGluZ0RhdGE+
IHRpbGluZ0RhdGEgPSBDQ0xheWVyVGlsaW5nRGF0YTo6Y3JlYXRlKEludFNpemUoMTAsIDEwKSwg
Q0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKICAgICAgICAgdGlsaW5nRGF0YS0+
c2V0Qm91bmRzKGJvdW5kcygpKTsKICAgICAgICAgc2V0VGlsaW5nRGF0YSgqdGlsaW5nRGF0YS5n
ZXQoKSk7CiAgICAgICAgIHNldFNraXBzRHJhdyhza2lwc0RyYXcpOwotICAgICAgICBpZiAoIXRp
bGVNaXNzaW5nKQotICAgICAgICAgICAgcHVzaFRpbGVQcm9wZXJ0aWVzKDAsIDAsIDEsIEludFJl
Y3QoKSk7CisgICAgICAgIGlmICghdGlsZU1pc3NpbmcpIHsKKyAgICAgICAgICAgIENDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZSA9IHJlc291cmNlUHJvdmlkZXItPmNyZWF0
ZVJlc291cmNlKENDUmVuZGVyZXI6OkNvbnRlbnRQb29sLCBJbnRTaXplKCksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7CisgICAg
ICAgICAgICBwdXNoVGlsZVByb3BlcnRpZXMoMCwgMCwgcmVzb3VyY2UsIEludFJlY3QoKSk7Cisg
ICAgICAgIH0KICAgICAgICAgaWYgKGFuaW1hdGluZykKICAgICAgICAgICAgIGFkZEFuaW1hdGVk
VHJhbnNmb3JtVG9MYXllcigqdGhpcywgMTAsIDMsIDApOwogICAgIH0KQEAgLTc3Nyw3ICs3Nzks
NyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHByZXBhcmVUb0RyYXdGYWlsc1do
ZW5BbmltYXRpb25Vc2VzQ2hlY2tlcmJvYXJkKQogICAgIC8vIFdoZW4gdGhlIHRleHR1cmUgaXMg
bm90IG1pc3NpbmcsIHdlIGRyYXcgYXMgdXN1YWwuCiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExh
eWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMSkpOwogICAgIERpZERyYXdDaGVja0xheWVy
KiByb290ID0gc3RhdGljX2Nhc3Q8RGlkRHJhd0NoZWNrTGF5ZXIqPihtX2hvc3RJbXBsLT5yb290
TGF5ZXIoKSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXll
cjo6Y3JlYXRlKDIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkpOworICAgIHJvb3QtPmFkZENoaWxkKE1p
c3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgyLCBmYWxzZSwgZmFsc2UsIHRydWUs
IG1faG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSkpOwogCiAgICAgQ0NMYXllclRyZWVIb3N0
SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwogCkBAIC03ODgsNyArNzkwLDcgQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNlc0No
ZWNrZXJib2FyZCkKICAgICAvLyBXaGVuIGEgdGV4dHVyZSBpcyBtaXNzaW5nIGFuZCB3ZSdyZSBu
b3QgYW5pbWF0aW5nLCB3ZSBkcmF3IGFzIHVzdWFsIHdpdGggY2hlY2tlcmJvYXJkaW5nLgogICAg
IG1faG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsK
ICAgICByb290ID0gc3RhdGljX2Nhc3Q8RGlkRHJhd0NoZWNrTGF5ZXIqPihtX2hvc3RJbXBsLT5y
b290TGF5ZXIoKSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdM
YXllcjo6Y3JlYXRlKDIsIHRydWUsIGZhbHNlLCBmYWxzZSkpOworICAgIHJvb3QtPmFkZENoaWxk
KE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgyLCB0cnVlLCBmYWxzZSwgZmFs
c2UsIG1faG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSkpOwogCiAgICAgRVhQRUNUX1RSVUUo
bV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwogICAgIG1faG9zdEltcGwtPmRyYXdM
YXllcnMoZnJhbWUpOwpAQCAtNzk3LDcgKzc5OSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgcHJlcGFyZVRvRHJhd0ZhaWxzV2hlbkFuaW1hdGlvblVzZXNDaGVja2VyYm9hcmQp
CiAgICAgLy8gV2hlbiBhIHRleHR1cmUgaXMgbWlzc2luZyBhbmQgd2UncmUgYW5pbWF0aW5nLCB3
ZSBkb24ndCB3YW50IHRvIGRyYXcgYW55dGhpbmcuCiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExh
eWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUoMSkpOwogICAgIHJvb3QgPSBzdGF0aWNfY2Fz
dDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsKLSAgICByb290
LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMiwgdHJ1ZSwg
ZmFsc2UsIHRydWUpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGlu
Z0xheWVyOjpjcmVhdGUoMiwgdHJ1ZSwgZmFsc2UsIHRydWUsIG1faG9zdEltcGwtPnJlc291cmNl
UHJvdmlkZXIoKSkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKG1faG9zdEltcGwtPnByZXBhcmVUb0Ry
YXcoZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKQEAgLTgwNiw3
ICs4MDgsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHByZXBhcmVUb0RyYXdG
YWlsc1doZW5BbmltYXRpb25Vc2VzQ2hlY2tlcmJvYXJkKQogICAgIC8vIFdoZW4gdGhlIGxheWVy
IHNraXBzIGRyYXcgYW5kIHdlJ3JlIGFuaW1hdGluZywgd2Ugc3RpbGwgZHJhdyB0aGUgZnJhbWUu
CiAgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKERpZERyYXdDaGVja0xheWVyOjpjcmVhdGUo
MSkpOwogICAgIHJvb3QgPSBzdGF0aWNfY2FzdDxEaWREcmF3Q2hlY2tMYXllcio+KG1faG9zdElt
cGwtPnJvb3RMYXllcigpKTsKLSAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1h
dGluZ0xheWVyOjpjcmVhdGUoMiwgZmFsc2UsIHRydWUsIHRydWUpKTsKKyAgICByb290LT5hZGRD
aGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpjcmVhdGUoMiwgZmFsc2UsIHRydWUs
IHRydWUsIG1faG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSkpOwogCiAgICAgRVhQRUNUX1RS
VUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwogICAgIG1faG9zdEltcGwtPmRy
YXdMYXllcnMoZnJhbWUpOwpAQCAtMTE3MSw3ICsxMTczLDcgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
QmxlbmRTdGF0ZUNoZWNrTGF5ZXIgOiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkKSB7
IHJldHVybiBhZG9wdFB0cihuZXcgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaWQpKTsgfQorICAgIHN0
YXRpYyBQYXNzT3duUHRyPEJsZW5kU3RhdGVDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkLCBDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBC
bGVuZFN0YXRlQ2hlY2tMYXllcihpZCwgcmVzb3VyY2VQcm92aWRlcikpOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpIE9WRVJSSURFCiAgICAgewpAQCAt
MTE4Miw3ICsxMTg0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgb3BhcXVlUmVjdCA9IG1fcXVh
ZFJlY3Q7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9wYXF1ZVJlY3QgPSBtX29wYXF1ZUNv
bnRlbnRSZWN0OwotICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gdGVzdEJsZW5kaW5nRHJhd1F1
YWQgPSBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgbV9xdWFkUmVjdCwg
b3BhcXVlUmVjdCwgMCwgSW50UG9pbnQoKSwgSW50U2l6ZSgxLCAxKSwgMCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IHRlc3RC
bGVuZGluZ0RyYXdRdWFkID0gQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUs
IG1fcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIG1fcmVzb3VyY2VJZCwgSW50UG9pbnQoKSwgSW50U2l6
ZSgxLCAxKSwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAg
dGVzdEJsZW5kaW5nRHJhd1F1YWQtPnNldFF1YWRWaXNpYmxlUmVjdChtX3F1YWRWaXNpYmxlUmVj
dCk7CiAgICAgICAgIEVYUEVDVF9FUShtX2JsZW5kLCB0ZXN0QmxlbmRpbmdEcmF3UXVhZC0+bmVl
ZHNCbGVuZGluZygpKTsKICAgICAgICAgRVhQRUNUX0VRKG1faGFzUmVuZGVyU3VyZmFjZSwgISFy
ZW5kZXJTdXJmYWNlKCkpOwpAQCAtMTIwNCw3ICsxMjA2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0T3BhcXVlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX29wYXF1ZUNvbnRl
bnRSZWN0ID0gcmVjdDsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEJsZW5kU3RhdGVDaGVj
a0xheWVyKGludCBpZCkKKyAgICBleHBsaWNpdCBCbGVuZFN0YXRlQ2hlY2tMYXllcihpbnQgaWQs
IENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKICAgICAgICAgOiBDQ0xheWVy
SW1wbChpZCkKICAgICAgICAgLCBtX2JsZW5kKGZhbHNlKQogICAgICAgICAsIG1faGFzUmVuZGVy
U3VyZmFjZShmYWxzZSkKQEAgLTEyMTIsNiArMTIxNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICwg
bV9vcGFxdWVDb250ZW50cyhmYWxzZSkKICAgICAgICAgLCBtX3F1YWRSZWN0KDUsIDUsIDUsIDUp
CiAgICAgICAgICwgbV9xdWFkVmlzaWJsZVJlY3QoNSwgNSwgNSwgNSkKKyAgICAgICAgLCBtX3Jl
c291cmNlSWQocmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UoQ0NSZW5kZXJlcjo6Q29u
dGVudFBvb2wsIEludFNpemUoMSwgMSksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBDQ1Jlc291
cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSkpCiAgICAgewogICAgICAgICBzZXRBbmNob3JQ
b2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICAgICAgc2V0Qm91bmRzKEludFNpemUoMTAsIDEw
KSk7CkBAIC0xMjI2LDYgKzEyMjksNyBAQCBwcml2YXRlOgogICAgIEludFJlY3QgbV9xdWFkUmVj
dDsKICAgICBJbnRSZWN0IG1fb3BhcXVlQ29udGVudFJlY3Q7CiAgICAgSW50UmVjdCBtX3F1YWRW
aXNpYmxlUmVjdDsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9yZXNvdXJj
ZUlkOwogfTsKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldo
ZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQpAQCAtMTI0MCw3ICsxMjQ0LDcgQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQog
ICAgIH0KICAgICBDQ0xheWVySW1wbCogcm9vdCA9IG1faG9zdEltcGwtPnJvb3RMYXllcigpOwog
Ci0gICAgcm9vdC0+YWRkQ2hpbGQoQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgyKSk7Cisg
ICAgcm9vdC0+YWRkQ2hpbGQoQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgyLCBtX2hvc3RJ
bXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpKTsKICAgICBCbGVuZFN0YXRlQ2hlY2tMYXllciogbGF5
ZXIxID0gc3RhdGljX2Nhc3Q8QmxlbmRTdGF0ZUNoZWNrTGF5ZXIqPihyb290LT5jaGlsZHJlbigp
WzBdLmdldCgpKTsKICAgICBsYXllcjEtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMiwgMikpOwog
CkBAIC0xMjkzLDcgKzEyOTcsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJs
ZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgRVhQRUNUX1RSVUUobGF5ZXIx
LT5xdWFkc0FwcGVuZGVkKCkpOwogICAgIG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJh
bWUpOwogCi0gICAgbGF5ZXIxLT5hZGRDaGlsZChCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRl
KDMpKTsKKyAgICBsYXllcjEtPmFkZENoaWxkKEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUo
MywgbV9ob3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKSk7CiAgICAgQmxlbmRTdGF0ZUNoZWNr
TGF5ZXIqIGxheWVyMiA9IHN0YXRpY19jYXN0PEJsZW5kU3RhdGVDaGVja0xheWVyKj4obGF5ZXIx
LT5jaGlsZHJlbigpWzBdLmdldCgpKTsKICAgICBsYXllcjItPnNldFBvc2l0aW9uKEZsb2F0UG9p
bnQoNCwgNCkpOwogCkBAIC0xNDU0LDcgKzE0NTgsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIHZpZXdwb3J0Q292ZXJlZCkKICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSgxMDAw
LCAxMDAwKTsKICAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsK
IAotICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3Jl
YXRlKDEpKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoQmxlbmRTdGF0ZUNoZWNrTGF5
ZXI6OmNyZWF0ZSgxLCBtX2hvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpKTsKICAgICBCbGVu
ZFN0YXRlQ2hlY2tMYXllciogcm9vdCA9IHN0YXRpY19jYXN0PEJsZW5kU3RhdGVDaGVja0xheWVy
Kj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwogICAgIHJvb3QtPnNldEV4cGVjdGF0aW9uKGZh
bHNlLCB0cnVlKTsKICAgICByb290LT5zZXRPcGFxdWUodHJ1ZSk7CkBAIC0yOTcyLDkgKzI5NzYs
OSBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIENDVGVzdFJlbmRlcmVyIDogcHVibGljIExheWVyUmVu
ZGVyZXJDaHJvbWl1bSwgcHVibGljIENDUmVuZGVyZXJDbGllbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDVGVzdFJlbmRlcmVyPiBjcmVhdGUoV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Rlc3RSZW5kZXJl
cj4gY3JlYXRlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKICAgICB7Ci0g
ICAgICAgIE93blB0cjxDQ1Rlc3RSZW5kZXJlcj4gcmVuZGVyZXIoYWRvcHRQdHIobmV3IENDVGVz
dFJlbmRlcmVyKGNvbnRleHQpKSk7CisgICAgICAgIE93blB0cjxDQ1Rlc3RSZW5kZXJlcj4gcmVu
ZGVyZXIoYWRvcHRQdHIobmV3IENDVGVzdFJlbmRlcmVyKHJlc291cmNlUHJvdmlkZXIpKSk7CiAg
ICAgICAgIGlmICghcmVuZGVyZXItPmluaXRpYWxpemUoKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkBAIC0yOTk2LDcgKzMwMDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNpemVfdCkgT1ZFUlJJREUgeyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBDQ1Rlc3RSZW5kZXJlcihXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0KSA6IExheWVyUmVuZGVyZXJDaHJvbWl1bSh0aGlzLCBjb250ZXh0LCBVbnRocm90
dGxlZFVwbG9hZGVyKSB7IH0KKyAgICBDQ1Rlc3RSZW5kZXJlcihDQ1Jlc291cmNlUHJvdmlkZXIq
IHJlc291cmNlUHJvdmlkZXIpIDogTGF5ZXJSZW5kZXJlckNocm9taXVtKHRoaXMsIHJlc291cmNl
UHJvdmlkZXIsIFVudGhyb3R0bGVkVXBsb2FkZXIpIHsgfQogCiBwcml2YXRlOgogICAgIENDTGF5
ZXJUcmVlU2V0dGluZ3MgbV9zZXR0aW5nczsKQEAgLTMyNzksOSArMzI4MywxMCBAQCBzdGF0aWMg
dm9pZCB2ZXJpZnlSZW5kZXJQYXNzVGVzdERhdGEoVGVzdENhc2UmIHRlc3RDYXNlLCBSZW5kZXJQ
YXNzUmVtb3ZhbFRlc3REYQogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXN0UmVt
b3ZlUmVuZGVyUGFzc2VzKQogewogICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4
dChjcmVhdGVDb250ZXh0KCkpOwotICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIEFTU0VSVF9UUlVFKGNvbnRleHQz
ZCk7Ci0gICAgT3duUHRyPENDVGVzdFJlbmRlcmVyPiByZW5kZXJlcihDQ1Rlc3RSZW5kZXJlcjo6
Y3JlYXRlKGNvbnRleHQzZCkpOworICAgIEFTU0VSVF9UUlVFKGNvbnRleHQtPmNvbnRleHQzRCgp
KTsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKENDUmVz
b3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKKworICAgIE93blB0cjxDQ1Rl
c3RSZW5kZXJlcj4gcmVuZGVyZXIoQ0NUZXN0UmVuZGVyZXI6OmNyZWF0ZShyZXNvdXJjZVByb3Zp
ZGVyLmdldCgpKSk7CiAKICAgICBpbnQgdGVzdENhc2VJbmRleCA9IDA7CiAgICAgd2hpbGUgKHJl
bW92ZVJlbmRlclBhc3Nlc0Nhc2VzW3Rlc3RDYXNlSW5kZXhdLm5hbWUpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0
LmNwcAppbmRleCAyMWUwYTcxN2MzNmM3OWUyYTJjMDMyMzkyZWZhOGExMGUxMmRhYTA0Li45NzAy
NzA5NWVkZThlYjg3ZjdlZTJjNzM0NDk4NjA0YWI0YjE1ZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3Bw
CkBAIC0yNyw3ICsyNyw5IEBACiAjaW5jbHVkZSAiY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaCIK
IAogI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKKyNpbmNsdWRlICJGYWtlQ0NH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiIC8vIEZvciBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQKICNpbmNsdWRlICJjYy9DQ1RleHR1cmUuaCIKICNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgogCkBAIC00MiwxMSArNDQsMTYgQEAgcHVibGljOgogICAgIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlVGVzdCgpCiAgICAgICAgIDogbV90ZXh0dXJlU2l6ZSgyNTYsIDI1NikKICAg
ICAgICAgLCBtX3RleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpCisgICAgICAg
ICwgbV9jb250ZXh0KFdlYktpdDo6Y3JlYXRlRmFrZUNDR3JhcGhpY3NDb250ZXh0KCkpCiAgICAg
eworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAgICAg
bV9yZXNvdXJjZVByb3ZpZGVyID0gQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0
LmdldCgpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Qo
KQogICAgIHsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Cisg
ICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci5jbGVhcigpOwogICAgIH0KIAogICAgIHNpemVfdCB0
ZXh0dXJlc01lbW9yeVNpemUoc2l6ZV90IHRleHR1cmVDb3VudCkKQEAgLTU2LDExICs2MywxMiBA
QCBwdWJsaWM6CiAKICAgICBQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
Y3JlYXRlTWFuYWdlcihzaXplX3QgbWF4VGV4dHVyZXMpCiAgICAgewotICAgICAgICByZXR1cm4g
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUodGV4dHVyZXNNZW1vcnlTaXplKG1h
eFRleHR1cmVzKSwgMTAyNCk7CisgICAgICAgIHJldHVybiBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OmNyZWF0ZSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCAxMDI0LCAwKTsK
ICAgICB9CiAKICAgICBib29sIHZhbGlkYXRlVGV4dHVyZShPd25QdHI8Q0NQcmlvcml0aXplZFRl
eHR1cmU+JiB0ZXh0dXJlLCBib29sIHJlcXVlc3RMYXRlKQogICAgIHsKKyAgICAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
ICAgICB0ZXh0dXJlLT50ZXh0dXJlTWFuYWdlcigpLT5hc3NlcnRJbnZhcmlhbnRzKCk7CiAjZW5k
aWYKQEAgLTY4LDE5ICs3NiwyMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICB0ZXh0dXJlLT5yZXF1
ZXN0TGF0ZSgpOwogICAgICAgICBib29sIHN1Y2Nlc3MgPSB0ZXh0dXJlLT5jYW5BY3F1aXJlQmFj
a2luZ1RleHR1cmUoKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgICAgICB0ZXh0dXJl
LT5hY3F1aXJlQmFja2luZ1RleHR1cmUoYWxsb2NhdG9yKCkpOworICAgICAgICAgICAgdGV4dHVy
ZS0+YWNxdWlyZUJhY2tpbmdUZXh0dXJlKHJlc291cmNlUHJvdmlkZXIoKSk7CiAgICAgICAgIHJl
dHVybiBzdWNjZXNzOwogICAgIH0KIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IoKQorICAgIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcigpCiAgICAgewot
ICAgICAgIHJldHVybiAmbV9mYWtlVGV4dHVyZUFsbG9jYXRvcjsKKyAgICAgICByZXR1cm4gbV9y
ZXNvdXJjZVByb3ZpZGVyLmdldCgpOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIEZha2VUZXh0
dXJlQWxsb2NhdG9yIG1fZmFrZVRleHR1cmVBbGxvY2F0b3I7CiAgICAgY29uc3QgSW50U2l6ZSBt
X3RleHR1cmVTaXplOwogICAgIGNvbnN0IEdDM0RlbnVtIG1fdGV4dHVyZUZvcm1hdDsKKyAgICBP
d25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBPd25QdHI8Q0NSZXNvdXJj
ZVByb3ZpZGVyPiBtX3Jlc291cmNlUHJvdmlkZXI7CiB9OwogCiBURVNUX0YoQ0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0LCByZXF1ZXN0VGV4dHVyZUV4Y2VlZGluZ01heExpbWl0KQpAQCAtMTE5LDcg
KzEyOCw4IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHJlcXVlc3RUZXh0dXJl
RXhjZWVkaW5nTWF4TGltaXQpCiAgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhU
ZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogICAg
IEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFn
ZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+Y2xl
YXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOworICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVBy
b3ZpZGVyKCkpOwogfQogCiBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBjaGFuZ2VN
ZW1vcnlMaW1pdHMpCkBAIC0xMzgsNyArMTQ4LDEwIEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4
dHVyZVRlc3QsIGNoYW5nZU1lbW9yeUxpbWl0cykKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsg
KytpKQogICAgICAgICB2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZhbHNlKTsKLSAgICB0
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICB7CisgICAgICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgICAgICB0ZXh0dXJlTWFu
YWdlci0+cmVkdWNlTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CisgICAgfQogCiAgICAgRVhQ
RUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg4KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3Zl
Q3V0b2ZmQnl0ZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VC
eXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKQEAgLTE0
OCw3ICsxNjEsMTAgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVt
b3J5TGltaXRzKQogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpCiAgICAgICAgIEVYUEVD
VF9FUSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZhbHNlKSwgaSA8IDUpOwotICAgIHRl
eHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIHsKKyAgICAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIHRleHR1cmVNYW5h
Z2VyLT5yZWR1Y2VNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKKyAgICB9CiAKICAgICBFWFBF
Q1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDUpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVD
dXRvZmZCeXRlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5
dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwpAQCAtMTU4
LDEyICsxNzQsMTYgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVt
b3J5TGltaXRzKQogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpCiAgICAgICAgIEVYUEVD
VF9FUSh2YWxpZGF0ZVRleHR1cmUodGV4dHVyZXNbaV0sIGZhbHNlKSwgaSA8IDQpOwotICAgIHRl
eHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIHsKKyAgICAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIHRleHR1cmVNYW5h
Z2VyLT5yZWR1Y2VNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKKyAgICB9CiAKICAgICBFWFBF
Q1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVD
dXRvZmZCeXRlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5
dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAg
dGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJB
bGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKIH0KIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRU
ZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJQYXJ0aWFsVXBkYXRlVGV4dHVyZXMpCkBAIC0yMjIs
NyArMjQyLDggQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFn
ZXJQYXJ0aWFsVXBkYXRlVGV4dHVyZXMpCiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVzWzJdLT5o
YXZlQmFja2luZ1RleHR1cmUoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVzWzNdLT5oYXZl
QmFja2luZ1RleHR1cmUoKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnko
YWxsb2NhdG9yKCkpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwor
ICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwog
fQogCiBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlclByaW9y
aXRpZXNBcmVFcXVhbCkKQEAgLTI2MSw3ICsyODIsOCBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRl
eHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlclByaW9yaXRpZXNBcmVFcXVhbCkKICAgICBFWFBFQ1Rf
RVEodGV4dHVyZXNNZW1vcnlTaXplKDgpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRv
ZmZCeXRlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVz
KCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAgdGV4
dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxN
ZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKIH0KIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0
dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJEZXN0cm95ZWRGaXJzdCkKQEAgLTI3OSw3ICszMDEsMTAg
QEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJEZXN0cm95
ZWRGaXJzdCkKICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlLT5jYW5BY3F1aXJlQmFja2luZ1RleHR1
cmUoKSk7CiAgICAgRVhQRUNUX1RSVUUodGV4dHVyZS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpOwog
Ci0gICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICB7
CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgICAgICB0
ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKKyAgICB9
CiAgICAgdGV4dHVyZU1hbmFnZXIuY2xlYXIoKTsKIAogICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJl
LT5jYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSk7CkBAIC0zMDQsNyArMzI5LDEwIEBAIFRFU1Rf
RihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNb3ZlZFRvTmV3TWFuYWdlcikKIAog
ICAgIHRleHR1cmUtPnNldFRleHR1cmVNYW5hZ2VyKDApOwogCi0gICAgdGV4dHVyZU1hbmFnZXJP
bmUtPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICB7CisgICAgICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgICAgICB0ZXh0dXJlTWFuYWdlck9uZS0+
Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKKyAgICB9CiAgICAgdGV4dHVyZU1h
bmFnZXJPbmUuY2xlYXIoKTsKIAogICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlLT5jYW5BY3F1aXJl
QmFja2luZ1RleHR1cmUoKSk7CkBAIC0zMTgsNyArMzQ2LDggQEAgVEVTVF9GKENDUHJpb3JpdGl6
ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1vdmVkVG9OZXdNYW5hZ2VyKQogICAgIEVYUEVDVF9UUlVF
KHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0
ZXh0dXJlLT5oYXZlQmFja2luZ1RleHR1cmUoKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlclR3by0+
Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsVGhyZWFkOworICAgIHRleHR1cmVNYW5hZ2VyVHdvLT5jbGVhckFsbE1lbW9yeShyZXNv
dXJjZVByb3ZpZGVyKCkpOwogfQogCiBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBy
ZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZU91dHNpZGVSb290U3VyZmFjZSkKQEAg
LTM2Myw3ICszOTIsOCBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZW5kZXJT
dXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZU91dHNpZGVSb290UwogICAgIEVYUEVDVF9FUSh0
ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JTZWxmTWFuYWdl
ZFRleHR1cmVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0
ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKLSAgICB0
ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFs
bE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwogfQogCiBURVNUX0YoQ0NQcmlvcml0aXplZFRl
eHR1cmVUZXN0LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZUZvclJlcXVlc3RM
YXRlKQpAQCAtMzk5LDcgKzQyOSw4IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Qs
IHJlbmRlclN1cmZhY2VzUmVkdWNlTWVtb3J5QXZhaWxhYmxlRm9yUmVxdWVzdExhCiAgICAgRVhQ
RUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUZvclNl
bGZNYW5hZ2VkVGV4dHVyZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVNYW5hZ2VyLT5tZW1v
cnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsK
IAotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IoKSk7CisgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgdGV4dHVyZU1hbmFnZXIt
PmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKIFRFU1RfRihDQ1ByaW9y
aXRpemVkVGV4dHVyZVRlc3QsIHdoZW5SZW5kZXJTdXJmYWNlTm90QXZhaWxhYmxlVGV4dHVyZXNB
bHNvTm90QXZhaWxhYmxlKQpAQCAtNDM4LDcgKzQ2OSw4IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVk
VGV4dHVyZVRlc3QsIHdoZW5SZW5kZXJTdXJmYWNlTm90QXZhaWxhYmxlVGV4dHVyZXNBbHNvTm90
QXZhCiAgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSgyKSwgdGV4dHVyZU1hbmFnZXIt
Pm1lbW9yeUZvclNlbGZNYW5hZ2VkVGV4dHVyZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRleHR1cmVN
YW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRv
ZmZCeXRlcygpKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0
b3IoKSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgdGV4
dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
UXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcAppbmRleCBhMjY4MDQwMjUyZGY0M2U0N2Q2OWU1NmZmMjBhNDliMzg2YTI1
OGFlLi5kZTVmYWVjM2JjZDM0MTJlZThkNjVlNTg0ODk5YzQ1YjUwZGZjZmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTc1
LDExICs3NSwxMSBAQCBzdGF0aWMgUGFzc093blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBtYWtlTGF5
ZXIoQ0NUaWxlZExheWVySW1wbCogcGFyZW50LCBjb25zdCBXZQogICAgIGxheWVyLT5zZXRCb3Vu
ZHMobGF5ZXJSZWN0LnNpemUoKSk7CiAgICAgbGF5ZXItPnNldENvbnRlbnRCb3VuZHMobGF5ZXJS
ZWN0LnNpemUoKSk7CiAKLSAgICBpbnQgdGV4dHVyZUlkID0gMTsKKyAgICBDQ1Jlc291cmNlUHJv
dmlkZXI6OlJlc291cmNlSWQgcmVzb3VyY2VJZCA9IDE7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCB0aWxlci0+bnVtVGlsZXNYKCk7ICsraSkKICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB0
aWxlci0+bnVtVGlsZXNZKCk7ICsraikgewogICAgICAgICAgICAgSW50UmVjdCB0aWxlT3BhcXVl
UmVjdCA9IG9wYXF1ZSA/IHRpbGVyLT50aWxlQm91bmRzKGksIGopIDogaW50ZXJzZWN0aW9uKHRp
bGVyLT50aWxlQm91bmRzKGksIGopLCBsYXllck9wYXF1ZVJlY3QpOwotICAgICAgICAgICAgbGF5
ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2JqZWN0
Pih0ZXh0dXJlSWQrKyksIHRpbGVPcGFxdWVSZWN0KTsKKyAgICAgICAgICAgIGxheWVyLT5wdXNo
VGlsZVByb3BlcnRpZXMoaSwgaiwgcmVzb3VyY2VJZCsrLCB0aWxlT3BhcXVlUmVjdCk7CiAgICAg
ICAgIH0KIAogICAgIGlmICghcGFyZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUmVzb3VyY2VQcm92aWRlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzE2
NWU2Y2E3ZmMyNTQyMTJmOWRkMmI3MTVkNGI0YjMzNzQyYzk4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlkZXJUZXN0LmNwcApA
QCAtMCwwICsxLDMwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJDb21wb3NpdG9y
RmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21p
dW0uaCIKKyNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgImNjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCIgLy8gRm9yIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZAorI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4
dDNELmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgUmVzb3Vy
Y2VQcm92aWRlckNvbnRleHQgOiBwdWJsaWMgQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8UmVzb3VyY2VQcm92aWRlckNv
bnRleHQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZXNvdXJjZVByb3ZpZGVyQ29u
dGV4dChBdHRyaWJ1dGVzKCkpKTsgfQorCisgICAgdmlydHVhbCB2b2lkIGJpbmRUZXh0dXJlKFdH
QzNEZW51bSB0YXJnZXQsIFdlYkdMSWQgdGV4dHVyZSkKKyAgICB7CisgICAgICBBU1NFUlQodGFy
Z2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKTsKKyAgICAgIEFTU0VSVCghdGV4
dHVyZSB8fCBtX3RleHR1cmVzLmZpbmQodGV4dHVyZSkgIT0gbV90ZXh0dXJlcy5lbmQoKSk7Cisg
ICAgICBtX2N1cnJlbnRUZXh0dXJlID0gdGV4dHVyZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFdl
YkdMSWQgY3JlYXRlVGV4dHVyZSgpCisgICAgeworICAgICAgICBXZWJHTElkIGlkID0gQ29tcG9z
aXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpOworICAgICAgICBt
X3RleHR1cmVzLmFkZChpZCwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiBpZDsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZShXZWJHTElkIGlkKQorICAgIHsKKyAgICAg
ICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQoaWQpOworICAgICAg
ICBBU1NFUlQoaXQgIT0gbV90ZXh0dXJlcy5lbmQoKSk7CisgICAgICAgIG1fdGV4dHVyZXMucmVt
b3ZlKGl0KTsKKyAgICAgICAgaWYgKG1fY3VycmVudFRleHR1cmUgPT0gaWQpCisgICAgICAgICAg
ICBtX2N1cnJlbnRUZXh0dXJlID0gMDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3Rv
cmFnZTJERVhUKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVscywgV0dDM0R1aW50IGlu
dGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0dDM0RpbnQg
d2lkdGgsIFdHQzNEaW50IGhlaWdodCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRU
ZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCk7CisgICAgICAgIEFTU0VSVChsZXZlbHMgPT0gMSk7CisgICAgICAgIFdHQzNEZW51
bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKKyAgICAgICAgc3dpdGNoIChpbnRl
cm5hbGZvcm1hdCkgeworICAgICAgICBjYXNlIEV4dGVuc2lvbnMzRDo6UkdCQThfT0VTOgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXh0ZW5zaW9uczNEQ2hyb21pdW06OkJHUkE4
X0VYVDoKKyAgICAgICAgICAgIGZvcm1hdCA9IEV4dGVuc2lvbnMzRDo6QkdSQV9FWFQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGFsbG9jYXRlVGV4dHVyZShJbnRTaXplKHdp
ZHRoLCBoZWlnaHQpLCBmb3JtYXQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFn
ZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3Jk
ZXIsIFdHQzNEZW51bSBmb3JtYXQsIFdHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMp
CisgICAgeworICAgICAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZSk7CisgICAgICAgIEFTU0VS
VCh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpOworICAgICAgICBBU1NF
UlQoIWxldmVsKTsKKyAgICAgICAgQVNTRVJUKGludGVybmFsZm9ybWF0ID09IGZvcm1hdCk7Cisg
ICAgICAgIEFTU0VSVCghYm9yZGVyKTsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUpOworICAgICAgICBhbGxvY2F0ZVRleHR1cmUoSW50U2l6
ZSh3aWR0aCwgaGVpZ2h0KSwgZm9ybWF0KTsKKyAgICAgICAgaWYgKHBpeGVscykKKyAgICAgICAg
ICAgIHNldFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBwaXhlbHMpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxl
dmVsLCBXR0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRo
LCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RlbnVtIHR5cGUsIGNv
bnN0IHZvaWQqIHBpeGVscykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJl
KTsKKyAgICAgICAgQVNTRVJUKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCk7CisgICAgICAgIEFTU0VSVCghbGV2ZWwpOworICAgICAgICBBU1NFUlQobV90ZXh0dXJlcy5n
ZXQobV9jdXJyZW50VGV4dHVyZSkpOworICAgICAgICBBU1NFUlQobV90ZXh0dXJlcy5nZXQobV9j
dXJyZW50VGV4dHVyZSktPmZvcm1hdCA9PSBmb3JtYXQpOworICAgICAgICBBU1NFUlQodHlwZSA9
PSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSk7CisgICAgICAgIEFTU0VSVChwaXhl
bHMpOworICAgICAgICBzZXRQaXhlbHMoeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
cGl4ZWxzKTsKKyAgICB9CisKKyAgICB2b2lkIGdldFBpeGVscyhjb25zdCBJbnRTaXplJiBzaXpl
LCBXR0MzRGVudW0gZm9ybWF0LCB1aW50OF90KiBwaXhlbHMpCisgICAgeworICAgICAgICBBU1NF
UlQobV9jdXJyZW50VGV4dHVyZSk7CisgICAgICAgIFRleHR1cmUqIHRleHR1cmUgPSBtX3RleHR1
cmVzLmdldChtX2N1cnJlbnRUZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUKHRleHR1cmUpOworICAg
ICAgICBBU1NFUlQodGV4dHVyZS0+c2l6ZSA9PSBzaXplKTsKKyAgICAgICAgQVNTRVJUKHRleHR1
cmUtPmZvcm1hdCA9PSBmb3JtYXQpOworICAgICAgICBtZW1jcHkocGl4ZWxzLCB0ZXh0dXJlLT5k
YXRhLmdldCgpLCB0ZXh0dXJlU2l6ZShzaXplLCBmb3JtYXQpKTsKKyAgICB9CisKKyAgICBpbnQg
dGV4dHVyZUNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3RleHR1cmVzLnNpemUoKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IHRleHR1cmVTaXplKGNvbnN0IEludFNpemUmIHNp
emUsIFdHQzNEZW51bSBmb3JtYXQpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgY29tcG9u
ZW50c1BlclBpeGVsID0gNDsKKyAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVzUGVyQ29tcG9uZW50
ID0gMTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFy
YW1ldGVycyhmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAmY29tcG9u
ZW50c1BlclBpeGVsLCAmYnl0ZXNQZXJDb21wb25lbnQpOworICAgICAgICByZXR1cm4gc2l6ZS53
aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIGNvbXBvbmVudHNQZXJQaXhlbCAqIGJ5dGVzUGVyQ29t
cG9uZW50OworICAgIH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFJlc291cmNlUHJvdmlk
ZXJDb250ZXh0KGNvbnN0IEF0dHJpYnV0ZXMmIGF0dHJzKQorICAgICAgICA6IENvbXBvc2l0b3JG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0QoYXR0cnMpCisgICAgICAgICwgbV9jdXJyZW50VGV4dHVy
ZSgwKQorICAgIHsgfQorCitwcml2YXRlOgorICAgIHN0cnVjdCBUZXh0dXJlIHsKKyAgICAgICAg
VGV4dHVyZShjb25zdCBJbnRTaXplJiBzaXplXywgV0dDM0RlbnVtIGZvcm1hdF8pCisgICAgICAg
ICAgICA6IHNpemUoc2l6ZV8pCisgICAgICAgICAgICAsIGZvcm1hdChmb3JtYXRfKQorICAgICAg
ICAgICAgLCBkYXRhKGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbdGV4dHVyZVNpemUoc2l6ZSwg
Zm9ybWF0KV0pKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBJbnRTaXplIHNpemU7
CisgICAgICAgIFdHQzNEZW51bSBmb3JtYXQ7CisgICAgICAgIE93bkFycmF5UHRyPHVpbnQ4X3Q+
IGRhdGE7CisgICAgfTsKKworICAgIHZvaWQgYWxsb2NhdGVUZXh0dXJlKGNvbnN0IEludFNpemUm
IHNpemUsIFdHQzNEZW51bSBmb3JtYXQpCisgICAgeworICAgICAgICBBU1NFUlQobV9jdXJyZW50
VGV4dHVyZSk7CisgICAgICAgIG1fdGV4dHVyZXMuc2V0KG1fY3VycmVudFRleHR1cmUsIGFkb3B0
UHRyKG5ldyBUZXh0dXJlKHNpemUsIGZvcm1hdCkpKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFBp
eGVscyhpbnQgeG9mZnNldCwgaW50IHlvZmZzZXQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29u
c3Qgdm9pZCogcGl4ZWxzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmUp
OworICAgICAgICBUZXh0dXJlKiB0ZXh0dXJlID0gbV90ZXh0dXJlcy5nZXQobV9jdXJyZW50VGV4
dHVyZSk7CisgICAgICAgIEFTU0VSVCh0ZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUKHhvZmZzZXQg
Pj0gMCAmJiB4b2Zmc2V0K3dpZHRoIDw9IHRleHR1cmUtPnNpemUud2lkdGgoKSk7CisgICAgICAg
IEFTU0VSVCh5b2Zmc2V0ID49IDAgJiYgeW9mZnNldCtoZWlnaHQgPD0gdGV4dHVyZS0+c2l6ZS5o
ZWlnaHQoKSk7CisgICAgICAgIEFTU0VSVChwaXhlbHMpOworICAgICAgICBzaXplX3QgaW5QaXRj
aCA9IHRleHR1cmVTaXplKEludFNpemUod2lkdGgsIDEpLCB0ZXh0dXJlLT5mb3JtYXQpOworICAg
ICAgICBzaXplX3Qgb3V0UGl0Y2ggPSB0ZXh0dXJlU2l6ZShJbnRTaXplKHRleHR1cmUtPnNpemUu
d2lkdGgoKSwgMSksIHRleHR1cmUtPmZvcm1hdCk7CisgICAgICAgIHVpbnQ4X3QqIGRlc3QgPSB0
ZXh0dXJlLT5kYXRhLmdldCgpICsgeW9mZnNldCAqIG91dFBpdGNoICsgdGV4dHVyZVNpemUoSW50
U2l6ZSh4b2Zmc2V0LCAxKSwgdGV4dHVyZS0+Zm9ybWF0KTsKKyAgICAgICAgY29uc3QgdWludDhf
dCogc3JjID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscyk7CisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgaGVpZ2h0OyArK2kpIHsKKyAgICAgICAgICAgIG1lbWNweShkZXN0
LCBzcmMsIGluUGl0Y2gpOworICAgICAgICAgICAgZGVzdCArPSBvdXRQaXRjaDsKKyAgICAgICAg
ICAgIHNyYyArPSBpblBpdGNoOworICAgICAgICB9CisgICAgfQorCisgICAgdHlwZWRlZiBIYXNo
TWFwPFdlYkdMSWQsIE93blB0cjxUZXh0dXJlPiA+IFRleHR1cmVNYXA7CisgICAgV2ViR0xJZCBt
X2N1cnJlbnRUZXh0dXJlOworICAgIFRleHR1cmVNYXAgbV90ZXh0dXJlczsKK307CisKK2NsYXNz
IENDUmVzb3VyY2VQcm92aWRlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6
CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCgpCisgICAgICAgIDogbV9jb250ZXh0KENDR3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGUzRChSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6Y3JlYXRlKCkp
KQorICAgICAgICAsIG1fcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0
ZShtX2NvbnRleHQuZ2V0KCkpKQorICAgIHsKKyAgICB9CisKKyAgICBSZXNvdXJjZVByb3ZpZGVy
Q29udGV4dCogY29udGV4dCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc291cmNlUHJvdmlkZXJD
b250ZXh0Kj4obV9jb250ZXh0LT5jb250ZXh0M0QoKSk7IH0KKworICAgIHZvaWQgZ2V0UmVzb3Vy
Y2VQaXhlbHMoQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkLCBjb25zdCBJbnRTaXpl
JiBzaXplLCBXR0MzRGVudW0gZm9ybWF0LCB1aW50OF90KiBwaXhlbHMpCisgICAgeworICAgICAg
ICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0
KCksIGlkKTsKKyAgICAgICAgQVNTRVJUX05FKDBVLCBsb2NrLnRleHR1cmVJZCgpKTsKKyAgICAg
ICAgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
bG9jay50ZXh0dXJlSWQoKSk7CisgICAgICAgIGNvbnRleHQoKS0+Z2V0UGl4ZWxzKHNpemUsIGZv
cm1hdCwgcGl4ZWxzKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29u
dGV4dDsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBtX3Jlc291cmNlUHJvdmlkZXI7
Cit9OworCitURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgQmFzaWMpCit7CisgICAgSW50
U2l6ZSBzaXplKDEsIDEpOworICAgIFdHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQz
RDo6UkdCQTsKKyAgICBpbnQgcG9vbCA9IDE7CisgICAgc2l6ZV90IHBpeGVsU2l6ZSA9IFJlc291
cmNlUHJvdmlkZXJDb250ZXh0Ojp0ZXh0dXJlU2l6ZShzaXplLCBmb3JtYXQpOworICAgIEFTU0VS
VF9FUSg0VSwgcGl4ZWxTaXplKTsKKworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJ
ZCBpZCA9IG1fcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UocG9vbCwgc2l6ZSwgZm9y
bWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7CisgICAgRVhQRUNUX0VR
KDEsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworCisgICAgdWludDhfdCBkYXRhWzRdID0g
ezEsIDIsIDMsIDR9OworICAgIEludFJlY3QgcmVjdChJbnRQb2ludCgpLCBzaXplKTsKKyAgICBt
X3Jlc291cmNlUHJvdmlkZXItPnVwbG9hZChpZCwgZGF0YSwgcmVjdCwgcmVjdCwgcmVjdCk7CisK
KyAgICB1aW50OF90IHJlc3VsdFs0XSA9IHswfTsKKyAgICBnZXRSZXNvdXJjZVBpeGVscyhpZCwg
c2l6ZSwgZm9ybWF0LCByZXN1bHQpOworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZGF0YSwgcmVz
dWx0LCBwaXhlbFNpemUpKTsKKworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlUmVzb3Vy
Y2UoaWQpOworICAgIEVYUEVDVF9FUSgwLCBjb250ZXh0KCktPnRleHR1cmVDb3VudCgpKTsKK30K
KworVEVTVF9GKENDUmVzb3VyY2VQcm92aWRlclRlc3QsIERlbGV0ZU93bmVkUmVzb3VyY2VzKQor
eworICAgIEludFNpemUgc2l6ZSgxLCAxKTsKKyAgICBXR0MzRGVudW0gZm9ybWF0ID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OlJHQkE7CisgICAgaW50IHBvb2wgPSAxOworCisgICAgY29uc3QgaW50IGNv
dW50ID0gMzsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWRzW2NvdW50XSA9
IHswfTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGlkc1tp
XSA9IG1fcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UocG9vbCwgc2l6ZSwgZm9ybWF0
LCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7CisgICAgRVhQRUNUX0VRKDMs
IGNvbnRleHQoKS0+dGV4dHVyZUNvdW50KCkpOworCisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT5k
ZWxldGVPd25lZFJlc291cmNlcyhwb29sKzEpOworICAgIEVYUEVDVF9FUSgzLCBjb250ZXh0KCkt
PnRleHR1cmVDb3VudCgpKTsKKworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlT3duZWRS
ZXNvdXJjZXMocG9vbCk7CisgICAgRVhQRUNUX0VRKDAsIGNvbnRleHQoKS0+dGV4dHVyZUNvdW50
KCkpOworfQorCitURVNUX0YoQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgVXBsb2FkKQoreworICAg
IEludFNpemUgc2l6ZSgyLCAyKTsKKyAgICBXR0MzRGVudW0gZm9ybWF0ID0gR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkE7CisgICAgaW50IHBvb2wgPSAxOworICAgIHNpemVfdCBwaXhlbFNpemUgPSBS
ZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6dGV4dHVyZVNpemUoc2l6ZSwgZm9ybWF0KTsKKyAgICBB
U1NFUlRfRVEoMTZVLCBwaXhlbFNpemUpOworCisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIGlkID0gbV9yZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShwb29sLCBzaXpl
LCBmb3JtYXQsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKKworICAgIHVp
bnQ4X3QgaW1hZ2VbMTZdID0gezB9OworICAgIEludFJlY3QgaW1hZ2VSZWN0KEludFBvaW50KCks
IHNpemUpOworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dXBsb2FkKGlkLCBpbWFnZSwgaW1hZ2VS
ZWN0LCBpbWFnZVJlY3QsIGltYWdlUmVjdCk7CisKKyAgICBmb3IgKHVpbnQ4X3QgaSA9IDAgOyBp
IDwgcGl4ZWxTaXplOyArK2kpCisgICAgICAgIGltYWdlW2ldID0gaTsKKworICAgIHVpbnQ4X3Qg
cmVzdWx0WzE2XSA9IHswfTsKKyAgICB7CisgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCgwLCAw
LCAxLCAxKTsKKyAgICAgICAgSW50UmVjdCBkZXN0UmVjdCgwLCAwLCAxLCAxKTsKKyAgICAgICAg
bV9yZXNvdXJjZVByb3ZpZGVyLT51cGxvYWQoaWQsIGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsKKworICAgICAgICB1aW50OF90IGV4cGVjdGVkWzE2XSA9IHswLCAxLCAy
LCAzLCAgIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAs
IDAsIDAsICAgMCwgMCwgMCwgMH07CisgICAgICAgIGdldFJlc291cmNlUGl4ZWxzKGlkLCBzaXpl
LCBmb3JtYXQsIHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWQs
IHJlc3VsdCwgcGl4ZWxTaXplKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgSW50UmVjdCBzb3Vy
Y2VSZWN0KDAsIDAsIDEsIDEpOworICAgICAgICBJbnRSZWN0IGRlc3RSZWN0KDEsIDEsIDEsIDEp
OworICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXItPnVwbG9hZChpZCwgaW1hZ2UsIGltYWdlUmVj
dCwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworCisgICAgICAgIHVpbnQ4X3QgZXhwZWN0ZWRbMTZd
ID0gezAsIDEsIDIsIDMsICAgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCwgMCwgICAwLCAxLCAyLCAzfTsKKyAgICAgICAgZ2V0UmVzb3VyY2VQaXhl
bHMoaWQsIHNpemUsIGZvcm1hdCwgcmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX0VRKDAsIG1lbWNt
cChleHBlY3RlZCwgcmVzdWx0LCBwaXhlbFNpemUpKTsKKyAgICB9CisgICAgeworICAgICAgICBJ
bnRSZWN0IHNvdXJjZVJlY3QoMSwgMCwgMSwgMSk7CisgICAgICAgIEludFJlY3QgZGVzdFJlY3Qo
MCwgMSwgMSwgMSk7CisgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dXBsb2FkKGlkLCBpbWFn
ZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisKKyAgICAgICAgdWludDhfdCBl
eHBlY3RlZFsxNl0gPSB7MCwgMSwgMiwgMywgICAwLCAwLCAwLCAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0LCA1LCA2LCA3LCAgIDAsIDEsIDIsIDN9OworICAgICAgICBnZXRS
ZXNvdXJjZVBpeGVscyhpZCwgc2l6ZSwgZm9ybWF0LCByZXN1bHQpOworICAgICAgICBFWFBFQ1Rf
RVEoMCwgbWVtY21wKGV4cGVjdGVkLCByZXN1bHQsIHBpeGVsU2l6ZSkpOworICAgIH0KKworICAg
IG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlUmVzb3VyY2UoaWQpOworfQorCit9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Njb3BlZFRl
eHR1cmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY29wZWRUZXh0
dXJlVGVzdC5jcHAKaW5kZXggNGQ0NjRlYTUxNDM4ZWE4M2Y3MDJlOWY1NjYzMGY1ZGIxZjdiNjZm
YS4uNTA1YWU5NjI1ZWNhYzlkNDg3YjE2NWYyYWI1OTc1MGU3NDg5NGMxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Njb3BlZFRleHR1cmVUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NvcGVkVGV4dHVyZVRlc3QuY3BwCkBA
IC0yNyw3ICsyNywxMCBAQAogI2luY2x1ZGUgImNjL0NDU2NvcGVkVGV4dHVyZS5oIgogCiAjaW5j
bHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkZha2VDQ0dyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiY2Mv
Q0NSZW5kZXJlci5oIgorI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIgLy8gRm9y
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZAogCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIApA
QCAtMzksOCArNDIsMTAgQEAgbmFtZXNwYWNlIHsKIAogVEVTVChDQ1Njb3BlZFRleHR1cmVUZXN0
LCBOZXdTY29wZWRUZXh0dXJlKQogewotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIGFsbG9jYXRv
cjsKLSAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJl
OjpjcmVhdGUoJmFsbG9jYXRvcik7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250
ZXh0KGNyZWF0ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpKTsKKyAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNv
dXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsK
KyAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpj
cmVhdGUocmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CiAKICAgICAvLyBOZXcgc2NvcGVkIHRleHR1
cmVzIGRvIG5vdCBob2xkIGEgdGV4dHVyZSB5ZXQuCiAgICAgRVhQRUNUX0VRKDB1LCB0ZXh0dXJl
LT5pZCgpKTsKQEAgLTUyLDkgKzU3LDExIEBAIFRFU1QoQ0NTY29wZWRUZXh0dXJlVGVzdCwgTmV3
U2NvcGVkVGV4dHVyZSkKIAogVEVTVChDQ1Njb3BlZFRleHR1cmVUZXN0LCBDcmVhdGVTY29wZWRU
ZXh0dXJlKQogewotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIGFsbG9jYXRvcjsKLSAgICBPd25Q
dHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUoJmFs
bG9jYXRvcik7Ci0gICAgdGV4dHVyZS0+YWxsb2NhdGUoSW50U2l6ZSgzMCwgMzApLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSk7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0
KGNyZWF0ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpKTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJj
ZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKKyAg
ICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVh
dGUocmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CisgICAgdGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5k
ZXJlcjo6SW1wbFBvb2wsIEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEs
IENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKIAogICAgIC8vIFRoZSB0ZXh0
dXJlIGhhcyBhbiBhbGxvY2F0ZWQgYnl0ZS1zaXplIG5vdy4KICAgICBzaXplX3QgZXhwZWN0ZWRC
eXRlcyA9IDMwICogMzAgKiA0OwpAQCAtNjUsOTUgKzcyLDU4IEBAIFRFU1QoQ0NTY29wZWRUZXh0
dXJlVGVzdCwgQ3JlYXRlU2NvcGVkVGV4dHVyZSkKICAgICBFWFBFQ1RfRVEoSW50U2l6ZSgzMCwg
MzApLCB0ZXh0dXJlLT5zaXplKCkpOwogfQogCi0vLyBGYWtlIFRleHR1cmVBbGxvY2F0b3IgdGhh
dCB0cmFja3MgdGhlIG51bWJlciBvZiB0ZXh0dXJlcyBpbiB1c2UuCi1jbGFzcyBUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0gICAg
VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKCkKLSAgICAgICAgOiBtX25leHRUZXh0dXJlSWQoMSkK
LSAgICAgICAgLCBtX251bVRleHR1cmVzKDApCi0gICAgeyB9Ci0KLSAgICB2aXJ0dWFsIHVuc2ln
bmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEdDM0RlbnVtKSBPVkVS
UklERQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgaWQgPSBtX25leHRUZXh0dXJlSWQ7Ci0gICAg
ICAgICsrbV9uZXh0VGV4dHVyZUlkOwotCi0gICAgICAgIG1fdGV4dHVyZXMuc2V0KGlkLCB0cnVl
KTsKLSAgICAgICAgKyttX251bVRleHR1cmVzOwotICAgICAgICByZXR1cm4gaWQ7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQgaWQsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBHQzNEZW51bSkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIGlmICghbV90
ZXh0dXJlcy5nZXQoaWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fdGV4dHVy
ZXMuc2V0KGlkLCBmYWxzZSk7Ci0gICAgICAgIC0tbV9udW1UZXh0dXJlczsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKSBPVkVSUklERQotICAgIHsKLSAgICAg
ICAgbV90ZXh0dXJlcy5jbGVhcigpOwotICAgICAgICBtX251bVRleHR1cmVzID0gMDsKLSAgICB9
Ci0KLSAgICB1bnNpZ25lZCBudW1UZXh0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtVGV4dHVy
ZXM7IH0KLQotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX25leHRUZXh0dXJlSWQ7Ci0gICAgSGFz
aE1hcDx1bnNpZ25lZCwgYm9vbD4gbV90ZXh0dXJlczsKLSAgICB1bnNpZ25lZCBtX251bVRleHR1
cmVzOwotfTsKLQogVEVTVChDQ1Njb3BlZFRleHR1cmVUZXN0LCBTY29wZWRUZXh0dXJlSXNEZWxl
dGVkKQogewotICAgIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvciBhbGxvY2F0b3I7CisgICAgT3du
UHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KGNyZWF0ZUZha2VDQ0dyYXBoaWNzQ29udGV4
dCgpKTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBPd25Q
dHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRl
cjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKIAogICAgIHsKLSAgICAgICAgT3duUHRyPENDU2Nv
cGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKCZhbGxvY2F0b3Ip
OworICAgICAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0
dXJlOjpjcmVhdGUocmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CiAKLSAgICAgICAgRVhQRUNUX0VR
KDB1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7Ci0gICAgICAgIHRleHR1cmUtPmFsbG9jYXRl
KEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICBFWFBF
Q1RfRVEoMHUsIHJlc291cmNlUHJvdmlkZXItPm51bVJlc291cmNlcygpKTsKKyAgICAgICAgdGV4
dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIEludFNpemUoMzAsIDMwKSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55
KTsKICAgICAgICAgRVhQRUNUX0xUKDB1LCB0ZXh0dXJlLT5pZCgpKTsKLSAgICAgICAgRVhQRUNU
X0VRKDF1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwg
cmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOwogICAgIH0KIAotICAgIEVYUEVDVF9F
USgwdSwgYWxsb2NhdG9yLm51bVRleHR1cmVzKCkpOworICAgIEVYUEVDVF9FUSgwdSwgcmVzb3Vy
Y2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOwogCiAgICAgewotICAgICAgICBPd25QdHI8Q0NT
Y29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUoJmFsbG9jYXRv
cik7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgYWxsb2NhdG9yLm51bVRleHR1cmVzKCkpOwotICAg
ICAgICB0ZXh0dXJlLT5hbGxvY2F0ZShJbnRTaXplKDMwLCAzMCksIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBKTsKKyAgICAgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2Nv
cGVkVGV4dHVyZTo6Y3JlYXRlKHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpOworICAgICAgICBFWFBF
Q1RfRVEoMHUsIHJlc291cmNlUHJvdmlkZXItPm51bVJlc291cmNlcygpKTsKKyAgICAgICAgdGV4
dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIEludFNpemUoMzAsIDMwKSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55
KTsKICAgICAgICAgRVhQRUNUX0xUKDB1LCB0ZXh0dXJlLT5pZCgpKTsKLSAgICAgICAgRVhQRUNU
X0VRKDF1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwg
cmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOwogICAgICAgICB0ZXh0dXJlLT5mcmVl
KCk7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgYWxsb2NhdG9yLm51bVRleHR1cmVzKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoMHUsIHJlc291cmNlUHJvdmlkZXItPm51bVJlc291cmNlcygpKTsKICAg
ICB9CiB9CiAKIFRFU1QoQ0NTY29wZWRUZXh0dXJlVGVzdCwgTGVha1Njb3BlZFRleHR1cmUpCiB7
Ci0gICAgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yIGFsbG9jYXRvcjsKKyAgICBPd25QdHI8Q0NH
cmFwaGljc0NvbnRleHQ+IGNvbnRleHQoY3JlYXRlRmFrZUNDR3JhcGhpY3NDb250ZXh0KCkpOwor
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIE93blB0cjxDQ1Jl
c291cmNlUHJvdmlkZXI+IHJlc291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVh
dGUoY29udGV4dC5nZXQoKSkpOwogCiAgICAgewotICAgICAgICBPd25QdHI8Q0NTY29wZWRUZXh0
dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUoJmFsbG9jYXRvcik7CisgICAg
ICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNy
ZWF0ZShyZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKIAotICAgICAgICBFWFBFQ1RfRVEoMHUsIGFs
bG9jYXRvci5udW1UZXh0dXJlcygpKTsKLSAgICAgICAgdGV4dHVyZS0+YWxsb2NhdGUoSW50U2l6
ZSgzMCwgMzApLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgIEVYUEVDVF9FUSgw
dSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOworICAgICAgICB0ZXh0dXJlLT5h
bGxvY2F0ZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwgSW50U2l6ZSgzMCwgMzApLCBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOwogICAg
ICAgICBFWFBFQ1RfTFQoMHUsIHRleHR1cmUtPmlkKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUs
IGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCByZXNvdXJj
ZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CiAKICAgICAgICAgdGV4dHVyZS0+bGVhaygpOwog
ICAgICAgICBFWFBFQ1RfRVEoMHUsIHRleHR1cmUtPmlkKCkpOwotICAgICAgICBFWFBFQ1RfRVEo
MXUsIGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCByZXNv
dXJjZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CiAKICAgICAgICAgdGV4dHVyZS0+ZnJlZSgp
OwogICAgICAgICBFWFBFQ1RfRVEoMHUsIHRleHR1cmUtPmlkKCkpOwotICAgICAgICBFWFBFQ1Rf
RVEoMXUsIGFsbG9jYXRvci5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBy
ZXNvdXJjZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CiAgICAgfQogCi0gICAgRVhQRUNUX0VR
KDF1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCByZXNvdXJj
ZVByb3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXh0dXJlVXBkYXRlclRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RleHR1cmVVcGRhdGVyVGVzdC5jcHAKaW5kZXggZDBiYmQz
NmY0NzhlYzU4ODQyZTNjNWUxZmM0ZjkwYTE3NWQ0M2NiOS4uYjdhMjZkZjJmZGNiZjU5MTVmMDYy
NmI2OGRlY2U3YjAxYzQ2MzFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RleHR1cmVVcGRhdGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1RleHR1cmVVcGRhdGVyVGVzdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCiAj
aW5jbHVkZSAicGxhdGZvcm0vV2ViVGhyZWFkLmgiCiAKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgpAQCAtNjMsMTMgKzY0LDEyIEBAIGNsYXNzIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3Qg
OiBwdWJsaWMgRmFrZVRleHR1cmVVcGxvYWRlciB7CiBwdWJsaWM6CiAgICAgVGV4dHVyZVVwbG9h
ZGVyRm9yVXBsb2FkVGVzdChDQ1RleHR1cmVVcGRhdGVyVGVzdCAqdGVzdCkgOiBtX3Rlc3QodGVz
dCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCk7Ci0gICAgdmlydHVhbCB2
b2lkIGVuZFVwbG9hZHMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3Jl
OjpDQ0dyYXBoaWNzQ29udGV4dCosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
Q29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvciosCisgICAgdmlydHVhbCB2b2lk
IGJlZ2luVXBsb2FkcygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6TGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJlY3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkg
T1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgQ0NUZXh0dXJlVXBkYXRlclRlc3QqIG1fdGVzdDsK
QEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFRleHR1cmVGb3JVcGxvYWRUZXN0IDog
cHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogcHVibGljOgogICAgIFRleHR1
cmVGb3JVcGxvYWRUZXN0KCkgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKGFkb3B0UHRy
PENDUHJpb3JpdGl6ZWRUZXh0dXJlPigwKSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJl
Y3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSB7IH0KIH07CiAKIApAQCAtMTY1LDYgKzE2NSw4
IEBAIHByb3RlY3RlZDoKIAogICAgICAgICBtX2NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlM0QoCiAgICAgICAgICAgICAgICAgICAgIGFkb3B0UHRyKG5ldyBXZWJHcmFwaGljc0Nv
bnRleHQzREZvclVwbG9hZFRlc3QodGhpcykpKTsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlciA9IENDUmVzb3Vy
Y2VQcm92aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB2b2lkIFRlYXJEb3duKCkKQEAgLTIwMCw5ICsyMDIsOSBAQCBwcm90ZWN0ZWQ6CiBwcm90ZWN0
ZWQ6CiAgICAgLy8gQ2xhc3NlcyByZXF1aXJlZCB0byBpbnRlcmFjdCBhbmQgdGVzdCB0aGUgQ0NU
ZXh0dXJlVXBkYXRlcgogICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0Owor
ICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKICAgICBD
Q1RleHR1cmVVcGRhdGVyIG1fdXBkYXRlcjsKICAgICBUZXh0dXJlRm9yVXBsb2FkVGVzdCBtX3Rl
eHR1cmU7Ci0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgbV9hbGxvY2F0b3I7CiAgICAgRmFrZVRl
eHR1cmVDb3BpZXIgbV9jb3BpZXI7CiAgICAgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdCBt
X3VwbG9hZGVyOwogCkBAIC0yMzksMTEgKzI0MSwxMCBAQCB2b2lkIFRleHR1cmVVcGxvYWRlckZv
clVwbG9hZFRlc3Q6OmVuZFVwbG9hZHMoKQogICAgIG1fdGVzdC0+b25FbmRVcGxvYWRzKCk7CiB9
CiAKLXZvaWQgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdDo6dXBsb2FkVGV4dHVyZShXZWJD
b3JlOjpDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
IHRleHR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJD
b3JlOjpUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJlY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0IGRlc3RSZWN0KQordm9pZCBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0Ojp1cGxv
YWRUZXh0dXJlKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6Q0NSZXNvdXJjZVByb3ZpZGVyKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJlY3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCBkZXN0UmVjdCkKIHsKICAgICBtX3Rlc3QtPm9uVXBsb2FkKCk7CiB9CkBAIC0y
NTQsNyArMjU1LDcgQEAgVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBaZXJvVXBsb2FkcykK
IHsKICAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcigwKTsKICAgICBhcHBlbmRQYXJ0aWFs
VXBsb2Fkc1RvVXBkYXRlcigwKTsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQo
KSwgJm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291
bnRFeHBlY3RlZCk7CisgICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0
KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsK
IAogICAgIEVYUEVDVF9FUSgwLCBtX251bUJlZ2luVXBsb2Fkcyk7CiAgICAgRVhQRUNUX0VRKDAs
IG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC0yNjgsNyArMjY5LDggQEAgVEVTVF9GKENDVGV4dHVyZVVw
ZGF0ZXJUZXN0LCBPbmVGdWxsVXBsb2FkKQogewogICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRh
dGVyKDEpOwogICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKDApOwotICAgIG1fdXBk
YXRlci51cGRhdGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGllciwgJm1f
dXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKyAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50
RXhwZWN0ZWQpOwogCiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBF
WFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTI4MCw3ICsyODIsOCBAQCBURVNUX0Yo
Q0NUZXh0dXJlVXBkYXRlclRlc3QsIE9uZVBhcnRpYWxVcGxvYWQpCiB7CiAgICAgYXBwZW5kRnVs
bFVwbG9hZHNUb1VwZGF0ZXIoMCk7CiAgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIo
MSk7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwg
Jm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIG1fdXBkYXRlci51cGRh
dGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3Rv
dGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CiAKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVw
bG9hZHMpOwogICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwpAQCAtMjkyLDcgKzI5
NSw4IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgT25lRnVsbE9uZVBhcnRpYWxVcGxv
YWQpCiB7CiAgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoMSk7CiAgICAgYXBwZW5kUGFy
dGlhbFVwbG9hZHNUb1VwZGF0ZXIoMSk7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQu
Z2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9h
ZENvdW50RXhwZWN0ZWQpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFk
OworICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3Bp
ZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CiAKICAgICAvLyBX
ZSBleHBlY3QgdGhlIGZ1bGwgdXBsb2FkcyB0byBiZSBmb2xsb3dlZCBieSBhIGZsdXNoCiAgICAg
Ly8gYmVmb3JlIHRoZSBwYXJ0aWFsIHVwbG9hZHMgYmVnaW4uCkBAIC0zMTUsNyArMzE5LDggQEAg
VEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBNYW55RnVsbFVwbG9hZHNOb1JlbWFpbmRlcikK
IHsKICAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTm9SZW1haW5kZXJDb3VudCk7
CiAgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIoMCk7Ci0gICAgbV91cGRhdGVyLnVw
ZGF0ZShtX2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRl
ciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsVGhyZWFkOworICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVy
LmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3Rl
ZCk7CiAKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9F
USgxLCBtX251bUVuZFVwbG9hZHMpOwpAQCAtMzI3LDcgKzMzMiw4IEBAIFRFU1RfRihDQ1RleHR1
cmVVcGRhdGVyVGVzdCwgTWFueVBhcnRpYWxVcGxvYWRzTm9SZW1haW5kZXIpCiB7CiAgICAgYXBw
ZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoMCk7CiAgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1Vw
ZGF0ZXIocGFydGlhbE5vUmVtYWluZGVyQ291bnQpOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9j
b250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90
YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwg
Jm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwogCiAg
ICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9u
dW1FbmRVcGxvYWRzKTsKQEAgLTMzOSw3ICszNDUsOCBAQCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRl
clRlc3QsIE1hbnlGdWxsTWFueVBhcnRpYWxVcGxvYWRzTm9SZW1haW5kZXIpCiB7CiAgICAgYXBw
ZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoZnVsbE5vUmVtYWluZGVyQ291bnQpOwogICAgIGFwcGVu
ZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxOb1JlbWFpbmRlckNvdW50KTsKLSAgICBt
X3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIs
ICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291
cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRD
b3VudEV4cGVjdGVkKTsKIAogICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CiAg
ICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC0zNjEsNyArMzY4LDggQEAgVEVT
VF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBNYW55RnVsbEFuZFBhcnRpYWxNaW5SZW1haW5kZXIp
CiB7CiAgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoZnVsbE1pblJlbWFpbmRlckNvdW50
KTsKICAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihwYXJ0aWFsTWluUmVtYWluZGVy
Q291bnQpOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxvY2F0
b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsK
KyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBtX3VwZGF0ZXIu
dXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwg
bV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwogCiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVn
aW5VcGxvYWRzKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTM3Myw3
ICszODEsOCBAQCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE1hbnlGdWxsQW5kUGFydGlh
bFVwbG9hZHNNYXhSZW1haW5kZXIpCiB7CiAgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIo
ZnVsbE1heFJlbWFpbmRlckNvdW50KTsKICAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRl
cihwYXJ0aWFsTWF4UmVtYWluZGVyQ291bnQpOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9jb250
ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxV
cGxvYWRDb3VudEV4cGVjdGVkKTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRo
cmVhZDsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1f
Y29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwogCiAgICAg
RVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1F
bmRVcGxvYWRzKTsKQEAgLTM4NSw3ICszOTQsOCBAQCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRl
c3QsIE1hbnlGdWxsTWluUmVtYWluZGVyTWFueVBhcnRpYWxNYXhSZW1haW5kZXIpCiB7CiAgICAg
YXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoZnVsbE1pblJlbWFpbmRlckNvdW50KTsKICAgICBh
cHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihwYXJ0aWFsTWF4UmVtYWluZGVyQ291bnQpOwot
ICAgIG1fdXBkYXRlci51cGRhdGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2Nv
cGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKyAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1f
cmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVw
bG9hZENvdW50RXhwZWN0ZWQpOwogCiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRz
KTsKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTM5Nyw3ICs0MDcsOCBA
QCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE1hbnlGdWxsTWF4UmVtYWluZGVyTWFueVBh
cnRpYWxNaW5SZW1haW5kZXIpCiB7CiAgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoZnVs
bE1heFJlbWFpbmRlckNvdW50KTsKICAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihw
YXJ0aWFsTWluUmVtYWluZGVyQ291bnQpOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9jb250ZXh0
LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxv
YWRDb3VudEV4cGVjdGVkKTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29w
aWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwogCiAgICAgRVhQ
RUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRV
cGxvYWRzKTsKQEAgLTQyOSw3ICs0NDAsOCBAQCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3Qs
IFRyaXBsZVVwZGF0ZUZpbmFsVXBkYXRlRnVsbEFuZFBhcnRpYWwpCiAgICAgYXBwZW5kUGFydGlh
bFVwbG9hZHNUb1VwZGF0ZXIoa1BhcnRpYWxVcGxvYWRzKTsKIAogICAgIC8vIEZpcnN0IHVwZGF0
ZSAoNDAgZnVsbCkKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxs
b2NhdG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7Cisg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgbV91cGRhdGVyLnVw
ZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtN
YXhVcGxvYWRzUGVyVXBkYXRlKTsKIAogICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fk
cyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC00NDEsNyArNDUzLDcg
QEAgVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBUcmlwbGVVcGRhdGVGaW5hbFVwZGF0ZUZ1
bGxBbmRQYXJ0aWFsKQogICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9u
dW1QcmV2aW91c1VwbG9hZHMpOwogCiAgICAgLy8gU2Vjb25kIHVwZGF0ZSAoNDAgZnVsbCkKLSAg
ICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3Bp
ZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisgICAgbV91cGRhdGVyLnVw
ZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtN
YXhVcGxvYWRzUGVyVXBkYXRlKTsKIAogICAgIEVYUEVDVF9FUSgyLCBtX251bUJlZ2luVXBsb2Fk
cyk7CiAgICAgRVhQRUNUX0VRKDIsIG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC00NTMsNyArNDY1LDcg
QEAgVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBUcmlwbGVVcGRhdGVGaW5hbFVwZGF0ZUZ1
bGxBbmRQYXJ0aWFsKQogICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9u
dW1QcmV2aW91c1VwbG9hZHMpOwogCiAgICAgLy8gVGhpcmQgdXBkYXRlICgyMCBmdWxsLCAyMCBw
YXJ0aWFsKQotICAgIG1fdXBkYXRlci51cGRhdGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxvY2F0
b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKyAgICBt
X3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91
cGxvYWRlciwga01heFVwbG9hZHNQZXJVcGRhdGUpOwogCiAgICAgRVhQRUNUX0VRKDMsIG1fbnVt
QmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1RfRVEoMywgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTQ4
Myw3ICs0OTUsOCBAQCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIFRyaXBsZVVwZGF0ZUZp
bmFsVXBkYXRlQWxsUGFydGlhbCkKICAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihr
UGFydGlhbFVwbG9hZHMpOwogCiAgICAgLy8gRmlyc3QgdXBkYXRlICg0MCBmdWxsKQotICAgIG1f
dXBkYXRlci51cGRhdGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGllciwg
Jm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKyAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92
aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwga01heFVwbG9hZHNQZXJVcGRhdGUp
OwogCiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1RfRVEo
MSwgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTQ5NSw3ICs1MDgsNyBAQCBURVNUX0YoQ0NUZXh0dXJl
VXBkYXRlclRlc3QsIFRyaXBsZVVwZGF0ZUZpbmFsVXBkYXRlQWxsUGFydGlhbCkKICAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKIAog
ICAgIC8vIFNlY29uZCB1cGRhdGUgKDMwIGZ1bGwsIG9wdGlvbmFsbHkgMTAgcGFydGlhbCkKLSAg
ICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3Bp
ZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisgICAgbV91cGRhdGVyLnVw
ZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtN
YXhVcGxvYWRzUGVyVXBkYXRlKTsKIAogICAgIEVYUEVDVF9FUSgyLCBtX251bUJlZ2luVXBsb2Fk
cyk7CiAgICAgRVhQRUNUX0VRKDIsIG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC01MDUsNyArNTE4LDcg
QEAgVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBUcmlwbGVVcGRhdGVGaW5hbFVwZGF0ZUFs
bFBhcnRpYWwpCiAgICAgLy8gb25GbHVzaCgpLCBvblVwbG9hZCgpLCBhbmQgb25FbmRVcGxvYWQo
KSB3aWxsIGRvIGJhc2ljIGZsdXNoIGNoZWNrcyBmb3IgdXMgYW55d2F5LgogCiAgICAgLy8gVGhp
cmQgdXBkYXRlICgzMCBwYXJ0aWFsIE9SIDIwIHBhcnRpYWwgaWYgMTAgcGFydGlhbCB1cGxvYWRl
ZCBpbiBzZWNvbmQgdXBkYXRlKQotICAgIG1fdXBkYXRlci51cGRhdGUobV9jb250ZXh0LmdldCgp
LCAmbV9hbGxvY2F0b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBk
YXRlKTsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1f
Y29waWVyLCAmbV91cGxvYWRlciwga01heFVwbG9hZHNQZXJVcGRhdGUpOwogCiAgICAgRVhQRUNU
X0VRKDMsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1RfRVEoMywgbV9udW1FbmRVcGxv
YWRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExh
eWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5
ZXJJbXBsVGVzdC5jcHAKaW5kZXggMDBkMzhhN2VjN2Y0YjI3NWJmOTFhYjY3ZDNkMTQ0YjVhNzRl
MDcwMS4uYWQzZDcwNDVkZGYxNWU2MzZhNDBmNzc5NGI1YjUwMjE4YjI0NWZmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5j
cHAKQEAgLTUzLDEwICs1MywxMCBAQCBzdGF0aWMgUGFzc093blB0cjxDQ1RpbGVkTGF5ZXJJbXBs
PiBjcmVhdGVMYXllcihjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgY29uc3QgSQogICAgIGxheWVy
LT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKICAgICBsYXllci0+c2V0Q29udGVudEJvdW5kcyhsYXll
clNpemUpOwogCi0gICAgaW50IHRleHR1cmVJZCA9IDE7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVy
OjpSZXNvdXJjZUlkIHJlc291cmNlSWQgPSAxOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGls
ZXItPm51bVRpbGVzWCgpOyArK2kpCiAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdGlsZXIt
Pm51bVRpbGVzWSgpOyArK2opCi0gICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVz
KGksIGosIHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KHRleHR1cmVJZCsrKSwgSW50UmVj
dCgwLCAwLCAxLCAxKSk7CisgICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGks
IGosIHJlc291cmNlSWQrKywgSW50UmVjdCgwLCAwLCAxLCAxKSk7CiAKICAgICByZXR1cm4gbGF5
ZXIucmVsZWFzZSgpOwogfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1w
bFRlc3QsIGNoZWNrZXJib2FyZGluZykKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGls
ZXNYOyArK2kpCiAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtVGlsZXNZOyArK2opCi0g
ICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHN0YXRpY19jYXN0PFBs
YXRmb3JtM0RPYmplY3Q+KDApLCBJbnRSZWN0KCkpOworICAgICAgICAgICAgbGF5ZXItPnB1c2hU
aWxlUHJvcGVydGllcyhpLCBqLCAwLCBJbnRSZWN0KCkpOwogCiAgICAgLy8gQWxsIGNoZWNrZXJi
b2FyZGluZwogICAgIHsKQEAgLTI0MCw3ICsyNDAsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxU
ZXN0LCB0ZXh0dXJlSW5mb0ZvckxheWVyTm9Cb3JkZXJzKQogICAgICAgICBBU1NFUlRfRVEocXVh
ZHNbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCkgPDwgcXVhZFN0cmlu
ZyA8PCBpOwogICAgICAgICBDQ1RpbGVEcmF3UXVhZCogcXVhZCA9IHN0YXRpY19jYXN0PENDVGls
ZURyYXdRdWFkKj4ocXVhZHNbaV0uZ2V0KCkpOwogCi0gICAgICAgIEVYUEVDVF9ORShxdWFkLT50
ZXh0dXJlSWQoKSwgMHUpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICAgICAgRVhQRUNUX05FKHF1
YWQtPnJlc291cmNlSWQoKSwgMHUpIDw8IHF1YWRTdHJpbmcgPDwgaTsKICAgICAgICAgRVhQRUNU
X0VRKHF1YWQtPnRleHR1cmVPZmZzZXQoKSwgSW50UG9pbnQoKSkgPDwgcXVhZFN0cmluZyA8PCBp
OwogICAgICAgICBFWFBFQ1RfRVEocXVhZC0+dGV4dHVyZVNpemUoKSwgdGlsZVNpemUpIDw8IHF1
YWRTdHJpbmcgPDwgaTsKICAgICAgICAgRVhQRUNUX0VRKEludFJlY3QoMCwgMCwgMSwgMSksIHF1
YWQtPm9wYXF1ZVJlY3QoKSkgPDwgcXVhZFN0cmluZyA8PCBpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKaW5kZXgg
MjZmZmQ5MDc5Y2ZkYTM0YWUwYmRiZjBkYTRkMTU1NGRiZmY1NTE5OS4uNzc3ODU0OWI2ODU0Mzgw
Mjc1MjI2YzYwZmY0MDJhOTQxNWFmZjU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCkBAIC00MCwxMCArNDAs
OSBAQCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQogewogfQog
Ci12b2lkIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KENDR3Jh
cGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0
JiwgY29uc3QgSW50UmVjdCYpCit2b2lkIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
Ojp1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IEludFJlY3QmKQogewotICAgIGlmIChhbGxvY2F0b3IpCi0gICAgICAg
IHRleHR1cmUoKS0+YWNxdWlyZUJhY2tpbmdUZXh0dXJlKGFsbG9jYXRvcik7CisgICAgdGV4dHVy
ZSgpLT5hY3F1aXJlQmFja2luZ1RleHR1cmUocmVzb3VyY2VQcm92aWRlcik7CiAgICAgbV9sYXll
ci0+dXBkYXRlUmVjdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IDk1MDFjYWJhOWFhYzgwYzQ0OWMy
YWYzZTBiZDg1MTczYjE4MmE5MTIuLmJlNjgxZDcxYzkyN2VlOThlOGNlNTkxM2Y3Mzk0MTZkMzQ0
Y2QxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExh
eWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVyVGVzdENvbW1vbi5oCkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJJbnRTaXpl
LmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIlJlZ2lvbi5o
IgotI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVy
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVkZSAiVGlsZWRMYXllckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJj
Yy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oIgorI2luY2x1ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRl
ci5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmgiCiAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICBUZXh0
dXJlKEZha2VMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxXZWJDb3JlOjpDQ1ByaW9y
aXRpemVkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQqLCBXZWJD
b3JlOjpUZXh0dXJlQWxsb2NhdG9yKiAsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVS
ZWN0KFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlciogLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOwogCiAgICAg
cHJpdmF0ZToKQEAgLTE1MSwxNyArMTUxLDEwIEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpJ
bnRTaXplIG1fZm9yY2VkQ29udGVudEJvdW5kczsKIH07CiAKLWNsYXNzIEZha2VUZXh0dXJlQWxs
b2NhdG9yIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3IgewotcHVibGljOgotICAg
IHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
R0MzRGVudW0pIE9WRVJSSURFIHsgcmV0dXJuIDE7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
VGV4dHVyZSh1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEdDM0RlbnVtKSBPVkVS
UklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKSBPVkVSUklERSB7
IH0KLX07Ci0KIGNsYXNzIEZha2VUZXh0dXJlQ29waWVyIDogcHVibGljIFdlYkNvcmU6OlRleHR1
cmVDb3BpZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShXZWJDb3Jl
OjpDQ0dyYXBoaWNzQ29udGV4dCosIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9UZXh0dXJlKFdlYkNvcmU6OkND
R3JhcGhpY3NDb250ZXh0KiwgY29uc3Qgdm9pZCosIHVuc2lnbmVkLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgR0MzRGVudW0pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZSh1bnNp
Z25lZCwgdW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZmx1c2goKSB7IH0KIH07CiAKIGNsYXNzIEZha2VUZXh0dXJlVXBsb2FkZXIgOiBwdWJs
aWMgV2ViQ29yZTo6VGV4dHVyZVVwbG9hZGVyIHsKQEAgLTE2OSw3ICsxNjIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCB2b2lkIGJlZ2luVXBsb2FkcygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6Q0NHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRl
eHR1cmUsIFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RSZWN0KSB7
IHRleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KHJl
c291cmNlUHJvdmlkZXIsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Db250ZW50TGF5ZXJDaHJvbWl1bVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Db250ZW50TGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCmluZGV4IDc1MDQxODUzNTYwZjVjNWIxZmMwMmUzZThmNmJmODNmNTFlMGNkNDMu
LmZjZmNjZTExNGMxZmYwN2NhMjRkZDc3OTMyNmEyMjdhZmE0NDIyMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ29udGVudExheWVyQ2hyb21pdW1UZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NvbnRlbnRMYXllckNocm9taXVtVGVz
dC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgVEVTVChDb250ZW50TGF5ZXJDaHJvbWl1bVRlc3QsIENv
bnRlbnRMYXllclBhaW50ZXJXaXRoRGV2aWNlU2NhbGUpCiAgICAgT3BhcXVlUmVjdERyYXdpbmdH
cmFwaGljc0NvbnRleHRQYWludGVyIHBhaW50ZXIob3BhcXVlUmVjdEluTGF5ZXJTcGFjZSwgY29u
dGVudFJlY3QpOwogICAgIE9wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlIG9w
YXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlKCZwYWludGVyKTsKICAgICBNb2Nr
Q29udGVudExheWVyRGVsZWdhdGUgZGVsZWdhdGUoJm9wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRM
YXllckRlbGVnYXRlKTsKLSAgICBSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cj4gdXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250
ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUoJmRlbGVnYXRlKSwgZmFsc2UpOworICAgIFJlZlB0cjxC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiB1cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZSgmZGVs
ZWdhdGUpKTsKIAogICAgIEludFJlY3QgcmVzdWx0aW5nT3BhcXVlUmVjdDsKICAgICB1cGRhdGVy
LT5wcmVwYXJlVG9VcGRhdGUoY29udGVudFJlY3QsIEludFNpemUoMjU2LCAyNTYpLCBjb250ZW50
c1NjYWxlLCBjb250ZW50c1NjYWxlLCByZXN1bHRpbmdPcGFxdWVSZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZUNDR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0dyYXBoaWNzQ29udGV4dC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJlYjRlZjM2NjI5OGE2YzVmMjE1N2UyMWFlM2MwMWEyYWU1YWUwMGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zha2VDQ0dyYXBoaWNzQ29u
dGV4dC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZha2VDQ0dyYXBoaWNzQ29u
dGV4dF9oCisjZGVmaW5lIEZha2VDQ0dyYXBoaWNzQ29udGV4dF9oCisKKyNpbmNsdWRlICJDb21w
b3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGlj
c0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBpbmxpbmUgUGFzc093
blB0cjxXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dD4gY3JlYXRlRmFrZUNDR3JhcGhpY3NDb250
ZXh0KCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNE
KENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcygpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRmFrZUNDR3JhcGhpY3NDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4
IDdjZGJhODA5Y2UyYjY3OTBiMzJmYzliOTk1MDgyM2RiNDBkMDk5NGEuLjFiMDdmM2RmZWM5NmIz
NDVmM2ViNGVkZjcwMjYwNjZkNGIzMzFjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0g
OiBwdWJsaWMgTGF5ZXJSZW5kZXJlckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBGYWtlTGF5ZXJS
ZW5kZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwgV2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpIDogTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgY29udGV4dCwg
VW50aHJvdHRsZWRVcGxvYWRlcikgeyB9CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bShD
Q1JlbmRlcmVyQ2xpZW50KiBjbGllbnQsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92
aWRlcikgOiBMYXllclJlbmRlcmVyQ2hyb21pdW0oY2xpZW50LCByZXNvdXJjZVByb3ZpZGVyLCBV
bnRocm90dGxlZFVwbG9hZGVyKSB7IH0KIAogICAgIC8vIExheWVyUmVuZGVyZXJDaHJvbWl1bSBt
ZXRob2RzLgogCkBAIC0xMjMsOCArMTIzLDkgQEAgcHJvdGVjdGVkOgogICAgIExheWVyUmVuZGVy
ZXJDaHJvbWl1bVRlc3QoKQogICAgICAgICA6IG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyWWVzKDEs
IHRydWUpCiAgICAgICAgICwgbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObygxLCBmYWxzZSkKLSAg
ICAgICAgLCBtX2NvbnRleHQoYWRvcHRQdHIobmV3IEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0
aW9uU2V0dGluZ0NvbnRleHQpKQotICAgICAgICAsIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtKCZt
X21vY2tDbGllbnQsIG1fY29udGV4dC5nZXQoKSkKKyAgICAgICAgLCBtX2NvbnRleHQoQ0NHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBGcmFtZUNvdW50aW5nTWVtb3J5QWxs
b2NhdGlvblNldHRpbmdDb250ZXh0KCkpKSkKKyAgICAgICAgLCBtX3Jlc291cmNlUHJvdmlkZXIo
Q0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKSkKKyAgICAgICAgLCBt
X2xheWVyUmVuZGVyZXJDaHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX3Jlc291cmNlUHJvdmlkZXIu
Z2V0KCkpCiAgICAgewogICAgIH0KIApAQCAtMTQ0LDExICsxNDUsMTQgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5zd2FwQnVmZmVycyhJbnRSZWN0KCkpOwog
ICAgIH0KIAorICAgIEZyYW1lQ291bnRpbmdNZW1vcnlBbGxvY2F0aW9uU2V0dGluZ0NvbnRleHQq
IGNvbnRleHQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2Nh
dGlvblNldHRpbmdDb250ZXh0Kj4obV9jb250ZXh0LT5jb250ZXh0M0QoKSk7IH0KKwogICAgIFdl
YkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbiBtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlclllczsKICAg
ICBXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb24gbV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObzsK
IAotICAgIE93blB0cjxGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0
PiBtX2NvbnRleHQ7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CiAg
ICAgRmFrZUNDUmVuZGVyZXJDbGllbnQgbV9tb2NrQ2xpZW50OworICAgIE93blB0cjxDQ1Jlc291
cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKICAgICBGYWtlTGF5ZXJSZW5kZXJlckNo
cm9taXVtIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtOwogICAgIENDU2NvcGVkU2V0dGluZ3MgbV9z
Y29wZWRTZXR0aW5nczsKIH07CkBAIC0xNTgsMTIgKzE2MiwxMiBAQCBwcm90ZWN0ZWQ6CiAvLyBF
eHBlY3RlZDogaXQgZG9lcyBub3RoaW5nLgogVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRl
c3QsIFN1Z2dlc3RCYWNrYnVmZmVyWWVzV2hlbkl0QWxyZWFkeUV4aXN0c1Nob3VsZERvTm90aGlu
ZykKIHsKLSAgICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJh
Y2tidWZmZXJZZXMpOworICAgIGNvbnRleHQoKS0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dl
c3RIYXZlQmFja2J1ZmZlclllcyk7CiAgICAgRVhQRUNUX0VRKDAsIG1fbW9ja0NsaWVudC5zZXRG
dWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKG1fbGF5ZXJSZW5k
ZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAKICAgICBzd2FwQnVmZmVy
cygpOwotICAgIEVYUEVDVF9FUSgxLCBtX2NvbnRleHQtPmZyYW1lQ291bnQoKSk7CisgICAgRVhQ
RUNUX0VRKDEsIGNvbnRleHQoKS0+ZnJhbWVDb3VudCgpKTsKIH0KIAogLy8gVGVzdCBMYXllclJl
bmRlcmVyQ2hyb21pdW0gZGlzY2FyZEZyYW1lYnVmZmVyIGZ1bmN0aW9uYWxpdHk6CkBAIC0xNzIs
NyArMTc2LDcgQEAgVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RCYWNr
YnVmZmVyWWVzV2hlbkl0QWxyZWFkeUV4aXN0c1Nob3VsZEQKIFRFU1RfRihMYXllclJlbmRlcmVy
Q2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5vU2hvdWxkRGlzY2FyZEJhY2tidWZmZXJB
bmREYW1hZ2VSb290TGF5ZXJXaGlsZU5vdFZpc2libGUpCiB7CiAgICAgbV9sYXllclJlbmRlcmVy
Q2hyb21pdW0uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxv
Y2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOworICAgIGNvbnRleHQoKS0+c2V0TWVt
b3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfRVEo
MSwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBFWFBF
Q1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkp
OwogfQpAQCAtMTgzLDcgKzE4Nyw3IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0
LCBTdWdnZXN0QmFja2J1ZmZlck5vU2hvdWxkRGlzY2FyZEJhY2tidWZmZXJBbmRECiBURVNUX0Yo
TGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb0RvTm90aGluZ1do
ZW5WaXNpYmxlKQogewogICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUodHJ1
ZSk7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNr
YnVmZmVyTm8pOworICAgIGNvbnRleHQoKS0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RI
YXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9tb2NrQ2xpZW50LnNldEZ1bGxS
b290TGF5ZXJEYW1hZ2VDb3VudCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobV9sYXllclJlbmRlcmVy
Q2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIH0KQEAgLTE5NSwxMSArMTk5LDEx
IEBAIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlck5v
RG9Ob3RoaW5nV2hlblZpc2libGUpCiBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwg
U3VnZ2VzdEJhY2tidWZmZXJOb1doZW5JdERvZXNudEV4aXN0U2hvdWxkRG9Ob3RoaW5nKQogewog
ICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUoZmFsc2UpOwotICAgIG1fY29u
dGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAg
ICBjb250ZXh0KCktPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJO
byk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdl
Q291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFt
ZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIAotICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlv
bihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAgICBjb250ZXh0KCktPnNldE1lbW9yeUFs
bG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CiAgICAgRVhQRUNUX0VRKDEsIG1f
bW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAgICAgRVhQRUNUX1RS
VUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIH0K
QEAgLTIxMCw3ICsyMTQsNyBAQCBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3Vn
Z2VzdEJhY2tidWZmZXJOb1doZW5JdERvZXNudEV4aXN0U2hvdWxkRG9ObwogVEVTVF9GKExheWVy
UmVuZGVyZXJDaHJvbWl1bVRlc3QsIERpc2NhcmRlZEJhY2tidWZmZXJJc1JlY3JlYXRlZEZvclNj
b3BlRHVyYXRpb24pCiB7CiAgICAgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0uc2V0VmlzaWJsZShm
YWxzZSk7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVC
YWNrYnVmZmVyTm8pOworICAgIGNvbnRleHQoKS0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dl
c3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBFQ1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJv
bWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tD
bGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogCkBAIC0yMTksMTMgKzIyMywx
MyBAQCBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgRGlzY2FyZGVkQmFja2J1ZmZl
cklzUmVjcmVhdGVkRm9yU2NvcGVEdXJhdGlvbgogICAgIEVYUEVDVF9GQUxTRShtX2xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkpOwogCiAgICAgc3dhcEJ1ZmZl
cnMoKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9jb250ZXh0LT5mcmFtZUNvdW50KCkpOworICAgIEVY
UEVDVF9FUSgxLCBjb250ZXh0KCktPmZyYW1lQ291bnQoKSk7CiB9CiAKIFRFU1RfRihMYXllclJl
bmRlcmVyQ2hyb21pdW1UZXN0LCBGcmFtZWJ1ZmZlckRpc2NhcmRlZEFmdGVyUmVhZGJhY2tXaGVu
Tm90VmlzaWJsZSkKIHsKICAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5zZXRWaXNpYmxlKGZh
bHNlKTsKLSAgICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJh
Y2tidWZmZXJObyk7CisgICAgY29udGV4dCgpLT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2Vz
dEhhdmVCYWNrYnVmZmVyTm8pOwogICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5kZXJlckNocm9t
aXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0Ns
aWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAKQEAgLTMwOSw4ICszMTMsOSBA
QCBURVNUKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbkRvZXNOb3RN
YWtlU3luY2hyb25vdXNDYWxscykKIHsKICAgICBDQ1Njb3BlZFNldHRpbmdzIHNjb3BlZFNldHRp
bmdzOwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPFdl
YkdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KGFkb3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91
c0NhbGxDb250ZXh0KSk7Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRl
cmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIGNvbnRleHQuZ2V0KCkpOworICAgIE93blB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4gY29udGV4dChDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQ
dHIobmV3IEZvcmJpZFN5bmNocm9ub3VzQ2FsbENvbnRleHQpKSk7CisgICAgT3duUHRyPENDUmVz
b3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0
ZShjb250ZXh0LmdldCgpKSk7CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJl
bmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogCiAg
ICAgRVhQRUNUX1RSVUUobGF5ZXJSZW5kZXJlckNocm9taXVtLmluaXRpYWxpemUoKSk7CiB9CkBA
IC0zNTIsOCArMzU3LDkgQEAgVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlh
bGl6YXRpb25XaXRoUXVpY2tseUxvc3RDb250ZXh0RG9lc05vdEFzc2UKIHsKICAgICBDQ1Njb3Bl
ZFNldHRpbmdzIHNjb3BlZFNldHRpbmdzOwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1vY2tD
bGllbnQ7Ci0gICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KGFkb3B0UHRy
KG5ldyBMb3NlQ29udGV4dE9uRmlyc3RHZXRDb250ZXh0KSk7Ci0gICAgRmFrZUxheWVyUmVuZGVy
ZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIGNvbnRleHQuZ2V0
KCkpOworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dChDQ0dyYXBoaWNzQ29u
dGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IExvc2VDb250ZXh0T25GaXJzdEdldENvbnRleHQp
KSk7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jl
c291cmNlUHJvdmlkZXI6OmNyZWF0ZShjb250ZXh0LmdldCgpKSk7CisgICAgRmFrZUxheWVyUmVu
ZGVyZXJDaHJvbWl1bSBsYXllclJlbmRlcmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIHJlc291cmNl
UHJvdmlkZXIuZ2V0KCkpOwogCiAgICAgbGF5ZXJSZW5kZXJlckNocm9taXVtLmluaXRpYWxpemUo
KTsKIH0KQEAgLTM3Myw4ICszNzksOSBAQCBwdWJsaWM6CiBURVNUKExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QyLCBpbml0aWFsaXphdGlvbldpdGhvdXRHcHVNZW1vcnlNYW5hZ2VyRXh0ZW5zaW9u
U3VwcG9ydFNob3VsZERlZmF1bHRUb05vblplcm9BbGxvY2F0aW9uKQogewogICAgIEZha2VDQ1Jl
bmRlcmVyQ2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0KGFkb3B0UHRyKG5ldyBDb250ZXh0VGhhdERvZXNOb3RTdXBwb3J0TWVtb3J5TWFu
YWdtZW50RXh0ZW5zaW9ucykpOwotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJS
ZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0LmdldCgpKTsKKyAgICBPd25QdHI8
Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFk
b3B0UHRyKG5ldyBDb250ZXh0VGhhdERvZXNOb3RTdXBwb3J0TWVtb3J5TWFuYWdtZW50RXh0ZW5z
aW9ucykpKTsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVy
KENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICBGYWtlTGF5
ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwgcmVz
b3VyY2VQcm92aWRlci5nZXQoKSk7CiAKICAgICBsYXllclJlbmRlcmVyQ2hyb21pdW0uaW5pdGlh
bGl6ZSgpOwogCkBAIC0zOTksOCArNDA2LDEwIEBAIHByaXZhdGU6CiBURVNUKExheWVyUmVuZGVy
ZXJDaHJvbWl1bVRlc3QyLCBvcGFxdWVCYWNrZ3JvdW5kKQogewogICAgIEZha2VDQ1JlbmRlcmVy
Q2xpZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPENsZWFyQ291bnRpbmdDb250ZXh0PiBjb250
ZXh0KGFkb3B0UHRyKG5ldyBDbGVhckNvdW50aW5nQ29udGV4dCkpOwotICAgIEZha2VMYXllclJl
bmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0
LmdldCgpKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dChDQ0dyYXBo
aWNzQ29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IENsZWFyQ291bnRpbmdDb250ZXh0KSkp
OworICAgIENsZWFyQ291bnRpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2xlYXJD
b3VudGluZ0NvbnRleHQqPihjY0NvbnRleHQtPmNvbnRleHQzRCgpKTsKKyAgICBPd25QdHI8Q0NS
ZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3Jl
YXRlKGNjQ29udGV4dC5nZXQoKSkpOworICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5
ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCByZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsK
IAogICAgIG1vY2tDbGllbnQucm9vdFJlbmRlclBhc3MoKS0+c2V0SGFzVHJhbnNwYXJlbnRCYWNr
Z3JvdW5kKGZhbHNlKTsKIApAQCAtNDIyLDggKzQzMSwxMCBAQCBURVNUKExheWVyUmVuZGVyZXJD
aHJvbWl1bVRlc3QyLCBvcGFxdWVCYWNrZ3JvdW5kKQogVEVTVChMYXllclJlbmRlcmVyQ2hyb21p
dW1UZXN0MiwgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQogewogICAgIEZha2VDQ1JlbmRlcmVyQ2xp
ZW50IG1vY2tDbGllbnQ7Ci0gICAgT3duUHRyPENsZWFyQ291bnRpbmdDb250ZXh0PiBjb250ZXh0
KGFkb3B0UHRyKG5ldyBDbGVhckNvdW50aW5nQ29udGV4dCkpOwotICAgIEZha2VMYXllclJlbmRl
cmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0Lmdl
dCgpKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dChDQ0dyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlM0QoYWRvcHRQdHIobmV3IENsZWFyQ291bnRpbmdDb250ZXh0KSkpOwor
ICAgIENsZWFyQ291bnRpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q2xlYXJDb3Vu
dGluZ0NvbnRleHQqPihjY0NvbnRleHQtPmNvbnRleHQzRCgpKTsKKyAgICBPd25QdHI8Q0NSZXNv
dXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRl
KGNjQ29udGV4dC5nZXQoKSkpOworICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJS
ZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCByZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKIAog
ICAgIG1vY2tDbGllbnQucm9vdFJlbmRlclBhc3MoKS0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3Jv
dW5kKHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rl
eHR1cmVDb3BpZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVy
ZUNvcGllclRlc3QuY3BwCmluZGV4IGIzZWY0YzJlYmVmYjg0ZDFlNzIzNGI1MzQ2NTE4YzA1NmU5
OTdiM2QuLjBmNTZlZDljYzU3YTYwMjc2MTAzNWE2ODEwNTc2NTVkYzRlYmE3YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwCkBA
IC01MiwzNCArNTIsMzMgQEAgcHVibGljOgogVEVTVChUZXh0dXJlQ29waWVyVGVzdCwgdGVzdERy
YXdBcnJheXNDb3B5KQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJz
OwotICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0ID0gQ0NHcmFwaGljc0Nv
bnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBNb2NrQ29udGV4dCkpOwotICAgIE1vY2tDb250
ZXh0JiBtb2NrQ29udGV4dCA9ICpzdGF0aWNfY2FzdDxNb2NrQ29udGV4dCo+KGNjQ29udGV4dC0+
Y29udGV4dDNEKCkpOworICAgIE93blB0cjxNb2NrQ29udGV4dD4gbW9ja0NvbnRleHQgPSBhZG9w
dFB0cihuZXcgTW9ja0NvbnRleHQpOwogCiAgICAgewogICAgICAgICBJblNlcXVlbmNlIHNlcXVl
bmNlOwogCiAgICAgICAgIC8vIEhlcmUgd2UgY2hlY2sganVzdCBzb21lIGVzc2VudGlhbCBwcm9w
ZXJ0aWVzIG9mIGNvcHlUZXh0dXJlKCkgdG8gYXZvaWQgbWlycm9yaW5nIHRoZSBmdWxsIGltcGxl
bWVudGF0aW9uLgotICAgICAgICBFWFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwgYmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgXykpOworICAgICAgICBFWFBFQ1Rf
Q0FMTCgqbW9ja0NvbnRleHQsIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIF8pKTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUgbGluZWFyIGZpbHRlcmluZyBp
cyBkaXNhYmxlZCBkdXJpbmcgdGhlIGNvcHkuCi0gICAgICAgIEVYUEVDVF9DQUxMKG1vY2tDb250
ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVT
VCkpOwotICAgICAgICBFWFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFH
X0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKKyAgICAgICAgRVhQRUNUX0NB
TEwoKm1vY2tDb250ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6TkVBUkVTVCkpOworICAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIHRleFBh
cmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7CiAKLSAg
ICAgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIGRyYXdBcnJheXMoXywgXywgXykpOworICAg
ICAgICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIGRyYXdBcnJheXMoXywgXywgXykpOwogCiAg
ICAgICAgIC8vIExpbmVhciBmaWx0ZXJpbmcgc2hvdWxkIGJlIHJlc3RvcmVkLgotICAgICAgICBF
WFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTkVBUikpOwotICAgICAgICBFWFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwg
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwor
ICAgICAgICBFWFBFQ1RfQ0FMTCgqbW9ja0NvbnRleHQsIHRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICAgICAgRVhQRUNUX0NBTEwoKm1v
Y2tDb250ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6
TElORUFSKSk7CiAKICAgICAgICAgLy8gRGVmYXVsdCBmcmFtZWJ1ZmZlciBzaG91bGQgYmUgcmVz
dG9yZWQKLSAgICAgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIGJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKKyAgICAgICAgRVhQRUNUX0NBTEwo
Km1vY2tDb250ZXh0LCBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCAwKSk7CiAgICAgfQogCiAgICAgaW50IHNvdXJjZVRleHR1cmVJZCA9IDE7CiAgICAgaW50
IGRlc3RUZXh0dXJlSWQgPSAyOwogICAgIEludFNpemUgc2l6ZSgyNTYsIDEyOCk7Ci0gICAgT3du
UHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY29waWVyKEFjY2VsZXJhdGVkVGV4dHVyZUNv
cGllcjo6Y3JlYXRlKGNjQ29udGV4dC0+Y29udGV4dDNEKCksIGZhbHNlKSk7Ci0gICAgY29waWVy
LT5jb3B5VGV4dHVyZShjY0NvbnRleHQuZ2V0KCksIHNvdXJjZVRleHR1cmVJZCwgZGVzdFRleHR1
cmVJZCwgc2l6ZSk7CisgICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY29waWVy
KEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1vY2tDb250ZXh0LmdldCgpLCBmYWxz
ZSkpOworICAgIGNvcGllci0+Y29weVRleHR1cmUoc291cmNlVGV4dHVyZUlkLCBkZXN0VGV4dHVy
ZUlkLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGJkNTk3
YzFlNmMxOWEzYzc2NGI4Yjk4NThmNmZlY2Y4YzcwMTQ2YzQuLjExYmYxMTViNWUzMDhmNWM1ZTI0
YzgyYTI4YmUxYTAxMjUzMGY0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNDTGF5ZXJUcmVl
VGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKKyNpbmNs
dWRlICJGYWtlQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJGYWtlQ0NMYXllclRyZWVI
b3N0Q2xpZW50LmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJXZWJDb21wb3NpdG9yLmgiCkBAIC03MiwyOSArNzMsMzcgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
VGlsZWRMYXllckNocm9taXVtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoK
LSAgICBUaWxlZExheWVyQ2hyb21pdW1UZXN0KCkgOiBjY0NvbnRleHQoQ0NHcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZTNEKFdlYktpdDo6Q29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSkpKSB7IH0K
LSAgICB2aXJ0dWFsIH5UaWxlZExheWVyQ2hyb21pdW1UZXN0KCkgeyB9CisgICAgVGlsZWRMYXll
ckNocm9taXVtVGVzdCgpCisgICAgICAgIDogbV9jb250ZXh0KFdlYktpdDo6Y3JlYXRlRmFrZUND
R3JhcGhpY3NDb250ZXh0KCkpCisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbFRocmVhZDsKKyAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyID0gQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5U
aWxlZExheWVyQ2hyb21pdW1UZXN0KCkKKyAgICB7CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsVGhyZWFkOworICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXIuY2xlYXIoKTsK
KyAgICB9CiAKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVzKGludCBjb3VudCA9IDUwMCkKICAgICB7
Ci0gICAgICAgIHVwZGF0ZXIudXBkYXRlKGNjQ29udGV4dC5nZXQoKSwgJmFsbG9jYXRvciwgJmNv
cGllciwgJnVwbG9hZGVyLCBjb3VudCk7CisgICAgICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNv
dXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBjb3VudCk7CiAgICAg
fQogcHVibGljOgotICAgIC8vIEZJWE1FOiBSZW5hbWUgdGhlc2UgdG8gYWRkICJtXyIuCi0gICAg
T3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQ7Ci0gICAgQ0NUZXh0dXJlVXBkYXRl
ciB1cGRhdGVyOwotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIGFsbG9jYXRvcjsKLSAgICBGYWtl
VGV4dHVyZUNvcGllciBjb3BpZXI7Ci0gICAgRmFrZVRleHR1cmVVcGxvYWRlciB1cGxvYWRlcjsK
LSAgICBDQ1ByaW9yaXR5Q2FsY3VsYXRvciBwcmlvcml0eUNhbGN1bGF0b3I7CisgICAgT3duUHRy
PENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92
aWRlcj4gbV9yZXNvdXJjZVByb3ZpZGVyOworICAgIENDVGV4dHVyZVVwZGF0ZXIgbV91cGRhdGVy
OworICAgIEZha2VUZXh0dXJlQ29waWVyIG1fY29waWVyOworICAgIEZha2VUZXh0dXJlVXBsb2Fk
ZXIgbV91cGxvYWRlcjsKKyAgICBDQ1ByaW9yaXR5Q2FsY3VsYXRvciBtX3ByaW9yaXR5Q2FsY3Vs
YXRvcjsKIH07CiAKIAogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5
VGlsZXMpCiB7Ci0gICAgQ0NQcmlvcml0eUNhbGN1bGF0b3IgcHJpb3JpdHlDYWxjdWxhdG9yOwot
ICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0g
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOwor
ICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0g
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIEND
UmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFu
YWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwog
ICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBG
YWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwpAQCAtMTA0LDEwICsxMTMsMTAgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIGxheWVyLT5zZXRWaXNp
YmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZh
bGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCi0gICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAg
ICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CiAKQEAgLTExOCw5ICsxMjcsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgLy8gSW52YWxpZGF0ZXMgYm90aCB0aWxlcy4uLgog
ICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OwogICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KLSAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOworICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKICAg
ICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgaGF2ZSB0aGUgZmlyc3QgdGlsZSBzaW5jZSB0aGUgb3RoZXIgdGlsZSB3YXMg
aW52YWxpZGF0ZWQgYnV0IG5vdCBwYWludGVkLgpAQCAtMTMwLDggKzEzOSw3IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKIAogVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiB7Ci0gICAgQ0NQcmlvcml0
eUNhbGN1bGF0b3IgcHJpb3JpdHlDYWxjdWxhdG9yOwotICAgIE93blB0cjxDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsK
ICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExh
eWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkp
OwpAQCAtMTQzLDEwICsxNTEsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVj
dChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoKTsKIAotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsKICAg
ICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CiAKQEAgLTE2Miw3ICsxNzAsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRl
bnRSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGUgYXJlYSBp
cyBvY2NsdWRlZC4KICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgwLCAwLCA1MCwg
NTApKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1f
dXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CiAgICAgdXBkYXRl
VGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwogCkBAIC0xNzcsNyArMTg1LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoRGVsZXRlZFRpbGVzKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
NCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUo
NCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5
ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwpAQCAtMTg3LDEw
ICsxOTUsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGls
ZXMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1
bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAotICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMTk5LDcgKzIwNyw3IEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAgIEVYUEVD
VF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsKIAogICAgIHRleHR1cmVNYW5hZ2Vy
LT5jbGVhclByaW9yaXRpZXMoKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnko
JmFsbG9jYXRvcik7CisgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KG1fcmVzb3Vy
Y2VQcm92aWRlci5nZXQoKSk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0
Qnl0ZXMoNCoxMDI0KjEwMjQpOwogCiAgICAgLy8gVGhpcyBzaG91bGQgZHJvcCB0aGUgdGlsZXMg
b24gdGhlIGltcGwgdGhyZWFkLgpAQCAtMjEwLDkgKzIxOCw5IEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAgIEVYUEVDVF9GQUxTRShsYXllcklt
cGwtPmhhc1RpbGVBdCgwLCAxKSk7CiAKICAgICAvLyBUaGlzIHNob3VsZCByZWNyZWF0ZSBhbmQg
dXBkYXRlIHRoZSBkZWxldGVkIHRleHR1cmVzLgotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBk
YXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7
CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjIz
LDcgKzIzMSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRp
bGVzKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVz
KQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEw
MjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEw
MjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0
dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhy
ZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRy
KG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwpAQCAtMjM4LDEwICsyNDYsMTAgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICBsYXll
ci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZp
c2libGVSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCB2
aXNpYmxlUmVjdCwgMCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKIAogICAgIC8vIFdlIHNob3Vs
ZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgpAQCAtMjU0
LDEwICsyNjIsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFp
bnRUaWxlcykKIAogICAgIC8vIEZvciB0aGUgbmV4dCBmb3VyIHVwZGF0ZXMsIHdlIHNob3VsZCBk
ZXRlY3Qgd2Ugc3RpbGwgbmVlZCBpZGxlIHBhaW50aW5nLgogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgNDsgaSsrKSB7Ci0gICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOworICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlv
cml0eUNhbGN1bGF0b3IpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7CiAKLSAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2li
bGVSZWN0LCAwKTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwg
dmlzaWJsZVJlY3QsIDApOwogICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFp
bnQodmlzaWJsZVJlY3QpKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICAgICAgbGF5
ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKQEAgLTI4MSw3ICsyODksNyBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVk
KQogewogICAgIC8vIFN0YXJ0IHdpdGggMm1iIG9mIG1lbW9yeSwgYnV0IHRoZSB0ZXN0IGlzIGdv
aW5nIHRvIHRyeSB0byB1c2UganVzdCBtb3JlIHRoYW4gMW1iLCBzbyB3ZSByZWR1Y2UgdG8gMW1i
IGxhdGVyLgotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMioxMDI0KjEwMjQs
IDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMioxMDI0KjEwMjQs
IDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5
ZXIxID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIu
Z2V0KCkpKTsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbDEoYWRv
cHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC0zMDUsMTEgKzMxMywxMSBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRG
YWlsZWQpCiAgICAgbGF5ZXIxLT5pbnZhbGlkYXRlQ29udGVudFJlY3QobGF5ZXJSZWN0KTsKIAog
ICAgIC8vIFBhaW50IGEgc2luZ2xlIHRpbGUgaW4gbGF5ZXIyIHNvIHRoYXQgaXQgd2lsbCBpZGxl
IHBhaW50LgotICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxh
dG9yKTsKLSAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRv
cik7CisgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRv
cik7CisgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRv
cik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVy
MS0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgbGF5ZXJSZWN0LCAwKTsKLSAgICBsYXllcjIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsK
KyAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgbGF5ZXJSZWN0LCAwKTsK
KyAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCksIDApOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3Ig
Ym90aCByZW1haW5pbmcgdGlsZXMgaW4gbGF5ZXIyLgogICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+
bmVlZHNJZGxlUGFpbnQobGF5ZXIyUmVjdCkpOwpAQCAtMzIzLDEwICszMzEsMTAgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQog
ICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKDEwMjQgKiAxMDI0KTsK
IAogICAgIC8vIE5vdyBpZGxlIHBhaW50IGxheWVyMi4gV2UgYXJlIGdvaW5nIHRvIHJ1biBvdXQg
b2YgbWVtb3J5IHRob3VnaCEKLSAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9y
aXR5Q2FsY3VsYXRvcik7Ci0gICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOworICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0
eUNhbGN1bGF0b3IpOworICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0
eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsK
LSAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAw
LCAxMDApLCAwKTsKKyAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogCiAgICAgLy8gT2ggd2VsbCwgY29tbWl0IHRoZSBm
cmFtZSBhbmQgcHVzaC4KICAgICB1cGRhdGVUZXh0dXJlcygpOwpAQCAtMzQzLDExICszNTEsMTEg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50
RmFpbGVkKQogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwyLT5oYXNUaWxlQXQoMCwgMikpOwog
CiAgICAgLy8gTm93IGlmIGxheWVyMiBiZWNvbWVzIGZ1bGx5IHZpc2libGUsIHdlIHNob3VsZCBi
ZSBhYmxlIHRvIHBhaW50IGl0IGFuZCBwdXNoIHZhbGlkIHRleHR1cmVzLgotICAgIGxheWVyMi0+
c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICBsYXllcjEtPnNl
dFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXIyLT5zZXRU
ZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXIxLT5zZXRU
ZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3Qo
dXBkYXRlciwgbGF5ZXIyUmVjdCwgMCk7Ci0gICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCBsYXllclJlY3QsIDApOworICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QobV91
cGRhdGVyLCBsYXllcjJSZWN0LCAwKTsKKyAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KG1f
dXBkYXRlciwgbGF5ZXJSZWN0LCAwKTsKIAogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5
ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDEuZ2V0KCkpOwpAQCAtMzYzLDcgKzM3MSw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWlu
dEZhaWxlZCkKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRl
ZE9jY2x1ZGVkVGlsZXMpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0
KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0
KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxG
YWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
ckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
ckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC0zNzcsOSAr
Mzg1LDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRlZE9j
Y2x1ZGVkVGlsZXMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJp
b3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlv
cml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
KTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBk
YXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4
dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwog
CkBAIC0zODksNyArMzk3LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJ
ZGxlUGFpbnRlZE9jY2x1ZGVkVGlsZXMpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwdXNoVGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogewotICAgIE93blB0cjxDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQ
b29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJl
ZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NU
aWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1w
bCgxKSkpOwpAQCAtNDAyLDkgKzQxMCw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwdXNoVGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogICAgIGxheWVyLT5zZXRWaXNpYmxl
Q29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEw
MCwgNTApLCBsYXllci5nZXQoKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMo
cHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9w
cmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCksIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAg
IGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTQxNSw3ICs0
MjMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTWFya2VkRGly
dHlEdXJpbmdQYWludCkKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxl
c0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uTmV4dExheWVyKQogewotICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNv
bnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIxID0g
YWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkp
KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIyID0gYWRvcHRSZWYo
bmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKQEAgLTQzMCwxNSArNDM4LDE1IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5
RHVyaW5nUGFpbnRPbk5leHRMYXllcikKICAgICBsYXllcjItPnNldFZpc2libGVDb250ZW50UmVj
dChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIyLT5pbnZhbGlkYXRlQ29udGVu
dFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCi0gICAgbGF5ZXIxLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIGxheWVyMi0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjEtPnNldFRleHR1cmVQcmlv
cml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjItPnNldFRleHR1cmVQcmlv
cml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7CiAKLSAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIs
IEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogCiAgICAgLy8gSW52
YWxpZGF0ZSBhIHRpbGUgb24gbGF5ZXIxCiAgICAgbGF5ZXIyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXll
cjEuZ2V0KCkpOwotICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QobV91
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKICAgICB1cGRhdGVUZXh0dXJl
cygpOwogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjFJbXBsLmdldCgpKTsKQEAg
LTQ1Myw3ICs0NjEsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVz
TGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiAKIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPblBy
ZXZpb3VzTGF5ZXIpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtl
VGlsZWRMYXllckNocm9taXVtPiBsYXllcjEgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
ckNocm9taXVtPiBsYXllcjIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0
ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOwpAQCAtNDY4LDE0ICs0NzYsMTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9uUHJldmlvdXNMYXkKICAg
ICBsYXllcjItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7
CiAgICAgbGF5ZXIyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOwogCi0gICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOwotICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9y
KTsKKyAgICBsYXllcjEtPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9y
KTsKKyAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9y
KTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBJ
bnZhbGlkYXRlIGEgdGlsZSBvbiBsYXllcjIKICAgICBsYXllcjEtPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxh
eWVyMi5nZXQoKSk7Ci0gICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdCh1
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXIxLT51cGRhdGVD
b250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBs
YXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCksIDApOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGll
c1RvKGxheWVyMUltcGwuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXll
cjJJbXBsLmdldCgpKTsKQEAgLTQ5Nyw3ICs1MDUsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgLy8gV2UgaGF2ZSBlbm91Z2ggbWVt
b3J5IGZvciBvbmx5IHRoZSB2aXNpYmxlIHJlY3QsIHNvIHdlIHdpbGwgcnVuIG91dCBvZiBtZW1v
cnkgaW4gZmlyc3QgaWRsZSBwYWludC4KICAgICBpbnQgbWVtb3J5TGltaXQgPSA0ICogMTAwICog
MTAwOyAvLyAxIHRpbGVzLCA0IGJ5dGVzIHBlciBwaXhlbC4KIAotICAgIE93blB0cjxDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpjcmVhdGUobWVtb3J5TGltaXQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpjcmVhdGUobWVtb3J5TGltaXQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQ
b29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJl
ZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NU
aWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1w
bCgxKSkpOwpAQCAtNTA3LDkgKzUxNSw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0
KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRS
ZWN0KTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRv
cik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CisgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8g
SWRsZS1wYWludGluZyBzaG91bGQgc2VlIG5vIG1vcmUgcHJpb3JpdHkgdGlsZXMgZm9yIHBhaW50
aW5nLgogICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3Qp
KTsKQEAgLTUyMCw5ICs1MjgsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRs
ZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgb24gdGhl
IGltcGwgc2lkZS4KICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgxLCAxKSk7
CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
KyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwog
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIFdlIHNo
b3VsZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlkbGUgcGFpbnQuCiAgICAgRVhQRUNUX0ZB
TFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtNTMwLDcgKzUzOCw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkK
IAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludFplcm9TaXplZExheWVy
KQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMjAwMDAsIDEwMjQpOwor
ICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0g
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMjAwMDAsIDEwMjQsIENDUmVuZGVy
ZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5n
ZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93
blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NU
aWxlZExheWVySW1wbCgxKSkpOwpAQCAtNTQ3LDExICs1NTUsMTEgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludFplcm9TaXplZExheWVyKQogICAgICAgICBsYXllci0+
c2V0VmlzaWJsZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKICAgICAgICAgbGF5ZXItPmludmFs
aWRhdGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKLSAgICAgICAgbGF5ZXItPnNldFRleHR1
cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgICAgIHRleHR1cmVNYW5h
Z2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgICAgICAvLyBFbXB0eSBsYXllcnMgZG9u
J3QgcGFpbnQgb3IgaWRsZS1wYWludC4KLSAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgY29udGVudFJlY3QsIDApOwogCiAgICAgICAgIC8vIEVtcHR5IGxheWVy
cyBkb24ndCBoYXZlIHRpbGVzLgogICAgICAgICBFWFBFQ1RfRVEoMHUsIGxheWVyLT5udW1QYWlu
dGVkVGlsZXMoKSk7CkBAIC01NzEsNyArNTc5LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMpCiAgICAgSW50U2l6ZSBjb250ZW50Qm91
bmRzKDEwMCwgMTAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0KEludFBvaW50Ojp6ZXJvKCks
IGNvbnRlbnRCb3VuZHMpOwogCi0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgy
MDAwMCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSgyMDAwMCwg
MTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
ckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRl
eHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxU
aHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQ
dHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CkBAIC01ODUsOSArNTkzLDkgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMpCiAK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgICAvLyBQYWludCAvIGlk
bGUtcGFpbnQuCi0gICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOworICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0
eUNhbGN1bGF0b3IpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KCk7Ci0gICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVj
dCwgMCk7CisgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIHZpc2li
bGVSZWN0LCAwKTsKIAogICAgICAgICAvLyBOb24tdmlzaWJsZSBsYXllcnMgZG9uJ3QgbmVlZCBp
ZGxlIHBhaW50LgogICAgICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZp
c2libGVSZWN0KSk7CkBAIC02MTEsNyArNjE5LDcgQEAgc3RhdGljIHZvaWQgdGVzdEhhdmVPdXRl
clRpbGVzKEZha2VDQ1RpbGVkTGF5ZXJJbXBsKiBsYXllckltcGwsIGludCB3aWR0aCwgaW50IGgK
IAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmlt
YXRpbmdMYXllcnMpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg4MDAw
KjgwMDAqOCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg4MDAw
KjgwMDAqOCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogCiAgICAgaW50IHRpbGVXaWR0aCA9IEZha2VUaWxl
ZExheWVyQ2hyb21pdW06OnRpbGVTaXplKCkud2lkdGgoKTsKQEAgLTYzNSw3ICs2NDMsNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUFuaW1hdGlu
Z0xheWVycykKICAgICAgICAgICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QodmlzaWJs
ZVJlY3QpOwogICAgICAgICAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50
UmVjdCk7CiAKLSAgICAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOworICAgICAgICAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1f
cHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKIAogICAgICAgICAgICAgLy8gSWYgaWRsZVBhaW50UmVjdCBnaXZlcyBi
YWNrIGEgbm9uLWVtcHR5IHJlc3VsdCB0aGVuIHdlIHNob3VsZCBwYWludCBpdC4gT3RoZXJ3aXNl
LApAQCAtNjQ3LDEwICs2NTUsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlk
bGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAKICAgICAgICAgICAgIC8vIElmIHRo
ZSBsYXllciBpcyB0byBiZSBwcmVwYWludGVkIGF0IGFsbCwgdGhlbiBhZnRlciBmb3VyIHVwZGF0
ZXMgd2Ugc2hvdWxkIGhhdmUgdGhlIG91dGVyIHJvdy9jb2x1bW5zIHBhaW50ZWQuCiAgICAgICAg
ICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7ICsraykgewotICAgICAgICAgICAgICAgIGxheWVy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgICAgICAgICAg
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAg
ICAgICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCi0g
ICAgICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVS
ZWN0LCAwKTsKKyAgICAgICAgICAgICAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRh
dGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgICAgICAgICAgICAgdXBkYXRlVGV4dHVyZXMoKTsK
ICAgICAgICAgICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwogICAgICAgICAgICAgfQpAQCAtNjYwLDEwICs2NjgsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAgICAgICAg
ICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgaWRsZSBwYWludCBwYXN0IHRoZSBvdXRlcm1vc3Qg
dGlsZXMuCiAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZp
c2libGVSZWN0KSk7CiAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7ICsraykgewot
ICAgICAgICAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1
bGF0b3IpOworICAgICAgICAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3By
aW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygpOwogCi0gICAgICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKKyAgICAgICAgICAgICAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QobV91cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgICAgICAgICAg
ICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICAgICAgICAgICAgICBsYXllci0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgICAgICAgICAgfQpAQCAtNjc1LDI0ICs2ODMsMTkg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmlt
YXRpbmdMYXllcnMpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRl
RnJvbVByZXBhcmUpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtl
VGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNo
cm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllcklt
cGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CiAKLSAgICBGYWtlVGV4
dHVyZUFsbG9jYXRvciBmYWtlQWxsb2NhdG9yOwotICAgIEZha2VUZXh0dXJlQ29waWVyIGZha2VD
b3BpZXI7Ci0gICAgRmFrZVRleHR1cmVVcGxvYWRlciBmYWtlVXBsb2FkZXI7Ci0gICAgT3duUHRy
PENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRl
M0QoV2ViS2l0OjpDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoV2Vi
S2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcygpKSk7Ci0KICAgICAvLyBUaGUg
dGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRz
IHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAg
ICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsK
ICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
KTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
KyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwog
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAg
IHVwZGF0ZXIudXBkYXRlKGNjQ29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29w
aWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
bV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgdXBkYXRlVGV4dHVy
ZXMoMTAwMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
IAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAg
LTcwMiwyMSArNzA1LDIxIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlk
YXRlRnJvbVByZXBhcmUpCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNs
ZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gSW52b2tlIHVwZGF0ZUNvbnRlbnRSZWN0IGFnYWlu
LiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQgdXBkYXRlQ29udGVudFJlY3Qgc2hvdWxkbid0IGJlIGlu
dm9rZWQgb24KICAgICAvLyB0aGUgTGF5ZXJUZXh0dXJlVXBkYXRlci4KLSAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAg
IHVwZGF0ZXIudXBkYXRlKGNjQ29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29w
aWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
bV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgdXBkYXRlVGV4dHVy
ZXMoMTAwMCk7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5wcmVwYXJlQ291bnQoKSk7CiAKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0
KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0ZSB0cmln
Z2VycyBpbnZhbGlkYXRlQ29udGVudFJlY3QoKSBiZWluZyBpbnZva2VkIGZyb20gdXBkYXRlQ29u
dGVudFJlY3QuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RU
b0ludmFsaWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKLSAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCksIDApOwotICAgIHVwZGF0ZXIudXBkYXRlKGNjQ29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0
b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKKyAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAg
dXBkYXRlVGV4dHVyZXMoMTAwMCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNo
b3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHVwZGF0ZUNvbnRlbnRSZWN0IGludm9rZWQgaW52YWxp
ZGF0ZS4KLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCksIDApOwotICAgIHVwZGF0ZXIudXBkYXRlKGNjQ29udGV4dC5nZXQoKSwgJmZh
a2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAmZmFrZVVwbG9hZGVyLCAxMDAwKTsKKyAgICBsYXll
ci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwg
MCk7CisgICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiB9CiAKQEAgLTcyNSw4
ICs3MjgsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVj
dFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogICAgIC8vIFRoZSB1cGRhdGVSZWN0ICh0aGF0
IGluZGljYXRlcyB3aGF0IHdhcyBhY3R1YWxseSBwYWludGVkKSBzaG91bGQgYmUgaW4KICAgICAv
LyBsYXllciBzcGFjZSwgbm90IHRoZSBjb250ZW50IHNwYWNlLgogCi0gICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVu
dFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHM+IGxheWVy
ID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcyh0ZXh0dXJlTWFu
YWdlci5nZXQoKSkpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwog
CiAgICAgSW50UmVjdCBsYXllckJvdW5kcygwLCAwLCAzMDAsIDIwMCk7CiAgICAgSW50UmVjdCBj
b250ZW50Qm91bmRzKDAsIDAsIDIwMCwgMjUwKTsKQEAgLTczOSwzMiArNzQzLDMyIEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3Vu
ZHNBcmVTY2FsZWQpCiAgICAgLy8gSG93ZXZlciwgaXQgc2hvdWxkIHN0aWxsIGJlIGluIGxheWVy
IHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KGNvbnRlbnRCb3VuZHMpOwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHBy
aW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJp
b3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVz
KCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMs
IDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRCb3Vu
ZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAzMDAsIDMw
MCAqIDAuOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAK
ICAgICAvLyBBZnRlciB0aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25jZSwgYW5vdGhlciBpbnZhbGlk
YXRlIG9ubHkgbmVlZHMgdG8gdXBkYXRlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyLgotICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29u
dGVudFJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCht
X3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZs
b2F0UmVjdChsYXllckJvdW5kcyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogICAgIHVwZGF0ZVRl
eHR1cmVzKCk7CiAKICAgICAvLyBQYXJ0aWFsIHJlLXBhaW50IHNob3VsZCBhbHNvIGJlIHJlcHJl
c2VudGVkIGJ5IHRoZSB1cGRhdGVSZWN0IGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFj
ZS4KICAgICBJbnRSZWN0IHBhcnRpYWxEYW1hZ2UoMzAsIDEwMCwgMTAsIDEwKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KHBhcnRpYWxEYW1hZ2UpOwotICAgIGxheWVyLT5zZXRU
ZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRh
dGVyLCBjb250ZW50Qm91bmRzLCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91
cGRhdGVyLCBjb250ZW50Qm91bmRzLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9h
dFJlY3QoNDUsIDgwLCAxNSwgOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogfQogCiBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2Nh
bGVDaGFuZ2VzKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0
KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0
KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBs
KGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwpAQCAtNzc4LDkgKzc4Miw5
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVu
Q29udGVudHNTY2FsZUNoYW5nZXMpCiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0
KDAsIDAsIDEwMCwgMTAwKSwgbGF5ZXItPmxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkpOwogCiAgICAg
Ly8gUHVzaCB0aGUgdGlsZXMgdG8gdGhlIGltcGwgc2lkZSBhbmQgY2hlY2sgdGhhdCB0aGVyZSBp
cyBleGFjdGx5IG9uZS4KLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlD
YWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNh
bGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEw
MCksIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5w
dXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJ
bXBsLT5oYXNUaWxlQXQoMCwgMCkpOwpAQCAtNzk1LDkgKzc5OSw5IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5n
ZXMpCiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDEwMCwgMTAwKSwg
bGF5ZXItPmxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkpOwogCiAgICAgLy8gVGhlIGltcGwgc2lkZSBz
aG91bGQgZ2V0IDJ4MiB0aWxlcyBub3cuCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1f
cHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwg
MCwgMjAwLCAyMDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwgMCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAg
ICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIEVYUEVDVF9U
UlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKQEAgLTgwOCw4ICs4MTIsOCBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRz
U2NhbGVDaGFuZ2VzKQogICAgIC8vIEludmFsaWRhdGUgdGhlIGVudGlyZSBsYXllciBhZ2Fpbiwg
YnV0IGRvIG5vdCBwYWludC4gQWxsIHRpbGVzIHNob3VsZCBiZSBnb25lIG5vdyBmcm9tIHRoZQog
ICAgIC8vIGltcGwgc2lkZS4KICAgICBsYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0gICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMSwgMCwgMCwgMSksIDApOworICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgxLCAwLCAwLCAxKSwg
MCk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgbGF5
ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKQEAgLTg1MCw3ICs4NTQsNyBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAg
IGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgY2NMYXllclRy
ZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDMwMCkpOwogCi0gICAgY2NMYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgbWVtb3J5TGltaXQpOworICAgIGNjTGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgbWVtb3J5TGltaXQpOwogCiAgICAg
Ly8gV2UnbGwgc2tpcCB0aGUgcm9vdCBsYXllci4KICAgICBFWFBFQ1RfVFJVRShyb290TGF5ZXIt
PnNraXBzRHJhdygpKTsKQEAgLTg2MSwxMCArODY1LDEwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgLy8gUmVtb3ZlIHRoZSBjaGlsZCBs
YXllci4KICAgICByb290TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSAgICBjY0xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBtZW1vcnlMaW1pdCk7CisgICAgY2NMYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCBtZW1vcnlMaW1pdCk7CiAgICAgRVhQ
RUNUX0ZBTFNFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOwogCi0gICAgY2NMYXllclRyZWVIb3N0
LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmNsZWFyQWxsTWVtb3J5KCZhbGxvY2F0b3IpOwor
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jbGVhckFsbE1l
bW9yeShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0
Um9vdExheWVyKDApOwogICAgIGNjTGF5ZXJUcmVlSG9zdC5jbGVhcigpOwogICAgIFdlYktpdDo6
V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKQEAgLTg3MiwxNiArODc2LDE2IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAKIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCByZXNpemVUb1NtYWxsZXIpCiB7Ci0gICAgT3duUHRyPENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg2MCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250
ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRv
cHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsK
IAogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg3MDAsIDcwMCkpOwogICAgIGxheWVyLT5z
ZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwogICAgIGxheWVy
LT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwogCi0gICAg
bGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNzAwLCA3MDApLCAwKTsKKyAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7
CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMjAwLCAyMDApKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMjAwLCAyMDApKTsKQEAgLTg4OSw3
ICs4OTMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFsbGVy
KQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaHVnZUxheWVyVXBkYXRlQ3Jhc2gp
CiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg2MCoxMDI0KjEwMjQsIDEw
MjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAqMTAyNCoxMDI0LCAx
MDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVy
Q2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4
dHVyZU1hbmFnZXIuZ2V0KCkpKTsKIAogICAgIGludCBzaXplID0gMSA8PCAzMDsKQEAgLTg5OCw5
ICs5MDIsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaHVnZUxheWVyVXBkYXRl
Q3Jhc2gpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIHNp
emUsIHNpemUpKTsKIAogICAgIC8vIEVuc3VyZSBubyBjcmFzaCBmb3IgYm91bmRzIHdoZXJlIHNp
emUgKiBzaXplIHdvdWxkIG92ZXJmbG93IGFuIGludC4KLSAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50
UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCht
X3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNzAwLCA3MDApLCAwKTsKIH0KIAogVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQpAQCAtOTI5LDE3ICs5MzMsMTcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogICAgIGNjTGF5
ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAyMDApKTsKIAogICAgIC8v
IEZ1bGwgdXBkYXRlIG9mIGFsbCA2IHRpbGVzLgotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAg
IGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CiAgICAgICAg
IHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRSh1
cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShtX3VwZGF0ZXIu
aGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAg
ICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0
ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAg
ICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQo
KTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAg
ICB9CkBAIC05NDcsMTcgKzk1MSwxNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cGFydGlhbFVwZGF0ZXMpCiAKICAgICAvLyBGdWxsIHVwZGF0ZSBvZiAzIHRpbGVzIGFuZCBwYXJ0
aWFsIHVwZGF0ZSBvZiAzIHRpbGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3Qo
SW50UmVjdCgwLCAwLCAzMDAsIDE1MCkpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIGNj
TGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
ckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CiAgICAgICAgIHVw
ZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRSh1cGRh
dGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShtX3VwZGF0ZXIuaGFz
TW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAg
ICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNv
dW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAg
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsK
ICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICB9
CkBAIC05NjgsMTQgKzk3MiwxNCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFy
dGlhbFVwZGF0ZXMpCiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwo
YWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7Ci0gICAgICAgIGNjTGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkpOworICAgICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0
ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICB1cGRhdGVU
ZXh0dXJlcyg0KTsKICAgICAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUodXBkYXRlci5o
YXNNb3JlVXBkYXRlcygpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUobV91cGRhdGVyLmhhc01vcmVV
cGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xl
YXJVcGRhdGVDb3VudCgpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQ
RUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgp
KTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAg
ICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgfQpAQCAt
OTk1LDE0ICs5OTksMTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxV
cGRhdGVzKQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CiAgICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0
UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwotICAgICAgICBjY0xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKKyAgICAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgdXBkYXRlVGV4dHVy
ZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9y
ZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRl
cygpKTsKICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBk
YXRlQ291bnQoKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9F
USgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0g
ICAgICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBF
WFBFQ1RfRkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAgICBs
YXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIH0KQEAgLTEwMTMs
MTYgKzEwMTcsMTkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRh
dGVzKQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
CiAgICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRy
KG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwotICAgICAgICBjY0xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KTsKKyAgICAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMo
NCk7CiAgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVV
cGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVz
KCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRh
dGVDb3VudCgpOwogICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0
KCkpOwogICAgIH0KICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKLSAg
ICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y2xlYXJBbGxNZW1v
cnkoJmFsbG9jYXRvcik7CisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKKyAgICAgICAgY2NMYXllclRyZWVIb3N0LT5jb250ZW50c1RleHR1cmVNYW5h
Z2VyKCktPmNsZWFyQWxsTWVtb3J5KG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CisgICAgfQog
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKDApOwogICAgIGNjTGF5ZXJUcmVlSG9z
dC5jbGVhcigpOwogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKQEAgLTEw
MzAsNyArMTAzNyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBk
YXRlcykKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhv
dXRPY2NsdXNpb24pCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtl
VGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNo
cm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlz
IDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4K
QEAgLTEwMzgsMTUgKzEwNDUsMTUgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRp
bGVzUGFpbnRlZFdpdGhvdXRPY2NsdXNpb24pCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250
ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBFWFBFQ1RfRVEo
MiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7
CiB9CiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2Nj
bHVzaW9uKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEw
MjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEw
MjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2Nj
bHVkZWQ7CiAKQEAgLTEwNTksOSArMTA2Niw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29u
dGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKIAotICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihv
Y2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsK
QEAgLTEwNzIsNyArMTA3OSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxl
c1BhaW50ZWRXaXRoT2NjbHVzaW9uKQogCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJl
Y3QoMjUwLCAyMDAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVj
dChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAm
b2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0yLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVk
Lm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTA4
Myw3ICsxMDkwLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRl
ZFdpdGhPY2NsdXNpb24pCiAKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyNTAs
IDI1MCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRl
ciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0
ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRl
ZCk7CiAgICAgRVhQRUNUX0VRKDM2LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3
TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTA5Myw3ICsxMTAw
LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2Ns
dXNpb24pCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRo
T2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiB7Ci0gICAgT3duUHRyPENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBv
b2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVm
KG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIApAQCAtMTEwNyw5ICsxMTE0LDkgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25B
bmRWaXNpYmxpdHlDb25zdHJhaW50cykKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCAzNjApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDYwMCwgMzYwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzYwKSwgJm9jY2x1ZGVkKTsKICAg
ICBFWFBFQ1RfRVEoMjQtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBh
cmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJp
Y3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTExMjIsOSArMTEyOSw5IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9u
QW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJl
Y3QoMjAwLCAyMDAsIDMwMCwgMTUwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVj
dChJbnRSZWN0KDAsIDAsIDYwMCwgMzUwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0
aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgNjAwLCAzNTApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNTApLCAmb2NjbHVkZWQpOwogICAg
IEVYUEVDVF9FUSgyNC02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmlj
cygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTEzNyw5ICsxMTQ0LDkgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25B
bmRWaXNpYmxpdHlDb25zdHJhaW50cykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVj
dCgyMDAsIDIwMCwgMzAwLCAxNTApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCAzNDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCA2MDAsIDM0MCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDM0MCksICZvY2NsdWRlZCk7CiAgICAg
RVhQRUNUX0VRKDI0LTYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
UmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMTUwLDcgKzExNTcsNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFu
ZFZpc2libGl0eUNvbnN0cmFpbnRzKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKIHsKLSAgICBPd25QdHI8Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50
UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRS
ZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwogCkBAIC0xMTYyLDExICsxMTY5LDE0
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc05vdFBhaW50ZWRXaXRob3V0
SW52YWxpZGF0aW9uKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAw
LCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9y
aXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygp
OwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYw
MCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEo
MzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7Ci0gICAgdXBkYXRlVGV4dHVyZXMoKTsKKyAgICB7CisgICAgICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgICAgICB1cGRhdGVUZXh0dXJlcygpOworICAgIH0K
IAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9h
ZGVkT3BhcXVlKCksIDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0
cmljcygpLnBpeGVsc1VwbG9hZGVkVHJhbnNsdWNlbnQoKSwgMzMwMDAwLCAxKTsKQEAgLTExNzUs
NyArMTE4NSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc05vdFBhaW50
ZWRXaXRob3V0SW52YWxpZGF0aW9uKQogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5jbGVhclByZXBhcmVSZWN0Q291bnQoKTsKIAogICAgIC8vIFJlcGFpbnQgd2l0aG91dCBt
YXJraW5nIGl0IGRpcnR5LiBUaGUgMyBjdWxsZWQgdGlsZXMgd2lsbCBiZSBwcmUtcGFpbnRlZCBu
b3cuCi0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwg
NjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3Vw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9F
USgzLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgp
KTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1Vw
bG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTE4NSw3ICsxMTk1LDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlkYXRpb24pCiAK
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9u
QW5kVHJhbnNmb3JtcykKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
Q2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1ZGVkOwogCkBAIC0xMjAyLDkgKzEyMTIsOSBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFRyYW5zZm9ybXMpCiAgICAg
b2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTApKTsKICAgICBs
YXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJv
dW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2Fs
Y3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxj
dWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDAp
LCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0zLCBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAog
ICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVk
T3BhcXVlKCksIDAsIDEpOwpAQCAtMTIxNCw3ICsxMjI0LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRUcmFuc2Zvcm1zKQogCiBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFu
ZFNjYWxpbmcpCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQq
MTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQq
MTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGls
ZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9t
aXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBv
Y2NsdWRlZDsKIApAQCAtMTIzMCw5ICsxMjQwLDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIG9jY2x1ZGVk
LnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5z
ZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkp
KTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2
MDApKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9y
KTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3Ip
OwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2Ns
dWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgLy8gVGhlIGNvbnRlbnQgaXMgaGFsZiB0
aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgKHNvIHRoZSBudW1iZXIgb2YgdGlsZXMgaXMgZmV3ZXIpLgog
ICAgIC8vIEluIHRoaXMgY2FzZSwgdGhlIGNvbnRlbnQgaXMgMzAweDMwMCwgYW5kIHNpbmNlIHRo
ZSB0aWxlIHNpemUgaXMgMTAwLCB0aGUKICAgICAvLyBudW1iZXIgb2YgdGlsZXMgM3gzLgpAQCAt
MTI1MCw5ICsxMjYwLDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFp
bnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJ
bnRSZWN0KDIwMCwgMjAwLCAzMDAsIDIwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVu
dFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5
ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCks
ICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRl
ZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEy
NzAsOSArMTI4MCw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50
ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50
UmVjdCgxMDAsIDEwMCwgMTUwLCAxMDApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRS
ZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAm
b2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQu
b3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMjgy
LDkgKzEyOTIsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRl
ZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbFRocmVhZDsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhp
cyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzIGluIHZhcmlvdXMgd2F5cy4K
IApAQCAtMTI5OSwxMyArMTMxMCwxMyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50
UmVjdCh2aXNpYmxlQm91bmRzKTsKICAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7CiAKLSAg
ICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBs
YXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8vIElmIHRoZSBsYXll
ciBkb2Vzbid0IHBhaW50IG9wYXF1ZSBjb250ZW50LCB0aGVuIHRoZSB2aXNpYmxlQ29udGVudE9w
YXF1ZVJlZ2lvbiBzaG91bGQgYmUgZW1wdHkuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5pbnZh
bGlkYXRlQ29udGVudFJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAg
ICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwog
ICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CiAKQEAgLTEzMTgsNyAr
MTMyOSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9w
YXF1ZVJlZ2lvbikKICAgICBvcGFxdWVQYWludFJlY3QgPSBJbnRSZWN0KDEwLCAxMCwgOTAsIDE5
MCk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50
UmVjdChvcGFxdWVQYWludFJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3Qo
Y29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNv
bnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1f
dXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICB1cGRhdGVUZXh0dXJlcygp
OwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9u
KCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlz
aWJsZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKQEAgLTEzMzEsNyArMTM0Miw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJl
Z2lvbikKIAogICAgIC8vIElmIHdlIHBhaW50IGFnYWluIHdpdGhvdXQgaW52YWxpZGF0aW5nLCB0
aGUgc2FtZSBzdHVmZiBzaG91bGQgYmUgb3BhcXVlLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKLSAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2Nj
bHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXll
ci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRl
cnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMu
Ym91bmRzKCkpOwpAQCAtMTM0Niw3ICsxMzU3LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIC8vIG5vdCBiZSBhZmZlY3Rl
ZC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRS
ZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0
KDAsIDAsIDEsIDEpKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29u
dGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91
cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7
CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24o
KTsKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNp
YmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwpAQCAtMTM2MSw3ICsxMzcyLDcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVn
aW9uKQogICAgIC8vIG5vdCBiZSBhZmZlY3RlZC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDEwLCAxMCwgMSwgMSkpOwotICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2Ns
dWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVy
LT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVy
c2VjdGlvbihJbnRSZWN0KDEwLCAxMDAsIDkwLCAxMDApLCB2aXNpYmxlQm91bmRzKSwgb3BhcXVl
Q29udGVudHMuYm91bmRzKCkpOwpAQCAtMTM3NSw5ICsxMzg2LDEwIEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKIAogVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBpeGVsc1BhaW50ZWRNZXRyaWNzKQogewotICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6
OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CisgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEw
MHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcyBpbiB2
YXJpb3VzIHdheXMuCiAKQEAgLTEzOTIsMTMgKzE0MDQsMTMgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHBpeGVsc1BhaW50ZWRNZXRyaWNzKQogICAgIGxheWVyLT5zZXRWaXNpYmxl
Q29udGVudFJlY3QodmlzaWJsZUJvdW5kcyk7CiAgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5KDEp
OwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7
CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsK
ICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBJbnZh
bGlkYXRlcyBhbmQgcGFpbnRzIHRoZSB3aG9sZSBsYXllci4KICAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5
ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVk
ZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+
dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250
ZW50cy5pc0VtcHR5KCkpOwpAQCAtMTQxMyw3ICsxNDI1LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHBpeGVsc1BhaW50ZWRNZXRyaWNzKQogICAgIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMSwgMSkpOwogICAgIGxheWVy
LT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCg1MCwgMjAwLCAxMCwgMTApKTsKLSAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVk
KTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRz
LCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgb3BhcXVlQ29udGVudHMg
PSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJVRShv
cGFxdWVDb250ZW50cy5pc0VtcHR5KCkpOwpAQCAtMTQ3NCwxNCArMTQ4NiwxNCBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0U3Vy
ZmFjZUNhbnRCZUFsbG9jYQogICAgIHJvb3QtPmludmFsaWRhdGVDb250ZW50UmVjdChyb290UmVj
dCk7CiAgICAgY2hpbGQtPmludmFsaWRhdGVDb250ZW50UmVjdChjaGlsZFJlY3QpOwogICAgIGNo
aWxkMi0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNoaWxkMlJlY3QpOwotICAgIGNjTGF5ZXJUcmVl
SG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewogICAgICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoMTAw
MCk7CiAgICAgICAgIEVYUEVDVF9FUSg2LCByb290LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDMsIGNoaWxkLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDMsIGNo
aWxkMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogCiAgICAgICAgIHJvb3QtPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKICAgICAgICAgY2hpbGQt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKQEAgLTE1MDks
MTQgKzE1MjEsMTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGRvbnRBbGxvY2F0
ZUNvbnRlbnRzV2hlblRhcmdldFN1cmZhY2VDYW50QmVBbGxvY2EKICAgICByb290LT5pbnZhbGlk
YXRlQ29udGVudFJlY3Qocm9vdFJlY3QpOwogICAgIGNoaWxkLT5pbnZhbGlkYXRlQ29udGVudFJl
Y3QoY2hpbGRSZWN0KTsKICAgICBjaGlsZDItPmludmFsaWRhdGVDb250ZW50UmVjdChjaGlsZDJS
ZWN0KTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCAoMyAqIDIg
KyAzICogMSkgKiAoMTAwICogMTAwKSAqIDQpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKG1fdXBkYXRlciwgKDMgKiAyICsgMyAqIDEpICogKDEwMCAqIDEwMCkgKiA0KTsKICAg
ICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgICAg
ICB1cGRhdGVUZXh0dXJlcygxMDAwKTsKICAgICAgICAgRVhQRUNUX0VRKDYsIHJvb3QtPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1RfRVEo
MCwgY2hpbGQtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoMCwgY2hpbGQyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRh
dGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMo
KSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAK
ICAgICAgICAgcm9vdC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3Vu
dCgpOwogICAgICAgICBjaGlsZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRh
dGVDb3VudCgpOwpAQCAtMTU0NSwxNCArMTU1NywxNCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFsbG9j
YQogICAgIHJvb3QtPmludmFsaWRhdGVDb250ZW50UmVjdChyb290UmVjdCk7CiAgICAgY2hpbGQt
PmludmFsaWRhdGVDb250ZW50UmVjdChjaGlsZFJlY3QpOwogICAgIGNoaWxkMi0+aW52YWxpZGF0
ZUNvbnRlbnRSZWN0KGNoaWxkMlJlY3QpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKHVwZGF0ZXIsICgzICogMSkgKiAoMTAwICogMTAwKSAqIDQpOworICAgIGNjTGF5ZXJUcmVl
SG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgKDMgKiAxKSAqICgxMDAgKiAxMDApICogNCk7
CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAg
ICAgICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCByb290LT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQRUNU
X0VRKDAsIGNoaWxkLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsK
ICAgICAgICAgRVhQRUNUX0VRKDAsIGNoaWxkMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRh
dGVzKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkp
OwogCiAgICAgICAgIHJvb3QtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRl
Q291bnQoKTsKICAgICAgICAgY2hpbGQtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
VXBkYXRlQ291bnQoKTsKQEAgLTE1NzQsNyArMTU4NiwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFs
bG9jYQogICAgIH0KICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKLSAg
ICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y2xlYXJBbGxNZW1v
cnkoJmFsbG9jYXRvcik7CisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKKyAgICAgICAgY2NMYXllclRyZWVIb3N0LT5jb250ZW50c1RleHR1cmVNYW5h
Z2VyKCktPmNsZWFyQWxsTWVtb3J5KG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CisgICAgfQog
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKDApOwogICAgIGNjTGF5ZXJUcmVlSG9z
dC5jbGVhcigpOwogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKQEAgLTE2
MDUsNyArMTYyMCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIE93blB0cjxUcmFja2luZ0xh
eWVyUGFpbnRlcj4gdHJhY2tpbmdMYXllclBhaW50ZXIoVHJhY2tpbmdMYXllclBhaW50ZXI6OmNy
ZWF0ZSgpKTsKICAgICAgICAgbV90cmFja2luZ0xheWVyUGFpbnRlciA9IHRyYWNraW5nTGF5ZXJQ
YWludGVyLmdldCgpOwotICAgICAgICBtX2xheWVyVGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUodHJhY2tpbmdMYXllclBhaW50ZXIucmVsZWFz
ZSgpLCBmYWxzZSk7CisgICAgICAgIG1fbGF5ZXJUZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSh0cmFja2luZ0xheWVyUGFpbnRlci5yZWxlYXNl
KCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5VcGRhdGVUcmFja2luZ1RpbGVkTGF5ZXJDaHJvbWl1
bSgpIHsgfQogCkBAIC0xNjIxLDggKzE2MzYsNyBAQCBwcml2YXRlOgogCiBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgbm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRlZER1
cmluZ1BhaW50KQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQwMDAwMDAs
IDQwMDAwMDApKTsKLSAgICBDQ1ByaW9yaXR5Q2FsY3VsYXRvciBjYWxjdWxhdG9yOworICAgIE93
blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyKENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQwMDAwMDAsIDQwMDAwMDAsIENDUmVuZGVyZXI6
OkNvbnRlbnRQb29sKSk7CiAKICAgICBSZWZQdHI8VXBkYXRlVHJhY2tpbmdUaWxlZExheWVyQ2hy
b21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IFVwZGF0ZVRyYWNraW5nVGlsZWRMYXllckNocm9t
aXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKQEAgLTE2MzUsMjggKzE2NDksMzAgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG5vbkludGVnZXJDb250ZW50c1NjYWxlSXNOb3RE
aXN0b3J0ZWREdXJpbmdQYWludCkKICAgICBFWFBFQ1RfRVEoY29udGVudFJlY3Quc2l6ZSgpLCBs
YXllci0+Y29udGVudEJvdW5kcygpKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0
KGNvbnRlbnRSZWN0KTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhjYWxjdWxh
dG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0
b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgIC8v
IFVwZGF0ZSB0aGUgd2hvbGUgdGlsZS4KLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBk
YXRlciwgY29udGVudFJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3Vw
ZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKICAgICBsYXllci0+dHJhY2tpbmdMYXllclBhaW50ZXIo
KS0+cmVzZXRQYWludGVkUmVjdCgpOwogCiAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3Qo
KSwgbGF5ZXItPnRyYWNraW5nTGF5ZXJQYWludGVyKCktPnBhaW50ZWRSZWN0KCkpOwogCi0gICAg
dXBkYXRlVGV4dHVyZXMoKTsKKyAgICB7CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsVGhyZWFkOworICAgICAgICB1cGRhdGVUZXh0dXJlcygpOworICAgIH0KIAogICAgIC8v
IEludmFsaWRhdGUgdGhlIGVudGlyZSBsYXllciBpbiBjb250ZW50IHNwYWNlLiBXaGVuIHBhaW50
aW5nLCB0aGUgcmVjdCBnaXZlbiB0byB3ZWJraXQgc2hvdWxkIG1hdGNoIHRoZSBsYXllcidzIGJv
dW5kcy4KICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKLSAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudFJlY3QsIDApOworICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKIAog
ICAgIEVYUEVDVF9JTlRfUkVDVF9FUShsYXllclJlY3QsIGxheWVyLT50cmFja2luZ0xheWVyUGFp
bnRlcigpLT5wYWludGVkUmVjdCgpKTsKIH0KIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIG5vbkludGVnZXJDb250ZW50c1NjYWxlSXNOb3REaXN0b3J0ZWREdXJpbmdJbnZhbGlkYXRp
b24pCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNDAwMDAwMCwgNDAwMDAw
MCkpOwotICAgIENDUHJpb3JpdHlDYWxjdWxhdG9yIGNhbGN1bGF0b3I7CisgICAgT3duUHRyPEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIoQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoNDAwMDAwMCwgNDAwMDAwMCwgQ0NSZW5kZXJlcjo6Q29udGVu
dFBvb2wpKTsKIAogICAgIFJlZlB0cjxVcGRhdGVUcmFja2luZ1RpbGVkTGF5ZXJDaHJvbWl1bT4g
bGF5ZXIgPSBhZG9wdFJlZihuZXcgVXBkYXRlVHJhY2tpbmdUaWxlZExheWVyQ2hyb21pdW0odGV4
dHVyZU1hbmFnZXIuZ2V0KCkpKTsKIApAQCAtMTY2OCwyMCArMTY4NCwyMyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgbm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRl
ZER1cmluZ0ludmFsaQogICAgIEludFJlY3QgY29udGVudFJlY3QoSW50UG9pbnQoKSwgbGF5ZXIt
PmNvbnRlbnRCb3VuZHMoKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChjb250
ZW50UmVjdCk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMoY2FsY3VsYXRvcik7
CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsK
ICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBVcGRh
dGUgdGhlIHdob2xlIHRpbGUuCi0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIs
IGNvbnRlbnRSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVy
LCBjb250ZW50UmVjdCwgMCk7CiAgICAgbGF5ZXItPnRyYWNraW5nTGF5ZXJQYWludGVyKCktPnJl
c2V0UGFpbnRlZFJlY3QoKTsKIAogICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KCksIGxh
eWVyLT50cmFja2luZ0xheWVyUGFpbnRlcigpLT5wYWludGVkUmVjdCgpKTsKIAotICAgIHVwZGF0
ZVRleHR1cmVzKCk7CisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKKyAgICAgICAgdXBkYXRlVGV4dHVyZXMoKTsKKyAgICB9CiAKICAgICAvLyBJbnZh
bGlkYXRlIHRoZSBlbnRpcmUgbGF5ZXIgaW4gbGF5ZXIgc3BhY2UuIFdoZW4gcGFpbnRpbmcsIHRo
ZSByZWN0IGdpdmVuIHRvIHdlYmtpdCBzaG91bGQgbWF0Y2ggdGhlIGxheWVyJ3MgYm91bmRzLgog
ICAgIGxheWVyLT5zZXROZWVkc0Rpc3BsYXlSZWN0KGxheWVyUmVjdCk7Ci0gICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKKyAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CiAKICAgICBFWFBFQ1Rf
SU5UX1JFQ1RfRVEobGF5ZXJSZWN0LCBsYXllci0+dHJhY2tpbmdMYXllclBhaW50ZXIoKS0+cGFp
bnRlZFJlY3QoKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153154</attachid>
            <date>2012-07-18 18:31:39 -0700</date>
            <delta_ts>2012-07-18 19:46:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-91044-20120718183139.patch</filename>
            <type>text/plain</type>
            <size>350651</size>
            <attacher name="Antoine Labour">piman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBiNzlhNTg5ZjAxMGQ2
YTA3MTQ5ZTc0MjE3OTIwZDUyM2JjZTU1NWE4Li45M2Q4MmE3NzExNzY3NzIyNGNmM2E1MDRjMTMz
MGNlMmVlYzZhOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0wNy0xMSAg
QW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBJbnRyb2R1Y2UgQ0NSZXNvdXJjZVByb3ZpZGVyLCByZXBsYWNpbmcgVGV4dHVyZUFsbG9jYXRv
ciBhbmQgaGlkaW5nIHRleHR1cmVzIGZyb20gY2xpZW50cyB0byBhbGxvdyB0cmFuc3BvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAgICAgIFRoaXMgZG9lcyBz
ZXZlcmFsIHRoaW5nczoKKyAgICAgICAgLSBBZGQgYSBDQ1Jlc291cmNlUHJvdmlkZXIgY2xhc3Ms
IHRoYXQgaGlkZXMgdGV4dHVyZXMgYW5kIHRoZSAzRCBjb250ZXh0CisgICAgICAgIGZyb20gbGF5
ZXJzIChleGNlcHQgdGhvc2UgdGhhdCBuZWVkIGl0KS4gSW5zdGVhZCBsYXllcnMgbWFuYWdlCisg
ICAgICAgICJyZXNvdXJjZXMiLiBJbiB0aGUgZnV0dXJlLCByZXNvdXJjZXMgYXJlIGV4cGVjdGVk
IHRvIGJlIHRyYW5zcG9ydGFibGUKKyAgICAgICAgdG8gYSAicGFyZW50IiBDQ1Jlc291cmNlUHJv
dmlkZXIgdG8gYWxsb3cgZmxhdHRlbmluZyBvZiBuZXN0ZWQKKyAgICAgICAgY29tcG9zaXRvcnMu
CisgICAgICAgIC0gUmVwbGFjZSB0ZXh0dXJlIGlkcyBieSByZXNvdXJjZSBpZHMgaW4gRHJhd1F1
YWRzIChhbGxvd2luZyB0aGVtIHRvIGJlCisgICAgICAgIHNlcmlhbGl6YWJsZSkuCisgICAgICAg
IC0gUmVwbGFjZSBUZXh0dXJlQWxsb2NhdG9yIHVzZXMgYnkgdGhlIENDUmVzb3VyY2VQcm92aWRl
ciBjbGFzcy4KKyAgICAgICAgLSBVcGxvYWQgb2YgZGF0YSBpcyBkb25lIHRocm91Z2ggdGhlIEND
UmVzb3VyY2VQcm92aWRlciBpbnN0ZWFkIG9mCisgICAgICAgIGV4cGxpY2l0IEdMIGNhbGxzLgor
ICAgICAgICAtIEV4dGVybmFsIHRleHR1cmVzIGFyZSB3cmFwcGVkIGludG8gYSByZXNvdXJjZSBh
dCBkcmF3IHRpbWUgKHNlZQorICAgICAgICBjYXZlYXQvRklYTUUgaW4gQ0NUZXh0dXJlTGF5ZXJJ
bXBsKS4KKyAgICAgICAgLSBSZW5kZXJpbmcgd2l0aCB0aGUgcmVzb3VyY2VzIGlzIGRvbmUgdGhy
b3VnaCBhbiBleHBsaWNpdAorICAgICAgICBiZWdpblJlbmRlckZyb20vZW5kUmVuZGVyRnJvbSB0
aGF0IGV4cG9zZXMgdGhlIHRleHR1cmUgb25seSBiZXR3ZWVuIHRoYXQKKyAgICAgICAgcGFpci4K
KyAgICAgICAgLSBNZXJnZSBhbGwgdGhlIExheWVyVGV4dHVyZVN1YkltYWdlIGluc3RhbmNlcyAo
b25lIHBlciBsYXllciksIGludG8gYQorICAgICAgICBzaW5nbGUgaW5zdGFuY2Ugb24gdGhlIEND
UmVzb3VyY2VQcm92aWRlci4KKworICAgICAgICBBZGRlZCBDQ1Jlc291cmNlUHJvdmlkZXJUZXN0
LCB0aGUgcmVmYWN0b3JpbmcgaXMgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuaDoKKyAgICAgICAg
KFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0
b3JUZXh0dXJlUXVhZDo6cmVzb3VyY2VJZCk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dl
YkNvbXBvc2l0b3JUaWxlUXVhZC5oOgorICAgICAgICAoV2ViQ29tcG9zaXRvclRpbGVRdWFkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRpbGVRdWFkOjpyZXNvdXJjZUlkKToKKwog
MjAxMi0wNy0xOCAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBVYmVyY29tcDogYWRkIGlkIHRvIFNoYXJlZFF1YWRTdGF0ZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDkxZWY1MTgzMzAzNWNiYmU5OWY5YTJmMjk2YjAxYTcwZTllZThjNDQuLmU3ZDdiZDE4
ZGEzMWMyMjRhZjcyYzhmMzAxY2ExMDg0NzcwZDM1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MTAgQEAKKzIwMTItMDctMTEgIEFudG9pbmUgTGFib3VyICA8cGltYW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gSW50cm9kdWNlIENDUmVzb3VyY2VQcm92aWRlciwgcmVwbGFj
aW5nIFRleHR1cmVBbGxvY2F0b3IgYW5kIGhpZGluZyB0ZXh0dXJlcyBmcm9tIGNsaWVudHMgdG8g
YWxsb3cgdHJhbnNwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTA0NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4KKwor
ICAgICAgICBUaGlzIGRvZXMgc2V2ZXJhbCB0aGluZ3M6CisgICAgICAgIC0gQWRkIGEgQ0NSZXNv
dXJjZVByb3ZpZGVyIGNsYXNzLCB0aGF0IGhpZGVzIHRleHR1cmVzIGFuZCB0aGUgM0QgY29udGV4
dAorICAgICAgICBmcm9tIGxheWVycyAoZXhjZXB0IHRob3NlIHRoYXQgbmVlZCBpdCkuIEluc3Rl
YWQgbGF5ZXJzIG1hbmFnZQorICAgICAgICAicmVzb3VyY2VzIi4gSW4gdGhlIGZ1dHVyZSwgcmVz
b3VyY2VzIGFyZSBleHBlY3RlZCB0byBiZSB0cmFuc3BvcnRhYmxlCisgICAgICAgIHRvIGEgInBh
cmVudCIgQ0NSZXNvdXJjZVByb3ZpZGVyIHRvIGFsbG93IGZsYXR0ZW5pbmcgb2YgbmVzdGVkCisg
ICAgICAgIGNvbXBvc2l0b3JzLgorICAgICAgICAtIFJlcGxhY2UgdGV4dHVyZSBpZHMgYnkgcmVz
b3VyY2UgaWRzIGluIERyYXdRdWFkcyAoYWxsb3dpbmcgdGhlbSB0byBiZQorICAgICAgICBzZXJp
YWxpemFibGUpLgorICAgICAgICAtIFJlcGxhY2UgVGV4dHVyZUFsbG9jYXRvciB1c2VzIGJ5IHRo
ZSBDQ1Jlc291cmNlUHJvdmlkZXIgY2xhc3MuCisgICAgICAgIC0gVXBsb2FkIG9mIGRhdGEgaXMg
ZG9uZSB0aHJvdWdoIHRoZSBDQ1Jlc291cmNlUHJvdmlkZXIgaW5zdGVhZCBvZgorICAgICAgICBl
eHBsaWNpdCBHTCBjYWxscy4KKyAgICAgICAgLSBFeHRlcm5hbCB0ZXh0dXJlcyBhcmUgd3JhcHBl
ZCBpbnRvIGEgcmVzb3VyY2UgYXQgZHJhdyB0aW1lIChzZWUKKyAgICAgICAgY2F2ZWF0L0ZJWE1F
IGluIENDVGV4dHVyZUxheWVySW1wbCkuCisgICAgICAgIC0gUmVuZGVyaW5nIHdpdGggdGhlIHJl
c291cmNlcyBpcyBkb25lIHRocm91Z2ggYW4gZXhwbGljaXQKKyAgICAgICAgYmVnaW5SZW5kZXJG
cm9tL2VuZFJlbmRlckZyb20gdGhhdCBleHBvc2VzIHRoZSB0ZXh0dXJlIG9ubHkgYmV0d2VlbiB0
aGF0CisgICAgICAgIHBhaXIuCisgICAgICAgIC0gTWVyZ2UgYWxsIHRoZSBMYXllclRleHR1cmVT
dWJJbWFnZSBpbnN0YW5jZXMgKG9uZSBwZXIgbGF5ZXIpLCBpbnRvIGEKKyAgICAgICAgc2luZ2xl
IGluc3RhbmNlIG9uIHRoZSBDQ1Jlc291cmNlUHJvdmlkZXIuCisKKyAgICAgICAgQWRkZWQgQ0NS
ZXNvdXJjZVByb3ZpZGVyVGVzdCwgdGhlIHJlZmFjdG9yaW5nIGlzIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUaWxlUXVh
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JUaWxlUXVhZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclRpbGVRdWFkOjpXZWJDb21wb3NpdG9yVGls
ZVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoK
KyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hy
b21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVj
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChUZXh0dXJlKToKKyAg
ICAgICAgKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVy
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpJbWFn
ZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVw
ZGF0ZXJJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJD
aHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVvUXVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlUXVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdJT1N1cmZhY2VRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoRHJhd2lu
Z0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJh
bWVidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dXNlUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVzZVNjb3BlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2hDdXJyZW50RnJhbWVidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRp
YWxpemVTaGFyZWRPYmplY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1
bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnJlc291cmNlUHJv
dmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZVN1YkltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1YkltYWdlOjpM
YXllclRleHR1cmVTdWJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVTdWJJ
bWFnZTo6dXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVN1YkltYWdlOjp1
cGxvYWRXaXRoVGV4U3ViSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlU3Vi
SW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChMYXllclRleHR1cmVTdWJJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9NYW5hZ2VkVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6
TWFuYWdlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OnJlc2Vy
dmUpOgorICAgICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OmFsbG9jYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpzdGVhbCk6CisgICAgICAgIChXZWJDb3JlOjpN
YW5hZ2VkVGV4dHVyZTo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL01hbmFnZWRUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6
cmVzb3VyY2VJZCk6CisgICAgICAgIChNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRh
dGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVDb3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVy
Ojpjb3B5VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Zmx1c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoKKyAgICAgICAgKFRleHR1cmVDb3BpZXIpOgor
ICAgICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hbmFnZXI6OmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFuYWdlcjo6cmVtb3ZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFu
YWdlcjo6YWxsb2NhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2Vy
OjpyZXF1ZXN0VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgIChUZXh0dXJlTWFuYWdlcik6CisgICAg
ICAgIChUZXh0dXJlSW5mbyk6CisgICAgICAgIChFdmljdGlvbkVudHJ5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaDoKKyAgICAgICAgKFRl
eHR1cmVVcGxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmg6CisgICAgICAgIChUaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVy
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0lPU3VyZmFjZUxheWVySW1wbDo6d2lsbERy
YXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNl
TGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ0lPU3VyZmFjZUxheWVySW1wbCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpjb250ZW50
c1Jlc291cmNlSWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhy
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YmVnaW5Db21taXRPbklt
cGxUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0xheWVyVHJlZUhv
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2Fs
Y3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdElt
cGw6OnJlbGVhc2VDb250ZW50c1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGw6OmRpZERyYXdBbGxMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6cmVzb3Vy
Y2VQcm92aWRlcik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6YWNxdWlyZUJhY2tpbmdUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpyZXNvdXJjZUlk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjp1cGxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmJlZ2luUmVuZGVyVG8pOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmVuZFJlbmRlclRvKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJpb3JpdGl6ZWRUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUHJp
b3JpdGl6ZWRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJl
OjpCYWNraW5nOjpyZXNvdXJjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRU
ZXh0dXJlOjpCYWNraW5nOjpCYWNraW5nKToKKyAgICAgICAgKEJhY2tpbmcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OkND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6On5DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1Rl
eHR1cmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OnJlZHVjZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNsZWFyQWxsTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWxsQmFja2luZ1RleHR1cmVzV2VyZURlbGV0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVCYWNraW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVzdHJv
eUJhY2tpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3NEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVh
ZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1Jl
bmRlclBhc3NEcmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaDoKKyAgICAgICAgKENDUmVuZGVyUGFzc0RyYXdRdWFk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjptYXNrUmVzb3VyY2VJ
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRleHR1cmVUb1N0b3JhZ2VG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6aXNUZXh0dXJlRm9ybWF0U3VwcG9ydGVkRm9yU3Rv
cmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6On5DQ1Jlc291cmNlUHJvdmlkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpncmFwaGljc0NvbnRleHQz
RCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmluVXNlQnlDb25zdW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZVJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlUmVzb3VyY2VG
cm9tRXh0ZXJuYWxUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRl
cjo6ZGVsZXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVy
OjpkZWxldGVPd25lZFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJv
dmlkZXI6OnVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmJl
Z2luUmVuZGVyVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjplbmRS
ZW5kZXJUbyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmJlZ2luUmVu
ZGVyRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXI6OmVuZFJlbmRl
ckZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjpDQ1Jlc291cmNl
UHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyOjppbml0aWFs
aXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNl
UHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChDQ1Jlc291cmNlUHJvdmlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZXNv
dXJjZVByb3ZpZGVyOjptYXhUZXh0dXJlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jlc291
cmNlUHJvdmlkZXI6Om51bVJlc291cmNlcyk6CisgICAgICAgIChSZXNvdXJjZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6Q0NTY29wZWRUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6YWxsb2NhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY29wZWRUZXh0dXJlOjpmcmVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVk
VGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKENDU2NvcGVkVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1Njb3BlZFRleHR1cmU6OmJlZ2luUmVuZGVyVG8pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY29wZWRUZXh0dXJlOjplbmRSZW5kZXJUbyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Nj
b3BlZFRleHR1cmU6OmJlZ2luUmVuZGVyRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njb3Bl
ZFRleHR1cmU6OmVuZFJlbmRlckZyb20pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
U2Nyb2xsYmFyTGF5ZXJJbXBsOjpDQ1Njcm9sbGJhckxheWVySW1wbCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJM
YXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpzZXRC
YWNrVHJhY2tSZXNvdXJjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJ
bXBsOjpzZXRGb3JlVHJhY2tSZXNvdXJjZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2Nyb2xs
YmFyTGF5ZXJJbXBsOjpzZXRUaHVtYlJlc291cmNlSWQpOgorICAgICAgICAoQ0NTY3JvbGxiYXJM
YXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94
eTo6cmVjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJv
eHk6OmRvQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OnN0
b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RleHR1cmU6OnNldElkKToKKyAgICAgICAgKENDVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6Q0NUZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6d2lsbERyYXcpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVySW1wbDo6ZGlkRHJhdyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmg6
CisgICAgICAgIChDQ1RleHR1cmVMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6OnJlc291cmNlSWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd2FibGVUaWxlOjpzZXRSZXNvdXJjZUlkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYXdhYmxlVGlsZTo6RHJhd2FibGVUaWxlKToKKyAgICAgICAgKERyYXdhYmxlVGls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpjb250ZW50c1Jlc291cmNl
SWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6aGFzVGV4dHVyZUlkRm9y
VGlsZUF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVydGll
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVy
SW1wbC5oOgorICAgICAgICAoQ0NUaWxlZExheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpDQ1ZpZGVvTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVmlkZW9MYXllckltcGw6On5DQ1ZpZGVvTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVmlkZW9MYXllckltcGw6OndpbGxEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlk
ZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRl
b0xheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVy
SW1wbDo6ZGlkRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFt
ZVBsYW5lOjphbGxvY2F0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1w
bDo6RnJhbWVQbGFuZTo6ZnJlZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVy
SW1wbDo6YWxsb2NhdGVQbGFuZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVy
SW1wbDo6Y29weVBsYW5lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBs
OjpmcmVlUGxhbmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmZy
ZWVVbnVzZWRQbGFuZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6
ZGlkTG9zZUNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVmlkZW9MYXllckltcGwuaDoKKyAgICAgICAgKENDVmlkZW9MYXllckltcGwpOgorICAgICAg
ICAoRnJhbWVQbGFuZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFt
ZVBsYW5lOjpGcmFtZVBsYW5lKToKKwogMjAxMi0wNy0xOCAgTmF0IER1Y2EgIDxuZHVjYUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgaGlzdG9ncmFtIGZvciB0cmFja2lu
ZyBjb21wb3NpdG9yLXRocmVhZCBmcmFtZSByYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDBlNjRlY2I0YjE1MGZlNDlmMjExNWM3OTY2MzM2YjVhNDEzZWQxYWUuLjM4MTJiNTAyMzYz
MThjMzI2NGVmZjk0YzVlYWY1YzhiZmNiZjliYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsOTYgQEAKKzIwMTItMDctMTEgIEFudG9pbmUgTGFib3VyICA8cGltYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW50cm9kdWNlIENDUmVzb3VyY2VQcm92
aWRlciwgcmVwbGFjaW5nIFRleHR1cmVBbGxvY2F0b3IgYW5kIGhpZGluZyB0ZXh0dXJlcyBmcm9t
IGNsaWVudHMgdG8gYWxsb3cgdHJhbnNwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MTA0NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5l
IFdhbGtlci4KKworICAgICAgICBUaGlzIGRvZXMgc2V2ZXJhbCB0aGluZ3M6CisgICAgICAgIC0g
QWRkIGEgQ0NSZXNvdXJjZVByb3ZpZGVyIGNsYXNzLCB0aGF0IGhpZGVzIHRleHR1cmVzIGFuZCB0
aGUgM0QgY29udGV4dAorICAgICAgICBmcm9tIGxheWVycyAoZXhjZXB0IHRob3NlIHRoYXQgbmVl
ZCBpdCkuIEluc3RlYWQgbGF5ZXJzIG1hbmFnZQorICAgICAgICAicmVzb3VyY2VzIi4gSW4gdGhl
IGZ1dHVyZSwgcmVzb3VyY2VzIGFyZSBleHBlY3RlZCB0byBiZSB0cmFuc3BvcnRhYmxlCisgICAg
ICAgIHRvIGEgInBhcmVudCIgQ0NSZXNvdXJjZVByb3ZpZGVyIHRvIGFsbG93IGZsYXR0ZW5pbmcg
b2YgbmVzdGVkCisgICAgICAgIGNvbXBvc2l0b3JzLgorICAgICAgICAtIFJlcGxhY2UgdGV4dHVy
ZSBpZHMgYnkgcmVzb3VyY2UgaWRzIGluIERyYXdRdWFkcyAoYWxsb3dpbmcgdGhlbSB0byBiZQor
ICAgICAgICBzZXJpYWxpemFibGUpLgorICAgICAgICAtIFJlcGxhY2UgVGV4dHVyZUFsbG9jYXRv
ciB1c2VzIGJ5IHRoZSBDQ1Jlc291cmNlUHJvdmlkZXIgY2xhc3MuCisgICAgICAgIC0gVXBsb2Fk
IG9mIGRhdGEgaXMgZG9uZSB0aHJvdWdoIHRoZSBDQ1Jlc291cmNlUHJvdmlkZXIgaW5zdGVhZCBv
ZgorICAgICAgICBleHBsaWNpdCBHTCBjYWxscy4KKyAgICAgICAgLSBFeHRlcm5hbCB0ZXh0dXJl
cyBhcmUgd3JhcHBlZCBpbnRvIGEgcmVzb3VyY2UgYXQgZHJhdyB0aW1lIChzZWUKKyAgICAgICAg
Y2F2ZWF0L0ZJWE1FIGluIENDVGV4dHVyZUxheWVySW1wbCkuCisgICAgICAgIC0gUmVuZGVyaW5n
IHdpdGggdGhlIHJlc291cmNlcyBpcyBkb25lIHRocm91Z2ggYW4gZXhwbGljaXQKKyAgICAgICAg
YmVnaW5SZW5kZXJGcm9tL2VuZFJlbmRlckZyb20gdGhhdCBleHBvc2VzIHRoZSB0ZXh0dXJlIG9u
bHkgYmV0d2VlbiB0aGF0CisgICAgICAgIHBhaXIuCisgICAgICAgIC0gTWVyZ2UgYWxsIHRoZSBM
YXllclRleHR1cmVTdWJJbWFnZSBpbnN0YW5jZXMgKG9uZSBwZXIgbGF5ZXIpLCBpbnRvIGEKKyAg
ICAgICAgc2luZ2xlIGluc3RhbmNlIG9uIHRoZSBDQ1Jlc291cmNlUHJvdmlkZXIuCisKKyAgICAg
ICAgQWRkZWQgQ0NSZXNvdXJjZVByb3ZpZGVyVGVzdCwgdGhlIHJlZmFjdG9yaW5nIGlzIGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NQ
cmlvcml0aXplZFRleHR1cmVUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRl
eHR1cmVUZXN0OjpDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QpOgorICAgICAgICAoV1RGOjpDQ1By
aW9yaXRpemVkVGV4dHVyZVRlc3Q6OmNyZWF0ZU1hbmFnZXIpOgorICAgICAgICAoV1RGOjpDQ1By
aW9yaXRpemVkVGV4dHVyZVRlc3Q6OnZhbGlkYXRlVGV4dHVyZSk6CisgICAgICAgIChXVEY6OkND
UHJpb3JpdGl6ZWRUZXh0dXJlVGVzdDo6cmVzb3VyY2VQcm92aWRlcik6CisgICAgICAgIChDQ1By
aW9yaXRpemVkVGV4dHVyZVRlc3QpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgorICAgICAgICAq
IHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDUmVzb3VyY2VQ
cm92aWRlclRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChSZXNv
dXJjZVByb3ZpZGVyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlUHJvdmlkZXJD
b250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4
dDo6YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4
dDo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlUHJvdmlkZXJDb250
ZXh0OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNv
bnRleHQ6OnRleFN0b3JhZ2UyREVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlUHJvdmlk
ZXJDb250ZXh0Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRl
ckNvbnRleHQ6OnRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3Zp
ZGVyQ29udGV4dDo6Z2V0UGl4ZWxzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRl
ckNvbnRleHQ6OnRleHR1cmVDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlUHJvdmlk
ZXJDb250ZXh0Ojp0ZXh0dXJlU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlUHJvdmlk
ZXJDb250ZXh0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlUHJvdmlkZXJDb250ZXh0OjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFRleHR1
cmUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6YWxsb2NhdGVU
ZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OnNldFBp
eGVscyk6CisgICAgICAgIChDQ1Jlc291cmNlUHJvdmlkZXJUZXN0KToKKyAgICAgICAgKFdlYktp
dDo6Q0NSZXNvdXJjZVByb3ZpZGVyVGVzdDo6Q0NSZXNvdXJjZVByb3ZpZGVyVGVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OkNDUmVzb3VyY2VQcm92aWRlclRlc3Q6OmNvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpDQ1Jlc291cmNlUHJvdmlkZXJUZXN0OjpnZXRSZXNvdXJjZVBpeGVscyk6CisgICAg
ICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NTY29wZWRUZXh0dXJlVGVz
dC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NU
aWxlZExheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OmNyZWF0
ZUxheWVyKToKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpURVNUKToKKyAgICAgICAgKiB0
ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpG
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgICog
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oOgorICAgICAgICAoVGV4dHVyZSk6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6RmFrZVRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpGYWtlVGV4dHVyZUNvcGllcjo6Zmx1c2gpOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OkZha2VUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUpOgorICAgICAgICAq
IHRlc3RzL0NvbnRlbnRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRF
U1QpOgorICAgICAgICAqIHRlc3RzL0Zha2VDQ0dyYXBoaWNzQ29udGV4dC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUu
aC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUZha2VDQ0dyYXBo
aWNzQ29udGV4dCk6CisgICAgICAgICogdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgIChGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtOjpGYWtlTGF5ZXJSZW5kZXJl
ckNocm9taXVtKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3Q6OkxheWVyUmVu
ZGVyZXJDaHJvbWl1bVRlc3QpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDo6
Y29udGV4dCk6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0KToKKyAgICAgICAg
KFRFU1RfRik6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlQ29waWVy
VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNwcDoKKyAgICAg
ICAgKFdURjo6VGV4dHVyZU1hbmFnZXJUZXN0OjpUZXh0dXJlTWFuYWdlclRlc3QpOgorICAgICAg
ICAoV1RGOjpUZXh0dXJlTWFuYWdlclRlc3Q6OmNyZWF0ZVRleHR1cmVNYW5hZ2VyKToKKyAgICAg
ICAgKFdURjo6VGV4dHVyZU1hbmFnZXJUZXN0OjpyZXF1ZXN0VGV4dHVyZSk6CisgICAgICAgIChU
ZXh0dXJlTWFuYWdlclRlc3QpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwOgorCiAyMDEyLTA3LTE4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRGlzYWJsZSBwcmludGluZyBvbiBjaHJvbWl1bS1hbmRyb2lkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVh
ZC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yVGV4dHVy
ZVF1YWQuaAppbmRleCA5YmU2ZmQzZTZkMzE4MjZmMjUxMmE4MDI2MzcyNzlmNDMyNzI2MDYzLi42
Yjg4Njk1NjVjMTZhMjJhOTdmMjJlYWM2NTNkYzkwZGFiMzVmYzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5oCisr
KyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclRleHR1cmVR
dWFkLmgKQEAgLTQzLDExICs0MywxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkNv
bXBvc2l0b3JUZXh0dXJlUXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVhZCB7CiBwdWJsaWM6
CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29t
cG9zaXRvclRleHR1cmVRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGJvb2wg
cHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9v
bCBmbGlwcGVkKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4dHVyZVF1
YWQ+IGNyZWF0ZShjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIHVuc2lnbmVkIHJlc291cmNlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFs
cGhhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKTsKICAg
ICBXZWJDb3JlOjpGbG9hdFJlY3QgdXZSZWN0KCkgY29uc3QgeyByZXR1cm4gbV91dlJlY3Q7IH0K
ICNlbmRpZgogCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlSWQ7IH0KKyAgICB1bnNpZ25lZCByZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
dXJjZUlkOyB9CiAgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEoKSBjb25zdCB7IHJldHVybiAg
bV9wcmVtdWx0aXBsaWVkQWxwaGE7IH0KICAgICBib29sIGZsaXBwZWQoKSBjb25zdCB7IHJldHVy
biBtX2ZsaXBwZWQ7IH0KIApAQCAtNTYsMTAgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKiBtYXRlcmlhbENhc3QoY29uc3QgV2ViQ29t
cG9zaXRvclF1YWQqKTsKIHByaXZhdGU6CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAg
V2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKGNvbnN0IFdlYktpdDo6V2ViQ29tcG9zaXRvclNoYXJl
ZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCB1bnNpZ25lZCB0ZXh0dXJlX2lk
LCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1dlJl
Y3QsIGJvb2wgZmxpcHBlZCk7CisgICAgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKGNvbnN0IFdl
YktpdDo6V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCB1bnNpZ25lZCByZXNvdXJjZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBoYSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCk7CiAjZW5kaWYKIAotICAg
IHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIHVuc2lnbmVkIG1fcmVzb3VyY2VJZDsKICAgICBi
b29sIG1fcHJlbXVsdGlwbGllZEFscGhhOwogICAgIFdlYkZsb2F0UmVjdCBtX3V2UmVjdDsKICAg
ICBib29sIG1fZmxpcHBlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViQ29tcG9zaXRvclRpbGVRdWFkLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkNvbXBvc2l0b3JUaWxlUXVhZC5oCmluZGV4IGUwYTI1NWJiMjVkYTM3OGJiYWY0
NTk5NjVlNjIyZDQyM2UyOTc4NmEuLmUyMGRlNzIzMzEwYTY4OTU3YTc5OWMyZWI5N2E4MDE1NGFi
MWJiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29t
cG9zaXRvclRpbGVRdWFkLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJDb21wb3NpdG9yVGlsZVF1YWQuaApAQCAtMzksOSArMzksOSBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYkNvbXBvc2l0b3JUaWxlUXVhZCA6IHB1YmxpYyBXZWJDb21wb3NpdG9yUXVh
ZCB7CiBwdWJsaWM6CiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8V2ViQ29tcG9zaXRvclRpbGVRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNo
YXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNv
bnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFB
LCBib29sIGJvdHRvbUVkZ2VBQSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViQ29tcG9zaXRv
clRpbGVRdWFkPiBjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBv
cGFxdWVSZWN0LCB1bnNpZ25lZCByZXNvdXJjZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
dGV4dHVyZU9mZnNldCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0Rp
bnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwg
Ym9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKIAot
ICAgIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJl
SWQ7IH0KKyAgICB1bnNpZ25lZCByZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZUlkOyB9CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZU9mZnNldDsgfQogICAgIFdlYkNvcmU6OkludFNpemUgdGV4dHVyZVNpemUo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVTaXplOyB9CiAgICAgR0MzRGludCB0ZXh0dXJlRmls
dGVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlRmlsdGVyOyB9CkBAIC01OCwxMCArNTgsMTAg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBXZWJDb21wb3NpdG9yVGlsZVF1YWQqIG1hdGVy
aWFsQ2FzdChjb25zdCBXZWJDb21wb3NpdG9yUXVhZCopOwogcHJpdmF0ZToKICNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KLSAgICAgV2ViQ29tcG9zaXRvclRpbGVRdWFkKGNvbnN0IFdlYkNvbXBv
c2l0b3JTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBxdWFkUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0
dXJlSWQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3
aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdo
dEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOworICAgICBXZWJDb21wb3NpdG9yVGlsZVF1YWQo
Y29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHF1YWRSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBvcGFxdWVSZWN0LCB1bnNpZ25l
ZCByZXNvdXJjZUlkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwg
Ym9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJv
b2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKICNlbmRpZgogCi0gICAgUGxhdGZv
cm0zRE9iamVjdCBtX3RleHR1cmVJZDsKKyAgICB1bnNpZ25lZCBtX3Jlc291cmNlSWQ7CiAgICAg
V2ViUG9pbnQgbV90ZXh0dXJlT2Zmc2V0OwogICAgIFdlYlNpemUgbV90ZXh0dXJlU2l6ZTsKICAg
ICBHQzNEaW50IG1fdGV4dHVyZUZpbHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwOWQ5NzBmMWY5
ZmRkNDA2OWM2OWIwYjIxZjE4NGQ2ZjRkYWU5YzU2Li5kMjUyZWJmNWI2NDk0NjA3NDY5MDUwZDRm
MDlkYTk4YjU1ZjNmZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04Mjg4LDggKzgyODgsNiBAQAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVV
cGxvYWRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcCcsCi0gICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyZWVTeW5jaHJvbml6ZXIu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmVlU3luY2hy
b25pemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVv
TGF5ZXJDaHJvbWl1bS5jcHAnLApAQCAtODM3MSw2ICs4MzY5LDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VGaWx0ZXJzLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlRmlsdGVycy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlcmluZ1N0YXRzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZC5jcHAKaW5k
ZXggZTVmNDVmZGM0Y2IyYTU4ZjcyODdmNWZhYzVkYzU2YmRkMjMwNDA3Yi4uZGQwYjY3YTQxYTIz
ZjZhMWI4MDgyNjk2NjMwMjBmMDdmZDYwNTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRv
clRleHR1cmVRdWFkLmNwcApAQCAtMzEsMTQgKzMxLDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc093blB0cjxXZWJDb21wb3NpdG9yVGV4
dHVyZVF1YWQ+IFdlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZDo6Y3JlYXRlKGNvbnN0IFdlYktpdDo6
V2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkLCBib29sIHByZW11bHRpcGxpZWRBbHBo
YSwgY29uc3QgRmxvYXRSZWN0JiB1dlJlY3QsIGJvb2wgZmxpcHBlZCkKK1Bhc3NPd25QdHI8V2Vi
Q29tcG9zaXRvclRleHR1cmVRdWFkPiBXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6OmNyZWF0ZShj
b25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2lnbmVkIHJlc291cmNlSWQsIGJvb2wgcHJl
bXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3QmIHV2UmVjdCwgYm9vbCBmbGlwcGVkKQog
ewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29tcG9zaXRvclRleHR1cmVRdWFkKHNoYXJl
ZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJl
Y3QsIGZsaXBwZWQpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JUZXh0
dXJlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCByZXNvdXJjZUlkLCBwcmVtdWx0aXBs
aWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOwogfQogCi1XZWJDb21wb3NpdG9yVGV4dHVyZVF1
YWQ6OldlYkNvbXBvc2l0b3JUZXh0dXJlUXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3Qs
IHVuc2lnbmVkIHRleHR1cmVJZCwgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEsIGNvbnN0IEZsb2F0
UmVjdCYgdXZSZWN0LCBib29sIGZsaXBwZWQpCitXZWJDb21wb3NpdG9yVGV4dHVyZVF1YWQ6Oldl
YkNvbXBvc2l0b3JUZXh0dXJlUXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRR
dWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIHVuc2ln
bmVkIHJlc291cmNlSWQsIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhLCBjb25zdCBGbG9hdFJlY3Qm
IHV2UmVjdCwgYm9vbCBmbGlwcGVkKQogICAgIDogV2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVh
ZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6VGV4dHVyZUNvbnRlbnQsIHF1YWRSZWN0KQotICAg
ICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQp
CiAgICAgLCBtX3ByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBsaWVkQWxwaGEpCiAgICAgLCBt
X3V2UmVjdCh1dlJlY3QpCiAgICAgLCBtX2ZsaXBwZWQoZmxpcHBlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29tcG9zaXRvclRpbGVR
dWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViQ29t
cG9zaXRvclRpbGVRdWFkLmNwcAppbmRleCAyN2FhNzc1MDgxNzQxYjExNDE5YjgxMTc2ODdhOTk2
YWY5MmQxY2VjLi5kZTBlODFkZmNmZWNlMDIwMzg3N2E4MmM0ZmY2YmViNjgwM2QzMWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkNvbXBv
c2l0b3JUaWxlUXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJDb21wb3NpdG9yVGlsZVF1YWQuY3BwCkBAIC0zMSwxNCArMzEsMTQgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzT3duUHRy
PFdlYkNvbXBvc2l0b3JUaWxlUXVhZD4gV2ViQ29tcG9zaXRvclRpbGVRdWFkOjpjcmVhdGUoY29u
c3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJ
bnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9i
amVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRT
aXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250
ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwg
Ym9vbCBib3R0b21FZGdlQUEpCitQYXNzT3duUHRyPFdlYkNvbXBvc2l0b3JUaWxlUXVhZD4gV2Vi
Q29tcG9zaXRvclRpbGVRdWFkOjpjcmVhdGUoY29uc3QgV2ViQ29tcG9zaXRvclNoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50
UmVjdCYgb3BhcXVlUmVjdCwgdW5zaWduZWQgcmVzb3VyY2VJZCwgY29uc3QgSW50UG9pbnQmIHRl
eHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVG
aWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRn
ZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKIHsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFdlYkNvbXBvc2l0b3JUaWxlUXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRS
ZWN0LCBvcGFxdWVSZWN0LCB0ZXh0dXJlSWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0
ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29udGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmln
aHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViQ29t
cG9zaXRvclRpbGVRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIHJl
c291cmNlSWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBzd2l6
emxlQ29udGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVk
Z2VBQSkpOwogfQogCi1XZWJDb21wb3NpdG9yVGlsZVF1YWQ6OldlYkNvbXBvc2l0b3JUaWxlUXVh
ZChjb25zdCBXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNv
bnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9y
bTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0
IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenps
ZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRn
ZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKK1dlYkNvbXBvc2l0b3JUaWxlUXVhZDo6V2ViQ29tcG9z
aXRvclRpbGVRdWFkKGNvbnN0IFdlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJl
Y3QsIHVuc2lnbmVkIHJlc291cmNlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBj
b25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3
aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdo
dEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCiAgICAgOiBXZWJDb21wb3NpdG9yUXVhZChzaGFy
ZWRRdWFkU3RhdGUsIFdlYkNvbXBvc2l0b3JRdWFkOjpUaWxlZENvbnRlbnQsIHF1YWRSZWN0KQot
ICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQorICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNl
SWQpCiAgICAgLCBtX3RleHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkKICAgICAsIG1fdGV4dHVy
ZVNpemUodGV4dHVyZVNpemUpCiAgICAgLCBtX3RleHR1cmVGaWx0ZXIodGV4dHVyZUZpbHRlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggZDc1Y2YwNTRkYzUyZTliMjdmODU1NGFhNWU1YWQ3YmY1OWU4MjJhZC4uZDI0NGRlNjc0
YTI2YmE0ZDdhZWM1YWFjZTZhMmFlZDE0YTFhZWE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTMzLDggKzMzLDYgQEAKICNp
bmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3Iu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCi0jaW5jbHVkZSAiVGV4dHVyZUFs
bG9jYXRvci5oIgotI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
c2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5
LDIwICs0NywxOSBAQCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+
VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6dXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAg
IHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwg
dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlVGV4dHVyZVJlY3QocmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcj4gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCitQ
YXNzUmVmUHRyPEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVt
PiBwYWludGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcihwYWludGVyLCB1c2VNYXBUZXhTdWJJbWFnZSkpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyKSk7CiB9
CiAKLUJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9v
bCB1c2VNYXBUZXhTdWJJbWFnZSkKK0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4gcGFpbnRlcikKICAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikK
ICAgICAsIG1fb3BhcXVlKGZhbHNlKQotICAgICwgbV90ZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJ
bWFnZSkKIHsKIH0KIApAQCAtODQsOCArODEsNiBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1w
bGVkVGV4ZWxGb3JtYXQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZAog
CiB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGZsb2F0
IGNvbnRlbnRzV2lkdGhTY2FsZSwgZmxvYXQgY29udGVudHNIZWlnaHRTY2FsZSwgSW50UmVjdCYg
cmVzdWx0aW5nT3BhcXVlUmVjdCkKIHsKLSAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6
ZSh0aWxlU2l6ZSk7Ci0KICAgICBpZiAobV9jYW52YXNTaXplICE9IGNvbnRlbnRSZWN0LnNpemUo
KSkgewogICAgICAgICBtX2NhbnZhc1NpemUgPSBjb250ZW50UmVjdC5zaXplKCk7CiAgICAgICAg
IG1fY2FudmFzID0gYWRvcHRQdHIoc2tpYTo6Q3JlYXRlQml0bWFwQ2FudmFzKG1fY2FudmFzU2l6
ZS53aWR0aCgpLCBtX2NhbnZhc1NpemUuaGVpZ2h0KCksIG1fb3BhcXVlKSk7CkBAIC05NCwxMyAr
ODksMTIgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICBwYWludENvbnRlbnRzKG1fY2Fu
dmFzLmdldCgpLCBjb250ZW50UmVjdCwgY29udGVudHNXaWR0aFNjYWxlLCBjb250ZW50c0hlaWdo
dFNjYWxlLCByZXN1bHRpbmdPcGFxdWVSZWN0KTsKIH0KIAotdm9pZCBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSog
dGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVS
ZWN0KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NQcmlvcml0aXplZFRl
eHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQogewogICAgIGNvbnN0IFNrQml0bWFwJiBiaXRtYXAgPSBtX2NhbnZhcy0+Z2V0
RGV2aWNlKCktPmFjY2Vzc0JpdG1hcChmYWxzZSk7CiAgICAgYml0bWFwLmxvY2tQaXhlbHMoKTsK
IAotICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0gICAgbV90
ZXhTdWJJbWFnZS51cGxvYWQoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpdG1hcC5nZXRQ
aXhlbHMoKSksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5m
b3JtYXQoKSwgY29udGV4dCk7CisgICAgdGV4dHVyZS0+dXBsb2FkKHJlc291cmNlUHJvdmlkZXIs
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaXRtYXAuZ2V0UGl4ZWxzKCkpLCBjb250ZW50
UmVjdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgYml0bWFwLnVubG9ja1BpeGVscygp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKaW5kZXggMjc2ZTJiMzkxNzkyNjczYzRhNGYyYjQ0MjlmZGFkODg2YjRlZGVhOS4uYTdmMTFm
YTUzNmMyOTg3OWY0OTc3YzRlNDlkNjA0MTdlOTkzNzc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzAsMTUgKzMwLDEyIEBACiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIgotI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCiAKIGNs
YXNzIFNrQ2FudmFzOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUGFpbnRl
ckNocm9taXVtOwotY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBUZXh0dXJlQWxsb2Nh
dG9yOwogCiAvLyBUaGlzIGNsYXNzIHJhc3Rlcml6ZXMgdGhlIGNvbnRlbnRSZWN0IGludG8gYSBz
a2lhIGJpdG1hcCBjYW52YXMuIEl0IHRoZW4gdXBkYXRlcwogLy8gdGV4dHVyZXMgYnkgY29weWlu
ZyBmcm9tIHRoZSBjYW52YXMgaW50byB0aGUgdGV4dHVyZSwgdXNpbmcgTWFwU3ViSW1hZ2UgaWYK
QEAgLTUwLDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPik7CiAg
ICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
UmVjdChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAgICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSBPVkVSUklERTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1
cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTgsMjMgKzU1LDIy
IEBAIHB1YmxpYzoKICAgICAgICAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogbV90
ZXh0dXJlVXBkYXRlcjsKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hy
b21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUoUGFzc093blB0cjxMYXllclBh
aW50ZXJDaHJvbWl1bT4pOwogICAgIHZpcnR1YWwgfkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIoKTsKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlPiBjcmVhdGVUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciopOwogICAg
IHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0
ZXh0dXJlRm9ybWF0KTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgZmxvYXQgY29udGVu
dHNXaWR0aFNjYWxlLCBmbG9hdCBjb250ZW50c0hlaWdodFNjYWxlLCBJbnRSZWN0JiByZXN1bHRp
bmdPcGFxdWVSZWN0KSBPVkVSUklERTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KENDR3Jh
cGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciosIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAg
IHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiwgQ0NQcmlvcml0aXpl
ZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpIE9WRVJSSURFOwogCiBw
cml2YXRlOgotICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxM
YXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOworICAgIGV4cGxp
Y2l0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50
ZXJDaHJvbWl1bT4pOwogCiAgICAgT3duUHRyPFNrQ2FudmFzPiBtX2NhbnZhczsKICAgICBJbnRT
aXplIG1fY2FudmFzU2l6ZTsKICAgICBib29sIG1fb3BhcXVlOwotICAgIExheWVyVGV4dHVyZVN1
YkltYWdlIG1fdGV4U3ViSW1hZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCmluZGV4IDg2ZmIyYzhjM2I0MTM4ODVmZWI5ZmRlODIzZjk1MjA4Mjg5ZWIx
NjkuLjI4NTkyNDI1Mzk4NGUyNzI4ZDVkZWQxYjNhZWJkMWI4ODJmNGVmMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCkBAIC0zNCw4ICszNCw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgog
I2luY2x1ZGUgIlNrQ2FudmFzLmgiCiAjaW5jbHVkZSAiU2tEZXZpY2UuaCIKLSNpbmNsdWRlICJU
ZXh0dXJlQWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSwyNCArNTMsMjEgQEAgdm9pZCBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChjb25z
dCBJbnRSZWMKICAgICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzUmVjdCgmY2FudmFz
LCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCiB7Ci0gICAgdGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxv
Y2F0b3IpOwotCiAgICAgbV9iaXRtYXAubG9ja1BpeGVscygpOwotICAgIHRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RS
ZWN0LCBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxzKCkpKTsKKyAgICB0
ZXh0dXJlKCktPnVwbG9hZChyZXNvdXJjZVByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
bV9iaXRtYXAuZ2V0UGl4ZWxzKCkpLCBkZXN0UmVjdCwgZGVzdFJlY3QsIGRlc3RSZWN0KTsKICAg
ICBtX2JpdG1hcC51bmxvY2tQaXhlbHMoKTsKICAgICBtX2JpdG1hcC5yZXNldCgpOwogfQogCi1Q
YXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExh
eWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQorUGFz
c1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXll
clBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlciwgdXNlTWFwVGV4
U3ViSW1hZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikpOwogfQogCi1CaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNl
TWFwVGV4U3ViSW1hZ2UpCitCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5
ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAgICAgOiBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKHBhaW50ZXIpCi0gICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1Yklt
YWdlKQogewogfQogCkBAIC05MiwxMiArODcsNiBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1w
bGVkVGV4ZWxGb3JtYXQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcgog
ICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiB9CiAKLXZvaWQg
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgZmxv
YXQgY29udGVudHNXaWR0aFNjYWxlLCBmbG9hdCBjb250ZW50c0hlaWdodFNjYWxlLCBJbnRSZWN0
JiByZXN1bHRpbmdPcGFxdWVSZWN0KQotewotICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VT
aXplKHRpbGVTaXplKTsKLSAgICBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
cmVwYXJlVG9VcGRhdGUoY29udGVudFJlY3QsIHRpbGVTaXplLCBjb250ZW50c1dpZHRoU2NhbGUs
IGNvbnRlbnRzSGVpZ2h0U2NhbGUsIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwotfQotCiB2b2lkIEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0
KFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCiB7CiAgICAgLy8g
VHJhbnNsYXRlIHRoZSBvcmlnaW4gb2YgY29udGVudFJlY3QgdG8gdGhhdCBvZiBzb3VyY2VSZWN0
LgpAQCAtMTA2LDEwICs5NSw1IEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqIGNhbnZhCiAgICAgZHJhd1Bp
Y3R1cmUoY2FudmFzKTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
R0MzRGVudW0gZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCog
cGl4ZWxzKQotewotICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKHBpeGVscywgZGVzdFJlY3QsIGRl
c3RSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAppbmRleCA5ZjEzODg4MjdiMzZkNzdjYTg5M2YzM2YzYjcxMzBmNTYzMTZkZmY5Li44NTVk
NDA1ODU2ZTQwZTU4NmE5YTgwNzFhMjc0NmRiYjM2N2Q4M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBA
IC0yOCwxNCArMjgsMTEgQEAKICNkZWZpbmUgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcl9oCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0jaW5jbHVk
ZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKICNpbmNsdWRlICJTa0JpdG1hcC5oIgogI2luY2x1
ZGUgIlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwotCiAvLyBUaGlzIGNsYXNzIHJlY29y
ZHMgdGhlIGNvbnRlbnRSZWN0IGludG8gYW4gU2tQaWN0dXJlLCB0aGVuIHNvZnR3YXJlIHJhc3Rl
cml6ZXMKIC8vIHRoZSBTa1BpY3R1cmUgaW50byBiaXRtYXBzIGZvciBlYWNoIHRpbGUuIFRoaXMg
aW1wbGVtZW50cyBDQ1NldHRpbmdzOjpwZXJUaWxlUGFpbnRpbmcuCiBjbGFzcyBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIgewpAQCAtNDUsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRl
eHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25Q
dHI8Q0NQcmlvcml0aXplZFRleHR1cmU+KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkgT1ZFUlJJREU7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvcios
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSBPVkVS
UklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVy
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIE9W
RVJSSURFOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRh
dGVyOyB9CkBAIC01NCwxOSArNTEsMTUgQEAgcHVibGljOgogICAgICAgICBCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOwogICAgIH07CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyPiBjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNl
TWFwVGV4U3ViSW1hZ2UpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNo
cm9taXVtPik7CiAgICAgdmlydHVhbCB+Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcigpOwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0
KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBmbG9hdCBjb250ZW50c1dpZHRoU2NhbGUsIGZsb2F0IGNvbnRlbnRzSGVpZ2h0U2Nh
bGUsIEludFJlY3QmIHJlc3VsdGluZ09wYXF1ZVJlY3QpIE9WRVJSSURFOwogICAgIHZvaWQgcGFp
bnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKLSAg
ICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgR0MzRGVudW0gZm9y
bWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsKIAog
cHJpdmF0ZToKLSAgICBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBh
c3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsK
LQotICAgIExheWVyVGV4dHVyZVN1YkltYWdlIG1fdGV4U3ViSW1hZ2U7CisgICAgZXhwbGljaXQg
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVy
UGFpbnRlckNocm9taXVtPik7CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmNwcAppbmRleCA5ZjQwZjdmZTE4OGI5MzlkZDE2NGFlNGE1MmJlZDc5OWU0YmU4ODFmLi43
MTlmOWQ4OTkxMTZlM2E0MWE5OWE4N2Q2N2Y4ODI2NjI4MTA1NGYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC0xMjIsOSArMTIyLDkgQEAgdm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCiAgICAgaWYgKGxheWVy
VHJlZUhvc3QoKS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlUGFpbnRpbmcpCiAgICAgICAgIG1fdGV4
dHVyZVVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkpOwogICAg
IGVsc2UgaWYgKENDU2V0dGluZ3M6OnBlclRpbGVQYWludGluZ0VuYWJsZWQoKSkKLSAgICAgICAg
bV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSksIGxheWVy
VHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKKyAg
ICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0ZSkp
OwogICAgIGVsc2UKLSAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxl
Z2F0ZSksIGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5n
TWFwU3ViKTsKKyAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9kZWxlZ2F0
ZSkpOwogICAgIG1fdGV4dHVyZVVwZGF0ZXItPnNldE9wYXF1ZShvcGFxdWUoKSk7CiAKICAgICBH
QzNEZW51bSB0ZXh0dXJlRm9ybWF0ID0gbGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkuYmVzdFRleHR1cmVGb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cAppbmRleCA3ZTlhYzBhNmM2NWZhMDBmNTllNjgwMDQ5YTUyY2QwOWU1ZmFkNjZjLi40MzZmMzQ2
ZDRiMTFhNWQ1OGU5ZDk4ODg4NGFjOGZlMjIwY2IyMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKQEAgLTM5LDIwICszOSwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgUGFzc093blB0cjxTa0NhbnZhcz4gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0
dXJlKiB0ZXh0dXJlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEludFNpemUgY2FudmFzU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQpCiB7Ci0gICAgLy8g
QWxsb2NhdGUgc28gdGhhdCB3ZSBoYXZlIGEgdmFsaWQgdGV4dHVyZSBpZC4KLSAgICB0ZXh0dXJl
LT5hY3F1aXJlQmFja2luZ1RleHR1cmUoYWxsb2NhdG9yKTsKLQogICAgIEdyQ29udGV4dCogZ3JD
b250ZXh0ID0gY29udGV4dC0+Z3JDb250ZXh0KCk7Ci0gICAgSW50U2l6ZSBjYW52YXNTaXplID0g
dGV4dHVyZS0+c2l6ZSgpOwogICAgIEdyUGxhdGZvcm1UZXh0dXJlRGVzYyB0ZXh0dXJlRGVzYzsK
ICAgICB0ZXh0dXJlRGVzYy5mRmxhZ3MgPSBrUmVuZGVyVGFyZ2V0X0dyUGxhdGZvcm1UZXh0dXJl
RmxhZzsKICAgICB0ZXh0dXJlRGVzYy5mV2lkdGggPSBjYW52YXNTaXplLndpZHRoKCk7CiAgICAg
dGV4dHVyZURlc2MuZkhlaWdodCA9IGNhbnZhc1NpemUuaGVpZ2h0KCk7CiAgICAgdGV4dHVyZURl
c2MuZkNvbmZpZyA9IGtTa2lhODg4OF9QTV9HclBpeGVsQ29uZmlnOwotICAgIHRleHR1cmVEZXNj
LmZUZXh0dXJlSGFuZGxlID0gdGV4dHVyZS0+dGV4dHVyZUlkKCk7CisgICAgdGV4dHVyZURlc2Mu
ZlRleHR1cmVIYW5kbGUgPSB0ZXh0dXJlSWQ7CiAgICAgU2tBdXRvVFVucmVmPEdyVGV4dHVyZT4g
dGFyZ2V0KGdyQ29udGV4dC0+Y3JlYXRlUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVEZXNjKSk7CiAg
ICAgU2tBdXRvVFVucmVmPFNrRGV2aWNlPiBkZXZpY2UobmV3IFNrR3B1RGV2aWNlKGdyQ29udGV4
dCwgdGFyZ2V0LmdldCgpKSk7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTa0NhbnZhcyhkZXZp
Y2UuZ2V0KCkpKTsKQEAgLTY4LDEyICs2NCwxMiBAQCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVw
ZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9p
ZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6
OnVwZGF0ZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IHNoYXJlZENvbnRleHQgPSBDQ1Byb3h5OjpoYXNJbXBsVGhy
ZWFkKCkgPyBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0Rm9ySW1wbFRocmVhZCgpIDogU2hh
cmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldCgpOwogICAgIGlmICghc2hhcmVkQ29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KHNo
YXJlZENvbnRleHQucmVsZWFzZSgpLCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwg
ZGVzdFJlY3QpOworICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KHNoYXJl
ZENvbnRleHQucmVsZWFzZSgpLCByZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJlKCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI+IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50
ZXIpCkBAIC0xMDEsMTUgKzk3LDE3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhl
bEZvcm1hdCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwCiAgICAgcmV0
dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CiB9CiAKLXZv
aWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVU
ZXh0dXJlUmVjdChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBwcnBDb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQg
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0
dXJlUmVjdChQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBwcnBDb250ZXh0LCBDQ1Jlc291
cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0
dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkK
IHsKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQocHJwQ29udGV4dCk7CiAK
ICAgICAvLyBNYWtlIHN1cmUgZ2FuZXNoIHVzZXMgdGhlIGNvcnJlY3QgR0wgY29udGV4dC4KICAg
ICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAorICAgIHRleHR1cmUtPmFjcXVpcmVC
YWNraW5nVGV4dHVyZShyZXNvdXJjZVByb3ZpZGVyKTsKKyAgICBDQ1Njb3BlZExvY2tSZXNvdXJj
ZUZvcldyaXRlIGxvY2socmVzb3VyY2VQcm92aWRlciwgdGV4dHVyZS0+cmVzb3VyY2VJZCgpKTsK
ICAgICAvLyBDcmVhdGUgYW4gYWNjZWxlcmF0ZWQgY2FudmFzIHRvIGRyYXcgb24uCi0gICAgT3du
UHRyPFNrQ2FudmFzPiBjYW52YXMgPSBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhjb250ZXh0Lmdl
dCgpLCBhbGxvY2F0b3IsIHRleHR1cmUpOworICAgIE93blB0cjxTa0NhbnZhcz4gY2FudmFzID0g
Y3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoY29udGV4dC5nZXQoKSwgdGV4dHVyZS0+c2l6ZSgpLCBs
b2NrLnRleHR1cmVJZCgpKTsKIAogICAgIC8vIFRoZSBjb21wb3NpdG9yIGV4cGVjdHMgdGhlIHRl
eHR1cmVzIHRvIGJlIHVwc2lkZS1kb3duIHNvIGl0IGNhbiBmbGlwCiAgICAgLy8gdGhlIGZpbmFs
IGNvbXBvc2l0ZWQgaW1hZ2UuIEdhbmVzaCByZW5kZXJzIHRoZSBpbWFnZSB1cHJpZ2h0IHNvIHdl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDhmNjMwYTkyMjgyNjQxMjNiZGZmNWY3ZDg0
ZDliODczYjhhYTI5NjkuLjQ0NjQ5ZTQ3M2M2OWQyNDRjOTFjMDlhNTZhYjcxOWMyMGUxYTRlYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgVGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqLCBQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPik7CiAgICAgICAgIHZpcnR1YWwg
flRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNz
Q29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSBPVkVSUklERTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVy
ZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBAIC01Niw3ICs1Niw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlPiBjcmVhdGVUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChH
QzNEZW51bSB0ZXh0dXJlRm9ybWF0KSBPVkVSUklERTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVS
ZWN0KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+LCBUZXh0dXJlQWxsb2NhdG9yKiwgQ0NQ
cmlvcml0aXplZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiwgQ0NSZXNvdXJjZVByb3ZpZGVyKiwgQ0NQcmlvcml0aXplZFRleHR1
cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7
CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDY5NjU2M2FjZmU5YWMxMWRjZmI2OTk1YjJh
NWRmMTg2YmUxNzQ0ZDUuLmJhNjA5NDM3OWJhYzRkNGMxM2Y2NGYyYmU1YWRjNTdlYTUxYjQ0M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMzQsNyArMzQsNiBAQAogCiAj
aW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJMYXllclRleHR1cmVT
dWJJbWFnZS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCkBAIC01MSw5
ICs1MCw5IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVJlY3QoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpIE9WRVJSSURFCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEND
UmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIE9WRVJSSURFCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9j
YXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICB0ZXh0
dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChyZXNvdXJjZVByb3ZpZGVyLCB0ZXh0dXJl
KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAg
LTYyLDkgKzYxLDkgQEAgcHVibGljOgogICAgICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIq
IG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdl
TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIo
dXNlTWFwVGV4U3ViSW1hZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+SW1hZ2VMYXllclRl
eHR1cmVVcGRhdGVyKCkgeyB9CkBAIC04MCwxMCArNzksOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVy
VGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAgdm9p
ZCB1cGRhdGVUZXh0dXJlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIEND
UHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKICAgICB7Ci0gICAgICAgIHRleHR1cmUtPmJpbmRUZXh0
dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0KICAgICAgICAgLy8gU291cmNlIHJlY3Qgc2hvdWxk
IG5ldmVyIGdvIG91dHNpZGUgdGhlIGltYWdlIHBpeGVscywgZXZlbiBpZiB0aGlzCiAgICAgICAg
IC8vIGlzIHJlcXVlc3RlZCBiZWNhdXNlIHRoZSB0ZXh0dXJlIGV4dGVuZHMgb3V0c2lkZSB0aGUg
aW1hZ2UuCiAgICAgICAgIEludFJlY3QgY2xpcHBlZFNvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OwpA
QCAtOTUsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsaXBwZWREZXN0UmVjdC5zZXRTaXpl
KGNsaXBwZWRTb3VyY2VSZWN0LnNpemUoKSk7CiAKICAgICAgICAgU2tBdXRvTG9ja1BpeGVscyBs
b2NrKG1fYml0bWFwKTsKLSAgICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1fYml0bWFwLmdldFBpeGVscygpKSwgaW1hZ2VSZWN0LCBjbGlwcGVk
U291cmNlUmVjdCwgY2xpcHBlZERlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7
CisgICAgICAgIHRleHR1cmUtPnVwbG9hZChyZXNvdXJjZVByb3ZpZGVyLCBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4obV9iaXRtYXAuZ2V0UGl4ZWxzKCkpLCBpbWFnZVJlY3QsIGNsaXBwZWRT
b3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QpOwogICAgIH0KIAogICAgIHZvaWQgc2V0Qml0bWFw
KGNvbnN0IFNrQml0bWFwJiBiaXRtYXApCkBAIC0xMDQsMTMgKzEwMSw5IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKGJv
b2wgdXNlTWFwVGV4U3ViSW1hZ2UpCi0gICAgICAgIDogbV90ZXhTdWJJbWFnZSh1c2VNYXBUZXhT
dWJJbWFnZSkKLSAgICB7Ci0gICAgfQorICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsg
fQogCiAgICAgU2tCaXRtYXAgbV9iaXRtYXA7Ci0gICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90
ZXhTdWJJbWFnZTsKIH07CiAKIFBhc3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBJbWFnZUxh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpCkBAIC0xNjYsNyArMTU5LDcgQEAgdm9pZCBJbWFnZUxheWVy
Q2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQogICAgIGlmIChtX3RleHR1
cmVVcGRhdGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RleHR1cmVVcGRhdGVyID0gSW1h
Z2VMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUobGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOworICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBJ
bWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSgpOwogICAgIEdDM0RlbnVtIHRleHR1cmVG
b3JtYXQgPSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5iZXN0
VGV4dHVyZUZvcm1hdDsKICAgICBzZXRUZXh0dXJlRm9ybWF0KHRleHR1cmVGb3JtYXQpOwogICAg
IHNldFNhbXBsZWRUZXhlbEZvcm1hdCh0ZXh0dXJlVXBkYXRlcigpLT5zYW1wbGVkVGV4ZWxGb3Jt
YXQodGV4dHVyZUZvcm1hdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
aW5kZXggMzM3ZDc0Njk3OGY1NTcxNmU4MWRlNzFlZWE0MDU4ODc2MTE4NTllZC4uNTdlYTk4MTJh
NTYzOTQ3ZWY2MzE0OTNiMjdkNjMxOWU3MjExOTE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiU2tDb2xvci5oIgog
I2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVVcGxvYWRlci5oIgogI2luY2x1ZGUgIlRyYWNlRXZl
bnQuaCIKLSNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJj
Yy9DQ0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyUXVhZC5oIgogI2luY2x1
ZGUgImNjL0NDTWF0aFV0aWwuaCIKQEAgLTEyNiw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzQnVzeSgpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCB2b2lkIGJlZ2luVXBsb2FkcygpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmRV
cGxvYWRzKCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoQ0NH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRl
eHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERSB7IHRleHR1cmUtPnVwZGF0ZVJl
Y3QoY29udGV4dCwgYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0
dXJlLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IEludFJlY3Qg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREUgeyB0ZXh0dXJlLT51
cGRhdGVSZWN0KHJlc291cmNlUHJvdmlkZXIsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KQEAgLTEzNCw5
ICsxMzMsOSBAQCBwcm90ZWN0ZWQ6CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1QYXNz
T3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVh
dGUoQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRleHR1cmVVcGxvYWRlclNldHRpbmcpCitQYXNzT3du
UHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjcmVhdGUo
Q0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIsIFRleHR1cmVVcGxvYWRlck9wdGlvbiB0ZXh0dXJlVXBsb2FkZXJTZXR0aW5nKQogewot
ICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXIoYWRvcHRQdHIo
bmV3IExheWVyUmVuZGVyZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIHRleHR1cmVVcGxvYWRl
clNldHRpbmcpKSk7CisgICAgT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gbGF5ZXJSZW5k
ZXJlcihhZG9wdFB0cihuZXcgTGF5ZXJSZW5kZXJlckNocm9taXVtKGNsaWVudCwgcmVzb3VyY2VQ
cm92aWRlciwgdGV4dHVyZVVwbG9hZGVyU2V0dGluZykpKTsKICAgICBpZiAoIWxheWVyUmVuZGVy
ZXItPmluaXRpYWxpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE0NCwxNCAr
MTQzLDE1IEBAIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNyZWF0ZShDQ1JlbmRlcmVyQ2xpZW50CiB9CiAKIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqIGNsaWVudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVVwbG9hZGVyT3B0aW9uIHRl
eHR1cmVVcGxvYWRlclNldHRpbmcpCiAgICAgOiBDQ1JlbmRlcmVyKGNsaWVudCkKICAgICAsIG1f
Y3VycmVudFJlbmRlclBhc3MoMCkKICAgICAsIG1fY3VycmVudFRleHR1cmUoMCkKICAgICAsIG1f
b2Zmc2NyZWVuRnJhbWVidWZmZXJJZCgwKQogICAgICwgbV9zaGFyZWRHZW9tZXRyeVF1YWQoRmxv
YXRSZWN0KC0wLjVmLCAtMC41ZiwgMS4wZiwgMS4wZikpCi0gICAgLCBtX2NvbnRleHQoY29udGV4
dCkKKyAgICAsIG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQorICAgICwgbV9j
b250ZXh0KHJlc291cmNlUHJvdmlkZXItPmdyYXBoaWNzQ29udGV4dDNEKCkpCiAgICAgLCBtX2Rl
ZmF1bHRSZW5kZXJQYXNzKDApCiAgICAgLCBtX2lzVmlld3BvcnRDaGFuZ2VkKGZhbHNlKQogICAg
ICwgbV9pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKGZhbHNlKQpAQCAtMzQyLDcgKzM0Miw3IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JG
cmFtZShjb25zdCBDQ1JlbmRlclBhCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbmRl
clBhc3Nlc0luRHJhd09yZGVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmICghbV9yZW5kZXJQ
YXNzVGV4dHVyZXMuY29udGFpbnMocmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0tPmlkKCkpKSB7
Ci0gICAgICAgICAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRU
ZXh0dXJlOjpjcmVhdGUobV9pbXBsVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgICAgICAg
ICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVh
dGUobV9yZXNvdXJjZVByb3ZpZGVyKTsKICAgICAgICAgICAgIG1fcmVuZGVyUGFzc1RleHR1cmVz
LnNldChyZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+aWQoKSwgdGV4dHVyZS5yZWxlYXNlKCkp
OwogICAgICAgICB9CiAgICAgfQpAQCAtNTI5LDcgKzUyOSw5IEBAIHN0YXRpYyBpbmxpbmUgU2tC
aXRtYXAgYXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwg
Y29uc3QKIAogICAgIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+Zmx1c2goKTsKIAotICAgIHJl
dHVybiBDQ1JlbmRlclN1cmZhY2VGaWx0ZXJzOjphcHBseShmaWx0ZXJzLCBzb3VyY2VUZXh0dXJl
LT5pZCgpLCBzb3VyY2VUZXh0dXJlLT5zaXplKCksIGZpbHRlckNvbnRleHQuZ2V0KCkpOworICAg
IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yV3JpdGUgbG9jayhsYXllclJlbmRlcmVyLT5yZXNvdXJj
ZVByb3ZpZGVyKCksIHNvdXJjZVRleHR1cmUtPmlkKCkpOworICAgIFNrQml0bWFwIHNvdXJjZSA9
IENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KGZpbHRlcnMsIGxvY2sudGV4dHVyZUlkKCks
IHNvdXJjZVRleHR1cmUtPnNpemUoKSwgZmlsdGVyQ29udGV4dC5nZXQoKSk7CisgICAgcmV0dXJu
IHNvdXJjZTsKIH0KIAogUGFzc093blB0cjxDQ1Njb3BlZFRleHR1cmU+IExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFk
KiBxdWFkLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVudHNEZXZpY2VUcmFu
c2Zvcm0pCkBAIC01NjksNyArNTcxLDcgQEAgUGFzc093blB0cjxDQ1Njb3BlZFRleHR1cmU+IExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEMKIAogICAg
IGRldmljZVJlY3QuaW50ZXJzZWN0KG1fY3VycmVudFJlbmRlclBhc3MtPmZyYW1lYnVmZmVyT3V0
cHV0UmVjdCgpKTsKIAotICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IGRldmljZUJhY2tncm91
bmRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUobV9pbXBsVGV4dHVyZUFsbG9jYXRv
ci5nZXQoKSk7CisgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gZGV2aWNlQmFja2dyb3VuZFRl
eHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShtX3Jlc291cmNlUHJvdmlkZXIpOwogICAg
IGlmICghZ2V0RnJhbWVidWZmZXJUZXh0dXJlKGRldmljZUJhY2tncm91bmRUZXh0dXJlLmdldCgp
LCBkZXZpY2VSZWN0KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTU4MCw4ICs1ODIs
OCBAQCBQYXNzT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQwogICAgIEdyVGV4dHVyZSogdGV4dHVyZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8R3JUZXh0dXJlKj4oZmlsdGVyZWREZXZpY2VCYWNrZ3JvdW5kLmdldFRl
eHR1cmUoKSk7CiAgICAgaW50IGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCA9IHRl
eHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKIAotICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+
IGJhY2tncm91bmRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUobV9pbXBsVGV4dHVy
ZUFsbG9jYXRvci5nZXQoKSk7Ci0gICAgaWYgKCFiYWNrZ3JvdW5kVGV4dHVyZS0+YWxsb2NhdGUo
cXVhZC0+cXVhZFJlY3QoKS5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKKyAgICBP
d25QdHI8Q0NTY29wZWRUZXh0dXJlPiBiYWNrZ3JvdW5kVGV4dHVyZSA9IENDU2NvcGVkVGV4dHVy
ZTo6Y3JlYXRlKG1fcmVzb3VyY2VQcm92aWRlcik7CisgICAgaWYgKCFiYWNrZ3JvdW5kVGV4dHVy
ZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgp
LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNh
Z2VGcmFtZWJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgY29uc3QgQ0NS
ZW5kZXJQYXNzKiB0YXJnZXRSZW5kZXJQYXNzID0gbV9jdXJyZW50UmVuZGVyUGFzczsKQEAgLTYy
NiwxNiArNjI4LDIxIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFz
c1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgLy8gRklYTUU6IENh
Y2hlIHRoaXMgdmFsdWUgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGRvIGl0IGZvciBib3RoIHRo
ZSBzdXJmYWNlIGFuZCBpdHMgcmVwbGljYS4KICAgICAvLyBBcHBseSBmaWx0ZXJzIHRvIHRoZSBj
b250ZW50cyB0ZXh0dXJlLgogICAgIFNrQml0bWFwIGZpbHRlckJpdG1hcCA9IGFwcGx5RmlsdGVy
cyh0aGlzLCBxdWFkLT5maWx0ZXJzKCksIGNvbnRlbnRzVGV4dHVyZSk7Ci0gICAgaW50IGNvbnRl
bnRzVGV4dHVyZUlkID0gY29udGVudHNUZXh0dXJlLT5pZCgpOworICAgIE93blB0cjxDQ1Njb3Bl
ZExvY2tSZXNvdXJjZUZvclJlYWQ+IGNvbnRlbnRzUmVzb3VyY2VMb2NrOworICAgIHVuc2lnbmVk
IGNvbnRlbnRzVGV4dHVyZUlkID0gMDsKICAgICBpZiAoZmlsdGVyQml0bWFwLmdldFRleHR1cmUo
KSkgewogICAgICAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJldF9jYXN0PEdyVGV4
dHVyZSo+KGZpbHRlckJpdG1hcC5nZXRUZXh0dXJlKCkpOwogICAgICAgICBjb250ZW50c1RleHR1
cmVJZCA9IHRleHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBjb250ZW50c1Jlc291cmNlTG9jayA9IGFkb3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tSZXNvdXJj
ZUZvclJlYWQobV9yZXNvdXJjZVByb3ZpZGVyLCBjb250ZW50c1RleHR1cmUtPmlkKCkpKTsKKyAg
ICAgICAgY29udGVudHNUZXh0dXJlSWQgPSBjb250ZW50c1Jlc291cmNlTG9jay0+dGV4dHVyZUlk
KCk7CiAgICAgfQogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZCB0ZXh0dXJlIGlmIHRoZXJl
IGlzIG9uZS4KICAgICBpZiAoYmFja2dyb3VuZFRleHR1cmUpIHsKICAgICAgICAgQVNTRVJUKGJh
Y2tncm91bmRUZXh0dXJlLT5zaXplKCkgPT0gcXVhZC0+cXVhZFJlY3QoKS5zaXplKCkpOwotICAg
ICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoYmFja2dyb3VuZFRleHR1cmUtPmlkKCksIHF1
YWQtPnF1YWRSZWN0KCkuc2l6ZSgpLCBxdWFkLT5kcmF3VHJhbnNmb3JtKCkpOworICAgICAgICBD
Q1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIGJhY2tn
cm91bmRUZXh0dXJlLT5pZCgpKTsKKyAgICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGxv
Y2sudGV4dHVyZUlkKCksIHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpLCBxdWFkLT5kcmF3VHJhbnNm
b3JtKCkpOwogICAgIH0KIAogICAgIGJvb2wgY2xpcHBlZCA9IGZhbHNlOwpAQCAtNjUxLDcgKzY1
OCwxMiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNv
bnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkKQogICAgICAgICBkZXZpY2VMYXllckVkZ2Vz
LmluZmxhdGVBbnRpQWxpYXNpbmdEaXN0YW5jZSgpOwogICAgIH0KIAotICAgIGJvb2wgdXNlTWFz
ayA9IHF1YWQtPm1hc2tUZXh0dXJlSWQoKTsKKyAgICBPd25QdHI8Q0NTY29wZWRMb2NrUmVzb3Vy
Y2VGb3JSZWFkPiBtYXNrUmVzb3VyY2VMb2NrOworICAgIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQg
PSAwOworICAgIGlmIChxdWFkLT5tYXNrUmVzb3VyY2VJZCgpKSB7CisgICAgICAgIG1hc2tSZXNv
dXJjZUxvY2sgPSBhZG9wdFB0cihuZXcgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkKG1fcmVz
b3VyY2VQcm92aWRlciwgcXVhZC0+bWFza1Jlc291cmNlSWQoKSkpOworICAgICAgICBtYXNrVGV4
dHVyZUlkID0gbWFza1Jlc291cmNlTG9jay0+dGV4dHVyZUlkKCk7CisgICAgfQogCiAgICAgLy8g
RklYTUU6IHVzZSB0aGUgYmFja2dyb3VuZFRleHR1cmUgYW5kIGJsZW5kIHRoZSBiYWNrZ3JvdW5k
IGluIHdpdGggdGhpcyBkcmF3IGluc3RlYWQgb2YgaGF2aW5nIGEgc2VwYXJhdGUgY29weSBvZiB0
aGUgYmFja2dyb3VuZCB0ZXh0dXJlLgogCkBAIC02NjMsNyArNjc1LDcgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3
UXVhZCogcXVhZCkKICAgICBpbnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiA9IC0xOwogICAg
IGludCBzaGFkZXJNYXRyaXhMb2NhdGlvbiA9IC0xOwogICAgIGludCBzaGFkZXJBbHBoYUxvY2F0
aW9uID0gLTE7Ci0gICAgaWYgKHVzZUFBICYmIHVzZU1hc2spIHsKKyAgICBpZiAodXNlQUEgJiYg
bWFza1RleHR1cmVJZCkgewogICAgICAgICBjb25zdCBSZW5kZXJQYXNzTWFza1Byb2dyYW1BQSog
cHJvZ3JhbSA9IHJlbmRlclBhc3NNYXNrUHJvZ3JhbUFBKCk7CiAgICAgICAgIEdMQyhjb250ZXh0
KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKICAgICAgICAg
R0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFk
ZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwpAQCAtNjczLDcgKzY4NSw3IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFzc1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNz
RHJhd1F1YWQqIHF1YWQpCiAgICAgICAgIHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24gPSBwcm9n
cmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKTsKICAgICAgICAgc2hh
ZGVyTWF0cml4TG9jYXRpb24gPSBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlv
bigpOwogICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9uID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFk
ZXIoKS5hbHBoYUxvY2F0aW9uKCk7Ci0gICAgfSBlbHNlIGlmICghdXNlQUEgJiYgdXNlTWFzaykg
eworICAgIH0gZWxzZSBpZiAoIXVzZUFBICYmIG1hc2tUZXh0dXJlSWQpIHsKICAgICAgICAgY29u
c3QgUmVuZGVyUGFzc01hc2tQcm9ncmFtKiBwcm9ncmFtID0gcmVuZGVyUGFzc01hc2tQcm9ncmFt
KCk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFt
LT5wcm9ncmFtKCkpKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3Jt
MWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwpAQCAt
NjgxLDcgKzY5Myw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyUGFz
c1F1YWQoY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqIHF1YWQpCiAgICAgICAgIHNoYWRlck1h
c2tTYW1wbGVyTG9jYXRpb24gPSBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVy
TG9jYXRpb24oKTsKICAgICAgICAgc2hhZGVyTWF0cml4TG9jYXRpb24gPSBwcm9ncmFtLT52ZXJ0
ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpOwogICAgICAgICBzaGFkZXJBbHBoYUxvY2F0aW9u
ID0gcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCk7Ci0gICAgfSBlbHNl
IGlmICh1c2VBQSAmJiAhdXNlTWFzaykgeworICAgIH0gZWxzZSBpZiAodXNlQUEgJiYgIW1hc2tU
ZXh0dXJlSWQpIHsKICAgICAgICAgY29uc3QgUmVuZGVyUGFzc1Byb2dyYW1BQSogcHJvZ3JhbSA9
IHJlbmRlclBhc3NQcm9ncmFtQUEoKTsKICAgICAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgp
LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOwogICAgICAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJM
b2NhdGlvbigpLCAwKSk7CkBAIC03MDIsNyArNzE0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVh
ZCkKICAgICBpZiAoc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiAhPSAtMSkgewogICAgICAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkUxKSk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFp
KHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIDEpKTsKLSAgICAgICAgY29udGV4dCgpLT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcXVhZC0+bWFza1RleHR1cmVJ
ZCgpKTsKKyAgICAgICAgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgbWFza1RleHR1cmVJZCk7CiAgICAgICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKICAgICB9
CiAKQEAgLTgzNyw3ICs4NDksOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Rp
bGVRdWFkKGNvbnN0IENDVGlsZURyYXdRdWFkKiBxdWFkKQogICAgIEdMQyhjb250ZXh0KCksIGNv
bnRleHQoKS0+dXNlUHJvZ3JhbSh1bmlmb3Jtcy5wcm9ncmFtKSk7CiAgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT51bmlmb3JtMWkodW5pZm9ybXMuc2FtcGxlckxvY2F0aW9uLCAwKSk7CiAg
ICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCkpOwotICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHF1YWQtPnRleHR1cmVJZCgpKSk7Cisg
ICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkIHF1YWRSZXNvdXJjZUxvY2sobV9yZXNvdXJj
ZVByb3ZpZGVyLCBxdWFkLT5yZXNvdXJjZUlkKCkpOworICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHF1YWRSZXNv
dXJjZUxvY2sudGV4dHVyZUlkKCkpKTsKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnRl
eFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIHF1YWQtPnRleHR1cmVGaWx0ZXIoKSkpOwogICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgcXVhZC0+
dGV4dHVyZUZpbHRlcigpKSk7CiAKQEAgLTkzMSwxMiArOTQ0LDE1IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3WVVWVmlkZW9RdWFkKGNvbnN0IENDWVVWVmlkZW9EcmF3UXVhZCog
cXVhZCkKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB1UGxhbmUgPSBx
dWFkLT51UGxhbmUoKTsKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lJiB2
UGxhbmUgPSBxdWFkLT52UGxhbmUoKTsKIAorICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVh
ZCB5UGxhbmVMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgeVBsYW5lLnJlc291cmNlSWQpOworICAg
IENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCB1UGxhbmVMb2NrKG1fcmVzb3VyY2VQcm92aWRl
ciwgdVBsYW5lLnJlc291cmNlSWQpOworICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCB2
UGxhbmVMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgdlBsYW5lLnJlc291cmNlSWQpOwogICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRTEpKTsKLSAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB5UGxhbmUudGV4dHVyZUlkKSk7CisgICAgR0xD
KGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgeVBsYW5lTG9jay50ZXh0dXJlSWQoKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNv
bnRleHQoKS0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTIpKTsKLSAg
ICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCB1UGxhbmUudGV4dHVyZUlkKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdVBsYW5l
TG9jay50ZXh0dXJlSWQoKSkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZl
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTMpKTsKLSAgICBHTEMoY29udGV4dCgp
LCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB2
UGxhbmUudGV4dHVyZUlkKSk7CisgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdlBsYW5lTG9jay50ZXh0dXJlSWQo
KSkpOwogCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0t
PnByb2dyYW0oKSkpOwogCkBAIC0xMDQ3LDcgKzEwNjMsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1RleHR1cmVRdWFkKGNvbnN0IENDVGV4dHVyZURyYXdRdWFkKiBxdWFkKQog
ICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTRmKGJpbmRpbmcudGV4VHJhbnNm
b3JtTG9jYXRpb24sIHV2UmVjdC54KCksIHV2UmVjdC55KCksIHV2UmVjdC53aWR0aCgpLCB1dlJl
Y3QuaGVpZ2h0KCkpKTsKIAogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YWN0aXZlVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAgICBHTEMoY29udGV4dCgpLCBj
b250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBxdWFk
LT50ZXh0dXJlSWQoKSkpOworICAgIENDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCBxdWFkUmVz
b3VyY2VMb2NrKG1fcmVzb3VyY2VQcm92aWRlciwgcXVhZC0+cmVzb3VyY2VJZCgpKTsKKyAgICBH
TEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBxdWFkUmVzb3VyY2VMb2NrLnRleHR1cmVJZCgpKSk7CiAKICAgICAvLyBGSVhN
RTogc2V0dGluZyB0aGUgdGV4dHVyZSBwYXJhbWV0ZXJzIGV2ZXJ5IHRpbWUgaXMgcmVkdW5kYW50
LiBNb3ZlIHRoaXMgY29kZSBzb21ld2hlcmUKICAgICAvLyB3aGVyZSBpdCB3aWxsIG9ubHkgaGFw
cGVuIG9uY2UgcGVyIHRleHR1cmUuCkBAIC0xMDk0LDEzICsxMTExLDYgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdJT1N1cmZhY2VRdWFkKGNvbnN0IENDSU9TdXJmYWNlRHJhd1F1
YWQqIHF1YWQpCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQo
KS0+YmluZFRleHR1cmUoRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIsIHF1YWQt
PmlvU3VyZmFjZVRleHR1cmVJZCgpKSk7CiAKLSAgICAvLyBGSVhNRTogc2V0dGluZyB0aGUgdGV4
dHVyZSBwYXJhbWV0ZXJzIGV2ZXJ5IHRpbWUgaXMgcmVkdW5kYW50LiBNb3ZlIHRoaXMgY29kZSBz
b21ld2hlcmUKLSAgICAvLyB3aGVyZSBpdCB3aWxsIG9ubHkgaGFwcGVuIG9uY2UgcGVyIHRleHR1
cmUuCi0gICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklM
VEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7Ci0gICAgR0xDKGNvbnRleHQoKSwgY29u
dGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElO
RUFSKSk7Ci0gICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQ
X1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKSk7Ci0gICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpD
TEFNUF9UT19FREdFKSk7Ci0KICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFkVHJhbnNm
b3JtID0gcXVhZC0+cXVhZFRyYW5zZm9ybSgpOwogICAgIEludFJlY3QgcXVhZFJlY3QgPSBxdWFk
LT5xdWFkUmVjdCgpOwogICAgIHF1YWRUcmFuc2Zvcm0udHJhbnNsYXRlKHF1YWRSZWN0LngoKSAr
IHF1YWRSZWN0LndpZHRoKCkgLyAyLjAsIHF1YWRSZWN0LnkoKSArIHF1YWRSZWN0LmhlaWdodCgp
IC8gMi4wKTsKQEAgLTExMjIsNyArMTEzMiw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3SGVhZHNVcERpc3BsYXkoY29uc3QgQ0NTY29wZWRUZXh0dXJlKiBodWRUZXh0dXJlCiAg
ICAgY29uc3QgSGVhZHNVcERpc3BsYXlQcm9ncmFtKiBwcm9ncmFtID0gaGVhZHNVcERpc3BsYXlQ
cm9ncmFtKCk7CiAgICAgQVNTRVJUKHByb2dyYW0gJiYgcHJvZ3JhbS0+aW5pdGlhbGl6ZWQoKSk7
CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFMCkpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGh1ZFRleHR1cmUtPmlkKCkpKTsK
KyAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvclJlYWQgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIs
IGh1ZFRleHR1cmUtPmlkKCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxvY2sudGV4dHVyZUlkKCkpKTsK
ICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3Jh
bSgpKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCkBAIC0xMTM2LDYgKzEx
NDcsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0hlYWRzVXBEaXNwbGF5KGNv
bnN0IENDU2NvcGVkVGV4dHVyZSogaHVkVGV4dHVyZQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKCkKIHsKKyAgICBtX2N1cnJlbnRGcmFtZWJ1ZmZlckxv
Y2suY2xlYXIoKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKIH0KQEAgLTEzNzAsMTAgKzEz
ODIsMTEgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVy
ZShDQ1Njb3BlZFRleHR1cmUqIHRleHR1cmUsIGNvbnMKIHsKICAgICBBU1NFUlQoIXRleHR1cmUt
PmlkKCkgfHwgKHRleHR1cmUtPnNpemUoKSA9PSBkZXZpY2VSZWN0LnNpemUoKSAmJiB0ZXh0dXJl
LT5mb3JtYXQoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6UkdCKSk7CiAKLSAgICBpZiAoIXRleHR1
cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFsbG9jYXRlKGRldmljZVJlY3Quc2l6ZSgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCKSkKKyAgICBpZiAoIXRleHR1cmUtPmlkKCkgJiYgIXRleHR1cmUtPmFs
bG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBkZXZpY2VSZWN0LnNpemUoKSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQiwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlLT5pZCgpKSk7Cisg
ICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZSBsb2NrKG1fcmVzb3VyY2VQcm92aWRlciwg
dGV4dHVyZS0+aWQoKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbG9jay50ZXh0dXJlSWQoKSkpOwogICAg
IEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgp
LCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTEzOTAsNiArMTQwMyw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp1c2VSZW5kZXJQYXNzKGNvbnN0IENDUmVuZGVyUGFzcyogcmVuZGVyUGFzcykKICAgICBtX2N1
cnJlbnRUZXh0dXJlID0gMDsKIAogICAgIGlmIChyZW5kZXJQYXNzID09IG1fZGVmYXVsdFJlbmRl
clBhc3MpIHsKKyAgICAgICAgbV9jdXJyZW50RnJhbWVidWZmZXJMb2NrLmNsZWFyKCk7CiAgICAg
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOwogICAgICAgICBzZXREcmF3RnJhbWVidWZmZXJSZWN0
KHJlbmRlclBhc3MtPmZyYW1lYnVmZmVyT3V0cHV0UmVjdCgpLCB0cnVlKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMzk4LDcgKzE0MTIsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dXNlUmVuZGVyUGFzcyhjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MpCiAgICAgQ0NT
Y29wZWRUZXh0dXJlKiB0ZXh0dXJlID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuZ2V0KHJlbmRlclBh
c3MtPmlkKCkpOwogICAgIEFTU0VSVCh0ZXh0dXJlKTsKIAotICAgIGlmICghdGV4dHVyZS0+aWQo
KSAmJiAhdGV4dHVyZS0+YWxsb2NhdGUocmVuZGVyUGFzc1RleHR1cmVTaXplKHJlbmRlclBhc3Mp
LCByZW5kZXJQYXNzVGV4dHVyZUZvcm1hdChyZW5kZXJQYXNzKSkpCisgICAgaWYgKCF0ZXh0dXJl
LT5pZCgpICYmICF0ZXh0dXJlLT5hbGxvY2F0ZShDQ1JlbmRlcmVyOjpJbXBsUG9vbCwgcmVuZGVy
UGFzc1RleHR1cmVTaXplKHJlbmRlclBhc3MpLCByZW5kZXJQYXNzVGV4dHVyZUZvcm1hdChyZW5k
ZXJQYXNzKSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VGcmFtZWJ1ZmZlcikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1
cmUodGV4dHVyZSwgcmVuZGVyUGFzcy0+ZnJhbWVidWZmZXJPdXRwdXRSZWN0KCkpOwpAQCAtMTQw
Nyw3ICsxNDIxLDYgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclBhc3Mo
Y29uc3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzKQogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVzZVNjb3BlZFRleHR1cmUoY29uc3QgQ0NTY29wZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpCiB7CiAgICAgQVNTRVJUKHRleHR1cmUtPmlkKCkpOwot
CiAgICAgbV9jdXJyZW50UmVuZGVyUGFzcyA9IDA7CiAgICAgbV9jdXJyZW50VGV4dHVyZSA9IHRl
eHR1cmU7CiAKQEAgLTE0MTksNyArMTQzMiw4IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoY29uc3QgQ0NTY29wZWRUZXh0dXJlKiB0ZXh0CiAg
ICAgQVNTRVJUKHRleHR1cmUtPmlkKCkpOwogCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0
LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX29mZnNj
cmVlbkZyYW1lYnVmZmVySWQpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgdGV4dHVyZS0+aWQoKSwgMCkpOworICAgIG1fY3VycmVudEZyYW1lYnVmZmVyTG9jayA9IGFk
b3B0UHRyKG5ldyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlKG1fcmVzb3VyY2VQcm92aWRl
ciwgdGV4dHVyZS0+aWQoKSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZnJhbWVi
dWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBtX2N1cnJlbnRGcmFtZWJ1ZmZlckxvY2stPnRleHR1cmVJZCgpLCAwKSk7CiAKICNpZiAhZGVm
aW5lZCAoIE5ERUJVRyApCiAgICAgaWYgKG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9DT01QTEVURSkgewpAQCAtMTQ5NiwxNCArMTUxMCw2IEBAIGJvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjppbml0aWFsaXplU2hhcmVkT2JqZWN0cygpCiAgICAgICAgIG1fdGV4
dHVyZVVwbG9hZGVyID0gVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjpjcmVhdGUobV9jb250ZXh0
KTsKICAgICBlbHNlCiAgICAgICAgIG1fdGV4dHVyZVVwbG9hZGVyID0gVW50aHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXI6OmNyZWF0ZSgpOwotICAgIG1fY29udGVudHNUZXh0dXJlQWxsb2NhdG9yID0g
VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpjcmVhdGUobV9jb250ZXh0LCBtX2NhcGFiaWxpdGll
cy5tYXhUZXh0dXJlU2l6ZSk7Ci0gICAgbV9pbXBsVGV4dHVyZUFsbG9jYXRvciA9IFRyYWNraW5n
VGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlKG1fY29udGV4dCwgbV9jYXBhYmlsaXRpZXMubWF4VGV4
dHVyZVNpemUpOwotICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1RleHR1cmVVc2FnZUhpbnQp
Ci0gICAgICAgIG1faW1wbFRleHR1cmVBbGxvY2F0b3ItPnNldFRleHR1cmVVc2FnZUhpbnQoVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQpOwotICAgIGlmICht
X2NhcGFiaWxpdGllcy51c2luZ1RleHR1cmVTdG9yYWdlRXh0ZW5zaW9uKSB7Ci0gICAgICAgIG1f
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yLT5zZXRVc2VUZXh0dXJlU3RvcmFnZUV4dCh0cnVlKTsK
LSAgICAgICAgbV9pbXBsVGV4dHVyZUFsbG9jYXRvci0+c2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQo
dHJ1ZSk7Ci0gICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oCmluZGV4IGJkN2I0ZTE1MTc5OWU1ODU1MDJiYTljMzA2NGE3Njk1NTAxOTI4
OGIuLmNkNWIyY2MyYjI5MjE1Y2UxZWY0NjI0YzRlYjFjZjQ4NDhiYzkyODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0zNiw3ICszNiw2IEBACiAKICNpbmNsdWRlICJF
eHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKLSNpbmNs
dWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0NoZWNrZXJi
b2FyZERyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkLmgiCiAj
aW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VEcmF3UXVhZC5oIgpAQCAtNjYsNyArNjUsNyBAQCBjbGFz
cyBMYXllclJlbmRlcmVyQ2hyb21pdW0gOiBwdWJsaWMgQ0NSZW5kZXJlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpX
ZWJHcmFwaGljc0NvbnRleHRMb3N0Q2FsbGJhY2sgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KExheWVyUmVuZGVyZXJDaHJvbWl1bSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
TGF5ZXJSZW5kZXJlckNocm9taXVtPiBjcmVhdGUoQ0NSZW5kZXJlckNsaWVudCosIFdlYktpdDo6
V2ViR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOworICAgIHN0YXRp
YyBQYXNzT3duUHRyPExheWVyUmVuZGVyZXJDaHJvbWl1bT4gY3JlYXRlKENDUmVuZGVyZXJDbGll
bnQqLCBDQ1Jlc291cmNlUHJvdmlkZXIqLCBUZXh0dXJlVXBsb2FkZXJPcHRpb24pOwogCiAgICAg
dmlydHVhbCB+TGF5ZXJSZW5kZXJlckNocm9taXVtKCk7CiAKQEAgLTEwMiw4ICsxMDEsNiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFRleHR1cmVDb3BpZXIqIHRleHR1cmVDb3BpZXIoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX3RleHR1cmVDb3BpZXIuZ2V0KCk7IH0KICAgICB2aXJ0dWFs
IFRleHR1cmVVcGxvYWRlciogdGV4dHVyZVVwbG9hZGVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gbV90ZXh0dXJlVXBsb2FkZXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIFRleHR1cmVBbGxvY2F0
b3IqIGltcGxUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbXBs
VGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQotICAgIHZpcnR1YWwgVGV4dHVyZUFsbG9jYXRvciog
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jb250
ZW50c1RleHR1cmVBbGxvY2F0b3IuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRl
eHRMb3N0KCkgT1ZFUlJJREU7CiAKQEAgLTExMyw5ICsxMTAsMTEgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFj
aXR5LCBjb25zdCBGbG9hdFF1YWQmLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0
cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0aW9uLCBpbnQgcXVhZExvY2F0aW9uKTsKICAgICB2
b2lkIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXpl
JiBib3VuZHMsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRy
aXgpOworICAgIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VQcm92aWRlcjsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTGF5ZXJSZW5k
ZXJlckNocm9taXVtKENDUmVuZGVyZXJDbGllbnQqLCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZVVwbG9hZGVyT3B0aW9uKTsKKyAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0o
Q0NSZW5kZXJlckNsaWVudCosIENDUmVzb3VyY2VQcm92aWRlciosIFRleHR1cmVVcGxvYWRlck9w
dGlvbik7CisKIAogICAgIGJvb2wgaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNGcmFtZWJ1ZmZlckRpc2NhcmRlZDsgfQogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwpA
QCAtMTc3LDYgKzE3Niw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIG1f
Y3VycmVudFJlbmRlclBhc3M7CiAgICAgY29uc3QgQ0NTY29wZWRUZXh0dXJlKiBtX2N1cnJlbnRU
ZXh0dXJlOworICAgIE93blB0cjxDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlPiBtX2N1cnJl
bnRGcmFtZWJ1ZmZlckxvY2s7CiAgICAgdW5zaWduZWQgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklk
OwogCiAgICAgT3duUHRyPEdlb21ldHJ5QmluZGluZz4gbV9zaGFyZWRHZW9tZXRyeTsKQEAgLTI2
MiwxMCArMjYyLDkgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8U29saWRDb2xvclByb2dyYW0+IG1f
c29saWRDb2xvclByb2dyYW07CiAgICAgT3duUHRyPEhlYWRzVXBEaXNwbGF5UHJvZ3JhbT4gbV9o
ZWFkc1VwRGlzcGxheVByb2dyYW07CiAKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3Vy
Y2VQcm92aWRlcjsKICAgICBPd25QdHI8QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyPiBtX3RleHR1
cmVDb3BpZXI7CiAgICAgT3duUHRyPFRleHR1cmVVcGxvYWRlcj4gbV90ZXh0dXJlVXBsb2FkZXI7
Ci0gICAgT3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9jb250ZW50c1RleHR1cmVB
bGxvY2F0b3I7Ci0gICAgT3duUHRyPFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcj4gbV9pbXBsVGV4
dHVyZUFsbG9jYXRvcjsKIAogICAgIEhhc2hNYXA8aW50LCBPd25QdHI8Q0NTY29wZWRUZXh0dXJl
PiA+IG1fcmVuZGVyUGFzc1RleHR1cmVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFn
ZS5jcHAKaW5kZXggYjg3YjQzZDk0MDFhMDFmZDE5OThiNzNmMmNlZmViNmZjMDI0ZjQ1Yy4uYjY2
ZDc5ZTA0ZWJkYWY4YTY0Mjc5ZDhhMzM3YmU4M2U0MWZhYzU5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGV4dHVyZVN1YkltYWdlLmNwcApAQCAtMzIsMTIgKzMyLDE1IEBACiAjaW5jbHVkZSAiRXh0ZW5z
aW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIgLy8g
Rm9yIEdMQygpIG1hY3JvCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgotI2luY2x1ZGUgImNjL0ND
R3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNE
Lmg+CisKK3VzaW5nIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OkxheWVyVGV4dHVyZVN1YkltYWdlKGJv
b2wgdXNlTWFwVGV4U3ViSW1hZ2UpCiAgICAgOiBtX3VzZU1hcFRleFN1YkltYWdlKHVzZU1hcFRl
eFN1YkltYWdlKQorICAgICwgbV9zdWJJbWFnZVNpemUoMCkKIHsKIH0KIApAQCAtNDUsMTggKzQ4
LDkgQEAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6On5MYXllclRleHR1cmVTdWJJbWFnZSgpCiB7CiB9
CiAKLXZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnNldFN1YkltYWdlU2l6ZShjb25zdCBJbnRT
aXplJiBzdWJJbWFnZVNpemUpCi17Ci0gICAgaWYgKHN1YkltYWdlU2l6ZSA9PSBtX3N1YkltYWdl
U2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zdWJJbWFnZVNpemUgPSBzdWJJbWFnZVNp
emU7Ci0gICAgbV9zdWJJbWFnZS5jbGVhcigpOwotfQotCiB2b2lkIExheWVyVGV4dHVyZVN1Yklt
YWdlOjp1cGxvYWQoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVj
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgV2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgaWYgKG1fdXNlTWFwVGV4U3ViSW1hZ2Up
CiAgICAgICAgIHVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShpbWFnZSwgaW1hZ2VSZWN0LCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKQEAgLTY2LDExICs2MCw5IEBAIHZv
aWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZChjb25zdCB1aW50OF90KiBpbWFnZSwgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0CiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9h
ZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1h
Z2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZv
cm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkxheWVyVGV4dHVy
ZVN1YkltYWdlOjp1cGxvYWRXaXRoVGV4U3ViSW1hZ2UiKTsKLSAgICBpZiAoIW1fc3ViSW1hZ2Up
Ci0gICAgICAgIG1fc3ViSW1hZ2UgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W21fc3ViSW1h
Z2VTaXplLndpZHRoKCkgKiBtX3N1YkltYWdlU2l6ZS5oZWlnaHQoKSAqIDRdKTsKIAogICAgIC8v
IE9mZnNldCBmcm9tIGltYWdlLXJlY3QgdG8gc291cmNlLXJlY3QuCiAgICAgSW50UG9pbnQgb2Zm
c2V0KHNvdXJjZVJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSwgc291cmNlUmVjdC55KCkgLSBpbWFn
ZVJlY3QueSgpKTsKQEAgLTc5LDYgKzcxLDExIEBAIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6
OnVwbG9hZFdpdGhUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50CiAg
ICAgaWYgKGltYWdlUmVjdC53aWR0aCgpID09IHNvdXJjZVJlY3Qud2lkdGgoKSAmJiAhb2Zmc2V0
LngoKSkKICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmaW1hZ2VbNCAqIG9mZnNldC55KCkgKiBpbWFn
ZVJlY3Qud2lkdGgoKV07CiAgICAgZWxzZSB7CisgICAgICAgIHNpemVfdCBuZWVkZWRTaXplID0g
NCAqIGRlc3RSZWN0LndpZHRoKCkgKiBkZXN0UmVjdC5oZWlnaHQoKTsKKyAgICAgICAgaWYgKG1f
c3ViSW1hZ2VTaXplIDwgbmVlZGVkU2l6ZSkgeworICAgICAgICAgIG1fc3ViSW1hZ2UgPSBhZG9w
dEFycmF5UHRyKG5ldyB1aW50OF90W25lZWRlZFNpemVdKTsKKyAgICAgICAgICBtX3N1YkltYWdl
U2l6ZSA9IG5lZWRlZFNpemU7CisgICAgICAgIH0KICAgICAgICAgLy8gU3RyaWRlcyBub3QgZXF1
YWwsIHNvIGRvIGEgcm93LWJ5LXJvdyBtZW1jcHkgZnJvbSB0aGUKICAgICAgICAgLy8gcGFpbnQg
cmVzdWx0cyBpbnRvIGEgdGVtcCBidWZmZXIgZm9yIHVwbG9hZGluZy4KICAgICAgICAgZm9yIChp
bnQgcm93ID0gMDsgcm93IDwgZGVzdFJlY3QuaGVpZ2h0KCk7ICsrcm93KQpAQCAtODksMzAgKzg2
LDE5IEBAIHZvaWQgTGF5ZXJUZXh0dXJlU3ViSW1hZ2U6OnVwbG9hZFdpdGhUZXhTdWJJbWFnZShj
b25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50CiAgICAgICAgIHBpeGVsU291cmNlID0gJm1f
c3ViSW1hZ2VbMF07CiAgICAgfQogCi0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M2QpIHsK
LSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBv
c2l0aW5nLgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEdMQyhjb250ZXh0M2QsIGNvbnRl
eHQzZC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVz
dFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdo
dCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbFNvdXJj
ZSkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJl
Y3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0JZVEUsIHBpeGVsU291cmNlKSk7CiB9CiAKIHZvaWQgTGF5ZXJUZXh0dXJlU3Vi
SW1hZ2U6OnVwbG9hZFdpdGhNYXBUZXhTdWJJbWFnZShjb25zdCB1aW50OF90KiBpbWFnZSwgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVu
dW0gZm9ybWF0LCBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBUUkFDRV9F
VkVOVDAoImNjIiwgIkxheWVyVGV4dHVyZVN1YkltYWdlOjp1cGxvYWRXaXRoTWFwVGV4U3ViSW1h
Z2UiKTsKLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250
ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KICAgICAvLyBPZmZzZXQgZnJvbSBpbWFnZS1yZWN0IHRvIHNvdXJj
ZS1yZWN0LgogICAgIEludFBvaW50IG9mZnNldChzb3VyY2VSZWN0LngoKSAtIGltYWdlUmVjdC54
KCksIHNvdXJjZVJlY3QueSgpIC0gaW1hZ2VSZWN0LnkoKSk7CiAKICAgICAvLyBVcGxvYWQgdGls
ZSBkYXRhIHZpYSBhIG1hcHBlZCB0cmFuc2ZlciBidWZmZXIKLSAgICB1aW50OF90KiBwaXhlbERl
c3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY29udGV4dDNkLT5tYXBUZXhTdWJJbWFnZTJEQ0hS
T01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVz
dFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgZm9ybWF0LCBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldS
SVRFX09OTFkpKTsKKyAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oY29udGV4dC0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgo
KSwgZGVzdFJlY3QuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7CiAKICAgICBpZiAoIXBp
eGVsRGVzdCkgewogICAgICAgICB1cGxvYWRXaXRoVGV4U3ViSW1hZ2UoaW1hZ2UsIGltYWdlUmVj
dCwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7CkBAIC0xMzYsNyArMTIy
LDcgQEAgdm9pZCBMYXllclRleHR1cmVTdWJJbWFnZTo6dXBsb2FkV2l0aE1hcFRleFN1YkltYWdl
KGNvbnN0IHVpbnQ4X3QqIGltYWdlLCBjb25zdAogICAgICAgICAgICAgICAgICAgICZpbWFnZVs0
ICogKG9mZnNldC54KCkgKyAob2Zmc2V0LnkoKSArIHJvdykgKiBpbWFnZVJlY3Qud2lkdGgoKSld
LAogICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LndpZHRoKCkgKiBjb21wb25lbnRzUGVyUGl4
ZWwgKiBieXRlc1BlckNvbXBvbmVudCk7CiAgICAgfQotICAgIEdMQyhjb250ZXh0M2QsIGNvbnRl
eHQzZC0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0ocGl4ZWxEZXN0KSk7CisgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKHBpeGVsRGVzdCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2Uu
aAppbmRleCA0ZjFjNDE1MjE0ZDIzMjlhYjZlNzJjZGUxYjFmMmZlMjJmMjhhMjcwLi4zNTdiNjQx
MzQ0YjJlMGNmZGY1ZTNhZmU5MzJjOGQxOGFmYWU3MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZVN1YkltYWdlLmgKQEAgLTM0LDMwICszNCwzMSBAQAogI2luY2x1ZGUgIkludFNpemUuaCIKICNp
bmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKK30KIAotY2xhc3MgQ0NH
cmFwaGljc0NvbnRleHQ7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyVGV4dHVy
ZVN1YkltYWdlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMYXllclRleHR1cmVTdWJJbWFnZShi
b29sIHVzZU1hcFN1YkZvclVwbG9hZCk7CiAgICAgfkxheWVyVGV4dHVyZVN1YkltYWdlKCk7CiAK
LSAgICB2b2lkIHNldFN1YkltYWdlU2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCB1cGxv
YWQoY29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAg
ICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCwKLSAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0
Kik7CisgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGxvYWRXaXRoVGV4U3ViSW1hZ2Uo
Y29uc3QgdWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51
bSBmb3JtYXQsIENDR3JhcGhpY3NDb250ZXh0Kik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0MzRGVudW0gZm9ybWF0LCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKik7CiAg
ICAgdm9pZCB1cGxvYWRXaXRoTWFwVGV4U3ViSW1hZ2UoY29uc3QgdWludDhfdCogaW1hZ2UsIGNv
bnN0IEludFJlY3QmIGltYWdlUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsIENDR3JhcGhp
Y3NDb250ZXh0Kik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0g
Zm9ybWF0LCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKik7CiAKICAgICBib29sIG1fdXNl
TWFwVGV4U3ViSW1hZ2U7Ci0gICAgSW50U2l6ZSBtX3N1YkltYWdlU2l6ZTsKKyAgICBzaXplX3Qg
bV9zdWJJbWFnZVNpemU7CiAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gbV9zdWJJbWFnZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBmZDhlZDg4M2NjNzM0MGNhOWM3
NmQ1NjNjZmRlOTk5MjQzODZmMzg2Li4xODk5NDJlMjUzNGIwNjg2MzczYmUzYzEyNDQ0NmMwODU2
MmVlYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zMCwxNiArMzAsMTMg
QEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJHcmFwaGlj
c1R5cGVzM0QuaCIKLSNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
ImNjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNz
IFRleHR1cmVNYW5hZ2VyOwogCiBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gewpAQCAtNTIsNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0
dXJlLmdldCgpOyB9CiAgICAgICAgIHZvaWQgc3dhcFRleHR1cmVXaXRoKE93blB0cjxDQ1ByaW9y
aXRpemVkVGV4dHVyZT4mIHRleHR1cmUpIHsgbV90ZXh0dXJlLnN3YXAodGV4dHVyZSk7IH0KICAg
ICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJl
Y3QgKi8pIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29u
dGV4dCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVj
dChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkgPSAwOwogICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQg
VGV4dHVyZShQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4
dHVyZSh0ZXh0dXJlKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNw
cAppbmRleCBlMDBhMjZlMzlmOWZjNzkyMmM3M2NlYjE0OTcyNTBhNjhiYjBiZDUzLi40OTg4YjMy
N2Y0MjUwZmY2ZTJlNDkzMjQyZGFmYmZlZGJkMjZmNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxi
YXJMYXllckNocm9taXVtLmNwcApAQCAtNzcsMTkgKzc3LDE5IEBAIHZvaWQgU2Nyb2xsYmFyTGF5
ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgc2Ny
b2xsYmFyTGF5ZXItPnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShtX3Njcm9sbGJhck92ZXJsYXlT
dHlsZSk7CiAKICAgICBpZiAobV9iYWNrVHJhY2sgJiYgbV9iYWNrVHJhY2stPnRleHR1cmUoKS0+
aGF2ZUJhY2tpbmdUZXh0dXJlKCkpCi0gICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRCYWNrVHJh
Y2tUZXh0dXJlSWQobV9iYWNrVHJhY2stPnRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAg
ICBzY3JvbGxiYXJMYXllci0+c2V0QmFja1RyYWNrUmVzb3VyY2VJZChtX2JhY2tUcmFjay0+dGV4
dHVyZSgpLT5yZXNvdXJjZUlkKCkpOwogICAgIGVsc2UKLSAgICAgICAgc2Nyb2xsYmFyTGF5ZXIt
PnNldEJhY2tUcmFja1RleHR1cmVJZCgwKTsKKyAgICAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldEJh
Y2tUcmFja1Jlc291cmNlSWQoMCk7CiAKICAgICBpZiAobV9mb3JlVHJhY2sgJiYgbV9mb3JlVHJh
Y2stPnRleHR1cmUoKS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpCi0gICAgICAgIHNjcm9sbGJhckxh
eWVyLT5zZXRGb3JlVHJhY2tUZXh0dXJlSWQobV9mb3JlVHJhY2stPnRleHR1cmUoKS0+dGV4dHVy
ZUlkKCkpOworICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0Rm9yZVRyYWNrUmVzb3VyY2VJZCht
X2ZvcmVUcmFjay0+dGV4dHVyZSgpLT5yZXNvdXJjZUlkKCkpOwogICAgIGVsc2UKLSAgICAgICAg
c2Nyb2xsYmFyTGF5ZXItPnNldEZvcmVUcmFja1RleHR1cmVJZCgwKTsKKyAgICAgICAgc2Nyb2xs
YmFyTGF5ZXItPnNldEZvcmVUcmFja1Jlc291cmNlSWQoMCk7CiAKICAgICBpZiAobV90aHVtYiAm
JiBtX3RodW1iLT50ZXh0dXJlKCktPmhhdmVCYWNraW5nVGV4dHVyZSgpKQotICAgICAgICBzY3Jv
bGxiYXJMYXllci0+c2V0VGh1bWJUZXh0dXJlSWQobV90aHVtYi0+dGV4dHVyZSgpLT50ZXh0dXJl
SWQoKSk7CisgICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRUaHVtYlJlc291cmNlSWQobV90aHVt
Yi0+dGV4dHVyZSgpLT5yZXNvdXJjZUlkKCkpOwogICAgIGVsc2UKLSAgICAgICAgc2Nyb2xsYmFy
TGF5ZXItPnNldFRodW1iVGV4dHVyZUlkKDApOworICAgICAgICBzY3JvbGxiYXJMYXllci0+c2V0
VGh1bWJSZXNvdXJjZUlkKDApOwogCiAgICAgVmVjdG9yPEludFJlY3Q+IHRpY2ttYXJrczsKICAg
ICBtX3Njcm9sbGJhci0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7CkBAIC0yMDUsMjQgKzIwNSwy
MyBAQCB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXll
clRyZWVIb3N0KiBob3N0KQogCiB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZVRl
eHR1cmVVcGRhdGVySWZOZWVkZWQoKQogewotICAgIGJvb2wgdXNlTWFwU3ViSW1hZ2UgPSBsYXll
clRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ01hcFN1YjsKICAg
ICBtX3RleHR1cmVGb3JtYXQgPSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKS5iZXN0VGV4dHVyZUZvcm1hdDsKIAogICAgIGlmICghbV9iYWNrVHJhY2tVcGRhdGVy
KQotICAgICAgICBtX2JhY2tUcmFja1VwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXI6OmNyZWF0ZShtX3Njcm9s
bGJhci5nZXQoKSwgdGhlbWUoKSwgQmFja1RyYWNrUGFydCksIHVzZU1hcFN1YkltYWdlKTsKKyAg
ICAgICAgbV9iYWNrVHJhY2tVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKFNjcm9sbGJhckJhY2tncm91bmRQYWludGVyOjpjcmVhdGUobV9zY3JvbGxiYXIu
Z2V0KCksIHRoZW1lKCksIEJhY2tUcmFja1BhcnQpKTsKICAgICBpZiAoIW1fYmFja1RyYWNrKQog
ICAgICAgICBtX2JhY2tUcmFjayA9IG1fYmFja1RyYWNrVXBkYXRlci0+Y3JlYXRlVGV4dHVyZShs
YXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSk7CiAKICAgICAvLyBPbmx5
IGNyZWF0ZSB0d28tcGFydCB0cmFjayBpZiB3ZSB0aGluayB0aGUgdHdvIHBhcnRzIGNvdWxkIGJl
IGRpZmZlcmVudCBpbiBhcHBlYXJhbmNlLgogICAgIGlmIChtX3Njcm9sbGJhci0+aXNDdXN0b21T
Y3JvbGxiYXIoKSkgewogICAgICAgICBpZiAoIW1fZm9yZVRyYWNrVXBkYXRlcikKLSAgICAgICAg
ICAgIG1fZm9yZVRyYWNrVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OmNyZWF0ZShTY3JvbGxiYXJCYWNrZ3JvdW5kUGFpbnRlcjo6Y3JlYXRlKG1fc2Nyb2xsYmFyLmdl
dCgpLCB0aGVtZSgpLCBGb3J3YXJkVHJhY2tQYXJ0KSwgdXNlTWFwU3ViSW1hZ2UpOworICAgICAg
ICAgICAgbV9mb3JlVHJhY2tVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKFNjcm9sbGJhckJhY2tncm91bmRQYWludGVyOjpjcmVhdGUobV9zY3JvbGxiYXIu
Z2V0KCksIHRoZW1lKCksIEZvcndhcmRUcmFja1BhcnQpKTsKICAgICAgICAgaWYgKCFtX2ZvcmVU
cmFjaykKICAgICAgICAgICAgIG1fZm9yZVRyYWNrID0gbV9mb3JlVHJhY2tVcGRhdGVyLT5jcmVh
dGVUZXh0dXJlKGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKTsKICAg
ICB9CiAKICAgICBpZiAoIW1fdGh1bWJVcGRhdGVyKQotICAgICAgICBtX3RodW1iVXBkYXRlciA9
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxiYXJUaHVtYlBh
aW50ZXI6OmNyZWF0ZShtX3Njcm9sbGJhci5nZXQoKSwgdGhlbWUoKSksIHVzZU1hcFN1YkltYWdl
KTsKKyAgICAgICAgbV90aHVtYlVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGUoU2Nyb2xsYmFyVGh1bWJQYWludGVyOjpjcmVhdGUobV9zY3JvbGxiYXIuZ2V0
KCksIHRoZW1lKCkpKTsKICAgICBpZiAoIW1fdGh1bWIpCiAgICAgICAgIG1fdGh1bWIgPSBtX3Ro
dW1iVXBkYXRlci0+Y3JlYXRlVGV4dHVyZShsYXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVy
ZU1hbmFnZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDU4ZGUxMTUyMmI0YWFkYWUxNmJjYjI3ZTA1NGZmNzM3Yjg4NmI4M2QuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUFsbG9jYXRvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLQotI2lmbmRlZiBUZXh0dXJl
QWxsb2NhdG9yX2gKLSNkZWZpbmUgVGV4dHVyZUFsbG9jYXRvcl9oCi0KLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJJbnRTaXpl
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUm
LCBHQzNEZW51bSBmb3JtYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1
bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIH5UZXh0dXJlQWxsb2NhdG9yKCkgeyB9Ci19OwotCi19Ci0KLSNlbmRpZgotCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVD
b3BpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZUNvcGllci5jcHAKaW5kZXggMzMyNDNjODU1MmQzZmEyZTg1MWVmN2Y4NjNhNWRlNjIwMzVj
NTA4NS4uMGI1OTU5N2E1ZWU4MDkwMDdhMjQ4NDFiNWQ1ZjdlOWFmOWM5NDRmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZUNvcGllci5jcHAKQEAgLTY2LDU1ICs2Niw1NCBAQCBBY2NlbGVyYXRlZFRleHR1cmVDb3Bp
ZXI6On5BY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoKQogICAgICAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fZmJvKSk7CiB9CiAKLXZvaWQgQWNjZWxlcmF0
ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY2NDb250ZXh0
LCB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJlSWQsIGNvbnN0
IEludFNpemUmIHNpemUpCit2b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1
cmUodW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25z
dCBJbnRTaXplJiBzaXplKQogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiVGV4dHVyZUNvcGll
cjo6Y29weVRleHR1cmUiKTsKIAotICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQgPSBjY0NvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dCkgewotICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRp
bmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICAvLyBOb3RlOiB0aGlzIGNvZGUgZG9l
cyBub3QgcmVzdG9yZSB0aGUgdmlld3BvcnQsIGJvdW5kIHByb2dyYW0sIDJEIHRleHR1cmUsIGZy
YW1lYnVmZmVyLCBidWZmZXIgb3IgYmxlbmQgZW5hYmxlLgotICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zi
bykpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRB
Q0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGRlc3RUZXh0dXJlSWQsIDAp
KTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIGRlc3RUZXh0dXJlSWQsIDApKTsKIAogI2lmIE9TKEFORFJPSUQpCiAg
ICAgLy8gQ2xlYXIgZGVzdGluYXRpb24gdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBvbiB0aWxpbmcg
R1BVcy4KICAgICAvLyBUT0RPOiBVc2UgRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgb3Igc2tpcCBj
bGVhcmluZyBpZiBpdCBpc24ndCBhdmFpbGFibGUuCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKSk7CisgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5jbGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVS
X0JJVCkpOwogI2VuZGlmCiAKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHNvdXJjZVRleHR1cmVJZCkpOwotICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6TkVBUkVTVCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0
ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCkpOworICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIHNvdXJjZVRleHR1cmVJZCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsK
KyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7CiAKICAgICBpZiAoIW1fYmxpdFByb2dyYW0t
PmluaXRpYWxpemVkKCkpCi0gICAgICAgIG1fYmxpdFByb2dyYW0tPmluaXRpYWxpemUoY29udGV4
dCwgbV91c2luZ0JpbmRVbmlmb3Jtcyk7CisgICAgICAgIG1fYmxpdFByb2dyYW0tPmluaXRpYWxp
emUobV9jb250ZXh0LCBtX3VzaW5nQmluZFVuaWZvcm1zKTsKIAogICAgIC8vIFRPRE86IFVzZSBF
WFRfZnJhbWVidWZmZXJfYmxpdCBpZiBhdmFpbGFibGUuCi0gICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnVzZVByb2dyYW0obV9ibGl0UHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT51c2VQcm9ncmFtKG1fYmxpdFByb2dyYW0tPnByb2dyYW0oKSkpOwog
CiAgICAgY29uc3QgaW50IGtQb3NpdGlvbkF0dHJpYnV0ZSA9IDA7Ci0gICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV9w
b3NpdGlvbkJ1ZmZlcikpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKGtQb3NpdGlvbkF0dHJpYnV0ZSwgNCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBm
YWxzZSwgMCwgMCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShrUG9zaXRpb25BdHRyaWJ1dGUpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCAwKSk7CisgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJB
WV9CVUZGRVIsIG1fcG9zaXRpb25CdWZmZXIpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoa1Bvc2l0aW9uQXR0cmlidXRlLCA0LCBHcmFwaGljc0Nv
bnRleHQzRDo6RkxPQVQsIGZhbHNlLCAwLCAwKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShrUG9zaXRpb25BdHRyaWJ1dGUpKTsKKyAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFS
UkFZX0JVRkZFUiwgMCkpOwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnZpZXdwb3J0KDAs
IDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwotICAgIEdMQyhjb250ZXh0
LCBjb250ZXh0LT5kcmF3QXJyYXlzKEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIDAs
IDQpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKKyAgICBHTEMobV9jb250ZXh0LCBt
X2NvbnRleHQtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgMCwg
NCkpOwogCi0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikp
OwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoa1Bv
c2l0aW9uQXR0cmlidXRlKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkoa1Bvc2l0aW9uQXR0cmlidXRlKSk7CiAKLSAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dXNlUHJvZ3JhbSgwKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250
ZXh0LT51c2VQcm9ncmFtKDApKTsKIAotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IDAsIDApKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCkpOworICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwKSk7CisgICAgR0xDKG1fY29udGV4
dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCAwKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCkpOworfQorCit2b2lkIEFjY2VsZXJhdGVkVGV4
dHVyZUNvcGllcjo6Zmx1c2goKQoreworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Zmx1
c2goKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaAppbmRleCBjMmJjZDQyN2MzMTAwYzJhNTQ4
YTgxMjMyOGFhNzcyYWVhNGZhYTM0Li5iMzg1ZjQ1ZTU0M2E3NDM2ZTU1NzgwMzIyYmExZDJiMTRl
Mjc3YWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlQ29waWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgogI2luY2x1
ZGUgIlNoYWRlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKQEAgLTQy
LDcgKzQxLDggQEAgcHVibGljOgogICAgIC8vIENvcHkgdGhlIGJhc2UgbGV2ZWwgY29udGVudHMg
b2YgfHNvdXJjZVRleHR1cmVJZHwgdG8gfGRlc3RUZXh0dXJlSWR8LiBCb3RoIHRleHR1cmUgb2Jq
ZWN0cwogICAgIC8vIG11c3QgYmUgY29tcGxldGUgYW5kIGhhdmUgYSBiYXNlIGxldmVsIG9mIHxz
aXplfCBkaW1lbnNpb25zLiBUaGUgY29sb3IgZm9ybWF0cyBkbyBub3QgbmVlZAogICAgIC8vIHRv
IG1hdGNoLCBidXQgfGRlc3RUZXh0dXJlSWR8IG11c3QgaGF2ZSBhIHJlbmRlcmFibGUgZm9ybWF0
LgotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIHVuc2ln
bmVkIHNvdXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50U2l6
ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUodW5zaWduZWQgc291cmNlVGV4
dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBmbHVzaCgpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflRl
eHR1cmVDb3BpZXIoKSB7IH0KQEAgLTU5LDcgKzU5LDggQEAgcHVibGljOgogICAgIH0KICAgICB2
aXJ0dWFsIH5BY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBj
b3B5VGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIHVuc2lnbmVkIHNvdXJjZVRleHR1cmVJZCwg
dW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBjb3B5VGV4dHVyZSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0
dXJlSWQsIGNvbnN0IEludFNpemUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2goKTsKIAogcHJv
dGVjdGVkOgogICAgIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcihXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiwgYm9vbCB1c2luZ0JpbmRVbmlmb3Jtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5o
CmluZGV4IDBlYWUyZTY1ZGQwMjQ2NGNkMjBmYmYzOGZkYmI3OGVjY2RkYzg5MWIuLjkyODcwY2I1
YTViZmQ5MGVhZmMyODczZDcwY2MwY2YxMGQxYmUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5o
CkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGVuZFVwbG9hZHMoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoQ0NHcmFw
aGljc0NvbnRleHQqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgVGV4dHVyZUFsbG9j
YXRvciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqLCBDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QgZGVzdFJlY3QpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwCmluZGV4IGE4MjUzZDA2NTUxNjI1ZjBiMDczYWVjZjVk
ZWY3NWNkYWUwMmFmYmQuLjI4MWUwOGZmMDQ5ODc4MTI4YTg0MzI3MDllZmZlNjk2OTFiODBkMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ro
cm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcApAQCAtMTIwLDkg
KzEyMCw5IEBAIHZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjplbmRVcGxvYWRzKCkKICAg
ICBtX3BlbmRpbmdRdWVyaWVzLmFwcGVuZChtX2F2YWlsYWJsZVF1ZXJpZXMudGFrZUZpcnN0KCkp
OwogfQogCi12b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZShDQ0dy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4
dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpCit2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRl
cjo6dXBsb2FkVGV4dHVyZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBD
Q1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IEludFJlY3Qgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlLT51cGRhdGVSZWN0
KGNvbnRleHQsIGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIHRleHR1cmUt
PnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRlciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQog
CiB2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6cHJvY2Vzc1F1ZXJpZXMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaAppbmRleCBhZTViNzQ5MWYyODQ4NDQwZjQx
MzFjZTZiYjE0M2U3NWE0ZDZjOWRhLi5mOGM0M2RjMmQ0MzAzOWYyZmQyNzhjZmE3YzcxN2NhYTI5
MGJhNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaApAQCAtNTEs
NyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZW5kVXBsb2FkcygpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJl
KENDR3JhcGhpY3NDb250ZXh0KiwgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIFRleHR1
cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVz
dFJlY3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIE9WRVJSSURFOwogCiBwcml2YXRl
OgogICAgIGNsYXNzIFF1ZXJ5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4
IGVlZDVjZmM5YWNlMTY5ZjU1MTUyODc2YTE0ZTc0ZGM2NDIxYTYxY2IuLjhlNDg5MTk1ZTQyYzBk
ZTUyMTJhNTIxZTE5YjUyMjgzMjI5ZGEzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcApAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICAgICAgaWYgKHRpbGUtPmlzRGlydHlG
b3JDdXJyZW50RnJhbWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHRpbGVk
TGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50
ZXh0dXJlSWQoKSwgdGlsZS0+b3BhcXVlUmVjdCgpKTsKKyAgICAgICAgdGlsZWRMYXllci0+cHVz
aFRpbGVQcm9wZXJ0aWVzKGksIGosIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnJlc291cmNlSWQo
KSwgdGlsZS0+b3BhcXVlUmVjdCgpKTsKICAgICAgICAgdGlsZS0+aXNJblVzZU9uSW1wbCA9IHRy
dWU7CiAgICAgfQogICAgIGZvciAoVmVjdG9yPFVwZGF0YWJsZVRpbGUqPjo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IGludmFsaWRUaWxlcy5iZWdpbigpOyBpdGVyICE9IGludmFsaWRUaWxlcy5lbmQo
KTsgKytpdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZTI5ZjkxMmI4OGUzMzhiOGRiMGYwMzhhNGI1
YTgyNTA1YzUzN2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJl
QWxsb2NhdG9yLmgiCi0KLSNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgotI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBGb3IgdGhlIEdMQygpIG1hY3JvCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3IoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgaW50IG1h
eFRleHR1cmVTaXplKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX21heFRleHR1
cmVTaXplKG1heFRleHR1cmVTaXplKQotICAgICwgbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMoMCkK
LSAgICAsIG1fdGV4dHVyZVVzYWdlSGludChBbnkpCi0gICAgLCBtX3VzZVRleHR1cmVTdG9yYWdl
RXh0KGZhbHNlKQotewotICAgIEFTU0VSVChtX2NvbnRleHQpOwotfQotCi1UcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6On5UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IoKQotewotICAgIEFTU0VSVCgh
bV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMpOwotfQotCi1zdGF0aWMgR0MzRGVudW0gdGV4dHVyZVRv
U3RvcmFnZUZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KQotewotICAgIEdDM0RlbnVtIHN0
b3JhZ2VGb3JtYXQgPSBFeHRlbnNpb25zM0Q6OlJHQkE4X09FUzsKLSAgICBzd2l0Y2ggKHRleHR1
cmVGb3JtYXQpIHsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOgotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEV4dGVuc2lvbnMzRDo6QkdSQV9FWFQ6Ci0gICAgICAgIHN0b3JhZ2VG
b3JtYXQgPSBFeHRlbnNpb25zM0RDaHJvbWl1bTo6QkdSQThfRVhUOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0b3JhZ2VGb3JtYXQ7Ci19Ci0KLXN0YXRpYyBib29s
IGlzVGV4dHVyZUZvcm1hdFN1cHBvcnRlZEZvclN0b3JhZ2UoR0MzRGVudW0gZm9ybWF0KQotewot
ICAgIHJldHVybiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBIHx8IGZvcm1hdCA9
PSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUKTsKLX0KLQotdW5zaWduZWQgVHJhY2tpbmdUZXh0dXJl
QWxsb2NhdG9yOjpjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZv
cm1hdCkKLXsKLSAgICBpZiAoc2l6ZS53aWR0aCgpID4gbV9tYXhUZXh0dXJlU2l6ZSB8fCBzaXpl
LmhlaWdodCgpID4gbV9tYXhUZXh0dXJlU2l6ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBt
X2N1cnJlbnRNZW1vcnlVc2VCeXRlcyArPSBDQ1RleHR1cmU6Om1lbW9yeVNpemVCeXRlcyhzaXpl
LCBmb3JtYXQpOwotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkID0gMDsKLSAgICBHTEMobV9jb250
ZXh0LCB0ZXh0dXJlSWQgPSBtX2NvbnRleHQtPmNyZWF0ZVRleHR1cmUoKSk7Ci0gICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgdGV4dHVyZUlkKSk7Ci0gICAgLy8gRG8gYmFzaWMgbGluZWFyIGZpbHRlcmluZyBvbiBy
ZXNpemUuCi0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5f
RklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7Ci0gICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6
TElORUFSKSk7Ci0gICAgLy8gTlBPVCB0ZXh0dXJlcyBpbiBHTCBFUyBvbmx5IHdvcmsgd2hlbiB0
aGUgd3JhcCBtb2RlIGlzIHNldCB0byBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRS4K
LSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RP
X0VER0UpKTsKLQotICAgIGlmIChtX3RleHR1cmVVc2FnZUhpbnQgPT0gRnJhbWVidWZmZXJBdHRh
Y2htZW50KQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9U
RVhUVVJFX1VTQUdFX0FOR0xFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9BTkdMRSkpOwotICAgIGlmIChtX3VzZVRleHR1cmVTdG9yYWdlRXh0ICYmIGlz
VGV4dHVyZUZvcm1hdFN1cHBvcnRlZEZvclN0b3JhZ2UoZm9ybWF0KSkgewotICAgICAgICBHQzNE
ZW51bSBzdG9yYWdlRm9ybWF0ID0gdGV4dHVyZVRvU3RvcmFnZUZvcm1hdChmb3JtYXQpOwotICAg
ICAgICBtX2NvbnRleHQtPnRleFN0b3JhZ2UyREVYVChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMSwgc3RvcmFnZUZvcm1hdCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhJbWFnZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBmb3JtYXQsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSwgMCwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
MCkpOwotICAgIG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5hZGQodGV4dHVyZUlkKTsKLSAgICByZXR1
cm4gdGV4dHVyZUlkOwotfQotCi12b2lkIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRl
VGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVt
IGZvcm1hdCkKLXsKLSAgICBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlcyAtPSBDQ1RleHR1cmU6Om1l
bW9yeVNpemVCeXRlcyhzaXplLCBmb3JtYXQpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSWQpKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkKSk7Ci0gICAgQVNTRVJUKG1fYWxsb2NhdGVkVGV4
dHVyZUlkcy5jb250YWlucyh0ZXh0dXJlSWQpKTsKLSAgICBtX2FsbG9jYXRlZFRleHR1cmVJZHMu
cmVtb3ZlKHRleHR1cmVJZCk7Ci19Ci0KLXZvaWQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpk
ZWxldGVBbGxUZXh0dXJlcygpCi17Ci0gICAgZm9yIChIYXNoU2V0PHVuc2lnbmVkPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX2FsbG9jYXRlZFRleHR1cmVJZHMuYmVnaW4oKTsgaXQgIT0gbV9hbGxv
Y2F0ZWRUZXh0dXJlSWRzLmVuZCgpOyArK2l0KQotICAgICAgICBHTEMobV9jb250ZXh0LCBtX2Nv
bnRleHQtPmRlbGV0ZVRleHR1cmUoKml0KSk7Ci0gICAgbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMg
PSAwOwotICAgIG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5jbGVhcigpOwotfQotCi19Ci0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5n
VGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDM4ZjdjYTA0M2I0ZmQ5NzA1YjU5YmQzM2YzYTliYjcwMTU2MGQxMmYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBUcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3JfaAotI2RlZmluZSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3JfaAot
Ci0jaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFz
cyBXZWJHcmFwaGljc0NvbnRleHQzRDsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yKTsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I+IGNyZWF0
ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBpbnQgbWF4VGV4dHVyZVNp
emUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcihjb250ZXh0LCBtYXhUZXh0dXJlU2l6ZSkpOwotICAgIH0KLSAgICB2aXJ0dWFsIH5U
cmFja2luZ1RleHR1cmVBbGxvY2F0b3IoKTsKLQotICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRl
VGV4dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXpl
JiwgR0MzRGVudW0gZm9ybWF0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxs
VGV4dHVyZXMoKSBPVkVSUklERTsKLQotICAgIHNpemVfdCBjdXJyZW50TWVtb3J5VXNlQnl0ZXMo
KSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlczsgfQotCi0gICAgZW51bSBU
ZXh0dXJlVXNhZ2VIaW50IHsgQW55LCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgfTsKLQotICAgIHZv
aWQgc2V0VGV4dHVyZVVzYWdlSGludChUZXh0dXJlVXNhZ2VIaW50IGhpbnQpIHsgbV90ZXh0dXJl
VXNhZ2VIaW50ID0gaGludDsgfQotICAgIHZvaWQgc2V0VXNlVGV4dHVyZVN0b3JhZ2VFeHQoYm9v
bCB1c2VTdG9yYWdlRXh0KSB7IG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQgPSB1c2VTdG9yYWdlRXh0
OyB9Ci0KLXByb3RlY3RlZDoKLSAgICBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IoV2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRCosIGludCBtYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7Ci0gICAgaW50IG1fbWF4VGV4dHVyZVNp
emU7Ci0gICAgc2l6ZV90IG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzOwotICAgIFRleHR1cmVVc2Fn
ZUhpbnQgbV90ZXh0dXJlVXNhZ2VIaW50OwotICAgIGJvb2wgbV91c2VUZXh0dXJlU3RvcmFnZUV4
dDsKLSAgICBIYXNoU2V0PHVuc2lnbmVkPiBtX2FsbG9jYXRlZFRleHR1cmVJZHM7Ci19OwotCi19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAppbmRleCBiZTE5OTgz
ZWZiNjI2MzZjMDU2YjY5MDY3OWY1ZmQwMWU5NmY0OGRkLi4wZjZmNmVlMGUyM2U5NWEyY2U0ZWNl
ZGI0OTQwZmRiYjYwMGRmODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApA
QCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5oIgogI2lu
Y2x1ZGUgImNjL0NDRnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NjgsMTMgKzY3LDggQEAgYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93RGVidWdSZWN0cyhjb25z
dCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKIHZvaWQgQ0NIZWFkc1VwRGlz
cGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKIHsKICAg
ICBDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyID0gbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVu
ZGVyZXIoKTsKLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKS0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBj
b21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBpZiAoIW1faHVkVGV4dHVy
ZSkKLSAgICAgICAgbV9odWRUZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUobGF5ZXJS
ZW5kZXJlci0+aW1wbFRleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAgIG1faHVkVGV4dHVyZSA9
IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKGxheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJjZVByb3Zp
ZGVyKCkpOwogCiAgICAgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MgPSBsYXll
clRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKTsKICAgICAvLyBVc2UgYSBmdWxsc2NyZWVuIHRleHR1
cmUgb25seSBpZiB3ZSBuZWVkIHRvLi4uCkBAIC04Nyw3ICs4MSw3IEBAIHZvaWQgQ0NIZWFkc1Vw
RGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1wbCkKICAg
ICAgICAgaHVkU2l6ZS5zZXRIZWlnaHQoMTI4KTsKICAgICB9CiAKLSAgICBpZiAoIW1faHVkVGV4
dHVyZS0+aWQoKSAmJiAhbV9odWRUZXh0dXJlLT5hbGxvY2F0ZShodWRTaXplLCBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQSkpCisgICAgaWYgKCFtX2h1ZFRleHR1cmUtPmlkKCkgJiYgIW1faHVkVGV4
dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2wsIGh1ZFNpemUsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIFJlbmRlciBwaXhlbHMgaW50byB0aGUgdGV4dHVyZS4KQEAg
LTEwMiwyMiArOTYsOCBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXcoQ0NMYXllclRyZWVI
b3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAgLy8gVXBsb2FkIHRvIEdMLgogICAgIHsK
ICAgICAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOwotCi0g
ICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbV9odWRUZXh0dXJlLT5pZCgpKSk7Ci0gICAgICAgIGJvb2wgdXBsb2Fk
ZWRWaWFNYXAgPSBmYWxzZTsKLSAgICAgICAgaWYgKGxheWVyUmVuZGVyZXItPmNhcGFiaWxpdGll
cygpLnVzaW5nTWFwU3ViKSB7Ci0gICAgICAgICAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oY29udGV4dC0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNp
emUuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKLQotICAg
ICAgICAgICAgaWYgKHBpeGVsRGVzdCkgewotICAgICAgICAgICAgICAgIHVwbG9hZGVkVmlhTWFw
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBtZW1jcHkocGl4ZWxEZXN0LCBsb2NrZXIucGl4ZWxz
KCksIGh1ZFNpemUud2lkdGgoKSAqIGh1ZFNpemUuaGVpZ2h0KCkgKiA0KTsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3QpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF1cGxvYWRlZFZpYU1hcCkgewot
ICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBjYW52YXMuc2l6
ZSgpLndpZHRoKCksIGNhbnZhcy5zaXplKCkuaGVpZ2h0KCksIDAsIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgbG9ja2VyLnBpeGVscygp
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgSW50UmVjdCByZWN0KEludFBvaW50KDAsIDApLCBodWRT
aXplKTsKKyAgICAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKS0+dXBs
b2FkKG1faHVkVGV4dHVyZS0+aWQoKSwgbG9ja2VyLnBpeGVscygpLCByZWN0LCByZWN0LCByZWN0
KTsKICAgICB9CiAKICAgICBsYXllclJlbmRlcmVyLT5kcmF3SGVhZHNVcERpc3BsYXkobV9odWRU
ZXh0dXJlLmdldCgpLCBodWRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJ
bXBsLmNwcAppbmRleCAzNzMyNWQwMWUzNjczYzI3YmQxYWQ2NjNhZmZlMzY0NmFiNWYxYTFiLi42
ZGFjMmU3YTc3MjkzYWE4Njg1OTQ3MTJmMGIxMzgzN2E5ZTJjNzNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCkBAIC02MCwxMiArNjAsMTIgQEAgQ0NJT1N1cmZh
Y2VMYXllckltcGw6On5DQ0lPU3VyZmFjZUxheWVySW1wbCgpCiAgICAgICAgIGNvbnRleHQzZC0+
ZGVsZXRlVGV4dHVyZShtX2lvU3VyZmFjZVRleHR1cmVJZCk7CiB9CiAKLXZvaWQgQ0NJT1N1cmZh
Y2VMYXllckltcGw6OndpbGxEcmF3KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6d2lsbERyYXco
Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewotICAgIENDTGF5ZXJJbXBs
Ojp3aWxsRHJhdyhsYXllclJlbmRlcmVyLCBjb250ZXh0KTsKKyAgICBDQ0xheWVySW1wbDo6d2ls
bERyYXcocmVzb3VyY2VQcm92aWRlcik7CiAKICAgICBpZiAobV9pb1N1cmZhY2VDaGFuZ2VkKSB7
Ci0gICAgICAgIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRl
eHQtPmNvbnRleHQzRCgpOworICAgICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0M2QgPSByZXNvdXJjZVByb3ZpZGVyLT5ncmFwaGljc0NvbnRleHQzRCgpOwogICAgICAg
ICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
IHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJ
T1N1cmZhY2VMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKaW5kZXggMjhhMzVjZDBmMjA4M2E4NjIx
MDE3MTg3OWMxYjkyNmI1MmJkMDRlMi4uNDIzNjg4MDljMTM0MzZjMDZhNGI3MjA0YWVkMTRiY2Jm
ZTlhYzQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oCkBAIC00Myw3
ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRD
dWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykg
T1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NSZW5kZXJlciosIENDR3Jh
cGhpY3NDb250ZXh0KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVz
b3VyY2VQcm92aWRlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4
dCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4
dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
Y3BwCmluZGV4IDNmZmY0NjhmMDQ4OTgyYmY3YjkyMzNkMzdkYzkxMzczMTczMThjYmEuLmRiMjRj
MDdlNDVhOWNmZWIxNzg0OGMxZGNhMzVhMTZlN2M0NTU5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBD
Q0xheWVySW1wbDo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKGludCBpZCkgY29uc3QKICAgICByZXR1
cm4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShpZCwgcXVhZFRyYW5zZm9ybWF0aW9uLCBtX3Zp
c2libGVDb250ZW50UmVjdCwgbV9zY2lzc29yUmVjdCwgbV9kcmF3T3BhY2l0eSwgbV9vcGFxdWUp
OwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGlj
c0NvbnRleHQqKQordm9pZCBDQ0xheWVySW1wbDo6d2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVy
KikKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gd2lsbERyYXcvZGlkRHJhdyBtdXN0IGJlIG1h
dGNoZWQuCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBDQ0xheWVySW1wbDo6d2lsbERyYXcoQ0NS
ZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0KikKICNlbmRpZgogfQogCi12b2lkIENDTGF5ZXJJ
bXBsOjpkaWREcmF3KCkKK3ZvaWQgQ0NMYXllckltcGw6OmRpZERyYXcoQ0NSZXNvdXJjZVByb3Zp
ZGVyKikKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1fYmV0d2VlbldpbGxEcmF3QW5k
RGlkRHJhdyk7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kRGVi
dWdCb3JkZXJRdWFkKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXUKICAg
ICBxdWFkTGlzdC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBjb250ZW50UmVjdCwgZGVidWdCb3JkZXJDb2xvcigpLCBkZWJ1Z0JvcmRlcldpZHRo
KCkpKTsKIH0KIAotdW5zaWduZWQgQ0NMYXllckltcGw6OmNvbnRlbnRzVGV4dHVyZUlkKCkgY29u
c3QKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ0xheWVySW1wbDo6Y29udGVudHNS
ZXNvdXJjZUlkKCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDA4ZTM1OWRhZDdkNWQ4MTE2NDcwMzVmZmU0
MmI4YzM1OGVmZGM4M2IuLjcxZTkzYzU3NDU4MDY2YTQ3NzU4NDM0ZTVkODk4YjQyZmY2NDYzM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImNjL0ND
SW5wdXRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2UuaCIKKyNpbmNsdWRlICJjYy9DQ1Jlc291
cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRy
YW5zZm9ybWF0aW9uTWF0cml4Lmg+CkBAIC00NCw3ICs0NSw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBDQ0xheWVyU29ydGVyOwog
Y2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIGNsYXNzIENDUXVhZEN1bGxlcjsKQEAgLTkyLDEy
ICs5MiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gZGlkRHJhdyBpcyBndWFyYW50ZWVkIHRvIGJlIGNh
bGxlZCBiZWZvcmUgYW5vdGhlciB3aWxsRHJhdyBvciBiZWZvcmUKICAgICAvLyB0aGUgbGF5ZXIg
aXMgZGVzdHJveWVkLiBUbyBlbmZvcmNlIHRoaXMsIGFueSBjbGFzcyB0aGF0IG92ZXJyaWRlcwog
ICAgIC8vIHdpbGxEcmF3L2RpZERyYXcgbXVzdCBjYWxsIHRoZSBiYXNlIGNsYXNzIHZlcnNpb24u
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4
dCopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aWREcmF3KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKik7
CiAgICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgY29udGVudHNU
ZXh0dXJlSWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3Vy
Y2VJZCBjb250ZW50c1Jlc291cmNlSWQoKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGlzIGxheWVyIGhhcyBjb250ZW50IHRvIGRyYXcuCiAgICAgdm9pZCBzZXREcmF3c0NvbnRl
bnQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCAxZjUxZjE5ZDQ1
YjExMjY4MGJjNjFlYjE3YWY0MzQ5Y2ZlZjI4ZmFiLi4zNzdmNzRkNTQ0ODE5ZWNkMjQ0MjllZDRi
NTljNjcwMTE4YjU3OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTE1
MSw3ICsxNTEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoKQogICAgIC8vIFVwZGF0ZSBtX3NldHRpbmdzIGJhc2VkIG9uIHBhcnRpYWwgdXBkYXRlIGNh
cGFiaWxpdHkuCiAgICAgbV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMgPSBtaW4o
bV9zZXR0aW5ncy5tYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMsIG1fcHJveHktPm1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlcygpKTsKIAotICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlciA9IENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDAsIG1fcHJveHktPmxheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5h
Z2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMCwgbV9wcm94eS0+bGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplLCBDQ1JlbmRlcmVyOjpDb250
ZW50UG9vbCk7CiAgICAgbV9zdXJmYWNlTWVtb3J5UGxhY2Vob2xkZXIgPSBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXItPmNyZWF0ZVRleHR1cmUoSW50U2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSk7CiAKICAgICBtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCA9IHRydWU7CkBAIC0xOTcs
MTEgKzE5NywxMSBAQCBDQ0xheWVyVHJlZUhvc3Q6OlJlY3JlYXRlUmVzdWx0IENDTGF5ZXJUcmVl
SG9zdDo6cmVjcmVhdGVDb250ZXh0KCkKICAgICByZXR1cm4gUmVjcmVhdGVGYWlsZWRBbmRHYXZl
VXA7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpkZWxldGVDb250ZW50c1RleHR1cmVzT25J
bXBsVGhyZWFkKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0OjpkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKENDUmVzb3VyY2VQcm92aWRl
ciogcmVzb3VyY2VQcm92aWRlcikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFk
KCkpOwogICAgIGlmIChtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCkKLSAgICAgICAgbV9jb250
ZW50c1RleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3IpOworICAgICAgICBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIp
OwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YWNxdWlyZUxheWVyVGV4dHVyZXMoKQpAQCAt
MjMwLDcgKzIzMCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpiZWdpbkNvbW1pdE9uSW1wbFRo
cmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICBBU1NFUlQoQ0NQcm94eTo6
aXNJbXBsVGhyZWFkKCkpOwogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NMYXllclRyZWVIb3N0
Ojpjb21taXRUbyIpOwogCi0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1v
cnkoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeShob3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigp
KTsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBjb21taXRzIHRoZSBDQ0xheWVyVHJlZUhvc3QgdG8g
YW4gaW1wbCB0cmVlLiBXaGVuIG1vZGlmeWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApp
bmRleCBiZDY1NjUwZjRkMzdiZDBjOTE5YjNjNTIwNDQ2NGFhZGQ4NTNmOWI0Li44Mzk3ODU5MDUz
ZWNlNjIwMmQxZDE5MDlkZDk2ZTFiMDI3ZjE4YTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaApAQCAtNTIsNyArNTIsNiBAQCBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwogY2xhc3Mg
Q0NMYXllclRyZWVIb3N0SW1wbENsaWVudDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFz
cyBSZWdpb247Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOwogc3RydWN0IENDUmVuZGVyaW5nU3RhdHM7CiBzdHJ1Y3QgQ0NTY3JvbGxB
bmRTY2FsZVNldDsKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsQ29t
bWl0KCkgeyBtX2NsaWVudC0+d2lsbENvbW1pdCgpOyB9CiAgICAgdm9pZCBkaWRDb21taXRBbmRE
cmF3RnJhbWUoKSB7IG1fY2xpZW50LT5kaWRDb21taXRBbmREcmF3RnJhbWUoKTsgfQogICAgIHZv
aWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsgbV9jbGllbnQtPmRpZENvbXBsZXRlU3dhcEJ1
ZmZlcnMoKTsgfQotICAgIHZvaWQgZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChU
ZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBs
VGhyZWFkKENDUmVzb3VyY2VQcm92aWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBhY3F1aXJlTGF5
ZXJUZXh0dXJlcygpOwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2Ugc2hvdWxkIGFib3J0IHRo
aXMgZnJhbWUgZHVlIHRvIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuCiAgICAgYm9vbCBpbml0aWFs
aXplTGF5ZXJSZW5kZXJlcklmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwCmluZGV4IDIwMDhkOWYyOGJhMzdiNTM3Y2Y0ZjcxNTZhN2FkNjUwYWIxOTdjNWQu
LjZlNzkxNGE3NDI0MDM3NDcyZTk5ZWQ1NzAxOTBmODAzNDdjNjZkMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAi
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1
ZGUgIlRyYWNlRXZlbnQuaCIKLSNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIK
ICNpbmNsdWRlICJjYy9DQ0FjdGl2ZUdlc3R1cmVBbmltYXRpb24uaCIKICNpbmNsdWRlICJjYy9D
Q0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCIKQEAg
LTMzMCw3ICszMjksNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRl
clBhc3NlcyhGcmFtZURhdGEmIGZyYW1lKQogICAgICAgICAgICAgQ0NSZW5kZXJQYXNzKiBjb250
cmlidXRpbmdSZW5kZXJQYXNzID0gc3VyZmFjZVBhc3NNYXAuZ2V0KGl0LT5yZW5kZXJTdXJmYWNl
KCkpOwogICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIo
Kml0LCBjb250cmlidXRpbmdSZW5kZXJQYXNzLCAmb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0c2VsZigpICYmICFvY2NsdXNpb25UcmFja2VyLm9j
Y2x1ZGVkKCppdCwgaXQtPnZpc2libGVDb250ZW50UmVjdCgpKSAmJiAhaXQtPnZpc2libGVDb250
ZW50UmVjdCgpLmlzRW1wdHkoKSAmJiAhaXQtPnNjaXNzb3JSZWN0KCkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBpdC0+d2lsbERyYXcobV9sYXllclJlbmRlcmVyLmdldCgpLCBjb250ZXh0KCkp
OworICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CiAg
ICAgICAgICAgICBmcmFtZS53aWxsRHJhd0xheWVycy5hcHBlbmQoKml0KTsKIAogICAgICAgICAg
ICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2VyLCBoYWRN
aXNzaW5nVGlsZXMpOwpAQCAtNTIzLDcgKzUyMiw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1w
bDo6cHJlcGFyZVRvRHJhdyhGcmFtZURhdGEmIGZyYW1lKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OnJlbGVhc2VDb250ZW50c1RleHR1cmVzKCkKIHsKLSAgICBjb250ZW50c1RleHR1cmVB
bGxvY2F0b3IoKS0+ZGVsZXRlQWxsVGV4dHVyZXMoKTsKKyAgICBtX3Jlc291cmNlUHJvdmlkZXIt
PmRlbGV0ZU93bmVkUmVzb3VyY2VzKENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBtX2Nv
bnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0ID0gdHJ1ZTsKICAgICBtX2Ns
aWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKTsKIH0KQEAgLTU2OSw3ICs1NjgsNyBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoY29uc3QgRnJhbWVEYXRhJiBm
cmFtZSkKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZGlkRHJhd0FsbExheWVycyhjb25zdCBG
cmFtZURhdGEmIGZyYW1lKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWUud2ls
bERyYXdMYXllcnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGZyYW1lLndpbGxEcmF3TGF5ZXJzW2ld
LT5kaWREcmF3KCk7CisgICAgICAgIGZyYW1lLndpbGxEcmF3TGF5ZXJzW2ldLT5kaWREcmF3KG1f
cmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6
ZmluaXNoQWxsUmVuZGVyaW5nKCkKQEAgLTU4OCwxMSArNTg3LDYgQEAgY29uc3QgTGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcyYgQ0NMYXllclRyZWVIb3N0SW1wbDo6bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygKICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKTsKIH0K
IAotVGV4dHVyZUFsbG9jYXRvciogQ0NMYXllclRyZWVIb3N0SW1wbDo6Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyID8gbV9sYXll
clJlbmRlcmVyLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSA6IDA7Ci19Ci0KIGJvb2wgQ0NM
YXllclRyZWVIb3N0SW1wbDo6c3dhcEJ1ZmZlcnMoKQogewogICAgIEFTU0VSVChtX2xheWVyUmVu
ZGVyZXIpOwpAQCAtNjk4LDggKzY5MiwxMSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6Omlu
aXRpYWxpemVMYXllclJlbmRlcmVyKFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IGNvbnRleHRSZWYoY29udGV4dCk7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVz
b3VyY2VQcm92aWRlciA9IENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHRSZWYuZ2V0
KCkpOwogICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IGxheWVyUmVuZGVyZXI7Ci0g
ICAgbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIGNv
bnRleHQzZCwgdGV4dHVyZVVwbG9hZGVyKTsKKyAgICBpZiAocmVzb3VyY2VQcm92aWRlci5nZXQo
KSkKKyAgICAgICAgbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRl
KHRoaXMsIHJlc291cmNlUHJvdmlkZXIuZ2V0KCksIHRleHR1cmVVcGxvYWRlcik7CiAKICAgICAv
LyBTaW5jZSB3ZSBub3cgaGF2ZSBhIG5ldyBjb250ZXh0L2xheWVyUmVuZGVyZXIsIHdlIGNhbm5v
dCBjb250aW51ZSB0byB1c2UgdGhlIG9sZAogICAgIC8vIHJlc291cmNlcyAoaS5lLiByZW5kZXJT
dXJmYWNlcyBhbmQgdGV4dHVyZSBJRHMpLgpAQCAtNzA5LDggKzcwNiw5IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc093blB0cjxDQ0dyYXBo
aWNzQ29udGV4dD4KICAgICB9CiAKICAgICBtX2xheWVyUmVuZGVyZXIgPSBsYXllclJlbmRlcmVy
LnJlbGVhc2UoKTsKKyAgICBtX3Jlc291cmNlUHJvdmlkZXIgPSByZXNvdXJjZVByb3ZpZGVyLnJl
bGVhc2UoKTsKICAgICBpZiAobV9sYXllclJlbmRlcmVyKQotICAgICAgICBtX2NvbnRleHQgPSBj
b250ZXh0OworICAgICAgICBtX2NvbnRleHQgPSBjb250ZXh0UmVmLnJlbGVhc2UoKTsKIAogICAg
IGlmICghbV92aXNpYmxlICYmIG1fbGF5ZXJSZW5kZXJlcikKICAgICAgICAgIG1fbGF5ZXJSZW5k
ZXJlci0+c2V0VmlzaWJsZShtX3Zpc2libGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oCmluZGV4IDc1M2FhMzg0YTNkMDA3NmVhMWYwYTk4YzE3NGE0YjU3NWE3MDc5MGUuLmY5
MzZlMzRkZDJjM2M0MzI5MmYyM2IyOGYwMTk5MzE2NWU1M2I0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTQ2LDggKzQ2LDggQEAgY2xhc3MgQ0NMYXllckltcGw7
CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsVGltZVNvdXJjZUFkYXB0ZXI7CiBjbGFzcyBDQ1Bh
Z2VTY2FsZUFuaW1hdGlvbjsKIGNsYXNzIENDUmVuZGVyUGFzc0RyYXdRdWFkOworY2xhc3MgQ0NS
ZXNvdXJjZVByb3ZpZGVyOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwotY2xhc3MgVGV4
dHVyZUFsbG9jYXRvcjsKIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwogCiAvLyBD
Q0xheWVyVHJlZUhvc3QtPkNDUHJveHkgY2FsbGJhY2sgaW50ZXJmYWNlLgpAQCAtMTI3LDcgKzEy
Nyw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udGV4dExvc3QoKTsKICAgICBDQ1JlbmRlcmVy
KiBsYXllclJlbmRlcmVyKCkgeyByZXR1cm4gbV9sYXllclJlbmRlcmVyLmdldCgpOyB9CiAgICAg
Y29uc3QgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyYgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpIGNvbnN0OwotICAgIFRleHR1cmVBbGxvY2F0b3IqIGNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpIGNvbnN0OwogCiAgICAgYm9vbCBzd2FwQnVmZmVycygpOwogCkBAIC0xNzcsNiArMTc2LDcg
QEAgcHVibGljOgogCiAgICAgQ0NGcmFtZVJhdGVDb3VudGVyKiBmcHNDb3VudGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9mcHNDb3VudGVyLmdldCgpOyB9CiAgICAgQ0NEZWJ1Z1JlY3RIaXN0b3J5KiBk
ZWJ1Z1JlY3RIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z1JlY3RIaXN0b3J5LmdldCgp
OyB9CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpOyB9CiAKICAgICBjbGFzcyBDdWxsUmVuZGVy
UGFzc2VzV2l0aENhY2hlZFRleHR1cmVzIHsKICAgICBwdWJsaWM6CkBAIC0yNTIsNiArMjUyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGR1bXBSZW5kZXJTdXJmYWNlcyhUZXh0U3RyZWFtJiwgaW50
IGluZGVudCwgY29uc3QgQ0NMYXllckltcGwqKSBjb25zdDsKIAogICAgIE93blB0cjxDQ0dyYXBo
aWNzQ29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1f
cmVzb3VyY2VQcm92aWRlcjsKICAgICBPd25QdHI8Q0NSZW5kZXJlcj4gbV9sYXllclJlbmRlcmVy
OwogICAgIE93blB0cjxDQ0xheWVySW1wbD4gbV9yb290TGF5ZXJJbXBsOwogICAgIENDTGF5ZXJJ
bXBsKiBtX3Jvb3RTY3JvbGxMYXllckltcGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVk
VGV4dHVyZS5jcHAKaW5kZXggMWRmNzcxMzg2Y2FiY2I0YWE5OGJkMWU2YTVjYjgzNzk0ZjU3NDVj
Yy4uNjBjZjFhMWUyY2U1Nzg3MTA3ZmE3MzgzYWE1NTQxYjlkZTBiZGRkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXpl
ZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1
ZGUgIkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIkNDUHJpb3JpdHlD
YWxjdWxhdG9yLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCi0jaW5jbHVk
ZSAiVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKQEAgLTkwLDQ2ICs4OSwyOSBAQCBib29sIENDUHJpb3JpdGl6ZWRUZXh0dXJl
OjpyZXF1ZXN0TGF0ZSgpCiAgICAgcmV0dXJuIG1fbWFuYWdlci0+cmVxdWVzdExhdGUodGhpcyk7
CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OmFjcXVpcmVCYWNraW5nVGV4dHVyZShU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjph
Y3F1aXJlQmFja2luZ1RleHR1cmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVy
KQogewogICAgIEFTU0VSVChtX2lzQWJvdmVQcmlvcml0eUN1dG9mZik7CiAgICAgaWYgKG1faXNB
Ym92ZVByaW9yaXR5Q3V0b2ZmKQotICAgICAgICBtX21hbmFnZXItPmFjcXVpcmVCYWNraW5nVGV4
dHVyZUlmTmVlZGVkKHRoaXMsIGFsbG9jYXRvcik7CisgICAgICAgIG1fbWFuYWdlci0+YWNxdWly
ZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQodGhpcywgcmVzb3VyY2VQcm92aWRlcik7CiB9CiAKLXVu
c2lnbmVkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjp0ZXh0dXJlSWQoKQorQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpyZXNvdXJjZUlkKCkgY29uc3QK
IHsKICAgICBpZiAobV9iYWNraW5nKQogICAgICAgICByZXR1cm4gbV9iYWNraW5nLT5pZCgpOwog
ICAgIHJldHVybiAwOwogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiaW5kVGV4dHVy
ZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
KQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dXBsb2FkKENDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQogewogICAgIEFTU0VSVChtX2lzQWJvdmVQcmlvcml0eUN1dG9mZik7
CiAgICAgaWYgKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKQotICAgICAgICBhY3F1aXJlQmFja2lu
Z1RleHR1cmUoYWxsb2NhdG9yKTsKKyAgICAgICAgYWNxdWlyZUJhY2tpbmdUZXh0dXJlKHJlc291
cmNlUHJvdmlkZXIpOwogICAgIEFTU0VSVChtX2JhY2tpbmcpOwotICAgIFdlYktpdDo6V2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlm
ICghY29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZv
ciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb250
ZXh0M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJl
SWQoKSk7Ci19Ci0KLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IpCi17Ci0gICAgQVNTRVJUKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKLSAgICBpZiAobV9p
c0Fib3ZlUHJpb3JpdHlDdXRvZmYpCi0gICAgICAgIGFjcXVpcmVCYWNraW5nVGV4dHVyZShhbGxv
Y2F0b3IpOwotICAgIEFTU0VSVChtX2JhY2tpbmcpOwotICAgIFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29u
dGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0
d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb250ZXh0M2Qt
PmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgdGV4dHVyZUlkKCksIDApOworICAgIHJlc291cmNlUHJvdmlkZXItPnVwbG9hZChy
ZXNvdXJjZUlkKCksIGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0K
IAogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6bGluayhCYWNraW5nKiBiYWNraW5nKQpAQCAt
MTU5LDQgKzE0MSwzIEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OnNldFRvU2VsZk1hbmFn
ZWRNZW1vcnlQbGFjZWhvbGRlcihzaXplX3QgYnl0ZXMpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKaW5kZXggNDYwNzNj
NWYzNDY4OGVkZTJlMTg4YTNmZWJhZTRmNDBjMzUyNTVmZS4uNzY0Y2JlY2VkYzNkY2QyN2EyYjNj
NjUwOTM5OTM1MDQxNmQ5MDdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVy
ZS5oCkBAIC0yNSwxOCArMjUsMTYgQEAKICNpZm5kZWYgQ0NQcmlvcml0aXplZFRleHR1cmVfaAog
I2RlZmluZSBDQ1ByaW9yaXRpemVkVGV4dHVyZV9oCiAKLSNpbmNsdWRlICJDQ1ByaW9yaXR5Q2Fs
Y3VsYXRvci5oIgotI2luY2x1ZGUgIkNDVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNp
bmNsdWRlICJjYy9DQ1ByaW9yaXR5Q2FsY3VsYXRvci5oIgorI2luY2x1ZGUgImNjL0NDUmVzb3Vy
Y2VQcm92aWRlci5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKLWNsYXNzIENDUHJp
b3JpdHlDYWxjdWxhdG9yOwotY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBUZXh0dXJl
QWxsb2NhdG9yOwogCiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ0NQcmlvcml0aXplZFRleHR1cmUpOwpAQCAtNzYsNyArNzQsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBJZiBjYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSBpcyB0cnVlIGFjcXVp
cmVCYWNraW5nVGV4dHVyZSgpIHdpbGwgYWNxdWlyZQogICAgIC8vIGEgYmFja2luZyB0ZXh0dXJl
IGZvciB1c2UuIENhbGwgdGhpcyB3aGVuZXZlciB0aGUgdGV4dHVyZSBpcyBhY3R1YWxseSBuZWVk
ZWQuCi0gICAgdm9pZCBhY3F1aXJlQmFja2luZ1RleHR1cmUoVGV4dHVyZUFsbG9jYXRvciopOwor
ICAgIHZvaWQgYWNxdWlyZUJhY2tpbmdUZXh0dXJlKENDUmVzb3VyY2VQcm92aWRlciopOwogCiAg
ICAgLy8gRklYTUU6IFJlcXVlc3QgbGF0ZSBpcyByZWFsbHkgYSBoYWNrIGZvciB3aGVuIHdlIGFy
ZSB0b3RhbGx5IG91dCBvZiBtZW1vcnkKICAgICAvLyAgICAgICAgKGFsbCB0ZXh0dXJlcyBhcmUg
dmlzaWJsZSkgYnV0IHdlIGNhbiBzdGlsbCBzcXVlZXplIGludG8gdGhlIGxpbWl0CkBAIC04Nywx
MSArODUsMTAgQEAgcHVibGljOgogICAgIC8vICAgICAgICByZWdyZXNzIE9PTXMgc2l0dWF0aW9u
cy4KICAgICBib29sIHJlcXVlc3RMYXRlKCk7CiAKLSAgICAvLyBUaGVzZSBmdW5jdGlvbnMgd2ls
bCBhY3F1aXJlIHRoZSB0ZXh0dXJlIGlmIHBvc3NpYmxlLiBJZiBuZWl0aGVyIGhhdmVCYWNraW5n
VGV4dHVyZSgpCi0gICAgLy8gbm9yIGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIGlzIHRydWUs
IGFuIElEIG9mIHplcm8gd2lsbCBiZSB1c2VkL3JldHVybmVkLgotICAgIHZvaWQgYmluZFRleHR1
cmUoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKik7Ci0gICAgdm9pZCBmcmFt
ZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqKTsK
LSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKTsKKyAgICAvLyBVcGxvYWRzIHBpeGVscyBpbnRvIHRo
ZSBiYWNraW5nIHJlc291cmNlLiBUaGlzIGZ1bmN0aW9ucyB3aWxsIGFxdWlyZSB0aGUgYmFja2lu
ZyBpZiBuZWVkZWQuCisgICAgdm9pZCB1cGxvYWQoQ0NSZXNvdXJjZVByb3ZpZGVyKiwgY29uc3Qg
dWludDhfdCogaW1hZ2UsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQoKSBjb25zdDsKIAogICAgIC8vIFNlbGYtbWFu
YWdlZCB0ZXh0dXJlcyBhcmUgYWNjb3VudGVkIGZvciB3aGVuIHByaW9yaXRpemluZyBvdGhlciB0
ZXh0dXJlcywKICAgICAvLyBidXQgdGhleSBhcmUgbm90IGFsbG9jYXRlZC9yZWN5Y2xlZC9kZWxl
dGVkLCBzbyB0aGlzIG5lZWRzIHRvIGJlIGRvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4IGQxOWU1YWExOWM4ZjhmMzZjYmU2MjA3
MzQ1ZjI5ZGVlY2U2NTZiNWIuLjRhMjQxNzljNTc4MGE2ODJjNGVkNGFkODMzYzE2YTI3ZTZkMGQ4
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
LmNwcApAQCAtMzYsMTEgKzM2LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIGludCkKK0NDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKHNpemVfdCBt
YXhNZW1vcnlMaW1pdEJ5dGVzLCBpbnQsIGludCBwb29sKQogICAgIDogbV9tYXhNZW1vcnlMaW1p
dEJ5dGVzKG1heE1lbW9yeUxpbWl0Qnl0ZXMpCiAgICAgLCBtX21lbW9yeVVzZUJ5dGVzKDApCiAg
ICAgLCBtX21lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoMCkKICAgICAsIG1fbWVtb3J5QXZhaWxhYmxl
Qnl0ZXMoMCkKKyAgICAsIG1fcG9vbChwb29sKQogewogfQogCkBAIC00OSw3ICs1MCw3IEBAIEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6fkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcigp
CiAgICAgd2hpbGUgKG1fdGV4dHVyZXMuc2l6ZSgpID4gMCkKICAgICAgICAgdW5yZWdpc3RlclRl
eHR1cmUoKm1fdGV4dHVyZXMuYmVnaW4oKSk7CiAKLSAgICAvLyBFYWNoIHJlbWFpbmluZyBiYWNr
aW5nIGlzIGEgbGVha2VkIG9wZW5nbCB0ZXh0dXJlLiBXZSBkb24ndCBoYXZlIHRoZSBhbGxvY2F0
b3IKKyAgICAvLyBFYWNoIHJlbWFpbmluZyBiYWNraW5nIGlzIGEgbGVha2VkIG9wZW5nbCB0ZXh0
dXJlLiBXZSBkb24ndCBoYXZlIHRoZSByZXNvdXJjZVByb3ZpZGVyCiAgICAgLy8gdG8gZGVsZXRl
IHRoZSB0ZXh0dXJlcyBhdCB0aGlzIHRpbWUgc28gY2xlYXJNZW1vcnkoKSBuZWVkcyB0byBiZSBj
YWxsZWQgYmVmb3JlIHRoaXMuCiAgICAgd2hpbGUgKG1fYmFja2luZ3Muc2l6ZSgpID4gMCkKICAg
ICAgICAgZGVzdHJveUJhY2tpbmcoKm1fYmFja2luZ3MuYmVnaW4oKSwgMCk7CkBAIC0xNjgsNyAr
MTY5LDcgQEAgYm9vbCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RMYXRlKEND
UHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVk
ZWQoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvcikKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1Rl
eHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwgQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewogICAgIEFTU0VSVCghdGV4dHVyZS0+aXNTZWxm
TWFuYWdlZCgpKTsKICAgICBBU1NFUlQodGV4dHVyZS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkp
OwpAQCAtMTkwLDggKzE5MSw4IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjph
Y3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4CiAKICAgICAvLyBP
dGhlcndpc2UgcmVkdWNlIG1lbW9yeSBhbmQganVzdCBhbGxvY2F0ZSBhIG5ldyBiYWNraW5nIHRl
eHVyZXMuCiAgICAgaWYgKCFiYWNraW5nKSB7Ci0gICAgICAgIHJlZHVjZU1lbW9yeShtX21lbW9y
eUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+Ynl0ZXMoKSwgYWxsb2NhdG9yKTsKLSAgICAgICAg
YmFja2luZyA9IGNyZWF0ZUJhY2tpbmcodGV4dHVyZS0+c2l6ZSgpLCB0ZXh0dXJlLT5mb3JtYXQo
KSwgYWxsb2NhdG9yKTsKKyAgICAgICAgcmVkdWNlTWVtb3J5KG1fbWVtb3J5QXZhaWxhYmxlQnl0
ZXMgLSB0ZXh0dXJlLT5ieXRlcygpLCByZXNvdXJjZVByb3ZpZGVyKTsKKyAgICAgICAgYmFja2lu
ZyA9IGNyZWF0ZUJhY2tpbmcodGV4dHVyZS0+c2l6ZSgpLCB0ZXh0dXJlLT5mb3JtYXQoKSwgcmVz
b3VyY2VQcm92aWRlcik7CiAgICAgfQogCiAgICAgLy8gTW92ZSB0aGUgdXNlZCBiYWNraW5nIHRl
eHR1cmUgdG8gdGhlIGVuZCBvZiB0aGUgZXZpY3Rpb24gbGlzdC4KQEAgLTIwMiw3ICsyMDMsNyBA
QCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJl
SWZOZWVkZWQoQ0NQcmlvcml0aXplZFRleAogICAgIG1fYmFja2luZ3MuYWRkKGJhY2tpbmcpOwog
fQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KHNpemVf
dCBsaW1pdEJ5dGVzLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdEJ5dGVzLCBDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgaWYgKG1lbW9yeVVzZUJ5
dGVzKCkgPD0gbGltaXRCeXRlcykKICAgICAgICAgcmV0dXJuOwpAQCAtMjEyLDEzICsyMTMsMTMg
QEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeShzaXplX3Qg
bGltaXRCeXRlcywgVGV4dHVyZUFsbG9jYXQKICAgICAgICAgQmFja2luZ1NldDo6aXRlcmF0b3Ig
aXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7CiAgICAgICAgIGlmICgoKml0KS0+b3duZXIoKSAmJiAo
Kml0KS0+b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgZGVzdHJveUJhY2tpbmcoKCppdCksIGFsbG9jYXRvcik7CisgICAgICAgIGRl
c3Ryb3lCYWNraW5nKCgqaXQpLCByZXNvdXJjZVByb3ZpZGVyKTsKICAgICB9CiB9CiAKLXZvaWQg
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1l
bW9yeShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7Ci0gICAgcmVkdWNl
TWVtb3J5KG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMsIGFsbG9jYXRvcik7CisgICAgcmVkdWNlTWVt
b3J5KG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMsIHJlc291cmNlUHJvdmlkZXIpOwogICAgIEFTU0VS
VChtZW1vcnlVc2VCeXRlcygpIDw9IG1heE1lbW9yeUxpbWl0Qnl0ZXMoKSk7CiAKICAgICAvLyBX
ZSBjdXJyZW50bHkgY29sbGVjdCBiYWNraW5ncyBmcm9tIGRlbGV0ZWQgdGV4dHVyZXMgZm9yIGxh
dGVyIHJlY3ljbGluZy4KQEAgLTIzNSwxNyArMjM2LDE3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQog
ICAgIHNpemVfdCB0ZW5QZXJjZW50T2ZNZW1vcnkgPSBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzIC8g
MTA7CiAgICAgaWYgKHdhc3RlZE1lbW9yeSA8PSB0ZW5QZXJjZW50T2ZNZW1vcnkpCiAgICAgICAg
IHJldHVybjsKLSAgICByZWR1Y2VNZW1vcnkobWVtb3J5VXNlQnl0ZXMoKSAtICh3YXN0ZWRNZW1v
cnkgLSB0ZW5QZXJjZW50T2ZNZW1vcnkpLCBhbGxvY2F0b3IpOworICAgIHJlZHVjZU1lbW9yeSht
ZW1vcnlVc2VCeXRlcygpIC0gKHdhc3RlZE1lbW9yeSAtIHRlblBlcmNlbnRPZk1lbW9yeSksIHJl
c291cmNlUHJvdmlkZXIpOwogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
Y2xlYXJBbGxNZW1vcnkoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9pZCBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OmNsZWFyQWxsTWVtb3J5KENDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlcikKIHsKICAgICAvLyBVbmxpbmsgYW5kIGRlc3Ryb3kgYWxsIGJhY2tp
bmcgdGV4dHVyZXMuCiAgICAgd2hpbGUgKG1fYmFja2luZ3Muc2l6ZSgpID4gMCkgewogICAgICAg
ICBCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsKICAgICAgICAg
aWYgKCgqaXQpLT5vd25lcigpKQogICAgICAgICAgICAgKCppdCktPm93bmVyKCktPnVubGluaygp
OwotICAgICAgICBkZXN0cm95QmFja2luZygoKml0KSwgYWxsb2NhdG9yKTsKKyAgICAgICAgZGVz
dHJveUJhY2tpbmcoKCppdCksIHJlc291cmNlUHJvdmlkZXIpOwogICAgIH0KIH0KIApAQCAtMjUz
LDcgKzI1NCw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphbGxCYWNraW5n
VGV4dHVyZXNXZXJlRGVsZXRlZCgpCiB7CiAgICAgLy8gU2FtZSBhcyBjbGVhckFsbE1lbW9yeSwg
ZXhjZXB0IGFsbCBvdXIgdGV4dHVyZXMgd2VyZSBhbHJlYWR5CiAgICAgLy8gZGVsZXRlZCBleHRl
cm5hbGx5LCBzbyB3ZSBkb24ndCBkZWxldGUgdGhlbS4gUGFzc2luZyBubwotICAgIC8vIGFsbG9j
YXRvciByZXN1bHRzIGluIGxlYWtpbmcgdGhlIChub3cgaW52YWxpZCkgdGV4dHVyZSBpZHMuCisg
ICAgLy8gcmVzb3VyY2VQcm92aWRlciByZXN1bHRzIGluIGxlYWtpbmcgdGhlIChub3cgaW52YWxp
ZCkgdGV4dHVyZSBpZHMuCiAgICAgY2xlYXJBbGxNZW1vcnkoMCk7CiB9CiAKQEAgLTI5MSwyNiAr
MjkyLDI3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZXR1cm5CYWNraW5n
VGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4CiAgICAgfQogfQogCi1DQ1ByaW9yaXRp
emVkVGV4dHVyZTo6QmFja2luZyogQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVC
YWNraW5nKEludFNpemUgc2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IpCitDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGVCYWNraW5nKEludFNpemUgc2l6ZSwgR0MzRGVudW0gZm9ybWF0
LCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7Ci0gICAgQVNTRVJUKGFs
bG9jYXRvcik7CisgICAgQVNTRVJUKHJlc291cmNlUHJvdmlkZXIpOwogCi0gICAgQ0NQcmlvcml0
aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcgPSBuZXcgQ0NQcmlvcml0aXplZFRleHR1cmU6
OkJhY2tpbmcoYWxsb2NhdG9yLT5jcmVhdGVUZXh0dXJlKHNpemUsIGZvcm1hdCksIHNpemUsIGZv
cm1hdCk7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQgPSBy
ZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShtX3Bvb2wsIHNpemUsIGZvcm1hdCwgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOworICAgIENDUHJpb3JpdGl6ZWRUZXh0
dXJlOjpCYWNraW5nKiBiYWNraW5nID0gbmV3IENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5n
KHJlc291cmNlSWQsIHNpemUsIGZvcm1hdCk7CiAgICAgbV9tZW1vcnlVc2VCeXRlcyArPSBiYWNr
aW5nLT5ieXRlcygpOwogICAgIC8vIFB1dCBiYWNraW5nIHRleHR1cmUgYXQgdGhlIGZyb250IGZv
ciBldmljdGlvbiwgc2luY2UgaXQgaXNuJ3QgaW4gdXNlIHlldC4KICAgICBtX2JhY2tpbmdzLmlu
c2VydEJlZm9yZShtX2JhY2tpbmdzLmJlZ2luKCksIGJhY2tpbmcpOwogICAgIHJldHVybiBiYWNr
aW5nOwogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVzdHJveUJhY2tp
bmcoQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcsIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvcikKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZXN0cm95
QmFja2luZyhDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZywgQ0NSZXNvdXJj
ZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewogICAgIEFTU0VSVChiYWNraW5nKTsKICAg
ICBBU1NFUlQoIWJhY2tpbmctPm93bmVyKCkgfHwgIWJhY2tpbmctPm93bmVyKCktPmlzQWJvdmVQ
cmlvcml0eUN1dG9mZigpKTsKICAgICBBU1NFUlQoIWJhY2tpbmctPm93bmVyKCkgfHwgIWJhY2tp
bmctPm93bmVyKCktPmlzU2VsZk1hbmFnZWQoKSk7CiAgICAgQVNTRVJUKG1fYmFja2luZ3MuZmlu
ZChiYWNraW5nKSAhPSBtX2JhY2tpbmdzLmVuZCgpKTsKIAotICAgIGlmIChhbGxvY2F0b3IpCi0g
ICAgICAgIGFsbG9jYXRvci0+ZGVsZXRlVGV4dHVyZShiYWNraW5nLT5pZCgpLCBiYWNraW5nLT5z
aXplKCksIGJhY2tpbmctPmZvcm1hdCgpKTsKKyAgICBpZiAocmVzb3VyY2VQcm92aWRlcikKKyAg
ICAgICAgcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlUmVzb3VyY2UoYmFja2luZy0+aWQoKSk7CiAg
ICAgaWYgKGJhY2tpbmctPm93bmVyKCkpCiAgICAgICAgIGJhY2tpbmctPm93bmVyKCktPnVubGlu
aygpOwogICAgIG1fbWVtb3J5VXNlQnl0ZXMgLT0gYmFja2luZy0+Ynl0ZXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKaW5kZXggMDE5YzQ1Y2Y0
ZTMzM2U1NGNmOWVhNGQwYmNkNTljNjc5OTFiM2NlOC4uYjE2ZWMxMDM0ZDM5YjZjM2ViYTM4NGZk
NWU4ODFiNTk3ZjZlMjA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyLmgKQEAgLTQwLDkgKzQwLDkgQEAgY2xhc3MgQ0NQcmlvcml0eUNhbGN1bGF0
b3I7CiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcik7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiBjcmVhdGUoc2l6ZV90
IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSkKKyAgICBzdGF0aWMgUGFz
c093blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IGNyZWF0ZShzaXplX3QgbWF4TWVt
b3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplLCBpbnQgcG9vbCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKG1heE1l
bW9yeUxpbWl0Qnl0ZXMsIG1heFRleHR1cmVTaXplKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKG1heE1lbW9yeUxpbWl0Qnl0ZXMsIG1h
eFRleHR1cmVTaXplLCBwb29sKSk7CiAgICAgfQogICAgIFBhc3NPd25QdHI8Q0NQcmlvcml0aXpl
ZFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoSW50U2l6ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQpCiAg
ICAgewpAQCAtNzMsMTEgKzczLDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcmVxdWVzdExhdGUo
Q0NQcmlvcml0aXplZFRleHR1cmUqKTsKIAotICAgIHZvaWQgcmVkdWNlTWVtb3J5KFRleHR1cmVB
bGxvY2F0b3IqKTsKLSAgICB2b2lkIGNsZWFyQWxsTWVtb3J5KFRleHR1cmVBbGxvY2F0b3IqKTsK
KyAgICB2b2lkIHJlZHVjZU1lbW9yeShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKKyAgICB2b2lkIGNs
ZWFyQWxsTWVtb3J5KENDUmVzb3VyY2VQcm92aWRlciopOwogICAgIHZvaWQgYWxsQmFja2luZ1Rl
eHR1cmVzV2VyZURlbGV0ZWQoKTsKIAotICAgIHZvaWQgYWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZO
ZWVkZWQoQ0NQcmlvcml0aXplZFRleHR1cmUqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9p
ZCBhY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4dHVyZSosIEND
UmVzb3VyY2VQcm92aWRlciopOwogCiAgICAgdm9pZCByZWdpc3RlclRleHR1cmUoQ0NQcmlvcml0
aXplZFRleHR1cmUqKTsKICAgICB2b2lkIHVucmVnaXN0ZXJUZXh0dXJlKENDUHJpb3JpdGl6ZWRU
ZXh0dXJlKik7CkBAIC0xMDUsMTggKzEwNSwxOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
Q0NQcmlvcml0eUNhbGN1bGF0b3I6OnByaW9yaXR5SXNMb3dlcihwcmlvcml0eUEsIHByaW9yaXR5
Qik7CiAgICAgfQogCi0gICAgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKHNpemVfdCBtYXhN
ZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpOworICAgIENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVT
aXplLCBpbnQgcG9vbCk7CiAKLSAgICB2b2lkIHJlZHVjZU1lbW9yeShzaXplX3QgbGltaXQsIFRl
eHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIHJlZHVjZU1lbW9yeShzaXplX3QgbGltaXQsIEND
UmVzb3VyY2VQcm92aWRlciopOwogCi0gICAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcq
IGNyZWF0ZUJhY2tpbmcoSW50U2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBUZXh0dXJlQWxsb2NhdG9y
Kik7Ci0gICAgdm9pZCBkZXN0cm95QmFja2luZyhDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2lu
ZyosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2lu
ZyogY3JlYXRlQmFja2luZyhJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQsIENDUmVzb3VyY2VQcm92
aWRlciopOworICAgIHZvaWQgZGVzdHJveUJhY2tpbmcoQ0NQcmlvcml0aXplZFRleHR1cmU6OkJh
Y2tpbmcqLCBDQ1Jlc291cmNlUHJvdmlkZXIqKTsKIAogICAgIHNpemVfdCBtX21heE1lbW9yeUxp
bWl0Qnl0ZXM7CiAgICAgdW5zaWduZWQgbV9wcmlvcml0eUN1dG9mZjsKICAgICBzaXplX3QgbV9t
ZW1vcnlVc2VCeXRlczsKICAgICBzaXplX3QgbV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzOwogICAg
IHNpemVfdCBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzOworICAgIGludCBtX3Bvb2w7CiAKICAgICB0
eXBlZGVmIEhhc2hTZXQ8Q0NQcmlvcml0aXplZFRleHR1cmUqPiBUZXh0dXJlU2V0OwogICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8Q0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqPiBCYWNraW5n
U2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCmluZGV4IDU5YWJm
YmJjYzBhM2ViZmYwZjhhY2EwODkzNzJhNTE1ZDZhYzE5NzUuLjJkNzRhMjI3ODAzZmU0YWZhZTkx
ZmMzY2IxNTJmNzFmMzk3NjNhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3
UXVhZC5jcHAKQEAgLTMxLDE5ICszMSwxOSBAQCB1c2luZyBXZWJLaXQ6OldlYkNvbXBvc2l0b3JR
dWFkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJh
d1F1YWQ+IENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJDb21w
b3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgV2ViS2l0OjpXZWJG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlv
bnMmIGJhY2tncm91bmRGaWx0ZXJzLCB1bnNpZ25lZCBtYXNrVGV4dHVyZUlkLCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkKK1Bhc3NPd25QdHI8Q0NSZW5kZXJQ
YXNzRHJhd1F1YWQ+IENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNl
SWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFz
dEZyYW1lKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQo
c2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFzc0lkLCBpc1JlcGxpY2EsIGRyYXdU
cmFuc2Zvcm0sIGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrVGV4dHVyZUlkLCBjb250
ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFzc0lk
LCBpc1JlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZpbHRlcnMsIGJhY2tncm91bmRGaWx0ZXJzLCBt
YXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpKTsKIH0KIAotQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IFdlYktpdDo6V2Vi
Q29tcG9zaXRvclNoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0
JiBxdWFkUmVjdCwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IFdlYktpdDo6
V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVy
YXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1RleHR1cmVJZCwgY29uc3Qg
SW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpCitDQ1JlbmRlclBhc3NEcmF3
UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBp
bnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVy
YXRpb25zJiBmaWx0ZXJzLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tn
cm91bmRGaWx0ZXJzLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNl
SWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKQogICAgIDog
V2ViQ29tcG9zaXRvclF1YWQoc2hhcmVkUXVhZFN0YXRlLCBXZWJDb21wb3NpdG9yUXVhZDo6UmVu
ZGVyUGFzcywgcXVhZFJlY3QpCiAgICAgLCBtX3JlbmRlclBhc3NJZChyZW5kZXJQYXNzSWQpCiAg
ICAgLCBtX2lzUmVwbGljYShpc1JlcGxpY2EpCiAgICAgLCBtX2RyYXdUcmFuc2Zvcm0oZHJhd1Ry
YW5zZm9ybSkKICAgICAsIG1fZmlsdGVycyhmaWx0ZXJzKQogICAgICwgbV9iYWNrZ3JvdW5kRmls
dGVycyhiYWNrZ3JvdW5kRmlsdGVycykKLSAgICAsIG1fbWFza1RleHR1cmVJZChtYXNrVGV4dHVy
ZUlkKQorICAgICwgbV9tYXNrUmVzb3VyY2VJZChtYXNrUmVzb3VyY2VJZCkKICAgICAsIG1fY29u
dGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUoY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUp
CiB7CiAgICAgQVNTRVJUKG1fcmVuZGVyUGFzc0lkID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVh
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQuaAppbmRleCBhMTJmMjA0Y2E1ZjYyODYyMTM0NzFkYjA0NTQ3MjdmZDgy
YTRjMzlhLi42ZjM5OWJlNjdmODY1Mjk3ODc1NmQ2NWJmMWI3NDg2YTJmYjJlODc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5k
ZWYgQ0NSZW5kZXJQYXNzRHJhd1F1YWRfaAogI2RlZmluZSBDQ1JlbmRlclBhc3NEcmF3UXVhZF9o
CiAKKyNpbmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxwdWJsaWMv
V2ViQ29tcG9zaXRvclF1YWQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9u
cy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgpAQCAtMzgs
MTEgKzM5LDExIEBAIGNsYXNzIENDUmVuZGVyUGFzczsKIGNsYXNzIENDUmVuZGVyUGFzc0RyYXdR
dWFkIDogcHVibGljIFdlYktpdDo6V2ViQ29tcG9zaXRvclF1YWQgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKENDUmVuZGVyUGFzc0RyYXdRdWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViQ29t
cG9zaXRvclNoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lk
LCBib29sIGlzUmVwbGljYSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgY29uc3QgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycywgdW5zaWduZWQgbWFza1Rl
eHR1cmVJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3Qg
V2ViS2l0OjpXZWJDb21wb3NpdG9yU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIGlu
dCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgY29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJz
LCBjb25zdCBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzLCBD
Q1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKIAogICAgIGludCByZW5kZXJQYXNz
SWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBhc3NJZDsgfQogICAgIGJvb2wgaXNSZXBsaWNh
KCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGxpY2E7IH0KLSAgICB1bnNpZ25lZCBtYXNrVGV4dHVy
ZUlkKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrVGV4dHVyZUlkOyB9CisgICAgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkKCkgY29uc3QgeyByZXR1cm4gbV9tYXNr
UmVzb3VyY2VJZDsgfQogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFz
dEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZTsg
fQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgYW5kIHdlIHNob3VsZCBk
cmF3IHRoZSBSZW5kZXJQYXNzIHdpdGggdGhlIHF1YWRUcmFuc2Zvcm0uCkBAIC01MywxNCArNTQs
MTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBt
YXRlcmlhbENhc3QoY29uc3QgV2ViS2l0OjpXZWJDb21wb3NpdG9yUXVhZCopOwogcHJpdmF0ZToK
LSAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1Jl
cGxpY2EsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVy
T3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMsIHVuc2lnbmVkIG1hc2tUZXh0dXJlSWQsIGNv
bnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKTsKKyAgICBDQ1JlbmRl
clBhc3NEcmF3UXVhZChjb25zdCBXZWJLaXQ6OldlYkNvbXBvc2l0b3JTaGFyZWRRdWFkU3RhdGUq
LCBjb25zdCBJbnRSZWN0JiwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBXZWJLaXQ6OldlYkZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMsIGNvbnN0IFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyYg
YmFja2dyb3VuZEZpbHRlcnMsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVz
b3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUpOwog
CiAgICAgaW50IG1fcmVuZGVyUGFzc0lkOwogICAgIGJvb2wgbV9pc1JlcGxpY2E7CiAgICAgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07CiAgICAgV2ViS2l0
OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKICAgICBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsKLSAgICB1bnNpZ25lZCBtX21hc2tUZXh0dXJl
SWQ7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fbWFza1Jlc291cmNlSWQ7
CiAgICAgSW50UmVjdCBtX2NvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggODJjYjU0NzYwNzIyNjgxYTMyOTBjNzc5
OWU4ZmVjZGE3MTJiZDYxZC4uZWZmMDY4YWI0NDg5YzQ4MDcwZGU5MWQ1NjI0MDVlNjM2ZGUyNDc3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCkBAIC0yMDksMTQgKzIwOSwxNCBA
QCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlz
dCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYQogICAgICAgICAgICAgbWFza0xheWVyID0gMDsKICAg
ICB9CiAKLSAgICBpbnQgbWFza1RleHR1cmVJZCA9IG1hc2tMYXllciA/IG1hc2tMYXllci0+Y29u
dGVudHNUZXh0dXJlSWQoKSA6IDA7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
IG1hc2tSZXNvdXJjZUlkID0gbWFza0xheWVyID8gbWFza0xheWVyLT5jb250ZW50c1Jlc291cmNl
SWQoKSA6IDA7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZHJhd1RyYW5zZm9ybSA9IGZv
clJlcGxpY2EgPyBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtIDogbV9kcmF3VHJhbnNmb3JtOwogICAg
IEludFJlY3QgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUgPSBjb250ZW50c0NoYW5nZWQo
KSA/IG1fY29udGVudFJlY3QgOiBJbnRSZWN0KCk7CiAKICAgICBjb25zdCBXZWJLaXQ6OldlYkZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlcnMgPSBtX293bmluZ0xheWVyLT5maWx0ZXJzKCk7CiAgICAg
Y29uc3QgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycyA9IG1f
b3duaW5nTGF5ZXItPmJhY2tncm91bmRGaWx0ZXJzKCk7CiAKLSAgICBxdWFkTGlzdC5hcHBlbmRT
dXJmYWNlKENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250
ZW50UmVjdCgpLCByZW5kZXJQYXNzSWQsIGZvclJlcGxpY2EsIGRyYXdUcmFuc2Zvcm0sIGZpbHRl
cnMsIGJhY2tncm91bmRGaWx0ZXJzLCBtYXNrVGV4dHVyZUlkLCBjb250ZW50c0NoYW5nZWRTaW5j
ZUxhc3RGcmFtZSkpOworICAgIHF1YWRMaXN0LmFwcGVuZFN1cmZhY2UoQ0NSZW5kZXJQYXNzRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIHJlbmRlclBhc3NJ
ZCwgZm9yUmVwbGljYSwgZHJhd1RyYW5zZm9ybSwgZmlsdGVycywgYmFja2dyb3VuZEZpbHRlcnMs
IG1hc2tSZXNvdXJjZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlcmVyLmgKaW5kZXggNmIwNWQ5NDk0YzJjMWQ4NjBiMjliNzYzZGRiYTRkNmEx
Y2UyMjRmZS4uZDkzMTAyMmRjNTU1NzVlMWU4ZWY2ZjliODMzMjMzYTZmNzE0YmYzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyZXIuaApAQCAtMzYsOSArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDQ1Njb3BlZFRleHR1cmU7Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgVGV4
dHVyZUNvcGllcjsKLWNsYXNzIFRleHR1cmVNYW5hZ2VyOwogY2xhc3MgVGV4dHVyZVVwbG9hZGVy
OwogCiBlbnVtIFRleHR1cmVVcGxvYWRlck9wdGlvbiB7IFRocm90dGxlZFVwbG9hZGVyLCBVbnRo
cm90dGxlZFVwbG9hZGVyIH07CkBAIC01Nyw2ICs1NSwxMyBAQCBwdWJsaWM6CiBjbGFzcyBDQ1Jl
bmRlcmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlcmVyKTsKIHB1YmxpYzoK
KyAgICAvLyBUaGlzIGVudW0gZGVmaW5lcyB0aGUgdmFyaW91cyByZXNvdXJjZSBwb29scyBmb3Ig
dGhlIENDUmVzb3VyY2VQcm92aWRlcgorICAgIC8vIHdoZXJlIHRleHR1cmVzIGdldCBhbGxvY2F0
ZWQuCisgICAgZW51bSBSZXNvdXJjZVBvb2wgeworICAgICAgSW1wbFBvb2wgPSAxLCAvLyBUaGlz
IHBvb2wgaXMgZm9yIHRleHR1cmVzIHRoYXQgZ2V0IGFsbG9jYXRlZCBvbiB0aGUgaW1wbCB0aHJl
YWQgKGUuZy4gUmVuZGVyU3VyZmFjZXMpLgorICAgICAgQ29udGVudFBvb2wgLy8gVGhpcyBwb29s
IGlzIGZvciB0ZXh0dXJlcyB0aGF0IGdldCBhbGxvY2F0ZWQgb24gdGhlIG1haW4gdGhyZWFkIChl
LmcuIHRpbGVzKS4KKyAgICB9OworCiAgICAgdmlydHVhbCB+Q0NSZW5kZXJlcigpIHsgfQogCiAg
ICAgdmlydHVhbCBjb25zdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMo
KSBjb25zdCA9IDA7CkBAIC05MSw4ICs5Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4
dHVyZUNvcGllciogdGV4dHVyZUNvcGllcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFRleHR1
cmVVcGxvYWRlciogdGV4dHVyZVVwbG9hZGVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgVGV4
dHVyZUFsbG9jYXRvciogaW1wbFRleHR1cmVBbGxvY2F0b3IoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBUZXh0dXJlQWxsb2NhdG9yKiBjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0TG9zdCgpIHsgcmV0dXJuIGZhbHNlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVzb3VyY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmODJi
ZjIyYTU5NWVkN2Q5ODZiMTQ0YWUxNjY3MmQwNTZmMDQ4OTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jlc291cmNlUHJv
dmlkZXIuY3BwCkBAIC0wLDAgKzEsMjUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NSZXNvdXJjZVByb3ZpZGVyLmgiCisKKyNpbmNsdWRl
ICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRl
ICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIgLy8gRm9yIHRoZSBHTEMoKSBtYWNybworI2luY2x1
ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmg+CisKK3VzaW5nIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEdDM0RlbnVtIHRleHR1cmVUb1N0b3JhZ2VG
b3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKK3sKKyAgICBHQzNEZW51bSBzdG9yYWdlRm9y
bWF0ID0gRXh0ZW5zaW9uczNEOjpSR0JBOF9PRVM7CisgICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0
KSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQToKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUOgorICAgICAgICBzdG9yYWdlRm9ybWF0ID0g
RXh0ZW5zaW9uczNEQ2hyb21pdW06OkJHUkE4X0VYVDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIHJldHVybiBzdG9yYWdlRm9ybWF0OworfQorCitzdGF0aWMgYm9vbCBpc1RleHR1
cmVGb3JtYXRTdXBwb3J0ZWRGb3JTdG9yYWdlKEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICByZXR1
cm4gKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSB8fCBmb3JtYXQgPT0gRXh0ZW5z
aW9uczNEOjpCR1JBX0VYVCk7Cit9CisKK1Bhc3NPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBD
Q1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3sK
KyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3ZpZGVyKGFkb3B0UHRy
KG5ldyBDQ1Jlc291cmNlUHJvdmlkZXIoY29udGV4dCkpKTsKKyAgICBpZiAoIXJlc291cmNlUHJv
dmlkZXItPmluaXRpYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IHJlc291cmNlUHJvdmlkZXIucmVsZWFzZSgpOworfQorCitDQ1Jlc291cmNlUHJvdmlkZXI6On5D
Q1Jlc291cmNlUHJvdmlkZXIoKQoreworfQorCitXZWJHcmFwaGljc0NvbnRleHQzRCogQ0NSZXNv
dXJjZVByb3ZpZGVyOjpncmFwaGljc0NvbnRleHQzRCgpCit7CisgICAgQVNTRVJUKENDUHJveHk6
OmlzSW1wbFRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5jb250ZXh0M0QoKTsKK30K
KworYm9vbCBDQ1Jlc291cmNlUHJvdmlkZXI6OmluVXNlQnlDb25zdW1lcihSZXNvdXJjZUlkIGlk
KQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9
IG1fcmVzb3VyY2VzLmVuZCgpKTsKKyAgICByZXR1cm4gISFpdC0+c2Vjb25kLmxvY2tGb3JSZWFk
Q291bnQ7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJv
dmlkZXI6OmNyZWF0ZVJlc291cmNlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNE
ZW51bSBmb3JtYXQsIFRleHR1cmVVc2FnZUhpbnQgaGludCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IDA7CisgICAgV2Vi
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7Cisg
ICAgaWYgKCFjb250ZXh0M2QpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBh
dGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg
ICAgR0xDKGNvbnRleHQzZCwgdGV4dHVyZUlkID0gY29udGV4dDNkLT5jcmVhdGVUZXh0dXJlKCkp
OworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRl
eHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVB
UikpOworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhjb250ZXh0M2QsIGNv
bnRleHQzZC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBf
VE9fRURHRSkpOworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
V1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOworCisgICAgaWYgKG1f
dXNlVGV4dHVyZVVzYWdlSGludCAmJiBoaW50ID09IFRleHR1cmVVc2FnZUZyYW1lYnVmZmVyKQor
ICAgICAgICBHTEMoY29udGV4dDNkLCBjb250ZXh0M2QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEV4dGVuc2lvbnMzRENocm9taXVtOjpHTF9URVhUVVJFX1VT
QUdFX0FOR0xFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfRlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9BTkdMRSkpOworICAgIGlmIChtX3VzZVRleHR1cmVTdG9yYWdlRXh0ICYmIGlzVGV4dHVyZUZv
cm1hdFN1cHBvcnRlZEZvclN0b3JhZ2UoZm9ybWF0KSkgeworICAgICAgICBHQzNEZW51bSBzdG9y
YWdlRm9ybWF0ID0gdGV4dHVyZVRvU3RvcmFnZUZvcm1hdChmb3JtYXQpOworICAgICAgICBHTEMo
Y29udGV4dDNkLCBjb250ZXh0M2QtPnRleFN0b3JhZ2UyREVYVChHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgMSwgc3RvcmFnZUZvcm1hdCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KSk7CisgICAgfSBlbHNlCisgICAgICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+dGV4SW1h
Z2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZm9ybWF0LCBzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCksIDAsIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIDApKTsKKyAgICBSZXNvdXJjZUlkIGlkID0gbV9uZXh0SWQrKzsKKyAgICBSZXNvdXJj
ZSByZXNvdXJjZSA9IHt0ZXh0dXJlSWQsIHBvb2wsIDAsIGZhbHNlLCBmYWxzZSwgc2l6ZSwgZm9y
bWF0fTsKKyAgICBtX3Jlc291cmNlcy5hZGQoaWQsIHJlc291cmNlKTsKKyAgICByZXR1cm4gaWQ7
Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBDQ1Jlc291cmNlUHJvdmlkZXI6
OmNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlSWQpCit7
CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKKyAgICBSZXNvdXJjZUlkIGlk
ID0gbV9uZXh0SWQrKzsKKyAgICBSZXNvdXJjZSByZXNvdXJjZSA9IHt0ZXh0dXJlSWQsIDAsIDAs
IGZhbHNlLCB0cnVlLCBJbnRTaXplKCksIDB9OworICAgIG1fcmVzb3VyY2VzLmFkZChpZCwgcmVz
b3VyY2UpOworICAgIHJldHVybiBpZDsKK30KKwordm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OmRl
bGV0ZVJlc291cmNlKFJlc291cmNlSWQgaWQpCit7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1w
bFRocmVhZCgpKTsKKyAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9jb250
ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJj
ZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFpdC0+
c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQpOwor
ICAgIGlmICghaXQtPnNlY29uZC5leHRlcm5hbCkKKyAgICAgICAgR0xDKGNvbnRleHQzZCwgY29u
dGV4dDNkLT5kZWxldGVUZXh0dXJlKGl0LT5zZWNvbmQuZ2xJZCkpOworICAgIG1fcmVzb3VyY2Vz
LnJlbW92ZShpdCk7Cit9CisKK3ZvaWQgQ0NSZXNvdXJjZVByb3ZpZGVyOjpkZWxldGVPd25lZFJl
c291cmNlcyhpbnQgcG9vbCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkp
OworICAgIFZlY3RvcjxSZXNvdXJjZUlkPiB0b0RlbGV0ZTsKKyAgICBmb3IgKFJlc291cmNlTWFw
OjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IG1fcmVzb3VyY2VzLmVu
ZCgpOyArK2l0KSB7CisgICAgICAgIGlmIChpdC0+c2Vjb25kLnBvb2wgPT0gcG9vbCAmJiAhaXQt
PnNlY29uZC5leHRlcm5hbCkKKyAgICAgICAgICAgIHRvRGVsZXRlLmFwcGVuZChpdC0+Zmlyc3Qp
OworICAgIH0KKyAgICBmb3IgKFZlY3RvcjxSZXNvdXJjZUlkPjo6aXRlcmF0b3IgaXQgPSB0b0Rl
bGV0ZS5iZWdpbigpOyBpdCAhPSB0b0RlbGV0ZS5lbmQoKTsgKytpdCkKKyAgICAgICAgZGVsZXRl
UmVzb3VyY2UoKml0KTsKK30KKwordm9pZCBDQ1Jlc291cmNlUHJvdmlkZXI6OnVwbG9hZChSZXNv
dXJjZUlkIGlkLCBjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sK
KyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3RleFN1
YkltYWdlLmdldCgpKTsKKyAgICBXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gbV9j
b250ZXh0LT5jb250ZXh0M0QoKTsKKyAgICBpZiAoIWNvbnRleHQzZCkgeworICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNv
dXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYmICFp
dC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291bnQg
JiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOworCisgICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgaXQtPnNlY29uZC5nbElkKTsKKyAgICBtX3Rl
eFN1YkltYWdlLT51cGxvYWQoaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVzdFJlY3Qs
IGl0LT5zZWNvbmQuZm9ybWF0LCBjb250ZXh0M2QpOworfQorCit1bnNpZ25lZCBDQ1Jlc291cmNl
UHJvdmlkZXI6OmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQoreworICAgIEFTU0VSVChDQ1By
b3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9y
ZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVuZCgpICYm
ICFpdC0+c2Vjb25kLmxvY2tlZEZvcldyaXRlICYmICFpdC0+c2Vjb25kLmxvY2tGb3JSZWFkQ291
bnQgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwpOworICAgIGl0LT5zZWNvbmQubG9ja2VkRm9yV3Jp
dGUgPSB0cnVlOworICAgIHJldHVybiBpdC0+c2Vjb25kLmdsSWQ7Cit9CisKK3ZvaWQgQ0NSZXNv
dXJjZVByb3ZpZGVyOjp1bmxvY2tGb3JXcml0ZShSZXNvdXJjZUlkIGlkKQoreworICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2VzLmVu
ZCgpICYmIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgJiYgIWl0LT5zZWNvbmQuZXh0ZXJuYWwp
OworICAgIGl0LT5zZWNvbmQubG9ja2VkRm9yV3JpdGUgPSBmYWxzZTsKK30KKwordm9pZCBDQ1Jl
c291cmNlUHJvdmlkZXI6OmZsdXNoKCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhy
ZWFkKCkpOworICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBtX2NvbnRleHQt
PmNvbnRleHQzRCgpOworICAgIGlmICghY29udGV4dDNkKSB7CisgICAgICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBjb250ZXh0M2QtPmZsdXNoKCk7Cit9CisKK3Vuc2lnbmVkIENDUmVz
b3VyY2VQcm92aWRlcjo6bG9ja0ZvclJlYWQoUmVzb3VyY2VJZCBpZCkKK3sKKyAgICBBU1NFUlQo
Q0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOworICAgIFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9
IG1fcmVzb3VyY2VzLmZpbmQoaWQpOworICAgIEFTU0VSVChpdCAhPSBtX3Jlc291cmNlcy5lbmQo
KSAmJiAhaXQtPnNlY29uZC5sb2NrZWRGb3JXcml0ZSk7CisgICAgKysoaXQtPnNlY29uZC5sb2Nr
Rm9yUmVhZENvdW50KTsKKyAgICByZXR1cm4gaXQtPnNlY29uZC5nbElkOworfQorCit2b2lkIEND
UmVzb3VyY2VQcm92aWRlcjo6dW5sb2NrRm9yUmVhZChSZXNvdXJjZUlkIGlkKQoreworICAgIEFT
U0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgUmVzb3VyY2VNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9yZXNvdXJjZXMuZmluZChpZCk7CisgICAgQVNTRVJUKGl0ICE9IG1fcmVzb3VyY2Vz
LmVuZCgpICYmIGl0LT5zZWNvbmQubG9ja0ZvclJlYWRDb3VudCA+IDApOworICAgIC0tKGl0LT5z
ZWNvbmQubG9ja0ZvclJlYWRDb3VudCk7Cit9CisKK0NDUmVzb3VyY2VQcm92aWRlcjo6Q0NSZXNv
dXJjZVByb3ZpZGVyKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0
KGNvbnRleHQpCisgICAgLCBtX25leHRJZCgxKQorICAgICwgbV91c2VUZXh0dXJlU3RvcmFnZUV4
dChmYWxzZSkKKyAgICAsIG1fdXNlVGV4dHVyZVVzYWdlSGludChmYWxzZSkKKyAgICAsIG1fbWF4
VGV4dHVyZVNpemUoMCkKK3sKK30KKworYm9vbCBDQ1Jlc291cmNlUHJvdmlkZXI6OmluaXRpYWxp
emUoKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CisgICAgV2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IG1fY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAg
aWYgKCFjb250ZXh0M2QgfHwgIWNvbnRleHQzZC0+bWFrZUNvbnRleHRDdXJyZW50KCkpIHsKKyAg
ICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0
aW5nLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFN0cmluZyBleHRlbnNpb25z
U3RyaW5nID0gY29udGV4dDNkLT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0M0Q6OkVYVEVOU0lP
TlMpOworICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnM7CisgICAgZXh0ZW5zaW9uc1N0cmlu
Zy5zcGxpdCgnICcsIGV4dGVuc2lvbnMpOworICAgIGJvb2wgdXNlTWFwU3ViID0gZmFsc2U7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChleHRlbnNpb25zW2ldID09ICJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIikKKyAgICAg
ICAgICAgIG1fdXNlVGV4dHVyZVN0b3JhZ2VFeHQgPSB0cnVlOworICAgICAgICBlbHNlIGlmIChl
eHRlbnNpb25zW2ldID09ICJHTF9BTkdMRV90ZXh0dXJlX3VzYWdlIikKKyAgICAgICAgICAgIG1f
dXNlVGV4dHVyZVVzYWdlSGludCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKGV4dGVuc2lvbnNb
aV0gPT0gIkdMX0NIUk9NSVVNX21hcF9zdWIiKQorICAgICAgICAgICAgdXNlTWFwU3ViID0gdHJ1
ZTsKKyAgICB9CisKKyAgICBtX3RleFN1YkltYWdlID0gYWRvcHRQdHIobmV3IExheWVyVGV4dHVy
ZVN1YkltYWdlKHVzZU1hcFN1YikpOworICAgIEdMQyhjb250ZXh0M2QsIGNvbnRleHQzZC0+Z2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkUsICZtX21heFRleHR1
cmVTaXplKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZXNvdXJj
ZVByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ3NmYwZTg4NmM5ZTMzMTEyMTNlYWFmYzIzMTE5MjFm
NGI0NTNmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVzb3VyY2VQcm92aWRlci5oCkBAIC0wLDAgKzEsMTY4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworCisjaWZuZGVmIENDUmVzb3VyY2VQcm92aWRlcl9oCisjZGVmaW5lIENDUmVzb3VyY2VQ
cm92aWRlcl9oCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIklu
dFNpemUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNz
IFdlYkdyYXBoaWNzQ29udGV4dDNEOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IENDR3JhcGhpY3NDb250ZXh0OworY2xhc3MgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkOwor
Y2xhc3MgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JXcml0ZTsKK2NsYXNzIExheWVyVGV4dHVyZVN1
YkltYWdlOworCisvLyBUaHJlYWQtc2FmZXR5IG5vdGVzOiB0aGlzIGNsYXNzIGlzIG5vdCB0aHJl
YWQtc2FmZSBhbmQgY2FuIG9ubHkgYmUgY2FsbGVkCisvLyBmcm9tIHRoZSB0aHJlYWQgaXQgd2Fz
IGNyZWF0ZWQgb24gKGluIHByYWN0aWNlLCB0aGUgY29tcG9zaXRvciB0aHJlYWQpLgorY2xhc3Mg
Q0NSZXNvdXJjZVByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Jlc291cmNl
UHJvdmlkZXIpOworcHVibGljOgorICAgIHR5cGVkZWYgdW5zaWduZWQgUmVzb3VyY2VJZDsKKyAg
ICBlbnVtIFRleHR1cmVVc2FnZUhpbnQgeyBUZXh0dXJlVXNhZ2VBbnksIFRleHR1cmVVc2FnZUZy
YW1lYnVmZmVyIH07CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+
IGNyZWF0ZShDQ0dyYXBoaWNzQ29udGV4dCopOworCisgICAgdmlydHVhbCB+Q0NSZXNvdXJjZVBy
b3ZpZGVyKCk7CisKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBncmFwaGljc0Nv
bnRleHQzRCgpOworICAgIGludCBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4
VGV4dHVyZVNpemU7IH0KKyAgICB1bnNpZ25lZCBudW1SZXNvdXJjZXMoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlcy5zaXplKCk7IH0KKworICAgIC8vIENoZWNrcyB3aGV0aGVyIGEgcmVzb3Vy
Y2UgaXMgaW4gdXNlIGJ5IGEgY29uc3VtZXIuCisgICAgYm9vbCBpblVzZUJ5Q29uc3VtZXIoUmVz
b3VyY2VJZCk7CisKKworICAgIC8vIFByb2R1Y2VyIGludGVyZmFjZS4KKworICAgIC8vIENyZWF0
ZXMgYSByZXNvdXJjZSBvZiB0aGUgZ2l2ZW4gc2l6ZS9mb3JtYXQsIGludG8gdGhlIGdpdmVuIHBv
b2wuCisgICAgUmVzb3VyY2VJZCBjcmVhdGVSZXNvdXJjZShpbnQgcG9vbCwgY29uc3QgSW50U2l6
ZSYsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZVVzYWdlSGludCk7CisKKyAgICAvLyBXcmFwcyBh
biBleHRlcm5hbCB0ZXh0dXJlIGludG8gYSByZXNvdXJjZS4KKyAgICBSZXNvdXJjZUlkIGNyZWF0
ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlSWQpOworICAgIHZv
aWQgZGVsZXRlUmVzb3VyY2UoUmVzb3VyY2VJZCk7CisKKyAgICAvLyBEZWxldGVzIGFsbCByZXNv
dXJjZXMgb3duZWQgYnkgYSBnaXZlbiBwb29sLgorICAgIHZvaWQgZGVsZXRlT3duZWRSZXNvdXJj
ZXMoaW50IHBvb2wpOworCisgICAgLy8gVXBsb2FkIGRhdGEgZnJvbSBpbWFnZSwgY29weWluZyBz
b3VyY2VSZWN0IChpbiBpbWFnZSkgaW50byBkZXN0UmVjdCAoaW4gdGhlIHJlc291cmNlKS4KKyAg
ICB2b2lkIHVwbG9hZChSZXNvdXJjZUlkLCBjb25zdCB1aW50OF90KiBpbWFnZSwgY29uc3QgSW50
UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CisKKyAgICAvLyBGbHVzaCBhbGwgY29udGV4dCBvcGVyYXRpb25zLCBraWNr
aW5nIHVwbG9hZHMgYW5kIGVuc3VyaW5nIG9yZGVyaW5nIHdpdGgKKyAgICAvLyByZXNwZWN0IHRv
IG90aGVyIGNvbnRleHRzLgorICAgIHZvaWQgZmx1c2goKTsKKworcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkOworICAgIGZyaWVuZCBjbGFzcyBD
Q1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlOworCisgICAgc3RydWN0IFJlc291cmNlIHsKKyAg
ICAgICAgdW5zaWduZWQgZ2xJZDsKKyAgICAgICAgaW50IHBvb2w7CisgICAgICAgIGludCBsb2Nr
Rm9yUmVhZENvdW50OworICAgICAgICBib29sIGxvY2tlZEZvcldyaXRlOworICAgICAgICBib29s
IGV4dGVybmFsOworICAgICAgICBJbnRTaXplIHNpemU7CisgICAgICAgIEdDM0RlbnVtIGZvcm1h
dDsKKyAgICB9OworICAgIHR5cGVkZWYgSGFzaE1hcDxSZXNvdXJjZUlkLCBSZXNvdXJjZT4gUmVz
b3VyY2VNYXA7CisKKyAgICBleHBsaWNpdCBDQ1Jlc291cmNlUHJvdmlkZXIoQ0NHcmFwaGljc0Nv
bnRleHQqKTsKKyAgICBib29sIGluaXRpYWxpemUoKTsKKworICAgIC8vIEdldHMgYSBHTCB0ZXh0
dXJlIGlkIHJlcHJlc2VudGluZyB0aGUgcmVzb3VyY2UsIHRoYXQgY2FuIGJlIHJlbmRlcmVkIGlu
dG8uCisgICAgdW5zaWduZWQgbG9ja0ZvcldyaXRlKFJlc291cmNlSWQpOworICAgIHZvaWQgdW5s
b2NrRm9yV3JpdGUoUmVzb3VyY2VJZCk7CisKKyAgICAvLyBHZXRzIGEgR0wgdGV4dHVyZSBpZCBy
ZXByZXNlbnRpbmcgdGhlIHJlc291cmNlLCB0aGF0IGNhbiBiZSByZW5kZXJlZCB3aXRoLgorICAg
IHVuc2lnbmVkIGxvY2tGb3JSZWFkKFJlc291cmNlSWQpOworICAgIHZvaWQgdW5sb2NrRm9yUmVh
ZChSZXNvdXJjZUlkKTsKKworICAgIENDR3JhcGhpY3NDb250ZXh0KiBtX2NvbnRleHQ7CisgICAg
UmVzb3VyY2VJZCBtX25leHRJZDsKKyAgICBSZXNvdXJjZU1hcCBtX3Jlc291cmNlczsKKworICAg
IGJvb2wgbV91c2VUZXh0dXJlU3RvcmFnZUV4dDsKKyAgICBib29sIG1fdXNlVGV4dHVyZVVzYWdl
SGludDsKKyAgICBPd25QdHI8TGF5ZXJUZXh0dXJlU3ViSW1hZ2U+IG1fdGV4U3ViSW1hZ2U7Cisg
ICAgaW50IG1fbWF4VGV4dHVyZVNpemU7Cit9OworCitjbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJj
ZUZvclJlYWQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU2NvcGVkTG9ja1Jlc291cmNl
Rm9yUmVhZCk7CitwdWJsaWM6CisgICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFkKENDUmVz
b3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIHJlc291cmNlSWQpCisgICAgICAgIDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNl
UHJvdmlkZXIpCisgICAgICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCisgICAgICAgICwg
bV90ZXh0dXJlSWQocmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvclJlYWQocmVzb3VyY2VJZCkpIHsg
fQorCisgICAgfkNDU2NvcGVkTG9ja1Jlc291cmNlRm9yUmVhZCgpCisgICAgeworICAgICAgICBt
X3Jlc291cmNlUHJvdmlkZXItPnVubG9ja0ZvclJlYWQobV9yZXNvdXJjZUlkKTsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQor
Citwcml2YXRlOgorICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwor
ICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CisgICAgdW5z
aWduZWQgbV90ZXh0dXJlSWQ7Cit9OworCitjbGFzcyBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldy
aXRlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldy
aXRlKTsKK3B1YmxpYzoKKyAgICBDQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlKENDUmVzb3Vy
Y2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJj
ZUlkIHJlc291cmNlSWQpCisgICAgICAgIDogbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291cmNlUHJv
dmlkZXIpCisgICAgICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlSWQpCisgICAgICAgICwgbV90
ZXh0dXJlSWQocmVzb3VyY2VQcm92aWRlci0+bG9ja0ZvcldyaXRlKHJlc291cmNlSWQpKSB7IH0K
KworICAgIH5DQ1Njb3BlZExvY2tSZXNvdXJjZUZvcldyaXRlKCkKKyAgICB7CisgICAgICAgIG1f
cmVzb3VyY2VQcm92aWRlci0+dW5sb2NrRm9yV3JpdGUobV9yZXNvdXJjZUlkKTsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQor
Citwcml2YXRlOgorICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwor
ICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX3Jlc291cmNlSWQ7CisgICAgdW5z
aWduZWQgbV90ZXh0dXJlSWQ7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVk
VGV4dHVyZS5jcHAKaW5kZXggYjlmNzVkMTg0YzNhNjgwMWZiYmU4ZmRmYmE0MWU0MzM2OGZhMzM5
Mi4uMjFlZjk5YTY1NDUyMjkyYTFmMzAwYTZjYzU1NmY2YmUwYjBiYjAxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0
dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njb3BlZFRleHR1cmUuY3BwCkBAIC0yNiwxNCArMjYsMTIgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRleHR1cmUuaCIKIAotI2luY2x1ZGUgIlRleHR1
cmVBbGxvY2F0b3IuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQ1Njb3BlZFRleHR1cmU6
OkNDU2NvcGVkVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCi0gICAgOiBtX2Fs
bG9jYXRvcihhbGxvY2F0b3IpCitDQ1Njb3BlZFRleHR1cmU6OkNDU2NvcGVkVGV4dHVyZShDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCisgICAgOiBtX3Jlc291cmNlUHJvdmlk
ZXIocmVzb3VyY2VQcm92aWRlcikKIHsKLSAgICBBU1NFUlQobV9hbGxvY2F0b3IpOworICAgIEFT
U0VSVChtX3Jlc291cmNlUHJvdmlkZXIpOwogfQogCiBDQ1Njb3BlZFRleHR1cmU6On5DQ1Njb3Bl
ZFRleHR1cmUoKQpAQCAtNDEsMTMgKzM5LDEzIEBAIENDU2NvcGVkVGV4dHVyZTo6fkNDU2NvcGVk
VGV4dHVyZSgpCiAgICAgZnJlZSgpOwogfQogCi1ib29sIENDU2NvcGVkVGV4dHVyZTo6YWxsb2Nh
dGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQorYm9vbCBDQ1Njb3BlZFRl
eHR1cmU6OmFsbG9jYXRlKGludCBwb29sLCBjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBm
b3JtYXQsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlSGludCBoaW50KQogewogICAg
IEFTU0VSVCghaWQoKSk7CiAgICAgQVNTRVJUKCFzaXplLmlzRW1wdHkoKSk7CiAKICAgICBzZXRE
aW1lbnNpb25zKHNpemUsIGZvcm1hdCk7Ci0gICAgc2V0SWQobV9hbGxvY2F0b3ItPmNyZWF0ZVRl
eHR1cmUoc2l6ZSwgZm9ybWF0KSk7CisgICAgc2V0SWQobV9yZXNvdXJjZVByb3ZpZGVyLT5jcmVh
dGVSZXNvdXJjZShwb29sLCBzaXplLCBmb3JtYXQsIGhpbnQpKTsKIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICBtX2FsbG9jYXRlVGhyZWFkSWRlbnRpZmllciA9IFdURjo6Y3VycmVudFRocmVh
ZCgpOwpAQCAtNjAsNyArNTgsNyBAQCB2b2lkIENDU2NvcGVkVGV4dHVyZTo6ZnJlZSgpCiB7CiAg
ICAgaWYgKGlkKCkpIHsKICAgICAgICAgQVNTRVJUKG1fYWxsb2NhdGVUaHJlYWRJZGVudGlmaWVy
ID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsKLSAgICAgICAgbV9hbGxvY2F0b3ItPmRlbGV0ZVRl
eHR1cmUoaWQoKSwgc2l6ZSgpLCBmb3JtYXQoKSk7CisgICAgICAgIG1fcmVzb3VyY2VQcm92aWRl
ci0+ZGVsZXRlUmVzb3VyY2UoaWQoKSk7CiAgICAgfQogICAgIHNldElkKDApOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29w
ZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njb3BlZFRleHR1cmUuaAppbmRleCA5ZjcyNDFmNTE3ZjRhNDBlZGIyYWM4YzQxOGFmOGI3
MTFmZTRkMDA1Li43MzQ0MjBlOTBiZWMwNDQ4YjM1ZDM0NzE2MGQwOTc0MGUxMzQ3ZDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
b3BlZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaApAQCAtMjYsNyArMjYsNiBAQAogI2lmbmRlZiBDQ1Nj
b3BlZFRleHR1cmVfaAogI2RlZmluZSBDQ1Njb3BlZFRleHR1cmVfaAogCi0jaW5jbHVkZSAiVGV4
dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZS5oIgogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRApAQCAtMzUsMTEgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
CiBjbGFzcyBDQ1Njb3BlZFRleHR1cmUgOiBwcm90ZWN0ZWQgQ0NUZXh0dXJlIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShDQ1Njb3BlZFRleHR1cmUpOwogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gY3JlYXRlKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IENDU2NvcGVkVGV4dHVyZShhbGxvY2F0b3IpKTsg
fQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gY3JlYXRlKENDUmVzb3Vy
Y2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IENDU2Nv
cGVkVGV4dHVyZShyZXNvdXJjZVByb3ZpZGVyKSk7IH0KICAgICB2aXJ0dWFsIH5DQ1Njb3BlZFRl
eHR1cmUoKTsKIAogICAgIHVzaW5nIENDVGV4dHVyZTo6aWQ7CkBAIC00NywxNSArNDUsMTUgQEAg
cHVibGljOgogICAgIHVzaW5nIENDVGV4dHVyZTo6Zm9ybWF0OwogICAgIHVzaW5nIENDVGV4dHVy
ZTo6Ynl0ZXM7CiAKLSAgICBib29sIGFsbG9jYXRlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBm
b3JtYXQpOworICAgIGJvb2wgYWxsb2NhdGUoaW50IHBvb2wsIGNvbnN0IEludFNpemUmLCBHQzNE
ZW51bSBmb3JtYXQsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlSGludCk7CiAgICAg
dm9pZCBmcmVlKCk7CiAgICAgdm9pZCBsZWFrKCk7CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNp
dCBDQ1Njb3BlZFRleHR1cmUoVGV4dHVyZUFsbG9jYXRvciopOworICAgIGV4cGxpY2l0IENDU2Nv
cGVkVGV4dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKIAogcHJpdmF0ZToKLSAgICBUZXh0dXJl
QWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3Vy
Y2VQcm92aWRlcjsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBUaHJlYWRJZGVudGlmaWVy
IG1fYWxsb2NhdGVUaHJlYWRJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJM
YXllckltcGwuY3BwCmluZGV4IGYzOGZiZGEwMWY2NmUzODA2MWQxMDZmYmMwYmMxYzA0MzYyODAz
MTkuLjY1MGU3NTFmOGM4OTRlZmY1NjFjNGVmN2NjMTdkYjAxY2U5NGNiZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFy
TGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKQEAgLTQ1LDkgKzQ1LDkgQEAgQ0NTY3Jv
bGxiYXJMYXllckltcGw6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsKGludCBpZCkKICAgICA6IENDTGF5
ZXJJbXBsKGlkKQogICAgICwgbV9zY3JvbGxMYXllcigwKQogICAgICwgbV9zY3JvbGxiYXIodGhp
cykKLSAgICAsIG1fYmFja1RyYWNrVGV4dHVyZUlkKDApCi0gICAgLCBtX2ZvcmVUcmFja1RleHR1
cmVJZCgwKQotICAgICwgbV90aHVtYlRleHR1cmVJZCgwKQorICAgICwgbV9iYWNrVHJhY2tSZXNv
dXJjZUlkKDApCisgICAgLCBtX2ZvcmVUcmFja1Jlc291cmNlSWQoMCkKKyAgICAsIG1fdGh1bWJS
ZXNvdXJjZUlkKDApCiB7CiB9CiAKQEAgLTc2LDIzICs3NiwyMyBAQCB2b2lkIENDU2Nyb2xsYmFy
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YQogICAgIEludFJlY3QgdGh1bWJSZWN0LCBiYWNrVHJhY2tSZWN0LCBmb3JlVHJhY2tS
ZWN0OwogICAgIHRoZW1lLT5zcGxpdFRyYWNrKCZtX3Njcm9sbGJhciwgdGhlbWUtPnRyYWNrUmVj
dCgmbV9zY3JvbGxiYXIpLCBiYWNrVHJhY2tSZWN0LCB0aHVtYlJlY3QsIGZvcmVUcmFja1JlY3Qp
OwogCi0gICAgaWYgKG1fdGh1bWJUZXh0dXJlSWQgJiYgdGhlbWUtPmhhc1RodW1iKCZtX3Njcm9s
bGJhcikgJiYgIXRodW1iUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgT3duUHRyPENDVGV4dHVy
ZURyYXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3Rh
dGUsIHRodW1iUmVjdCwgbV90aHVtYlRleHR1cmVJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVj
dCwgZmxpcHBlZCk7CisgICAgaWYgKG1fdGh1bWJSZXNvdXJjZUlkICYmIHRoZW1lLT5oYXNUaHVt
YigmbV9zY3JvbGxiYXIpICYmICF0aHVtYlJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIE93blB0
cjxDQ1RleHR1cmVEcmF3UXVhZD4gcXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hh
cmVkUXVhZFN0YXRlLCB0aHVtYlJlY3QsIG1fdGh1bWJSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRB
bHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKICAgICAgICAgcXVhZC0+c2V0TmVlZHNCbGVuZGluZygp
OwogICAgICAgICBxdWFkTGlzdC5hcHBlbmQocXVhZC5yZWxlYXNlKCkpOwogICAgIH0KIAotICAg
IGlmICghbV9iYWNrVHJhY2tUZXh0dXJlSWQpCisgICAgaWYgKCFtX2JhY2tUcmFja1Jlc291cmNl
SWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIG9ubHkgcGFpbnQgdGhlIHRyYWNrIGlu
IHR3byBwYXJ0cyBpZiB3ZSB3ZXJlIGdpdmVuIGEgdGV4dHVyZSBmb3IgdGhlIGZvcndhcmQgdHJh
Y2sgcGFydC4KLSAgICBpZiAobV9mb3JlVHJhY2tUZXh0dXJlSWQgJiYgIWZvcmVUcmFja1JlY3Qu
aXNFbXB0eSgpKQotICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNy
ZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGZvcmVUcmFja1JlY3QsIG1fZm9yZVRyYWNrVGV4dHVyZUlk
LCBwcmVtdWx0aXBsZWRBbHBoYSwgdG9VVlJlY3QoZm9yZVRyYWNrUmVjdCwgYm91bmRzUmVjdCks
IGZsaXBwZWQpKTsKKyAgICBpZiAobV9mb3JlVHJhY2tSZXNvdXJjZUlkICYmICFmb3JlVHJhY2tS
ZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcXVhZExpc3QuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFk
OjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBmb3JlVHJhY2tSZWN0LCBtX2ZvcmVUcmFja1Jlc291
cmNlSWQsIHByZW11bHRpcGxlZEFscGhhLCB0b1VWUmVjdChmb3JlVHJhY2tSZWN0LCBib3VuZHNS
ZWN0KSwgZmxpcHBlZCkpOwogCiAgICAgLy8gT3JkZXIgbWF0dGVycyBoZXJlOiBzaW5jZSB0aGUg
YmFjayB0cmFjayB0ZXh0dXJlIGlzIGJlaW5nIGRyYXduIHRvIHRoZSBlbnRpcmUgY29udGVudHMg
cmVjdCwgd2UgbXVzdCBhcHBlbmQgaXQgYWZ0ZXIgdGhlIHRodW1iIGFuZAogICAgIC8vIGZvcmUg
dHJhY2sgcXVhZHMuIFRoZSBiYWNrIHRyYWNrIHRleHR1cmUgY29udGFpbnMgKGFuZCBkaXNwbGF5
cykgdGhlIGJ1dHRvbnMuCiAgICAgaWYgKCFib3VuZHNSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAg
cXVhZExpc3QuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBib3VuZHNSZWN0LCBtX2JhY2tUcmFja1RleHR1cmVJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2
UmVjdCwgZmxpcHBlZCkpOworICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1
YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGJvdW5kc1JlY3QsIG1fYmFja1RyYWNrUmVzb3Vy
Y2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOwogfQogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Ny
b2xsYmFyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCmluZGV4IGVjZTJiOTU3MTQxNGJmNDI1NmZk
YjRlZTRmZDVlYTFjN2MwNDZmMzEuLjMyYTgzNWQ5MDJhYzVjMzgxY2MwMjNlNDJkZjI4MDdmZTg0
MDcwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaApAQCAtNTMsOSAr
NTMsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1f
ZW5hYmxlZCA9IGVuYWJsZWQ7IH0KIAotICAgIHZvaWQgc2V0QmFja1RyYWNrVGV4dHVyZUlkKHVu
c2lnbmVkIGlkKSB7IG1fYmFja1RyYWNrVGV4dHVyZUlkID0gaWQ7IH0KLSAgICB2b2lkIHNldEZv
cmVUcmFja1RleHR1cmVJZCh1bnNpZ25lZCBpZCkgeyBtX2ZvcmVUcmFja1RleHR1cmVJZCA9IGlk
OyB9Ci0gICAgdm9pZCBzZXRUaHVtYlRleHR1cmVJZCh1bnNpZ25lZCBpZCkgeyBtX3RodW1iVGV4
dHVyZUlkID0gaWQ7IH0KKyAgICB2b2lkIHNldEJhY2tUcmFja1Jlc291cmNlSWQoQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkKSB7IG1fYmFja1RyYWNrUmVzb3VyY2VJZCA9IGlkOyB9
CisgICAgdm9pZCBzZXRGb3JlVHJhY2tSZXNvdXJjZUlkKENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCBpZCkgeyBtX2ZvcmVUcmFja1Jlc291cmNlSWQgPSBpZDsgfQorICAgIHZvaWQgc2V0
VGh1bWJSZXNvdXJjZUlkKENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZCkgeyBtX3Ro
dW1iUmVzb3VyY2VJZCA9IGlkOyB9CiAKICAgICBDQ0xheWVySW1wbCogc2Nyb2xsTGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX3Njcm9sbExheWVyOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllcihD
Q0xheWVySW1wbCogc2Nyb2xsTGF5ZXIpIHsgbV9zY3JvbGxMYXllciA9IHNjcm9sbExheWVyOyB9
CkBAIC0xMjQsOSArMTI0LDkgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIENDU2Nyb2xsYmFyIG1f
c2Nyb2xsYmFyOwogCi0gICAgdW5zaWduZWQgbV9iYWNrVHJhY2tUZXh0dXJlSWQ7Ci0gICAgdW5z
aWduZWQgbV9mb3JlVHJhY2tUZXh0dXJlSWQ7Ci0gICAgdW5zaWduZWQgbV90aHVtYlRleHR1cmVJ
ZDsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9iYWNrVHJhY2tSZXNvdXJj
ZUlkOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtX2ZvcmVUcmFja1Jlc291
cmNlSWQ7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fdGh1bWJSZXNvdXJj
ZUlkOwogCiAgICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxl
OwogICAgIFZlY3RvcjxJbnRSZWN0PiBtX3RpY2ttYXJrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNjc4ZWZkZmYwYTM1OGEyZDI5ZmIyYTg3YTc4MmQ1N2Jm
N2UzNjdjOC4uMDAyYzdhN2JmYWVhNTA1ZDRkNDRlNzVjNmUzN2FlZjcwMWQ2ZGM0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBi
b29sIENDU2luZ2xlVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCgpCiAgICAgYm9vbCBpbml0
aWFsaXplZDsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwot
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJl
YWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQo
bV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKICAgICAgICAgaW5pdGlh
bGl6ZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250
ZXh0LnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAgICAgICAgIGlmIChpbml0aWFs
aXplZCkgewogICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzRm9yTWFpblRo
cmVhZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKTsK
QEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KEND
VGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiAgICAgICAgIC8vIGhlcmUgYXMgdGhlIHRocm90dGxl
ZCB1cGxvYWRlciBpc24ndCB1c2VkIGluIHNpbmdsZSB0aHJlYWQgbW9kZS4KICAgICAgICAgLy8g
Rm9yIGNvcnJlY3RuZXNzLCBsb29wIHVudGlsIG5vIG1vcmUgdXBkYXRlcyBhcmUgcGVuZGluZy4K
ICAgICAgICAgd2hpbGUgKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSkKLSAgICAgICAgICAgIHVw
ZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5s
YXllclJlbmRlcmVyKCktPnRleHR1cmVVcGxvYWRlcigpLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0
ZXMoKSk7CisgICAgICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5y
ZXNvdXJjZVByb3ZpZGVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+
dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRl
eHR1cmVVcGxvYWRlcigpLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSk7CiAKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0
SW1wbC5nZXQoKSk7CiAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJv
eHk6OnN0b3AoKQogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKIAogICAg
ICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2Vk
U2luY2VMYXN0Q29tbWl0KCkpCi0gICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNv
bnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNU
ZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVD
b250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNl
UHJvdmlkZXIoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwuY2xlYXIoKTsKICAgICB9
CiAgICAgbV9sYXllclRyZWVIb3N0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKaW5kZXggMGQ1ZDlmNzY4
M2U1NjllYzZkYjQ3ODJkNjg3MTlhYWU4YTNkOTcyYS4uZDNlNGI4ZjdlODM4NzViYTU2NDMzZjI3
YTdlYzEzZjcwNjhlOWI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2lu
Y2x1ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwxMSArNDEsMTEgQEAgcHVibGljOgogICAg
ICAgICAsIG1fc2l6ZShzaXplKQogICAgICAgICAsIG1fZm9ybWF0KGZvcm1hdCkgeyB9CiAKLSAg
ICB1bnNpZ25lZCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBDQ1Jlc291cmNlUHJv
dmlkZXI6OlJlc291cmNlSWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3Qg
SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIEdDM0RlbnVtIGZv
cm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAKLSAgICB2b2lkIHNldElkKHVuc2ln
bmVkIGlkKSB7IG1faWQgPSBpZDsgfQorICAgIHZvaWQgc2V0SWQoQ0NSZXNvdXJjZVByb3ZpZGVy
OjpSZXNvdXJjZUlkIGlkKSB7IG1faWQgPSBpZDsgfQogICAgIHZvaWQgc2V0RGltZW5zaW9ucyhj
b25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KTsKIAogICAgIHNpemVfdCBieXRlcygpIGNv
bnN0OwpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBtZW1vcnlT
aXplQnl0ZXMoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CiAKIHByaXZhdGU6Ci0g
ICAgdW5zaWduZWQgbV9pZDsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9p
ZDsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBHQzNEZW51bSBtX2Zvcm1hdDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcAppbmRleCA2ZGYyZmI2YmQ2NGM2ZDM2OWUw
ODljNzExMTYxY2Y4YjFhYWU3OTBkLi42ZmM5MTk5NjIwMDMyZjUzMjJmZTVjMmY5MWZkNmE4Yzcy
MDI1NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTMxLDYg
KzMxLDcgQEAKIAogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJjYy9DQ1F1YWRD
dWxsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1JlbmRlcmVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0
dXJlRHJhd1F1YWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNiArMzksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBDQ1RleHR1cmVMYXllckltcGw6OkNDVGV4dHVyZUxheWVySW1w
bChpbnQgaWQpCiAgICAgOiBDQ0xheWVySW1wbChpZCkKICAgICAsIG1fdGV4dHVyZUlkKDApCisg
ICAgLCBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKDApCiAgICAgLCBtX3ByZW11bHRpcGxpZWRB
bHBoYSh0cnVlKQogICAgICwgbV9mbGlwcGVkKHRydWUpCiAgICAgLCBtX3V2UmVjdCgwLCAwLCAx
LCAxKQpAQCAtNDgsMTAgKzUwLDI4IEBAIENDVGV4dHVyZUxheWVySW1wbDo6fkNDVGV4dHVyZUxh
eWVySW1wbCgpCiB7CiB9CiAKK3ZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCit7CisgICAgQVNTRVJUKCFtX2V4dGVy
bmFsVGV4dHVyZVJlc291cmNlKTsKKyAgICBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlID0gcmVz
b3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVy
ZUlkKTsKK30KKwogdm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1
bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUs
IGJvb2wmKQogeworICAgIEFTU0VSVChtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKTsKICAgICBJ
bnRSZWN0IHF1YWRSZWN0KEludFBvaW50KCksIGNvbnRlbnRCb3VuZHMoKSk7Ci0gICAgcXVhZExp
c3QuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFk
UmVjdCwgbV90ZXh0dXJlSWQsIG1fcHJlbXVsdGlwbGllZEFscGhhLCBtX3V2UmVjdCwgbV9mbGlw
cGVkKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hh
cmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSwgbV9wcmVt
dWx0aXBsaWVkQWxwaGEsIG1fdXZSZWN0LCBtX2ZsaXBwZWQpKTsKK30KKwordm9pZCBDQ1RleHR1
cmVMYXllckltcGw6OmRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVy
KQoreworICAgIEFTU0VSVChtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKTsKKyAgICAvLyBGSVhN
RTogdGhlIGZvbGxvd2luZyBhc3NlcnQgd2lsbCBub3QgYmUgdHJ1ZSB3aGVuIHNlbmRpbmcgcmVz
b3VyY2VzIHRvIGEKKyAgICAvLyBwYXJlbnQgY29tcG9zaXRvci4gQSBzeW5jaHJvbml6YXRpb24g
c2NoZW1lIChkb3VibGUtYnVmZmVyaW5nIG9yCisgICAgLy8gcGlwZWxpbmluZyBvZiB1cGRhdGVz
KSBmb3IgdGhlIGNsaWVudCB3aWxsIG5lZWQgdG8gZXhpc3QgdG8gc29sdmUgdGhpcy4KKyAgICBB
U1NFUlQoIXJlc291cmNlUHJvdmlkZXItPmluVXNlQnlDb25zdW1lcihtX2V4dGVybmFsVGV4dHVy
ZVJlc291cmNlKSk7CisgICAgcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlUmVzb3VyY2UobV9leHRl
cm5hbFRleHR1cmVSZXNvdXJjZSk7CisgICAgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSA9IDA7
CiB9CiAKIHZvaWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRT
dHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllcklt
cGwuaAppbmRleCA0YWJkYjUxZmY5Mjk5MzkzMTgwOTljZmRjOGEwZGQ1MWZmZTZmY2JiLi5lNzQ4
YjAxMzA4YThlZGI5NjJhMzhmOTU0ZGEwZDFiZGY5Njc5MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVMYXllckltcGwuaApAQCAtMzgsNyArMzgsOSBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZp
cnR1YWwgfkNDVGV4dHVyZUxheWVySW1wbCgpOwogCisgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3
KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRR
dWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1p
c3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJj
ZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQo
KSBPVkVSUklERTsKIApAQCAtNTYsNiArNTgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29u
c3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiVGV4
dHVyZUxheWVyIjsgfQogCiAgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2U7CiAgICAgYm9v
bCBtX3ByZW11bHRpcGxpZWRBbHBoYTsKICAgICBib29sIG1fZmxpcHBlZDsKICAgICBGbG9hdFJl
Y3QgbV91dlJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGJjMWVk
NzVhZjlhZjUwZDk2NGI3NDczMTQzMzdmZTljNGVjMWZlNGIuLjk2N2FkNWUzZmQ1Yjc0MWY2ZDMz
MGNjNTllZGZlODA5MzhjMjMzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3Bw
CkBAIC04NSw3ICs4NSw3IEBAIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMo
KSBjb25zdAogICAgIHJldHVybiBtX2Z1bGxFbnRyaWVzLnNpemUoKSB8fCBtX3BhcnRpYWxFbnRy
aWVzLnNpemUoKSB8fCBtX2NvcHlFbnRyaWVzLnNpemUoKTsKIH0KIAotdm9pZCBDQ1RleHR1cmVV
cGRhdGVyOjp1cGRhdGUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvciwgVGV4dHVyZUNvcGllciogY29waWVyLCBUZXh0dXJlVXBsb2FkZXIqIHVw
bG9hZGVyLCBzaXplX3QgY291bnQpCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIFRleHR1cmVDb3BpZXIqIGNvcGllciwg
VGV4dHVyZVVwbG9hZGVyKiB1cGxvYWRlciwgc2l6ZV90IGNvdW50KQogewogICAgIHNpemVfdCBp
bmRleDsKIApAQCAtOTksMTUgKzk5LDE1IEBAIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRl
KENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvCiAgICAg
ICAgIHNpemVfdCBtYXhJbmRleCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9mdWxsRW50
cmllcy5zaXplKCkpOwogICAgICAgICBmb3IgKGluZGV4ID0gbV9lbnRyeUluZGV4OyBpbmRleCA8
IG1heEluZGV4OyArK2luZGV4KSB7CiAgICAgICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBt
X2Z1bGxFbnRyaWVzW2luZGV4XTsKLSAgICAgICAgICAgIHVwbG9hZGVyLT51cGxvYWRUZXh0dXJl
KGNvbnRleHQsIGVudHJ5LnRleHR1cmUsIGFsbG9jYXRvciwgZW50cnkuc291cmNlUmVjdCwgZW50
cnkuZGVzdFJlY3QpOworICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoZW50cnku
dGV4dHVyZSwgcmVzb3VyY2VQcm92aWRlciwgZW50cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJl
Y3QpOwogICAgICAgICAgICAgZnVsbFVwbG9hZENvdW50Kys7CiAgICAgICAgICAgICBpZiAoIShm
dWxsVXBsb2FkQ291bnQgJSBrVXBsb2FkRmx1c2hQZXJpb2QpKQotICAgICAgICAgICAgICAgIGNv
bnRleHQtPmZsdXNoKCk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+Zmx1c2go
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZGFuZ2xp
bmcgdXBsb2FkcyB3aXRob3V0IGEgZmx1c2guCiAgICAgICAgIGlmIChmdWxsVXBsb2FkQ291bnQg
JSBrVXBsb2FkRmx1c2hQZXJpb2QpCi0gICAgICAgICAgICBjb250ZXh0LT5mbHVzaCgpOworICAg
ICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+Zmx1c2goKTsKIAogICAgICAgICBib29sIG1vcmVV
cGxvYWRzID0gbWF4SW5kZXggPCBtX2Z1bGxFbnRyaWVzLnNpemUoKTsKIApAQCAtMTI1LDM0ICsx
MjUsMzAgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoQ0NHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG8KIAogICAgICAgICBmb3IgKGluZGV4ID0g
MDsgaW5kZXggPCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICAg
ICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9wYXJ0aWFsRW50cmllc1tpbmRleF07Ci0gICAgICAg
ICAgICB1cGxvYWRlci0+dXBsb2FkVGV4dHVyZShjb250ZXh0LCBlbnRyeS50ZXh0dXJlLCBhbGxv
Y2F0b3IsIGVudHJ5LnNvdXJjZVJlY3QsIGVudHJ5LmRlc3RSZWN0KTsKKyAgICAgICAgICAgIHVw
bG9hZGVyLT51cGxvYWRUZXh0dXJlKGVudHJ5LnRleHR1cmUsIHJlc291cmNlUHJvdmlkZXIsIGVu
dHJ5LnNvdXJjZVJlY3QsIGVudHJ5LmRlc3RSZWN0KTsKICAgICAgICAgICAgIGlmICghKChpbmRl
eCsxKSAlIGtVcGxvYWRGbHVzaFBlcmlvZCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Zmx1
c2goKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5mbHVzaCgpOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZXJlIGFyZSBubyBkYW5nbGluZyBwYXJ0aWFs
IHVwbG9hZHMgd2l0aG91dCBhIGZsdXNoLgogICAgICAgICAvLyBOb3RlOiBXZSBkb24ndCBuZWVk
IHRvIHVzZSAoaW5kZXgrMSkgaW4gdGhpcyBjYXNlIGJlY2F1c2UgaW5kZXggd2FzCiAgICAgICAg
IC8vIGluY3JlbWVudGVkIGF0IHRoZSBlbmQgb2YgdGhlIGZvciBsb29wLgogICAgICAgICBpZiAo
aW5kZXggJSBrVXBsb2FkRmx1c2hQZXJpb2QpCi0gICAgICAgICAgICBjb250ZXh0LT5mbHVzaCgp
OworICAgICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+Zmx1c2goKTsKIAogICAgICAgICB1cGxv
YWRlci0+ZW5kVXBsb2FkcygpOwogICAgIH0KIAogICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8
IG1fY29weUVudHJpZXMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIENvcHlFbnRyeSYgY29w
eUVudHJ5ID0gbV9jb3B5RW50cmllc1tpbmRleF07Ci0gICAgICAgIGNvcGllci0+Y29weVRleHR1
cmUoY29udGV4dCwgY29weUVudHJ5LnNvdXJjZVRleHR1cmUsIGNvcHlFbnRyeS5kZXN0VGV4dHVy
ZSwgY29weUVudHJ5LnNpemUpOworICAgICAgICBjb3BpZXItPmNvcHlUZXh0dXJlKGNvcHlFbnRy
eS5zb3VyY2VUZXh0dXJlLCBjb3B5RW50cnkuZGVzdFRleHR1cmUsIGNvcHlFbnRyeS5zaXplKTsK
ICAgICB9CiAKICAgICAvLyBJZiB3ZSd2ZSBwZXJmb3JtZWQgYW55IHRleHR1cmUgY29waWVzLCB3
ZSBuZWVkIHRvIGluc2VydCBhIGZsdXNoIGhlcmUgaW50byB0aGUgY29tcG9zaXRvciBjb250ZXh0
CiAgICAgLy8gYmVmb3JlIGxldHRpbmcgdGhlIG1haW4gdGhyZWFkIHByb2NlZWQgYXMgaXQgbWF5
IG1ha2UgZHJhdyBjYWxscyB0byB0aGUgc291cmNlIHRleHR1cmUgb2Ygb25lIG9mCiAgICAgLy8g
b3VyIGNvcHkgb3BlcmF0aW9ucy4KLSAgICBpZiAobV9jb3B5RW50cmllcy5zaXplKCkpIHsKLSAg
ICAgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+
Y29udGV4dDNEKCk7Ci0gICAgICAgIGlmIChjb250ZXh0M2QpCi0gICAgICAgICAgICBjb250ZXh0
M2QtPmZsdXNoKCk7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBz
b2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICB9CisgICAgaWYgKG1fY29weUVudHJpZXMuc2l6ZSgp
KQorICAgICAgICBjb3BpZXItPmZsdXNoKCk7CiAKICAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQg
dG8gcHJvY2VzcywgYXV0by1jbGVhci4KICAgICBjbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
VXBkYXRlci5oCmluZGV4IDhhNDM3OTQyYjRiMDQyMmUwNTA5YzE0ODY1MWRiMzBiMWJhYzkxYWUu
Ljk3MmExYzBlYzdlNDgxMjEzODFkNGU0ZmU2Yzk5MDcwYTk0YjgyNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOworY2xhc3MgQ0NSZXNvdXJjZVByb3ZpZGVyOwog
Y2xhc3MgVGV4dHVyZUNvcGllcjsKIGNsYXNzIFRleHR1cmVVcGxvYWRlcjsKIApAQCAtNDgsNyAr
NDgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OwogCiAgICAg
Ly8gVXBkYXRlIHNvbWUgdGV4dHVyZXMuCi0gICAgdm9pZCB1cGRhdGUoQ0NHcmFwaGljc0NvbnRl
eHQqLCBUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVyZUNvcGllciosIFRleHR1cmVVcGxvYWRlcios
IHNpemVfdCBjb3VudCk7CisgICAgdm9pZCB1cGRhdGUoQ0NSZXNvdXJjZVByb3ZpZGVyKiwgVGV4
dHVyZUNvcGllciosIFRleHR1cmVVcGxvYWRlciosIHNpemVfdCBjb3VudCk7CiAKICAgICB2b2lk
IGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggOTk3M2E5NzRiMTU2
N2JiNjY4MzEyNjAzNmVjZDQwNDMxZjAxMWZjYy4uNDQ1MDdjNmYzYzY3Zjc0ZGQxYzQ4ZjQ4OTE0
ZWZiN2YwMDllYjgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTYwMCw3ICs2
MDAsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNv
dXJjZXMoKQogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIpOwogICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLCBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1w
bC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIoKSwgdGV4dHVyZVVwZGF0ZXNQZXJG
cmFtZSk7CisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZSht
X2xheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCksIG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBs
LT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVVcGxvYWRlcigpLCB0ZXh0dXJlVXBkYXRlc1BlckZy
YW1lKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQpA
QCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6bGF5ZXJUcmVlSG9zdENsb3Nl
ZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvCiAgICAgVFJBQ0VfRVZF
TlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFk
Iik7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0KCkpCi0gICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChtX2xh
eWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpOwogICAgIG1faW5wdXRIYW5kbGVy
T25JbXBsVGhyZWFkLmNsZWFyKCk7CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC5jbGVhcigpOwog
ICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CkBAIC04ODQsNyArODg0LDcgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqIGNvbXBsZXRpb24sIEMKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhy
ZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1wbFRocmVhZCIpOwogICAgIEFTU0VSVChpc0lt
cGxUaHJlYWQoKSk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVDb250ZW50c1RleHR1cmVz
T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxU
aHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKTsKICAgICAqcmVj
cmVhdGVTdWNjZWVkZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcihhZG9wdFB0cihjb250ZXh0UHRyKSwgdGV4dHVyZVVwbG9hZGVyKTsKICAgICBpZiAoKnJl
Y3JlYXRlU3VjY2VlZGVkKSB7CiAgICAgICAgICpjYXBhYmlsaXRpZXMgPSBtX2xheWVyVHJlZUhv
c3RJbXBsLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRM
YXllckltcGwuY3BwCmluZGV4IGRhOWExMGE5OWQ4YzdiZjIyZDg3Yzg0N2I5NTdmMjM1MGY1ZDNl
NGUuLmM5ZTliMjI2NGI5OGQ3OGEzZjBmNDg1NTViZjc3ZjgwODEwMzZiZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC01OSwxMyArNTksMTMgQEAgY2xhc3MgRHJhd2Fi
bGVUaWxlIDogcHVibGljIENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc093blB0cjxEcmF3YWJsZVRpbGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRy
KG5ldyBEcmF3YWJsZVRpbGUoKSk7IH0KIAotICAgIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlk
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KLSAgICB2b2lkIHNldFRleHR1cmVJZChQ
bGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCkgeyBtX3RleHR1cmVJZCA9IHRleHR1cmVJZDsgfQor
ICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvdXJjZUlkOyB9CisgICAgdm9pZCBzZXRSZXNvdXJjZUlkKENDUmVzb3VyY2VQ
cm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkKSB7IG1fcmVzb3VyY2VJZCA9IHJlc291cmNl
SWQ7IH0KIAogcHJpdmF0ZToKLSAgICBEcmF3YWJsZVRpbGUoKSA6IG1fdGV4dHVyZUlkKDApIHsg
fQorICAgIERyYXdhYmxlVGlsZSgpIDogbV9yZXNvdXJjZUlkKDApIHsgfQogCi0gICAgUGxhdGZv
cm0zRE9iamVjdCBtX3RleHR1cmVJZDsKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNl
SWQgbV9yZXNvdXJjZUlkOwogfTsKIAogQ0NUaWxlZExheWVySW1wbDo6Q0NUaWxlZExheWVySW1w
bChpbnQgaWQpCkBAIC03OSw3ICs3OSw3IEBAIENDVGlsZWRMYXllckltcGw6On5DQ1RpbGVkTGF5
ZXJJbXBsKCkKIHsKIH0KIAotdW5zaWduZWQgQ0NUaWxlZExheWVySW1wbDo6Y29udGVudHNUZXh0
dXJlSWQoKSBjb25zdAorQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIENDVGlsZWRMYXll
ckltcGw6OmNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlv
biBpcyBvbmx5IHZhbGlkIGZvciBzaW5nbGUgdGV4dHVyZSBsYXllcnMsIGUuZy4gbWFza3MuCiAg
ICAgQVNTRVJUKG1fdGlsZXIpOwpAQCAtODcsMTAgKzg3LDEwIEBAIHVuc2lnbmVkIENDVGlsZWRM
YXllckltcGw6OmNvbnRlbnRzVGV4dHVyZUlkKCkgY29uc3QKICAgICBBU1NFUlQobV90aWxlci0+
bnVtVGlsZXNZKCkgPT0gMSk7CiAKICAgICBEcmF3YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoMCwg
MCk7Ci0gICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQgPSB0aWxlID8gdGlsZS0+dGV4dHVy
ZUlkKCkgOiAwOwotICAgIEFTU0VSVCh0ZXh0dXJlSWQpOworICAgIENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkID0gdGlsZSA/IHRpbGUtPnJlc291cmNlSWQoKSA6IDA7
CisgICAgQVNTRVJUKHJlc291cmNlSWQpOwogCi0gICAgcmV0dXJuIHRleHR1cmVJZDsKKyAgICBy
ZXR1cm4gcmVzb3VyY2VJZDsKIH0KIAogdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkdW1wTGF5ZXJQ
cm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdApAQCAtMTA3LDcgKzEw
Nyw3IEBAIGJvb2wgQ0NUaWxlZExheWVySW1wbDo6aGFzVGlsZUF0KGludCBpLCBpbnQgaikgY29u
c3QKIAogYm9vbCBDQ1RpbGVkTGF5ZXJJbXBsOjpoYXNUZXh0dXJlSWRGb3JUaWxlQXQoaW50IGks
IGludCBqKSBjb25zdAogewotICAgIHJldHVybiBoYXNUaWxlQXQoaSwgaikgJiYgdGlsZUF0KGks
IGopLT50ZXh0dXJlSWQoKTsKKyAgICByZXR1cm4gaGFzVGlsZUF0KGksIGopICYmIHRpbGVBdChp
LCBqKS0+cmVzb3VyY2VJZCgpOwogfQogCiBEcmF3YWJsZVRpbGUqIENDVGlsZWRMYXllckltcGw6
OnRpbGVBdChpbnQgaSwgaW50IGopIGNvbnN0CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBDQ1Rp
bGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGEKICAgICAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxl
ci0+dGlsZUJvdW5kcyhpLCBqKTsKICAgICAgICAgICAgICAgICBTa0NvbG9yIGJvcmRlckNvbG9y
OwogCi0gICAgICAgICAgICAgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICF0aWxlIHx8ICF0aWxlLT50
ZXh0dXJlSWQoKSkKKyAgICAgICAgICAgICAgICBpZiAobV9za2lwc0RyYXcgfHwgIXRpbGUgfHwg
IXRpbGUtPnJlc291cmNlSWQoKSkKICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3IgPSBT
a0NvbG9yU2V0QVJHQihkZWJ1Z1RpbGVCb3JkZXJBbHBoYSwgZGVidWdUaWxlQm9yZGVyTWlzc2lu
Z1RpbGVDb2xvclJlZCwgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvckdyZWVuLCBkZWJ1
Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNvbG9yQmx1ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvciA9IFNrQ29sb3JTZXRBUkdCKGRlYnVnVGls
ZUJvcmRlckFscGhhLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvclJlZCwgZGVidWdUaWxlQm9yZGVyQ29s
b3JHcmVlbiwgZGVidWdUaWxlQm9yZGVyQ29sb3JCbHVlKTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2
b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3Qs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YQogICAgICAgICAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKCF0aWxlIHx8
ICF0aWxlLT50ZXh0dXJlSWQoKSkgeworICAgICAgICAgICAgaWYgKCF0aWxlIHx8ICF0aWxlLT5y
ZXNvdXJjZUlkKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZHJhd0NoZWNrZXJib2FyZEZvck1p
c3NpbmdUaWxlcygpKQogICAgICAgICAgICAgICAgICAgICBoYWRNaXNzaW5nVGlsZXMgfD0gcXVh
ZExpc3QuYXBwZW5kKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3Rh
dGUsIHRpbGVSZWN0KSk7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMTkwLDcgKzE5MCw3IEBA
IHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlz
dCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhCiAgICAgICAgICAgICBib29sIGJvdHRvbUVkZ2VBQSA9
IGogPT0gbV90aWxlci0+bnVtVGlsZXNZKCkgLSAxICYmIHVzZUFBOwogCiAgICAgICAgICAgICBj
b25zdCBHQzNEaW50IHRleHR1cmVGaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/
IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsK
LSAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGVPcGFxdWVSZWN0LCB0aWxlLT50ZXh0dXJlSWQoKSwg
dGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIGNvbnRlbnRzU3dpenps
ZWQoKSwgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7
CisgICAgICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFy
ZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0aWxlT3BhcXVlUmVjdCwgdGlsZS0+cmVzb3VyY2VJZCgp
LCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6
emxlZCgpLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEp
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTIwNCwxMiArMjA0LDEyIEBAIHZvaWQgQ0NUaWxl
ZExheWVySW1wbDo6c2V0VGlsaW5nRGF0YShjb25zdCBDQ0xheWVyVGlsaW5nRGF0YSYgdGlsZXIp
CiAgICAgKm1fdGlsZXIgPSB0aWxlcjsKIH0KIAotdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpwdXNo
VGlsZVByb3BlcnRpZXMoaW50IGksIGludCBqLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IElu
dFJlY3QmIG9wYXF1ZVJlY3QpCit2b2lkIENDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVy
dGllcyhpbnQgaSwgaW50IGosIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJj
ZUlkLCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KQogewogICAgIERyYXdhYmxlVGlsZSogdGls
ZSA9IHRpbGVBdChpLCBqKTsKICAgICBpZiAoIXRpbGUpCiAgICAgICAgIHRpbGUgPSBjcmVhdGVU
aWxlKGksIGopOwotICAgIHRpbGUtPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOworICAgIHRpbGUt
PnNldFJlc291cmNlSWQocmVzb3VyY2VJZCk7CiAgICAgdGlsZS0+c2V0T3BhcXVlUmVjdChvcGFx
dWVSZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCmluZGV4IDQwNTJmZTk3
Y2VjMjMzNThkY2Y4OTcyYzQ1ZWUzYjZkNDFhNzM3NzEuLjg3MWQ0ZTdkMTZhMTQ3YWU4YjQxNDI1
NDBmMTdhYTRjYjgzMGE4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKQEAgLTQ0
LDEzICs0NCwxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NR
dWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGls
ZXMpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBjb250ZW50c1RleHR1cmVJZCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJj
ZUlkIGNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2
b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IE9W
RVJSSURFOwogCiAgICAgdm9pZCBzZXRTa2lwc0RyYXcoYm9vbCBza2lwc0RyYXcpIHsgbV9za2lw
c0RyYXcgPSBza2lwc0RyYXc7IH0KICAgICB2b2lkIHNldFRpbGluZ0RhdGEoY29uc3QgQ0NMYXll
clRpbGluZ0RhdGEmIHRpbGVyKTsKLSAgICB2b2lkIHB1c2hUaWxlUHJvcGVydGllcyhpbnQsIGlu
dCwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KTsKKyAgICB2
b2lkIHB1c2hUaWxlUHJvcGVydGllcyhpbnQsIGludCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkLCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KTsKIAogICAgIHZvaWQgc2V0Q29udGVu
dHNTd2l6emxlZChib29sIGNvbnRlbnRzU3dpenpsZWQpIHsgbV9jb250ZW50c1N3aXp6bGVkID0g
Y29udGVudHNTd2l6emxlZDsgfQogICAgIGJvb2wgY29udGVudHNTd2l6emxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudHNTd2l6emxlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmNwcAppbmRleCBkNWExNTk5NjVhNDk3Yjg1NzYyYmIzZGY0N2M1NWYyM2FlNzhlMDEzLi5hZTUz
OGMyZTUzNjkzMzEyNDQ0Y2Q1MDllMjMxMjgzMWQ4NGEzOTVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmNwcApAQCAtMzEsMTYgKzMxLDEzIEBACiAKICNpbmNsdWRlICJFeHRlbnNp
b25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVk
ZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiIC8vIEZvciBHTEMgbWFjcm8KLSNpbmNsdWRlICJM
YXllclRleHR1cmVTdWJJbWFnZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSAiVGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKLSNpbmNs
dWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDSU9TdXJmYWNlRHJh
d1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgorI2luY2x1ZGUgImNj
L0NDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgImNjL0NDU3RyZWFtVmlkZW9EcmF3UXVh
ZC5oIgogI2luY2x1ZGUgImNjL0NDVGV4dHVyZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NZ
VVZWaWRlb0RyYXdRdWFkLmgiCkBAIC01Myw2ICs1MCw3IEBAIENDVmlkZW9MYXllckltcGw6OkND
VmlkZW9MYXllckltcGwoaW50IGlkLCBXZWJLaXQ6OldlYlZpZGVvRnJhbWVQcm92aWRlciogcHJv
dmlkCiAgICAgOiBDQ0xheWVySW1wbChpZCkKICAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCiAg
ICAgLCBtX2ZyYW1lKDApCisgICAgLCBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKDApCiB7CiAg
ICAgLy8gVGhpcyBtYXRyaXggaXMgdGhlIGRlZmF1bHQgdHJhbnNmb3JtYXRpb24gZm9yIHN0cmVh
bSB0ZXh0dXJlcywgYW5kIGZsaXBzIG9uIHRoZSBZIGF4aXMuCiAgICAgbV9zdHJlYW1UZXh0dXJl
TWF0cml4ID0gV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKQEAgLTc3LDExICs3NSwx
MiBAQCBDQ1ZpZGVvTGF5ZXJJbXBsOjp+Q0NWaWRlb0xheWVySW1wbCgpCiAgICAgICAgIG1fcHJv
dmlkZXItPnNldFZpZGVvRnJhbWVQcm92aWRlckNsaWVudCgwKTsKICAgICAgICAgbV9wcm92aWRl
ciA9IDA7CiAgICAgfQotICAgIGZyZWVQbGFuZURhdGEobGF5ZXJUcmVlSG9zdEltcGwoKS0+Y29u
dGV4dCgpKTsKKyAgICBmcmVlUGxhbmVEYXRhKGxheWVyVHJlZUhvc3RJbXBsKCktPnJlc291cmNl
UHJvdmlkZXIoKSk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IFdlYktpdDo6V2ViVmlkZW9GcmFtZTo6bWF4UGxhbmVzOyArK2kpCi0gICAgICAg
IEFTU0VSVCghbV9mcmFtZVBsYW5lc1tpXS50ZXh0dXJlSWQpOworICAgICAgICBBU1NFUlQoIW1f
ZnJhbWVQbGFuZXNbaV0ucmVzb3VyY2VJZCk7CisgICAgQVNTRVJUKCFtX2V4dGVybmFsVGV4dHVy
ZVJlc291cmNlKTsKICNlbmRpZgogfQogCkBAIC0xMTIsMTAgKzExMSwxMCBAQCBzdGF0aWMgR0Mz
RGVudW0gY29udmVydFZGQ0Zvcm1hdFRvR0MzREZvcm1hdChjb25zdCBXZWJLaXQ6OldlYlZpZGVv
RnJhbWUmIGZyYW1lKQogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RTsKIH0KIAotdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1JlbmRlcmVyKiBsYXll
clJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgQ0NWaWRlb0xheWVy
SW1wbDo6d2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewog
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7Ci0gICAgQ0NMYXllckltcGw6Ondp
bGxEcmF3KGxheWVyUmVuZGVyZXIsIGNvbnRleHQpOworICAgIENDTGF5ZXJJbXBsOjp3aWxsRHJh
dyhyZXNvdXJjZVByb3ZpZGVyKTsKIAogICAgIC8vIEV4cGxpY2l0bHkgbG9jayBhbmQgdW5sb2Nr
IHRoZSBwcm92aWRlciBtdXRleCBzbyBpdCBjYW4gYmUgaGVsZCBmcm9tCiAgICAgLy8gd2lsbERy
YXcgdG8gZGlkRHJhdy4gU2luY2UgdGhlIGNvbXBvc2l0b3IgdGhyZWFkIGlzIGluIHRoZSBtaWRk
bGUgb2YKQEAgLTEyNiwxNiArMTI1LDE3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6d2lsbERy
YXcoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQqIGNvCiAgICAg
Ly8gbG9jayBzaG91bGQgbm90IGNhdXNlIGEgZGVhZGxvY2suCiAgICAgbV9wcm92aWRlck11dGV4
LmxvY2soKTsKIAotICAgIHdpbGxEcmF3SW50ZXJuYWwobGF5ZXJSZW5kZXJlciwgY29udGV4dCk7
Ci0gICAgZnJlZVVudXNlZFBsYW5lRGF0YShjb250ZXh0KTsKKyAgICB3aWxsRHJhd0ludGVybmFs
KHJlc291cmNlUHJvdmlkZXIpOworICAgIGZyZWVVbnVzZWRQbGFuZURhdGEocmVzb3VyY2VQcm92
aWRlcik7CiAKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIG1fcHJvdmlkZXJNdXRleC51bmxv
Y2soKTsKIH0KIAotdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhd0ludGVybmFsKENDUmVu
ZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBD
Q1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhd0ludGVybmFsKENDUmVzb3VyY2VQcm92aWRlciogcmVz
b3VyY2VQcm92aWRlcikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwor
ICAgIEFTU0VSVCghbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSk7CiAKICAgICBpZiAoIW1fcHJv
dmlkZXIpIHsKICAgICAgICAgbV9mcmFtZSA9IDA7CkBAIC0xNjEsMTcgKzE2MSwyMCBAQCB2b2lk
IENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwoQ0NSZW5kZXJlciogbGF5ZXJSZW5k
ZXJlciwgQ0NHcmFwaGljc0NvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFh
bGxvY2F0ZVBsYW5lRGF0YShsYXllclJlbmRlcmVyLCBjb250ZXh0KSkgeworICAgIGlmICghYWxs
b2NhdGVQbGFuZURhdGEocmVzb3VyY2VQcm92aWRlcikpIHsKICAgICAgICAgbV9wcm92aWRlci0+
cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUpOwogICAgICAgICBtX2ZyYW1lID0gMDsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmICghY29weVBsYW5lRGF0YShsYXllclJlbmRlcmVyLCBj
b250ZXh0KSkgeworICAgIGlmICghY29weVBsYW5lRGF0YShyZXNvdXJjZVByb3ZpZGVyKSkgewog
ICAgICAgICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUobV9mcmFtZSk7CiAgICAgICAgIG1f
ZnJhbWUgPSAwOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKG1fZm9ybWF0ID09
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKQorICAgICAgICBtX2V4dGVybmFsVGV4dHVy
ZVJlc291cmNlID0gcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxU
ZXh0dXJlKG1fZnJhbWUtPnRleHR1cmVJZCgpKTsKIH0KIAogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKQEAgLTIwNCw3ICsyMDcsNyBAQCB2b2lkIEND
VmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0
IENDU2hhcmVkUXVhZFN0YQogICAgICAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7
CiAgICAgICAgIEZsb2F0UmVjdCB1dlJlY3QoMCwgMCwgd2lkdGhTY2FsZUZhY3RvciwgMSk7CiAg
ICAgICAgIGJvb2wgZmxpcHBlZCA9IGZhbHNlOwotICAgICAgICBPd25QdHI8Q0NUZXh0dXJlRHJh
d1F1YWQ+IHRleHR1cmVRdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUsIHF1YWRSZWN0LCBwbGFuZS50ZXh0dXJlSWQsIHByZW11bHRpcGxpZWRBbHBoYSwgdXZS
ZWN0LCBmbGlwcGVkKTsKKyAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJl
UXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVj
dCwgcGxhbmUucmVzb3VyY2VJZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQp
OwogICAgICAgICBxdWFkTGlzdC5hcHBlbmQodGV4dHVyZVF1YWQucmVsZWFzZSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpAQCAtMjE5LDcgKzIyMiw3IEBAIHZvaWQgQ0NWaWRlb0xheWVySW1w
bDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhCiAjZWxzZQogICAgICAgICBib29sIGZsaXBwZWQgPSBmYWxzZTsgLy8gTGliVkEgKGNyb3Mv
aW50ZWwpLCBNYWNPUy4KICNlbmRpZgotICAgICAgICBPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+
IHRleHR1cmVRdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUs
IHF1YWRSZWN0LCBtX2ZyYW1lLT50ZXh0dXJlSWQoKSwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJl
Y3QsIGZsaXBwZWQpOworICAgICAgICBPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHRleHR1cmVR
dWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0
LCBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlLCBwcmVtdWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwg
ZmxpcHBlZCk7CiAgICAgICAgIHF1YWRMaXN0LmFwcGVuZCh0ZXh0dXJlUXVhZC5yZWxlYXNlKCkp
OwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNDAsMTQgKzI0MywyNCBAQCB2b2lkIENDVmlk
ZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IEND
U2hhcmVkUXVhZFN0YQogICAgIH0KIH0KIAotdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWREcmF3
KCkKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJl
c291cmNlUHJvdmlkZXIpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsK
LSAgICBDQ0xheWVySW1wbDo6ZGlkRHJhdygpOworICAgIENDTGF5ZXJJbXBsOjpkaWREcmF3KHJl
c291cmNlUHJvdmlkZXIpOwogCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAK
KyAgICBpZiAobV9mb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpIHsKKyAg
ICAgICAgQVNTRVJUKG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2UpOworICAgICAgICAvLyBGSVhN
RTogdGhlIGZvbGxvd2luZyBhc3NlcnQgd2lsbCBub3QgYmUgdHJ1ZSB3aGVuIHNlbmRpbmcgcmVz
b3VyY2VzIHRvIGEKKyAgICAgICAgLy8gcGFyZW50IGNvbXBvc2l0b3IuIFdlIHdpbGwgcHJvYmFi
bHkgbmVlZCB0byBob2xkIG9uIHRvIG1fZnJhbWUgZm9yCisgICAgICAgIC8vIGxvbmdlciwgYW5k
IGhhdmUgc2V2ZXJhbCAiY3VycmVudCBmcmFtZXMiIGluIHRoZSBwaXBlbGluZS4KKyAgICAgICAg
QVNTRVJUKCFyZXNvdXJjZVByb3ZpZGVyLT5pblVzZUJ5Q29uc3VtZXIobV9leHRlcm5hbFRleHR1
cmVSZXNvdXJjZSkpOworICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5kZWxldGVSZXNvdXJjZSht
X2V4dGVybmFsVGV4dHVyZVJlc291cmNlKTsKKyAgICAgICAgbV9leHRlcm5hbFRleHR1cmVSZXNv
dXJjZSA9IDA7CisgICAgfQorCiAgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKG1fZnJh
bWUpOwogICAgIG1fZnJhbWUgPSAwOwogCkBAIC0yOTAsNDUgKzMwMywyNyBAQCBJbnRTaXplIEND
VmlkZW9MYXllckltcGw6OmNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBXZWJLaXQ6OldlYlZpZGVv
RnJhbWUmIGZyYW1lLAogICAgIHJldHVybiBJbnRTaXplKHZpc2libGVXaWR0aCwgdmlzaWJsZUhl
aWdodCk7CiB9CiAKLWJvb2wgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6YWxsb2NhdGVE
YXRhKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjpG
cmFtZVBsYW5lOjphbGxvY2F0ZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3Zp
ZGVyKQogewotICAgIGlmICh0ZXh0dXJlSWQpCisgICAgaWYgKHJlc291cmNlSWQpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dDNEID0gY29udGV4dC0+Y29udGV4dDNEKCk7Ci0gICAgaWYgKCFjb250ZXh0M0QpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIEdMQyhjb250ZXh0M0QsIHRleHR1cmVJZCA9IGNvbnRleHQz
RC0+Y3JlYXRlVGV4dHVyZSgpKTsKLSAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQpKTsKLSAgICAv
LyBEbyBiYXNpYyBsaW5lYXIgZmlsdGVyaW5nIG9uIHJlc2l6ZS4KLSAgICBHTEMoY29udGV4dDNE
LCBjb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNE
OjpMSU5FQVIpKTsKLSAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAvLyBOUE9UIHRl
eHR1cmVzIGluIEdMIEVTIG9ubHkgd29yayB3aGVuIHRoZSB3cmFwIG1vZGUgaXMgc2V0IHRvIEdy
YXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFLgotICAgIEdMQyhjb250ZXh0M0QsIGNvbnRl
eHQzRC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9f
RURHRSkpOwotICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dGV4UGFyYW1ldGVyaShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JB
UF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSkpOwotCi0gICAgR0xDKGNvbnRl
eHQzRCwgY29udGV4dDNELT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCAwLCBmb3JtYXQsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgZm9ybWF0LCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgMCkpOwotCi0gICAgcmV0dXJuIHRleHR1cmVJ
ZDsKKyAgICByZXNvdXJjZUlkID0gcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2UoQ0NS
ZW5kZXJlcjo6SW1wbFBvb2wsIHNpemUsIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0
dXJlVXNhZ2VBbnkpOworICAgIHJldHVybiByZXNvdXJjZUlkOwogfQogCi12b2lkIENDVmlkZW9M
YXllckltcGw6OkZyYW1lUGxhbmU6OmZyZWVEYXRhKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lOjpmcmVlRGF0YShDQ1Jlc291cmNl
UHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7Ci0gICAgaWYgKCF0ZXh0dXJlSWQpCisgICAg
aWYgKCFyZXNvdXJjZUlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0M0QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAo
IWNvbnRleHQzRCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0xDKGNvbnRleHQzRCwgY29udGV4
dDNELT5kZWxldGVUZXh0dXJlKHRleHR1cmVJZCkpOwotICAgIHRleHR1cmVJZCA9IDA7CisgICAg
cmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlUmVzb3VyY2UocmVzb3VyY2VJZCk7CisgICAgcmVzb3Vy
Y2VJZCA9IDA7CiB9CiAKLWJvb2wgQ0NWaWRlb0xheWVySW1wbDo6YWxsb2NhdGVQbGFuZURhdGEo
Q0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiti
b29sIENDVmlkZW9MYXllckltcGw6OmFsbG9jYXRlUGxhbmVEYXRhKENDUmVzb3VyY2VQcm92aWRl
ciogcmVzb3VyY2VQcm92aWRlcikKIHsKLSAgICBpbnQgbWF4VGV4dHVyZVNpemUgPSBsYXllclJl
bmRlcmVyLT5jYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZTsKKyAgICBpbnQgbWF4VGV4dHVy
ZVNpemUgPSByZXNvdXJjZVByb3ZpZGVyLT5tYXhUZXh0dXJlU2l6ZSgpOwogICAgIGZvciAodW5z
aWduZWQgcGxhbmVJbmRleCA9IDA7IHBsYW5lSW5kZXggPCBtX2ZyYW1lLT5wbGFuZXMoKTsgKytw
bGFuZUluZGV4KSB7CiAgICAgICAgIENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHBsYW5l
ID0gbV9mcmFtZVBsYW5lc1twbGFuZUluZGV4XTsKIApAQCAtMzM4LDEzICszMzMsMTMgQEAgYm9v
bCBDQ1ZpZGVvTGF5ZXJJbXBsOjphbGxvY2F0ZVBsYW5lRGF0YShDQ1JlbmRlcmVyKiBsYXllclJl
bmRlcmVyLCBDQ0dyYXBoaWNzQ28KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICBpZiAocGxhbmUuc2l6ZSAhPSByZXF1aXJlZFRleHR1cmVTaXplIHx8IHBsYW5lLmZvcm1hdCAh
PSBtX2Zvcm1hdCkgewotICAgICAgICAgICAgcGxhbmUuZnJlZURhdGEoY29udGV4dCk7CisgICAg
ICAgICAgICBwbGFuZS5mcmVlRGF0YShyZXNvdXJjZVByb3ZpZGVyKTsKICAgICAgICAgICAgIHBs
YW5lLnNpemUgPSByZXF1aXJlZFRleHR1cmVTaXplOwogICAgICAgICAgICAgcGxhbmUuZm9ybWF0
ID0gbV9mb3JtYXQ7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXBsYW5lLnRleHR1cmVJZCkg
ewotICAgICAgICAgICAgaWYgKCFwbGFuZS5hbGxvY2F0ZURhdGEoY29udGV4dCkpCisgICAgICAg
IGlmICghcGxhbmUucmVzb3VyY2VJZCkgeworICAgICAgICAgICAgaWYgKCFwbGFuZS5hbGxvY2F0
ZURhdGEocmVzb3VyY2VQcm92aWRlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgcGxhbmUudmlzaWJsZVNpemUgPSBjb21wdXRlVmlzaWJsZVNpemUoKm1fZnJh
bWUsIHBsYW5lSW5kZXgpOwogICAgICAgICB9CkBAIC0zNTIsNDIgKzM0NywzMiBAQCBib29sIEND
VmlkZW9MYXllckltcGw6OmFsbG9jYXRlUGxhbmVEYXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVy
ZXIsIENDR3JhcGhpY3NDbwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENDVmlkZW9MYXll
ckltcGw6OmNvcHlQbGFuZURhdGEoQ0NSZW5kZXJlciogbGF5ZXJSZW5kZXJlciwgQ0NHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCitib29sIENDVmlkZW9MYXllckltcGw6OmNvcHlQbGFuZURhdGEo
Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogewogICAgIHNpemVfdCBzb2Z0
d2FyZVBsYW5lQ291bnQgPSBtX2ZyYW1lLT5wbGFuZXMoKTsKICAgICBpZiAoIXNvZnR3YXJlUGxh
bmVDb3VudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBXZWJLaXQ6OldlYkdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNv
bnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29m
dHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBM
YXllclRleHR1cmVTdWJJbWFnZSB1cGxvYWRlcih0cnVlKTsKICAgICBmb3IgKHNpemVfdCBzb2Z0
d2FyZVBsYW5lSW5kZXggPSAwOyBzb2Z0d2FyZVBsYW5lSW5kZXggPCBzb2Z0d2FyZVBsYW5lQ291
bnQ7ICsrc29mdHdhcmVQbGFuZUluZGV4KSB7CiAgICAgICAgIENDVmlkZW9MYXllckltcGw6OkZy
YW1lUGxhbmUmIHBsYW5lID0gbV9mcmFtZVBsYW5lc1tzb2Z0d2FyZVBsYW5lSW5kZXhdOwogICAg
ICAgICBjb25zdCB1aW50OF90KiBzb2Z0d2FyZVBsYW5lUGl4ZWxzID0gc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KG1fZnJhbWUtPmRhdGEoc29mdHdhcmVQbGFuZUluZGV4KSk7CiAgICAgICAg
IEludFJlY3QgcGxhbmVSZWN0KEludFBvaW50KCksIHBsYW5lLnNpemUpOwotCi0gICAgICAgIGNv
bnRleHQzZC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHBsYW5l
LnRleHR1cmVJZCk7Ci0gICAgICAgIHVwbG9hZGVyLnNldFN1YkltYWdlU2l6ZShwbGFuZS5zaXpl
KTsKLSAgICAgICAgdXBsb2FkZXIudXBsb2FkKHNvZnR3YXJlUGxhbmVQaXhlbHMsIHBsYW5lUmVj
dCwgcGxhbmVSZWN0LCBwbGFuZVJlY3QsIHBsYW5lLmZvcm1hdCwgY29udGV4dCk7CisgICAgICAg
IHJlc291cmNlUHJvdmlkZXItPnVwbG9hZChwbGFuZS5yZXNvdXJjZUlkLCBzb2Z0d2FyZVBsYW5l
UGl4ZWxzLCBwbGFuZVJlY3QsIHBsYW5lUmVjdCwgcGxhbmVSZWN0KTsKICAgICB9CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZnJlZVBsYW5lRGF0YShDQ0dy
YXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZnJlZVBsYW5l
RGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IFdlYktpdDo6V2ViVmlkZW9GcmFtZTo6bWF4UGxhbmVzOyArK2kp
Ci0gICAgICAgIG1fZnJhbWVQbGFuZXNbaV0uZnJlZURhdGEoY29udGV4dCk7CisgICAgICAgIG1f
ZnJhbWVQbGFuZXNbaV0uZnJlZURhdGEocmVzb3VyY2VQcm92aWRlcik7CiB9CiAKLXZvaWQgQ0NW
aWRlb0xheWVySW1wbDo6ZnJlZVVudXNlZFBsYW5lRGF0YShDQ0dyYXBoaWNzQ29udGV4dCogY29u
dGV4dCkKK3ZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZnJlZVVudXNlZFBsYW5lRGF0YShDQ1Jlc291
cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CiAgICAgdW5zaWduZWQgZmlyc3RVbnVz
ZWRQbGFuZSA9IG1fZnJhbWUgPyBtX2ZyYW1lLT5wbGFuZXMoKSA6IDA7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gZmlyc3RVbnVzZWRQbGFuZTsgaSA8IFdlYktpdDo6V2ViVmlkZW9GcmFtZTo6bWF4
UGxhbmVzOyArK2kpCi0gICAgICAgIG1fZnJhbWVQbGFuZXNbaV0uZnJlZURhdGEoY29udGV4dCk7
CisgICAgICAgIG1fZnJhbWVQbGFuZXNbaV0uZnJlZURhdGEocmVzb3VyY2VQcm92aWRlcik7CiB9
CiAKIHZvaWQgQ0NWaWRlb0xheWVySW1wbDo6ZGlkUmVjZWl2ZUZyYW1lKCkKQEAgLTQwNyw3ICsz
OTIsNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmRpZFVwZGF0ZU1hdHJpeChjb25zdCBmbG9h
dCBtYXRyaXhbMTZdKQogCiB2b2lkIENDVmlkZW9MYXllckltcGw6OmRpZExvc2VDb250ZXh0KCkK
IHsKLSAgICBmcmVlUGxhbmVEYXRhKGxheWVyVHJlZUhvc3RJbXBsKCktPmNvbnRleHQoKSk7Cisg
ICAgZnJlZVBsYW5lRGF0YShsYXllclRyZWVIb3N0SW1wbCgpLT5yZXNvdXJjZVByb3ZpZGVyKCkp
OwogfQogCiB2b2lkIENDVmlkZW9MYXllckltcGw6OnNldE5lZWRzUmVkcmF3KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9M
YXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVmlkZW9MYXllckltcGwuaAppbmRleCBjZDVkYjA5YmNkMDU2ZDkwM2I1ZjVjN2JkMzIzODAz
ZDgzZjU3YzIyLi40Y2Y3Y2FiYjc2ZDkzY2VlODkyZjU0M2UyNWJjNDllOTgxNGViNGIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCkBAIC01MCw5ICs1MCw5IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgdmlydHVhbCB+Q0NWaWRlb0xheWVySW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lk
IHdpbGxEcmF3KENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBkaWREcmF3KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNv
dXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJv
cGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3QgT1ZFUlJJREU7CiAKQEAgLTY4
LDE1ICs2OCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc1JlZHJhdygpOwogCiAgICAg
c3RydWN0IEZyYW1lUGxhbmUgewotICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7CisgICAgICAg
IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkOwogICAgICAgICBJbnRT
aXplIHNpemU7CiAgICAgICAgIEdDM0RlbnVtIGZvcm1hdDsKICAgICAgICAgSW50U2l6ZSB2aXNp
YmxlU2l6ZTsKIAotICAgICAgICBGcmFtZVBsYW5lKCkgOiB0ZXh0dXJlSWQoMCkgeyB9CisgICAg
ICAgIEZyYW1lUGxhbmUoKSA6IHJlc291cmNlSWQoMCkgeyB9CiAKLSAgICAgICAgYm9vbCBhbGxv
Y2F0ZURhdGEoQ0NHcmFwaGljc0NvbnRleHQqKTsKLSAgICAgICAgdm9pZCBmcmVlRGF0YShDQ0dy
YXBoaWNzQ29udGV4dCopOworICAgICAgICBib29sIGFsbG9jYXRlRGF0YShDQ1Jlc291cmNlUHJv
dmlkZXIqKTsKKyAgICAgICAgdm9pZCBmcmVlRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKICAg
ICB9OwogCiBwcml2YXRlOgpAQCAtODUsMTEgKzg1LDExIEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IEludFNpemUgY29tcHV0ZVZpc2libGVTaXplKGNvbnN0IFdlYktpdDo6V2ViVmlkZW9GcmFtZSYs
IHVuc2lnbmVkIHBsYW5lKTsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlwZUFzU3Ry
aW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlZpZGVvTGF5ZXIiOyB9CiAKLSAgICB2b2lk
IHdpbGxEcmF3SW50ZXJuYWwoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0Kik7Ci0gICAg
Ym9vbCBhbGxvY2F0ZVBsYW5lRGF0YShDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKTsK
LSAgICBib29sIGNvcHlQbGFuZURhdGEoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0Kik7
Ci0gICAgdm9pZCBmcmVlUGxhbmVEYXRhKENDR3JhcGhpY3NDb250ZXh0Kik7Ci0gICAgdm9pZCBm
cmVlVW51c2VkUGxhbmVEYXRhKENDR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCB3aWxsRHJh
d0ludGVybmFsKENDUmVzb3VyY2VQcm92aWRlciopOworICAgIGJvb2wgYWxsb2NhdGVQbGFuZURh
dGEoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CisgICAgYm9vbCBjb3B5UGxhbmVEYXRhKENDUmVzb3Vy
Y2VQcm92aWRlciopOworICAgIHZvaWQgZnJlZVBsYW5lRGF0YShDQ1Jlc291cmNlUHJvdmlkZXIq
KTsKKyAgICB2b2lkIGZyZWVVbnVzZWRQbGFuZURhdGEoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAK
ICAgICAvLyBHdWFyZHMgdGhlIGRlc3RydWN0aW9uIG9mIG1fcHJvdmlkZXIgYW5kIHRoZSBmcmFt
ZSB0aGF0IGl0IHByb3ZpZGVzCiAgICAgTXV0ZXggbV9wcm92aWRlck11dGV4OwpAQCAtOTksNiAr
OTksNyBAQCBwcml2YXRlOgogCiAgICAgV2ViS2l0OjpXZWJWaWRlb0ZyYW1lKiBtX2ZyYW1lOwog
ICAgIEdDM0RlbnVtIG1fZm9ybWF0OworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJ
ZCBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlOwogCiAgICAgLy8gRWFjaCBpbmRleCBpbiB0aGlz
IGFycmF5IGNvcnJlc3BvbmRzIHRvIGEgcGxhbmUgaW4gV2ViS2l0OjpXZWJWaWRlb0ZyYW1lLgog
ICAgIEZyYW1lUGxhbmUgbV9mcmFtZVBsYW5lc1tXZWJLaXQ6OldlYlZpZGVvRnJhbWU6Om1heFBs
YW5lc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCA0MGIyM2JlNDk3ZTI3ZTc3
NDZiNTU5YTI1MWJhOGRiZmJmM2VhMjEyLi44MzEyNDFkZTQzNzZiNTI2OGIzZTczNWViYjQ3MTVl
YzQ0YzY5MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTc4LDYgKzc4LDcg
QEAKICAgICAgICAgICAgICd0ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0Q29tbW9uLmgnLAog
ICAgICAgICAgICAgJ3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvQ0NSZXNv
dXJjZVByb3ZpZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENv
bW1vbi5oJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKaW5kZXggNDkwNzRmZWRiNzhkOWEwY2VkZjg5YjVkMjkyNWQ2ZGM3OGVlY2UzMS4u
NjRkZWQ3OTI4NjI4YWYyZDNiMzMyZDRhM2RmYjAyY2FmN2JiMmJkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAKQEAgLTYwMCwxMiArNjAwLDEyIEBAIGNsYXNzIERpZERyYXdDaGVja0xheWVyIDogcHVibGlj
IENDVGlsZWRMYXllckltcGwgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPERpZERy
YXdDaGVja0xheWVyPiBjcmVhdGUoaW50IGlkKSB7IHJldHVybiBhZG9wdFB0cihuZXcgRGlkRHJh
d0NoZWNrTGF5ZXIoaWQpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKQorICAgIHZp
cnR1YWwgdm9pZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFCiAgICAgewog
ICAgICAgICBtX2RpZERyYXdDYWxsZWQgPSB0cnVlOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRHJhdyhDQ1JlbmRlcmVyKiwgQ0NHcmFwaGljc0NvbnRleHQqKQorICAgIHZpcnR1YWwg
dm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERQogICAgIHsKICAgICAg
ICAgbV93aWxsRHJhd0NhbGxlZCA9IHRydWU7CiAgICAgfQpAQCAtNzU1LDE4ICs3NTUsMjAgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkaWREcmF3Q2FsbGVkT25BbGxMYXllcnMp
CiAKIGNsYXNzIE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIgOiBwdWJsaWMgRGlkRHJhd0No
ZWNrTGF5ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1pc3NpbmdUZXh0dXJl
QW5pbWF0aW5nTGF5ZXI+IGNyZWF0ZShpbnQgaWQsIGJvb2wgdGlsZU1pc3NpbmcsIGJvb2wgc2tp
cHNEcmF3LCBib29sIGFuaW1hdGluZykgeyByZXR1cm4gYWRvcHRQdHIobmV3IE1pc3NpbmdUZXh0
dXJlQW5pbWF0aW5nTGF5ZXIoaWQsIHRpbGVNaXNzaW5nLCBza2lwc0RyYXcsIGFuaW1hdGluZykp
OyB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcj4g
Y3JlYXRlKGludCBpZCwgYm9vbCB0aWxlTWlzc2luZywgYm9vbCBza2lwc0RyYXcsIGJvb2wgYW5p
bWF0aW5nLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpIHsgcmV0dXJuIGFk
b3B0UHRyKG5ldyBNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyKGlkLCB0aWxlTWlzc2luZywg
c2tpcHNEcmF3LCBhbmltYXRpbmcsIHJlc291cmNlUHJvdmlkZXIpKTsgfQogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXIoaW50IGlkLCBib29sIHRp
bGVNaXNzaW5nLCBib29sIHNraXBzRHJhdywgYm9vbCBhbmltYXRpbmcpCisgICAgZXhwbGljaXQg
TWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcihpbnQgaWQsIGJvb2wgdGlsZU1pc3NpbmcsIGJv
b2wgc2tpcHNEcmF3LCBib29sIGFuaW1hdGluZywgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJj
ZVByb3ZpZGVyKQogICAgICAgICA6IERpZERyYXdDaGVja0xheWVyKGlkKQogICAgIHsKICAgICAg
ICAgT3duUHRyPENDTGF5ZXJUaWxpbmdEYXRhPiB0aWxpbmdEYXRhID0gQ0NMYXllclRpbGluZ0Rh
dGE6OmNyZWF0ZShJbnRTaXplKDEwLCAxMCksIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRl
eGVscyk7CiAgICAgICAgIHRpbGluZ0RhdGEtPnNldEJvdW5kcyhib3VuZHMoKSk7CiAgICAgICAg
IHNldFRpbGluZ0RhdGEoKnRpbGluZ0RhdGEuZ2V0KCkpOwogICAgICAgICBzZXRTa2lwc0RyYXco
c2tpcHNEcmF3KTsKLSAgICAgICAgaWYgKCF0aWxlTWlzc2luZykKLSAgICAgICAgICAgIHB1c2hU
aWxlUHJvcGVydGllcygwLCAwLCAxLCBJbnRSZWN0KCkpOworICAgICAgICBpZiAoIXRpbGVNaXNz
aW5nKSB7CisgICAgICAgICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgcmVzb3Vy
Y2UgPSByZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShDQ1JlbmRlcmVyOjpDb250ZW50
UG9vbCwgSW50U2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOworICAgICAgICAgICAgcHVzaFRpbGVQcm9wZXJ0aWVzKDAs
IDAsIHJlc291cmNlLCBJbnRSZWN0KCkpOworICAgICAgICB9CiAgICAgICAgIGlmIChhbmltYXRp
bmcpCiAgICAgICAgICAgICBhZGRBbmltYXRlZFRyYW5zZm9ybVRvTGF5ZXIoKnRoaXMsIDEwLCAz
LCAwKTsKICAgICB9CkBAIC03NzcsNyArNzc5LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNlc0NoZWNrZXJib2FyZCkK
ICAgICAvLyBXaGVuIHRoZSB0ZXh0dXJlIGlzIG5vdCBtaXNzaW5nLCB3ZSBkcmF3IGFzIHVzdWFs
LgogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRl
KDEpKTsKICAgICBEaWREcmF3Q2hlY2tMYXllciogcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdD
aGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwotICAgIHJvb3QtPmFkZENoaWxk
KE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgyLCBmYWxzZSwgZmFsc2UsIHRy
dWUpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVyOjpj
cmVhdGUoMiwgZmFsc2UsIGZhbHNlLCB0cnVlLCBtX2hvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVy
KCkpKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKIApAQCAt
Nzg4LDcgKzc5MCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcHJlcGFyZVRv
RHJhd0ZhaWxzV2hlbkFuaW1hdGlvblVzZXNDaGVja2VyYm9hcmQpCiAgICAgLy8gV2hlbiBhIHRl
eHR1cmUgaXMgbWlzc2luZyBhbmQgd2UncmUgbm90IGFuaW1hdGluZywgd2UgZHJhdyBhcyB1c3Vh
bCB3aXRoIGNoZWNrZXJib2FyZGluZy4KICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlk
RHJhd0NoZWNrTGF5ZXI6OmNyZWF0ZSgxKSk7CiAgICAgcm9vdCA9IHN0YXRpY19jYXN0PERpZERy
YXdDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwotICAgIHJvb3QtPmFkZENo
aWxkKE1pc3NpbmdUZXh0dXJlQW5pbWF0aW5nTGF5ZXI6OmNyZWF0ZSgyLCB0cnVlLCBmYWxzZSwg
ZmFsc2UpKTsKKyAgICByb290LT5hZGRDaGlsZChNaXNzaW5nVGV4dHVyZUFuaW1hdGluZ0xheWVy
OjpjcmVhdGUoMiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBtX2hvc3RJbXBsLT5yZXNvdXJjZVByb3Zp
ZGVyKCkpKTsKIAogICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJh
bWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKQEAgLTc5Nyw3ICs3OTks
NyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHByZXBhcmVUb0RyYXdGYWlsc1do
ZW5BbmltYXRpb25Vc2VzQ2hlY2tlcmJvYXJkKQogICAgIC8vIFdoZW4gYSB0ZXh0dXJlIGlzIG1p
c3NpbmcgYW5kIHdlJ3JlIGFuaW1hdGluZywgd2UgZG9uJ3Qgd2FudCB0byBkcmF3IGFueXRoaW5n
LgogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRl
KDEpKTsKICAgICByb290ID0gc3RhdGljX2Nhc3Q8RGlkRHJhd0NoZWNrTGF5ZXIqPihtX2hvc3RJ
bXBsLT5yb290TGF5ZXIoKSk7Ci0gICAgcm9vdC0+YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVBbmlt
YXRpbmdMYXllcjo6Y3JlYXRlKDIsIHRydWUsIGZhbHNlLCB0cnVlKSk7CisgICAgcm9vdC0+YWRk
Q2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6Y3JlYXRlKDIsIHRydWUsIGZhbHNl
LCB0cnVlLCBtX2hvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpKTsKIAogICAgIEVYUEVDVF9G
QUxTRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CiAgICAgbV9ob3N0SW1wbC0+
ZHJhd0xheWVycyhmcmFtZSk7CkBAIC04MDYsNyArODA4LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBwcmVwYXJlVG9EcmF3RmFpbHNXaGVuQW5pbWF0aW9uVXNlc0NoZWNrZXJi
b2FyZCkKICAgICAvLyBXaGVuIHRoZSBsYXllciBza2lwcyBkcmF3IGFuZCB3ZSdyZSBhbmltYXRp
bmcsIHdlIHN0aWxsIGRyYXcgdGhlIGZyYW1lLgogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXll
cihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsKICAgICByb290ID0gc3RhdGljX2Nhc3Q8
RGlkRHJhd0NoZWNrTGF5ZXIqPihtX2hvc3RJbXBsLT5yb290TGF5ZXIoKSk7Ci0gICAgcm9vdC0+
YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdMYXllcjo6Y3JlYXRlKDIsIGZhbHNlLCB0
cnVlLCB0cnVlKSk7CisgICAgcm9vdC0+YWRkQ2hpbGQoTWlzc2luZ1RleHR1cmVBbmltYXRpbmdM
YXllcjo6Y3JlYXRlKDIsIGZhbHNlLCB0cnVlLCB0cnVlLCBtX2hvc3RJbXBsLT5yZXNvdXJjZVBy
b3ZpZGVyKCkpKTsKIAogICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXco
ZnJhbWUpKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKQEAgLTExNzEsNyAr
MTE3Myw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEJsZW5kU3RhdGVDaGVja0xheWVyIDogcHVibGlj
IENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxCbGVuZFN0YXRl
Q2hlY2tMYXllcj4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IEJsZW5kU3Rh
dGVDaGVja0xheWVyKGlkKSk7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxCbGVuZFN0YXRlQ2hl
Y2tMYXllcj4gY3JlYXRlKGludCBpZCwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3Zp
ZGVyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaWQsIHJlc291
cmNlUHJvdmlkZXIpKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZEN1
bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUs
IGJvb2wmKSBPVkVSUklERQogICAgIHsKQEAgLTExODIsNyArMTE4NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIG9wYXF1ZVJlY3QgPSBtX3F1YWRSZWN0OwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBvcGFxdWVSZWN0ID0gbV9vcGFxdWVDb250ZW50UmVjdDsKLSAgICAgICAgT3duUHRyPEND
RHJhd1F1YWQ+IHRlc3RCbGVuZGluZ0RyYXdRdWFkID0gQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShz
aGFyZWRRdWFkU3RhdGUsIG1fcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIDAsIEludFBvaW50KCksIElu
dFNpemUoMSwgMSksIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAg
ICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0QmxlbmRpbmdEcmF3UXVhZCA9IENDVGlsZURyYXdR
dWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBtX3F1YWRSZWN0LCBvcGFxdWVSZWN0LCBtX3Jl
c291cmNlSWQsIEludFBvaW50KCksIEludFNpemUoMSwgMSksIDAsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIHRlc3RCbGVuZGluZ0RyYXdRdWFkLT5zZXRRdWFk
VmlzaWJsZVJlY3QobV9xdWFkVmlzaWJsZVJlY3QpOwogICAgICAgICBFWFBFQ1RfRVEobV9ibGVu
ZCwgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPm5lZWRzQmxlbmRpbmcoKSk7CiAgICAgICAgIEVYUEVD
VF9FUShtX2hhc1JlbmRlclN1cmZhY2UsICEhcmVuZGVyU3VyZmFjZSgpKTsKQEAgLTEyMDQsNyAr
MTIwNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9wYXF1ZUNvbnRlbnRSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpIHsgbV9vcGFxdWVDb250ZW50UmVjdCA9IHJlY3Q7IH0KIAogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBCbGVuZFN0YXRlQ2hlY2tMYXllcihpbnQgaWQpCisgICAgZXhwbGljaXQg
QmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaW50IGlkLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIpCiAgICAgICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgICAgICwgbV9ibGVuZChm
YWxzZSkKICAgICAgICAgLCBtX2hhc1JlbmRlclN1cmZhY2UoZmFsc2UpCkBAIC0xMjEyLDYgKzEy
MTQsNyBAQCBwcml2YXRlOgogICAgICAgICAsIG1fb3BhcXVlQ29udGVudHMoZmFsc2UpCiAgICAg
ICAgICwgbV9xdWFkUmVjdCg1LCA1LCA1LCA1KQogICAgICAgICAsIG1fcXVhZFZpc2libGVSZWN0
KDUsIDUsIDUsIDUpCisgICAgICAgICwgbV9yZXNvdXJjZUlkKHJlc291cmNlUHJvdmlkZXItPmNy
ZWF0ZVJlc291cmNlKENDUmVuZGVyZXI6OkNvbnRlbnRQb29sLCBJbnRTaXplKDEsIDEpLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkp
KQogICAgIHsKICAgICAgICAgc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAg
ICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwpAQCAtMTIyNiw2ICsxMjI5LDcgQEAgcHJp
dmF0ZToKICAgICBJbnRSZWN0IG1fcXVhZFJlY3Q7CiAgICAgSW50UmVjdCBtX29wYXF1ZUNvbnRl
bnRSZWN0OwogICAgIEludFJlY3QgbV9xdWFkVmlzaWJsZVJlY3Q7CisgICAgQ0NSZXNvdXJjZVBy
b3ZpZGVyOjpSZXNvdXJjZUlkIG1fcmVzb3VyY2VJZDsKIH07CiAKIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKQEAgLTEy
NDAsNyArMTI0NCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdP
ZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICB9CiAgICAgQ0NMYXllckltcGwqIHJvb3Qg
PSBtX2hvc3RJbXBsLT5yb290TGF5ZXIoKTsKIAotICAgIHJvb3QtPmFkZENoaWxkKEJsZW5kU3Rh
dGVDaGVja0xheWVyOjpjcmVhdGUoMikpOworICAgIHJvb3QtPmFkZENoaWxkKEJsZW5kU3RhdGVD
aGVja0xheWVyOjpjcmVhdGUoMiwgbV9ob3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKSk7CiAg
ICAgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIqIGxheWVyMSA9IHN0YXRpY19jYXN0PEJsZW5kU3RhdGVD
aGVja0xheWVyKj4ocm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKSk7CiAgICAgbGF5ZXIxLT5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50KDIsIDIpKTsKIApAQCAtMTI5Myw3ICsxMjk3LDcgQEAgVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5
ZXJzKQogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKICAgICBtX2hv
c3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKIAotICAgIGxheWVyMS0+YWRkQ2hpbGQo
QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgzKSk7CisgICAgbGF5ZXIxLT5hZGRDaGlsZChC
bGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDMsIG1faG9zdEltcGwtPnJlc291cmNlUHJvdmlk
ZXIoKSkpOwogICAgIEJsZW5kU3RhdGVDaGVja0xheWVyKiBsYXllcjIgPSBzdGF0aWNfY2FzdDxC
bGVuZFN0YXRlQ2hlY2tMYXllcio+KGxheWVyMS0+Y2hpbGRyZW4oKVswXS5nZXQoKSk7CiAgICAg
bGF5ZXIyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDQsIDQpKTsKIApAQCAtMTQ1NCw3ICsxNDU4
LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB2aWV3cG9ydENvdmVyZWQpCiAg
ICAgSW50U2l6ZSB2aWV3cG9ydFNpemUoMTAwMCwgMTAwMCk7CiAgICAgbV9ob3N0SW1wbC0+c2V0
Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CiAKLSAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5
ZXIoQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgxKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0
Um9vdExheWVyKEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUoMSwgbV9ob3N0SW1wbC0+cmVz
b3VyY2VQcm92aWRlcigpKSk7CiAgICAgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIqIHJvb3QgPSBzdGF0
aWNfY2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RMYXllcigpKTsK
ICAgICByb290LT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgdHJ1ZSk7CiAgICAgcm9vdC0+c2V0T3Bh
cXVlKHRydWUpOwpAQCAtMjk3Miw5ICsyOTc2LDkgQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBDQ1Rl
c3RSZW5kZXJlciA6IHB1YmxpYyBMYXllclJlbmRlcmVyQ2hyb21pdW0sIHB1YmxpYyBDQ1JlbmRl
cmVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Rlc3RSZW5kZXJl
cj4gY3JlYXRlKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8Q0NUZXN0UmVuZGVyZXI+IGNyZWF0ZShDQ1Jlc291cmNlUHJvdmlkZXIq
IHJlc291cmNlUHJvdmlkZXIpCiAgICAgewotICAgICAgICBPd25QdHI8Q0NUZXN0UmVuZGVyZXI+
IHJlbmRlcmVyKGFkb3B0UHRyKG5ldyBDQ1Rlc3RSZW5kZXJlcihjb250ZXh0KSkpOworICAgICAg
ICBPd25QdHI8Q0NUZXN0UmVuZGVyZXI+IHJlbmRlcmVyKGFkb3B0UHRyKG5ldyBDQ1Rlc3RSZW5k
ZXJlcihyZXNvdXJjZVByb3ZpZGVyKSkpOwogICAgICAgICBpZiAoIXJlbmRlcmVyLT5pbml0aWFs
aXplKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk5Niw3ICszMDAwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRl
cyhzaXplX3QpIE9WRVJSSURFIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ0NUZXN0UmVuZGVyZXIo
V2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkgOiBMYXllclJlbmRlcmVyQ2hy
b21pdW0odGhpcywgY29udGV4dCwgVW50aHJvdHRsZWRVcGxvYWRlcikgeyB9CisgICAgQ0NUZXN0
UmVuZGVyZXIoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKSA6IExheWVyUmVu
ZGVyZXJDaHJvbWl1bSh0aGlzLCByZXNvdXJjZVByb3ZpZGVyLCBVbnRocm90dGxlZFVwbG9hZGVy
KSB7IH0KIAogcHJpdmF0ZToKICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIG1fc2V0dGluZ3M7CkBA
IC0zMjc5LDkgKzMyODMsMTAgQEAgc3RhdGljIHZvaWQgdmVyaWZ5UmVuZGVyUGFzc1Rlc3REYXRh
KFRlc3RDYXNlJiB0ZXN0Q2FzZSwgUmVuZGVyUGFzc1JlbW92YWxUZXN0RGEKIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgdGVzdFJlbW92ZVJlbmRlclBhc3NlcykKIHsKICAgICBPd25Q
dHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQoY3JlYXRlQ29udGV4dCgpKTsKLSAgICBXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0Qo
KTsKLSAgICBBU1NFUlRfVFJVRShjb250ZXh0M2QpOwotICAgIE93blB0cjxDQ1Rlc3RSZW5kZXJl
cj4gcmVuZGVyZXIoQ0NUZXN0UmVuZGVyZXI6OmNyZWF0ZShjb250ZXh0M2QpKTsKKyAgICBBU1NF
UlRfVFJVRShjb250ZXh0LT5jb250ZXh0M0QoKSk7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92
aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShjb250ZXh0
LmdldCgpKSk7CisKKyAgICBPd25QdHI8Q0NUZXN0UmVuZGVyZXI+IHJlbmRlcmVyKENDVGVzdFJl
bmRlcmVyOjpjcmVhdGUocmVzb3VyY2VQcm92aWRlci5nZXQoKSkpOwogCiAgICAgaW50IHRlc3RD
YXNlSW5kZXggPSAwOwogICAgIHdoaWxlIChyZW1vdmVSZW5kZXJQYXNzZXNDYXNlc1t0ZXN0Q2Fz
ZUluZGV4XS5uYW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAKaW5kZXggMjFlMGE3MTdjMzZjNzllMmEy
YzAzMjM5MmVmYThhMTBlMTJkYWEwNC4uOTcwMjcwOTVlZGU4ZWI4N2Y3ZWUyYzczNDQ5ODYwNGFi
NGIxNWRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9y
aXRpemVkVGV4dHVyZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcApAQCAtMjcsNyArMjcsOSBAQAogI2luY2x1ZGUg
ImNjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgiCiAKICNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0
Q29tbW9uLmgiCisjaW5jbHVkZSAiRmFrZUNDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAi
Y2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgiCisjaW5jbHVkZSAiY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCiAjaW5jbHVkZSAi
Y2MvQ0NUZXh0dXJlLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIApAQCAtNDIsMTEgKzQ0
LDE2IEBAIHB1YmxpYzoKICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QoKQogICAgICAgICA6
IG1fdGV4dHVyZVNpemUoMjU2LCAyNTYpCiAgICAgICAgICwgbV90ZXh0dXJlRm9ybWF0KEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBKQorICAgICAgICAsIG1fY29udGV4dChXZWJLaXQ6OmNyZWF0ZUZh
a2VDQ0dyYXBoaWNzQ29udGV4dCgpKQogICAgIHsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlciA9IENDUmVzb3Vy
Y2VQcm92aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB+Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0KCkKICAgICB7CisgICAgICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXIuY2xl
YXIoKTsKICAgICB9CiAKICAgICBzaXplX3QgdGV4dHVyZXNNZW1vcnlTaXplKHNpemVfdCB0ZXh0
dXJlQ291bnQpCkBAIC01NiwxMSArNjMsMTIgQEAgcHVibGljOgogCiAgICAgUGFzc093blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IGNyZWF0ZU1hbmFnZXIoc2l6ZV90IG1heFRleHR1
cmVzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIDEwMjQpOworICAgICAgICBy
ZXR1cm4gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUodGV4dHVyZXNNZW1vcnlT
aXplKG1heFRleHR1cmVzKSwgMTAyNCwgMCk7CiAgICAgfQogCiAgICAgYm9vbCB2YWxpZGF0ZVRl
eHR1cmUoT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPiYgdGV4dHVyZSwgYm9vbCByZXF1ZXN0
TGF0ZSkKICAgICB7CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFk
OwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgdGV4dHVyZS0+dGV4dHVyZU1hbmFnZXIo
KS0+YXNzZXJ0SW52YXJpYW50cygpOwogI2VuZGlmCkBAIC02OCwxOSArNzYsMjAgQEAgcHVibGlj
OgogICAgICAgICAgICAgdGV4dHVyZS0+cmVxdWVzdExhdGUoKTsKICAgICAgICAgYm9vbCBzdWNj
ZXNzID0gdGV4dHVyZS0+Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCk7CiAgICAgICAgIGlmIChz
dWNjZXNzKQotICAgICAgICAgICAgdGV4dHVyZS0+YWNxdWlyZUJhY2tpbmdUZXh0dXJlKGFsbG9j
YXRvcigpKTsKKyAgICAgICAgICAgIHRleHR1cmUtPmFjcXVpcmVCYWNraW5nVGV4dHVyZShyZXNv
dXJjZVByb3ZpZGVyKCkpOwogICAgICAgICByZXR1cm4gc3VjY2VzczsKICAgICB9CiAKLSAgICBG
YWtlVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKCkKKyAgICBDQ1Jlc291cmNlUHJvdmlkZXIq
IHJlc291cmNlUHJvdmlkZXIoKQogICAgIHsKLSAgICAgICByZXR1cm4gJm1fZmFrZVRleHR1cmVB
bGxvY2F0b3I7CisgICAgICAgcmV0dXJuIG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKTsKICAgICB9
CiAKIHByb3RlY3RlZDoKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciBtX2Zha2VUZXh0dXJlQWxs
b2NhdG9yOwogICAgIGNvbnN0IEludFNpemUgbV90ZXh0dXJlU2l6ZTsKICAgICBjb25zdCBHQzNE
ZW51bSBtX3RleHR1cmVGb3JtYXQ7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2Nv
bnRleHQ7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gbV9yZXNvdXJjZVByb3ZpZGVy
OwogfTsKIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVxdWVzdFRleHR1cmVF
eGNlZWRpbmdNYXhMaW1pdCkKQEAgLTExOSw3ICsxMjgsOCBAQCBURVNUX0YoQ0NQcmlvcml0aXpl
ZFRleHR1cmVUZXN0LCByZXF1ZXN0VGV4dHVyZUV4Y2VlZGluZ01heExpbWl0KQogICAgIEVYUEVD
VF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+bWVt
b3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1l
bW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkp
OwogCi0gICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICB0ZXh0dXJlTWFuYWdl
ci0+Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKIH0KIAogVEVTVF9GKENDUHJp
b3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5TGltaXRzKQpAQCAtMTM4LDcgKzE0OCwx
MCBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBjaGFuZ2VNZW1vcnlMaW1pdHMp
CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkKICAgICAgICAgdmFsaWRhdGVUZXh0dXJl
KHRleHR1cmVzW2ldLCBmYWxzZSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeShh
bGxvY2F0b3IoKSk7CisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKKyAgICAgICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeShyZXNvdXJjZVBy
b3ZpZGVyKCkpOworICAgIH0KIAogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoOCks
IHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogICAgIEVYUEVDVF9M
RSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9y
eUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CkBAIC0xNDgsNyArMTYxLDEwIEBAIFRFU1RfRihDQ1ByaW9y
aXRpemVkVGV4dHVyZVRlc3QsIGNoYW5nZU1lbW9yeUxpbWl0cykKICAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhU
ZXh0dXJlczsgKytpKQogICAgICAgICBFWFBFQ1RfRVEodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVz
W2ldLCBmYWxzZSksIGkgPCA1KTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KGFs
bG9jYXRvcigpKTsKKyAgICB7CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOworICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KHJlc291cmNlUHJv
dmlkZXIoKSk7CisgICAgfQogCiAgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg1KSwg
dGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAgICAgRVhQRUNUX0xF
KHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5
QWJvdmVDdXRvZmZCeXRlcygpKTsKQEAgLTE1OCwxMiArMTc0LDE2IEBAIFRFU1RfRihDQ1ByaW9y
aXRpemVkVGV4dHVyZVRlc3QsIGNoYW5nZU1lbW9yeUxpbWl0cykKICAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhU
ZXh0dXJlczsgKytpKQogICAgICAgICBFWFBFQ1RfRVEodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVz
W2ldLCBmYWxzZSksIGkgPCA0KTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KGFs
bG9jYXRvcigpKTsKKyAgICB7CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOworICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KHJlc291cmNlUHJv
dmlkZXIoKSk7CisgICAgfQogCiAgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg0KSwg
dGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAgICAgRVhQRUNUX0xF
KHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5
QWJvdmVDdXRvZmZCeXRlcygpKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9y
eShhbGxvY2F0b3IoKSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
CisgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7
CiB9CiAKIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5hZ2VyUGFy
dGlhbFVwZGF0ZVRleHR1cmVzKQpAQCAtMjIyLDcgKzI0Miw4IEBAIFRFU1RfRihDQ1ByaW9yaXRp
emVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5hZ2VyUGFydGlhbFVwZGF0ZVRleHR1cmVzKQogICAg
IEVYUEVDVF9GQUxTRSh0ZXh0dXJlc1syXS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpOwogICAgIEVY
UEVDVF9GQUxTRSh0ZXh0dXJlc1szXS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpOwogCi0gICAgdGV4
dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsKKyAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxN
ZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKIH0KIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0
dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJQcmlvcml0aWVzQXJlRXF1YWwpCkBAIC0yNjEsNyArMjgy
LDggQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJQcmlv
cml0aWVzQXJlRXF1YWwpCiAgICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSg4KSwgdGV4
dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAgICAgRVhQRUNUX0xFKHRl
eHR1cmVNYW5hZ2VyLT5tZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJv
dmVDdXRvZmZCeXRlcygpKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShh
bGxvY2F0b3IoKSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Cisg
ICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9
CiAKIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNYW5hZ2VyRGVzdHJv
eWVkRmlyc3QpCkBAIC0yNzksNyArMzAxLDEwIEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVy
ZVRlc3QsIHRleHR1cmVNYW5hZ2VyRGVzdHJveWVkRmlyc3QpCiAgICAgRVhQRUNUX1RSVUUodGV4
dHVyZS0+Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkpOwogICAgIEVYUEVDVF9UUlVFKHRleHR1
cmUtPmhhdmVCYWNraW5nVGV4dHVyZSgpKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFs
bE1lbW9yeShhbGxvY2F0b3IoKSk7CisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKKyAgICAgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5
KHJlc291cmNlUHJvdmlkZXIoKSk7CisgICAgfQogICAgIHRleHR1cmVNYW5hZ2VyLmNsZWFyKCk7
CiAKICAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZS0+Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkp
OwpAQCAtMzA0LDcgKzMyOSwxMCBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0
ZXh0dXJlTW92ZWRUb05ld01hbmFnZXIpCiAKICAgICB0ZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdl
cigwKTsKIAotICAgIHRleHR1cmVNYW5hZ2VyT25lLT5jbGVhckFsbE1lbW9yeShhbGxvY2F0b3Io
KSk7CisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsK
KyAgICAgICAgdGV4dHVyZU1hbmFnZXJPbmUtPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlk
ZXIoKSk7CisgICAgfQogICAgIHRleHR1cmVNYW5hZ2VyT25lLmNsZWFyKCk7CiAKICAgICBFWFBF
Q1RfRkFMU0UodGV4dHVyZS0+Y2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkpOwpAQCAtMzE4LDcg
KzM0Niw4IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1cmVNb3ZlZFRv
TmV3TWFuYWdlcikKICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlLT5jYW5BY3F1aXJlQmFja2luZ1Rl
eHR1cmUoKSk7CiAgICAgRVhQRUNUX1RSVUUodGV4dHVyZS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkp
OwogCi0gICAgdGV4dHVyZU1hbmFnZXJUd28tPmNsZWFyQWxsTWVtb3J5KGFsbG9jYXRvcigpKTsK
KyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICB0ZXh0dXJlTWFu
YWdlclR3by0+Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKIH0KIAogVEVTVF9G
KENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFp
bGFibGVPdXRzaWRlUm9vdFN1cmZhY2UpCkBAIC0zNjMsNyArMzkyLDggQEAgVEVTVF9GKENDUHJp
b3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1Y2VNZW1vcnlBdmFpbGFibGVP
dXRzaWRlUm9vdFMKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDQpLCB0ZXh0dXJl
TWFuYWdlci0+bWVtb3J5Rm9yU2VsZk1hbmFnZWRUZXh0dXJlcygpKTsKICAgICBFWFBFQ1RfTEUo
dGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlB
Ym92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5
KGFsbG9jYXRvcigpKTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsK
KyAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJBbGxNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsK
IH0KIAogVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgcmVuZGVyU3VyZmFjZXNSZWR1
Y2VNZW1vcnlBdmFpbGFibGVGb3JSZXF1ZXN0TGF0ZSkKQEAgLTM5OSw3ICs0MjksOCBAQCBURVNU
X0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2
YWlsYWJsZUZvclJlcXVlc3RMYQogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCks
IHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JTZWxmTWFuYWdlZFRleHR1cmVzKCkpOwogICAgIEVY
UEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXIt
Pm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKLSAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJB
bGxNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOworICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3Zp
ZGVyKCkpOwogfQogCiBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB3aGVuUmVuZGVy
U3VyZmFjZU5vdEF2YWlsYWJsZVRleHR1cmVzQWxzb05vdEF2YWlsYWJsZSkKQEAgLTQzOCw3ICs0
NjksOCBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB3aGVuUmVuZGVyU3VyZmFj
ZU5vdEF2YWlsYWJsZVRleHR1cmVzQWxzb05vdEF2YQogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01l
bW9yeVNpemUoMiksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JTZWxmTWFuYWdlZFRleHR1cmVz
KCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4
dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKLSAgICB0ZXh0dXJlTWFu
YWdlci0+Y2xlYXJBbGxNZW1vcnkoYWxsb2NhdG9yKCkpOworICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsVGhyZWFkOworICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShy
ZXNvdXJjZVByb3ZpZGVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggNTY3MzE3OTFk
MDk4ZDY0OGI4NWFiNGUwMWE2OTk2OWJlYzhkNzMxNi4uY2Q3YTM5NmJkMGQ3NmUxYTUyZTM3MTMz
M2U0Yzg0ZDU3NGVmMDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC03NSwxMSArNzUsMTEgQEAgc3RhdGljIFBhc3NPd25Q
dHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVyKENDVGlsZWRMYXllckltcGwqIHBhcmVudCwg
Y29uc3QgV2UKICAgICBsYXllci0+c2V0Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOwogICAgIGxh
eWVyLT5zZXRDb250ZW50Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOwogCi0gICAgaW50IHRleHR1
cmVJZCA9IDE7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQg
PSAxOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGlsZXItPm51bVRpbGVzWCgpOyArK2kpCiAg
ICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdGlsZXItPm51bVRpbGVzWSgpOyArK2opIHsKICAg
ICAgICAgICAgIEludFJlY3QgdGlsZU9wYXF1ZVJlY3QgPSBvcGFxdWUgPyB0aWxlci0+dGlsZUJv
dW5kcyhpLCBqKSA6IGludGVyc2VjdGlvbih0aWxlci0+dGlsZUJvdW5kcyhpLCBqKSwgbGF5ZXJP
cGFxdWVSZWN0KTsKLSAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwg
c3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4odGV4dHVyZUlkKyspLCB0aWxlT3BhcXVlUmVj
dCk7CisgICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHJlc291cmNl
SWQrKywgdGlsZU9wYXF1ZVJlY3QpOwogICAgICAgICB9CiAKICAgICBpZiAoIXBhcmVudCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jlc291cmNlUHJvdmlk
ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZXNvdXJjZVByb3Zp
ZGVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTcxNjVlNmNhN2ZjMjU0MjEyZjlkZDJiNzE1ZDRiNGIz
Mzc0MmM5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NSZXNvdXJjZVByb3ZpZGVyVGVzdC5jcHAKQEAgLTAsMCArMSwzMDYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDUmVzb3VyY2VQcm92aWRl
ci5oIgorCisjaW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgor
I2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCisjaW5jbHVkZSAiY2MvQ0NHcmFwaGlj
c0NvbnRleHQuaCIKKyNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiIC8vIEZvciBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K25hbWVzcGFjZSB7CisKK2NsYXNzIFJlc291cmNlUHJvdmlkZXJDb250ZXh0IDogcHVibGljIENv
bXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFJlc291cmNlUHJvdmlkZXJDb250ZXh0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFB0cihuZXcgUmVzb3VyY2VQcm92aWRlckNvbnRleHQoQXR0cmlidXRlcygpKSk7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBiaW5kVGV4dHVyZShXR0MzRGVudW0gdGFyZ2V0LCBXZWJHTElkIHRleHR1
cmUpCisgICAgeworICAgICAgQVNTRVJUKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCk7CisgICAgICBBU1NFUlQoIXRleHR1cmUgfHwgbV90ZXh0dXJlcy5maW5kKHRleHR1
cmUpICE9IG1fdGV4dHVyZXMuZW5kKCkpOworICAgICAgbV9jdXJyZW50VGV4dHVyZSA9IHRleHR1
cmU7CisgICAgfQorCisgICAgdmlydHVhbCBXZWJHTElkIGNyZWF0ZVRleHR1cmUoKQorICAgIHsK
KyAgICAgICAgV2ViR0xJZCBpZCA9IENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgbV90ZXh0dXJlcy5hZGQoaWQsIG51bGxwdHIpOwor
ICAgICAgICByZXR1cm4gaWQ7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1
cmUoV2ViR0xJZCBpZCkKKyAgICB7CisgICAgICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0g
bV90ZXh0dXJlcy5maW5kKGlkKTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IG1fdGV4dHVyZXMuZW5k
KCkpOworICAgICAgICBtX3RleHR1cmVzLnJlbW92ZShpdCk7CisgICAgICAgIGlmIChtX2N1cnJl
bnRUZXh0dXJlID09IGlkKQorICAgICAgICAgICAgbV9jdXJyZW50VGV4dHVyZSA9IDA7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIHRleFN0b3JhZ2UyREVYVChXR0MzRGVudW0gdGFyZ2V0LCBX
R0MzRGludCBsZXZlbHMsIFdHQzNEdWludCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdHQzNEaW50IHdpZHRoLCBXR0MzRGludCBoZWlnaHQpCisgICAg
eworICAgICAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZSk7CisgICAgICAgIEFTU0VSVCh0YXJn
ZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpOworICAgICAgICBBU1NFUlQobGV2
ZWxzID09IDEpOworICAgICAgICBXR0MzRGVudW0gZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkE7CisgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpIHsKKyAgICAgICAgY2FzZSBF
eHRlbnNpb25zM0Q6OlJHQkE4X09FUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEV4dGVuc2lvbnMzRENocm9taXVtOjpCR1JBOF9FWFQ6CisgICAgICAgICAgICBmb3JtYXQgPSBF
eHRlbnNpb25zM0Q6OkJHUkFfRVhUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAg
ICBhbGxvY2F0ZVRleHR1cmUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgZm9ybWF0KTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGlu
dCBsZXZlbCwgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0Mz
RHNpemVpIGhlaWdodCwgV0dDM0RpbnQgYm9yZGVyLCBXR0MzRGVudW0gZm9ybWF0LCBXR0MzRGVu
dW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY3Vy
cmVudFRleHR1cmUpOworICAgICAgICBBU1NFUlQodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJEKTsKKyAgICAgICAgQVNTRVJUKCFsZXZlbCk7CisgICAgICAgIEFTU0VSVChp
bnRlcm5hbGZvcm1hdCA9PSBmb3JtYXQpOworICAgICAgICBBU1NFUlQoIWJvcmRlcik7CisgICAg
ICAgIEFTU0VSVCh0eXBlID09IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKTsKKyAg
ICAgICAgYWxsb2NhdGVUZXh0dXJlKEludFNpemUod2lkdGgsIGhlaWdodCksIGZvcm1hdCk7Cisg
ICAgICAgIGlmIChwaXhlbHMpCisgICAgICAgICAgICBzZXRQaXhlbHMoMCwgMCwgd2lkdGgsIGhl
aWdodCwgcGl4ZWxzKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChX
R0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNldCwgV0dDM0Rp
bnQgeW9mZnNldCwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEZW51
bSBmb3JtYXQsIFdHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZSk7CisgICAgICAgIEFTU0VSVCh0YXJnZXQgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpOworICAgICAgICBBU1NFUlQoIWxldmVsKTsK
KyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXMuZ2V0KG1fY3VycmVudFRleHR1cmUpKTsKKyAgICAg
ICAgQVNTRVJUKG1fdGV4dHVyZXMuZ2V0KG1fY3VycmVudFRleHR1cmUpLT5mb3JtYXQgPT0gZm9y
bWF0KTsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUpOworICAgICAgICBBU1NFUlQocGl4ZWxzKTsKKyAgICAgICAgc2V0UGl4ZWxzKHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIHBpeGVscyk7CisgICAgfQorCisgICAgdm9pZCBn
ZXRQaXhlbHMoY29uc3QgSW50U2l6ZSYgc2l6ZSwgV0dDM0RlbnVtIGZvcm1hdCwgdWludDhfdCog
cGl4ZWxzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmUpOworICAgICAg
ICBUZXh0dXJlKiB0ZXh0dXJlID0gbV90ZXh0dXJlcy5nZXQobV9jdXJyZW50VGV4dHVyZSk7Cisg
ICAgICAgIEFTU0VSVCh0ZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUKHRleHR1cmUtPnNpemUgPT0g
c2l6ZSk7CisgICAgICAgIEFTU0VSVCh0ZXh0dXJlLT5mb3JtYXQgPT0gZm9ybWF0KTsKKyAgICAg
ICAgbWVtY3B5KHBpeGVscywgdGV4dHVyZS0+ZGF0YS5nZXQoKSwgdGV4dHVyZVNpemUoc2l6ZSwg
Zm9ybWF0KSk7CisgICAgfQorCisgICAgaW50IHRleHR1cmVDb3VudCgpCisgICAgeworICAgICAg
ICByZXR1cm4gbV90ZXh0dXJlcy5zaXplKCk7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCB0
ZXh0dXJlU2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBXR0MzRGVudW0gZm9ybWF0KQorICAgIHsK
KyAgICAgICAgdW5zaWduZWQgaW50IGNvbXBvbmVudHNQZXJQaXhlbCA9IDQ7CisgICAgICAgIHVu
c2lnbmVkIGludCBieXRlc1BlckNvbXBvbmVudCA9IDE7CisgICAgICAgIEdyYXBoaWNzQ29udGV4
dDNEOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoZm9ybWF0LCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURSwgJmNvbXBvbmVudHNQZXJQaXhlbCwgJmJ5dGVzUGVyQ29tcG9u
ZW50KTsKKyAgICAgICAgcmV0dXJuIHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgKiBjb21w
b25lbnRzUGVyUGl4ZWwgKiBieXRlc1BlckNvbXBvbmVudDsKKyAgICB9CisKK3Byb3RlY3RlZDoK
KyAgICBleHBsaWNpdCBSZXNvdXJjZVByb3ZpZGVyQ29udGV4dChjb25zdCBBdHRyaWJ1dGVzJiBh
dHRycykKKyAgICAgICAgOiBDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEKGF0dHJz
KQorICAgICAgICAsIG1fY3VycmVudFRleHR1cmUoMCkKKyAgICB7IH0KKworcHJpdmF0ZToKKyAg
ICBzdHJ1Y3QgVGV4dHVyZSB7CisgICAgICAgIFRleHR1cmUoY29uc3QgSW50U2l6ZSYgc2l6ZV8s
IFdHQzNEZW51bSBmb3JtYXRfKQorICAgICAgICAgICAgOiBzaXplKHNpemVfKQorICAgICAgICAg
ICAgLCBmb3JtYXQoZm9ybWF0XykKKyAgICAgICAgICAgICwgZGF0YShhZG9wdEFycmF5UHRyKG5l
dyB1aW50OF90W3RleHR1cmVTaXplKHNpemUsIGZvcm1hdCldKSkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgSW50U2l6ZSBzaXplOworICAgICAgICBXR0MzRGVudW0gZm9ybWF0Owor
ICAgICAgICBPd25BcnJheVB0cjx1aW50OF90PiBkYXRhOworICAgIH07CisKKyAgICB2b2lkIGFs
bG9jYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiBzaXplLCBXR0MzRGVudW0gZm9ybWF0KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmUpOworICAgICAgICBtX3RleHR1cmVz
LnNldChtX2N1cnJlbnRUZXh0dXJlLCBhZG9wdFB0cihuZXcgVGV4dHVyZShzaXplLCBmb3JtYXQp
KSk7CisgICAgfQorCisgICAgdm9pZCBzZXRQaXhlbHMoaW50IHhvZmZzZXQsIGludCB5b2Zmc2V0
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IHZvaWQqIHBpeGVscykKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlKTsKKyAgICAgICAgVGV4dHVyZSogdGV4dHVyZSA9
IG1fdGV4dHVyZXMuZ2V0KG1fY3VycmVudFRleHR1cmUpOworICAgICAgICBBU1NFUlQodGV4dHVy
ZSk7CisgICAgICAgIEFTU0VSVCh4b2Zmc2V0ID49IDAgJiYgeG9mZnNldCt3aWR0aCA8PSB0ZXh0
dXJlLT5zaXplLndpZHRoKCkpOworICAgICAgICBBU1NFUlQoeW9mZnNldCA+PSAwICYmIHlvZmZz
ZXQraGVpZ2h0IDw9IHRleHR1cmUtPnNpemUuaGVpZ2h0KCkpOworICAgICAgICBBU1NFUlQocGl4
ZWxzKTsKKyAgICAgICAgc2l6ZV90IGluUGl0Y2ggPSB0ZXh0dXJlU2l6ZShJbnRTaXplKHdpZHRo
LCAxKSwgdGV4dHVyZS0+Zm9ybWF0KTsKKyAgICAgICAgc2l6ZV90IG91dFBpdGNoID0gdGV4dHVy
ZVNpemUoSW50U2l6ZSh0ZXh0dXJlLT5zaXplLndpZHRoKCksIDEpLCB0ZXh0dXJlLT5mb3JtYXQp
OworICAgICAgICB1aW50OF90KiBkZXN0ID0gdGV4dHVyZS0+ZGF0YS5nZXQoKSArIHlvZmZzZXQg
KiBvdXRQaXRjaCArIHRleHR1cmVTaXplKEludFNpemUoeG9mZnNldCwgMSksIHRleHR1cmUtPmZv
cm1hdCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHNyYyA9IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihwaXhlbHMpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgKytp
KSB7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwgc3JjLCBpblBpdGNoKTsKKyAgICAgICAgICAg
IGRlc3QgKz0gb3V0UGl0Y2g7CisgICAgICAgICAgICBzcmMgKz0gaW5QaXRjaDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJHTElkLCBPd25QdHI8VGV4dHVyZT4g
PiBUZXh0dXJlTWFwOworICAgIFdlYkdMSWQgbV9jdXJyZW50VGV4dHVyZTsKKyAgICBUZXh0dXJl
TWFwIG1fdGV4dHVyZXM7Cit9OworCitjbGFzcyBDQ1Jlc291cmNlUHJvdmlkZXJUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIENDUmVzb3VyY2VQcm92aWRlclRlc3Qo
KQorICAgICAgICA6IG1fY29udGV4dChDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoUmVzb3Vy
Y2VQcm92aWRlckNvbnRleHQ6OmNyZWF0ZSgpKSkKKyAgICAgICAgLCBtX3Jlc291cmNlUHJvdmlk
ZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKSkKKyAgICB7Cisg
ICAgfQorCisgICAgUmVzb3VyY2VQcm92aWRlckNvbnRleHQqIGNvbnRleHQoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxSZXNvdXJjZVByb3ZpZGVyQ29udGV4dCo+KG1fY29udGV4dC0+Y29udGV4dDNE
KCkpOyB9CisKKyAgICB2b2lkIGdldFJlc291cmNlUGl4ZWxzKENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBpZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgV0dDM0RlbnVtIGZvcm1hdCwgdWlu
dDhfdCogcGl4ZWxzKQorICAgIHsKKyAgICAgICAgQ0NTY29wZWRMb2NrUmVzb3VyY2VGb3JSZWFk
IGxvY2sobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCBpZCk7CisgICAgICAgIEFTU0VSVF9ORSgw
VSwgbG9jay50ZXh0dXJlSWQoKSk7CisgICAgICAgIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGxvY2sudGV4dHVyZUlkKCkpOworICAgICAgICBj
b250ZXh0KCktPmdldFBpeGVscyhzaXplLCBmb3JtYXQsIHBpeGVscyk7CisgICAgfQorCitwcm90
ZWN0ZWQ6CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgT3du
UHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgT3duUHRyPENDUmVzb3VyY2VQ
cm92aWRlcj4gbV9yZXNvdXJjZVByb3ZpZGVyOworfTsKKworVEVTVF9GKENDUmVzb3VyY2VQcm92
aWRlclRlc3QsIEJhc2ljKQoreworICAgIEludFNpemUgc2l6ZSgxLCAxKTsKKyAgICBXR0MzRGVu
dW0gZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CisgICAgaW50IHBvb2wgPSAxOwor
ICAgIHNpemVfdCBwaXhlbFNpemUgPSBSZXNvdXJjZVByb3ZpZGVyQ29udGV4dDo6dGV4dHVyZVNp
emUoc2l6ZSwgZm9ybWF0KTsKKyAgICBBU1NFUlRfRVEoNFUsIHBpeGVsU2l6ZSk7CisKKyAgICBD
Q1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgaWQgPSBtX3Jlc291cmNlUHJvdmlkZXItPmNy
ZWF0ZVJlc291cmNlKHBvb2wsIHNpemUsIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0
dXJlVXNhZ2VBbnkpOworICAgIEVYUEVDVF9FUSgxLCBjb250ZXh0KCktPnRleHR1cmVDb3VudCgp
KTsKKworICAgIHVpbnQ4X3QgZGF0YVs0XSA9IHsxLCAyLCAzLCA0fTsKKyAgICBJbnRSZWN0IHJl
Y3QoSW50UG9pbnQoKSwgc2l6ZSk7CisgICAgbV9yZXNvdXJjZVByb3ZpZGVyLT51cGxvYWQoaWQs
IGRhdGEsIHJlY3QsIHJlY3QsIHJlY3QpOworCisgICAgdWludDhfdCByZXN1bHRbNF0gPSB7MH07
CisgICAgZ2V0UmVzb3VyY2VQaXhlbHMoaWQsIHNpemUsIGZvcm1hdCwgcmVzdWx0KTsKKyAgICBF
WFBFQ1RfRVEoMCwgbWVtY21wKGRhdGEsIHJlc3VsdCwgcGl4ZWxTaXplKSk7CisKKyAgICBtX3Jl
c291cmNlUHJvdmlkZXItPmRlbGV0ZVJlc291cmNlKGlkKTsKKyAgICBFWFBFQ1RfRVEoMCwgY29u
dGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7Cit9CisKK1RFU1RfRihDQ1Jlc291cmNlUHJvdmlkZXJU
ZXN0LCBEZWxldGVPd25lZFJlc291cmNlcykKK3sKKyAgICBJbnRTaXplIHNpemUoMSwgMSk7Cisg
ICAgV0dDM0RlbnVtIGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOworICAgIGludCBw
b29sID0gMTsKKworICAgIGNvbnN0IGludCBjb3VudCA9IDM7CisgICAgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIGlkc1tjb3VudF0gPSB7MH07CisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjb3VudDsgKytpKQorICAgICAgICBpZHNbaV0gPSBtX3Jlc291cmNlUHJvdmlkZXItPmNyZWF0
ZVJlc291cmNlKHBvb2wsIHNpemUsIGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJl
VXNhZ2VBbnkpOworICAgIEVYUEVDVF9FUSgzLCBjb250ZXh0KCktPnRleHR1cmVDb3VudCgpKTsK
KworICAgIG1fcmVzb3VyY2VQcm92aWRlci0+ZGVsZXRlT3duZWRSZXNvdXJjZXMocG9vbCsxKTsK
KyAgICBFWFBFQ1RfRVEoMywgY29udGV4dCgpLT50ZXh0dXJlQ291bnQoKSk7CisKKyAgICBtX3Jl
c291cmNlUHJvdmlkZXItPmRlbGV0ZU93bmVkUmVzb3VyY2VzKHBvb2wpOworICAgIEVYUEVDVF9F
USgwLCBjb250ZXh0KCktPnRleHR1cmVDb3VudCgpKTsKK30KKworVEVTVF9GKENDUmVzb3VyY2VQ
cm92aWRlclRlc3QsIFVwbG9hZCkKK3sKKyAgICBJbnRTaXplIHNpemUoMiwgMik7CisgICAgV0dD
M0RlbnVtIGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOworICAgIGludCBwb29sID0g
MTsKKyAgICBzaXplX3QgcGl4ZWxTaXplID0gUmVzb3VyY2VQcm92aWRlckNvbnRleHQ6OnRleHR1
cmVTaXplKHNpemUsIGZvcm1hdCk7CisgICAgQVNTRVJUX0VRKDE2VSwgcGl4ZWxTaXplKTsKKwor
ICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZCA9IG1fcmVzb3VyY2VQcm92aWRl
ci0+Y3JlYXRlUmVzb3VyY2UocG9vbCwgc2l6ZSwgZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXI6
OlRleHR1cmVVc2FnZUFueSk7CisKKyAgICB1aW50OF90IGltYWdlWzE2XSA9IHswfTsKKyAgICBJ
bnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCBzaXplKTsKKyAgICBtX3Jlc291cmNlUHJvdmlk
ZXItPnVwbG9hZChpZCwgaW1hZ2UsIGltYWdlUmVjdCwgaW1hZ2VSZWN0LCBpbWFnZVJlY3QpOwor
CisgICAgZm9yICh1aW50OF90IGkgPSAwIDsgaSA8IHBpeGVsU2l6ZTsgKytpKQorICAgICAgICBp
bWFnZVtpXSA9IGk7CisKKyAgICB1aW50OF90IHJlc3VsdFsxNl0gPSB7MH07CisgICAgeworICAg
ICAgICBJbnRSZWN0IHNvdXJjZVJlY3QoMCwgMCwgMSwgMSk7CisgICAgICAgIEludFJlY3QgZGVz
dFJlY3QoMCwgMCwgMSwgMSk7CisgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlci0+dXBsb2FkKGlk
LCBpbWFnZSwgaW1hZ2VSZWN0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisKKyAgICAgICAgdWlu
dDhfdCBleHBlY3RlZFsxNl0gPSB7MCwgMSwgMiwgMywgICAwLCAwLCAwLCAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAgIDAsIDAsIDAsIDB9OworICAgICAg
ICBnZXRSZXNvdXJjZVBpeGVscyhpZCwgc2l6ZSwgZm9ybWF0LCByZXN1bHQpOworICAgICAgICBF
WFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkLCByZXN1bHQsIHBpeGVsU2l6ZSkpOworICAgIH0K
KyAgICB7CisgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCgwLCAwLCAxLCAxKTsKKyAgICAgICAg
SW50UmVjdCBkZXN0UmVjdCgxLCAxLCAxLCAxKTsKKyAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVy
LT51cGxvYWQoaWQsIGltYWdlLCBpbWFnZVJlY3QsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKwor
ICAgICAgICB1aW50OF90IGV4cGVjdGVkWzE2XSA9IHswLCAxLCAyLCAzLCAgIDAsIDAsIDAsIDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsICAgMCwgMSwgMiwg
M307CisgICAgICAgIGdldFJlc291cmNlUGl4ZWxzKGlkLCBzaXplLCBmb3JtYXQsIHJlc3VsdCk7
CisgICAgICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWQsIHJlc3VsdCwgcGl4ZWxTaXpl
KSk7CisgICAgfQorICAgIHsKKyAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0KDEsIDAsIDEsIDEp
OworICAgICAgICBJbnRSZWN0IGRlc3RSZWN0KDAsIDEsIDEsIDEpOworICAgICAgICBtX3Jlc291
cmNlUHJvdmlkZXItPnVwbG9hZChpZCwgaW1hZ2UsIGltYWdlUmVjdCwgc291cmNlUmVjdCwgZGVz
dFJlY3QpOworCisgICAgICAgIHVpbnQ4X3QgZXhwZWN0ZWRbMTZdID0gezAsIDEsIDIsIDMsICAg
MCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwgNSwgNiwgNywg
ICAwLCAxLCAyLCAzfTsKKyAgICAgICAgZ2V0UmVzb3VyY2VQaXhlbHMoaWQsIHNpemUsIGZvcm1h
dCwgcmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZCwgcmVzdWx0
LCBwaXhlbFNpemUpKTsKKyAgICB9CisKKyAgICBtX3Jlc291cmNlUHJvdmlkZXItPmRlbGV0ZVJl
c291cmNlKGlkKTsKK30KKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY29wZWRUZXh0dXJlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU2NvcGVkVGV4dHVyZVRlc3QuY3BwCmluZGV4IDRkNDY0ZWE1MTQz
OGVhODNmNzAyZTlmNTY2MzBmNWRiMWY3YjY2ZmEuLjUwNWFlOTYyNWVjYWM5ZDQ4N2IxNjVmMmFi
NTk3NTBlNzQ4OTRjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NTY29wZWRUZXh0dXJlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1Njb3BlZFRleHR1cmVUZXN0LmNwcApAQCAtMjcsNyArMjcsMTAgQEAKICNpbmNsdWRlICJj
Yy9DQ1Njb3BlZFRleHR1cmUuaCIKIAogI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24u
aCIKKyNpbmNsdWRlICJGYWtlQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgorI2luY2x1ZGUgImNjL0NDUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJjYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmgiIC8vIEZvciBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKIAog
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKQEAgLTM5LDggKzQyLDEwIEBAIG5hbWVzcGFjZSB7
CiAKIFRFU1QoQ0NTY29wZWRUZXh0dXJlVGVzdCwgTmV3U2NvcGVkVGV4dHVyZSkKIHsKLSAgICBG
YWtlVGV4dHVyZUFsbG9jYXRvciBhbGxvY2F0b3I7Ci0gICAgT3duUHRyPENDU2NvcGVkVGV4dHVy
ZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKCZhbGxvY2F0b3IpOworICAgIE93
blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dChjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRl
eHQoKSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgT3du
UHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlk
ZXI6OmNyZWF0ZShjb250ZXh0LmdldCgpKSk7CisgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4g
dGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKHJlc291cmNlUHJvdmlkZXIuZ2V0KCkp
OwogCiAgICAgLy8gTmV3IHNjb3BlZCB0ZXh0dXJlcyBkbyBub3QgaG9sZCBhIHRleHR1cmUgeWV0
LgogICAgIEVYUEVDVF9FUSgwdSwgdGV4dHVyZS0+aWQoKSk7CkBAIC01Miw5ICs1NywxMSBAQCBU
RVNUKENDU2NvcGVkVGV4dHVyZVRlc3QsIE5ld1Njb3BlZFRleHR1cmUpCiAKIFRFU1QoQ0NTY29w
ZWRUZXh0dXJlVGVzdCwgQ3JlYXRlU2NvcGVkVGV4dHVyZSkKIHsKLSAgICBGYWtlVGV4dHVyZUFs
bG9jYXRvciBhbGxvY2F0b3I7Ci0gICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9
IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKCZhbGxvY2F0b3IpOwotICAgIHRleHR1cmUtPmFsbG9j
YXRlKEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgIE93blB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4dChjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRleHQo
KSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgT3duUHRy
PENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6
OmNyZWF0ZShjb250ZXh0LmdldCgpKSk7CisgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4
dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwor
ICAgIHRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBJbnRTaXplKDMwLCAz
MCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVV
c2FnZUFueSk7CiAKICAgICAvLyBUaGUgdGV4dHVyZSBoYXMgYW4gYWxsb2NhdGVkIGJ5dGUtc2l6
ZSBub3cuCiAgICAgc2l6ZV90IGV4cGVjdGVkQnl0ZXMgPSAzMCAqIDMwICogNDsKQEAgLTY1LDk1
ICs3Miw1OCBAQCBURVNUKENDU2NvcGVkVGV4dHVyZVRlc3QsIENyZWF0ZVNjb3BlZFRleHR1cmUp
CiAgICAgRVhQRUNUX0VRKEludFNpemUoMzAsIDMwKSwgdGV4dHVyZS0+c2l6ZSgpKTsKIH0KIAot
Ly8gRmFrZSBUZXh0dXJlQWxsb2NhdG9yIHRoYXQgdHJhY2tzIHRoZSBudW1iZXIgb2YgdGV4dHVy
ZXMgaW4gdXNlLgotY2xhc3MgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRleHR1
cmVBbGxvY2F0b3IgewotcHVibGljOgotICAgIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcigpCi0g
ICAgICAgIDogbV9uZXh0VGV4dHVyZUlkKDEpCi0gICAgICAgICwgbV9udW1UZXh0dXJlcygwKQot
ICAgIHsgfQotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBHQzNEZW51bSkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IGlkID0gbV9uZXh0VGV4dHVyZUlkOwotICAgICAgICArK21fbmV4dFRleHR1cmVJZDsKLQotICAg
ICAgICBtX3RleHR1cmVzLnNldChpZCwgdHJ1ZSk7Ci0gICAgICAgICsrbV9udW1UZXh0dXJlczsK
LSAgICAgICAgcmV0dXJuIGlkOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0
dXJlKHVuc2lnbmVkIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgR0MzRGVudW0pIE9WRVJS
SURFCi0gICAgewotICAgICAgICBpZiAoIW1fdGV4dHVyZXMuZ2V0KGlkKSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBtX3RleHR1cmVzLnNldChpZCwgZmFsc2UpOwotICAgICAgICAt
LW1fbnVtVGV4dHVyZXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUFsbFRleHR1
cmVzKCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIG1fdGV4dHVyZXMuY2xlYXIoKTsKLSAgICAg
ICAgbV9udW1UZXh0dXJlcyA9IDA7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbnVtVGV4dHVyZXMo
KSBjb25zdCB7IHJldHVybiBtX251bVRleHR1cmVzOyB9Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWdu
ZWQgbV9uZXh0VGV4dHVyZUlkOwotICAgIEhhc2hNYXA8dW5zaWduZWQsIGJvb2w+IG1fdGV4dHVy
ZXM7Ci0gICAgdW5zaWduZWQgbV9udW1UZXh0dXJlczsKLX07Ci0KIFRFU1QoQ0NTY29wZWRUZXh0
dXJlVGVzdCwgU2NvcGVkVGV4dHVyZUlzRGVsZXRlZCkKIHsKLSAgICBUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IgYWxsb2NhdG9yOworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY29udGV4
dChjcmVhdGVGYWtlQ0NHcmFwaGljc0NvbnRleHQoKSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3Vy
Y2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShjb250ZXh0LmdldCgpKSk7CiAK
ICAgICB7Ci0gICAgICAgIE93blB0cjxDQ1Njb3BlZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3Bl
ZFRleHR1cmU6OmNyZWF0ZSgmYWxsb2NhdG9yKTsKKyAgICAgICAgT3duUHRyPENDU2NvcGVkVGV4
dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKHJlc291cmNlUHJvdmlkZXIu
Z2V0KCkpOwogCi0gICAgICAgIEVYUEVDVF9FUSgwdSwgYWxsb2NhdG9yLm51bVRleHR1cmVzKCkp
OwotICAgICAgICB0ZXh0dXJlLT5hbGxvY2F0ZShJbnRTaXplKDMwLCAzMCksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBKTsKKyAgICAgICAgRVhQRUNUX0VRKDB1LCByZXNvdXJjZVByb3ZpZGVyLT5u
dW1SZXNvdXJjZXMoKSk7CisgICAgICAgIHRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6Oklt
cGxQb29sLCBJbnRTaXplKDMwLCAzMCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBDQ1Jlc291
cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7CiAgICAgICAgIEVYUEVDVF9MVCgwdSwgdGV4
dHVyZS0+aWQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgYWxsb2NhdG9yLm51bVRleHR1cmVz
KCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIHJlc291cmNlUHJvdmlkZXItPm51bVJlc291cmNl
cygpKTsKICAgICB9CiAKLSAgICBFWFBFQ1RfRVEoMHUsIGFsbG9jYXRvci5udW1UZXh0dXJlcygp
KTsKKyAgICBFWFBFQ1RfRVEoMHUsIHJlc291cmNlUHJvdmlkZXItPm51bVJlc291cmNlcygpKTsK
IAogICAgIHsKLSAgICAgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2Nv
cGVkVGV4dHVyZTo6Y3JlYXRlKCZhbGxvY2F0b3IpOwotICAgICAgICBFWFBFQ1RfRVEoMHUsIGFs
bG9jYXRvci5udW1UZXh0dXJlcygpKTsKLSAgICAgICAgdGV4dHVyZS0+YWxsb2NhdGUoSW50U2l6
ZSgzMCwgMzApLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgIE93blB0cjxDQ1Nj
b3BlZFRleHR1cmU+IHRleHR1cmUgPSBDQ1Njb3BlZFRleHR1cmU6OmNyZWF0ZShyZXNvdXJjZVBy
b3ZpZGVyLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDB1LCByZXNvdXJjZVByb3ZpZGVyLT5u
dW1SZXNvdXJjZXMoKSk7CisgICAgICAgIHRleHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6Oklt
cGxQb29sLCBJbnRTaXplKDMwLCAzMCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBDQ1Jlc291
cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueSk7CiAgICAgICAgIEVYUEVDVF9MVCgwdSwgdGV4
dHVyZS0+aWQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgYWxsb2NhdG9yLm51bVRleHR1cmVz
KCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIHJlc291cmNlUHJvdmlkZXItPm51bVJlc291cmNl
cygpKTsKICAgICAgICAgdGV4dHVyZS0+ZnJlZSgpOwotICAgICAgICBFWFBFQ1RfRVEoMHUsIGFs
bG9jYXRvci5udW1UZXh0dXJlcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDB1LCByZXNvdXJjZVBy
b3ZpZGVyLT5udW1SZXNvdXJjZXMoKSk7CiAgICAgfQogfQogCiBURVNUKENDU2NvcGVkVGV4dHVy
ZVRlc3QsIExlYWtTY29wZWRUZXh0dXJlKQogewotICAgIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRv
ciBhbGxvY2F0b3I7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KGNyZWF0
ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpKTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiByZXNvdXJjZVByb3Zp
ZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKIAogICAgIHsK
LSAgICAgICAgT3duUHRyPENDU2NvcGVkVGV4dHVyZT4gdGV4dHVyZSA9IENDU2NvcGVkVGV4dHVy
ZTo6Y3JlYXRlKCZhbGxvY2F0b3IpOworICAgICAgICBPd25QdHI8Q0NTY29wZWRUZXh0dXJlPiB0
ZXh0dXJlID0gQ0NTY29wZWRUZXh0dXJlOjpjcmVhdGUocmVzb3VyY2VQcm92aWRlci5nZXQoKSk7
CiAKLSAgICAgICAgRVhQRUNUX0VRKDB1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7Ci0gICAg
ICAgIHRleHR1cmUtPmFsbG9jYXRlKEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEpOworICAgICAgICBFWFBFQ1RfRVEoMHUsIHJlc291cmNlUHJvdmlkZXItPm51bVJlc291
cmNlcygpKTsKKyAgICAgICAgdGV4dHVyZS0+YWxsb2NhdGUoQ0NSZW5kZXJlcjo6SW1wbFBvb2ws
IEludFNpemUoMzAsIDMwKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92
aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKICAgICAgICAgRVhQRUNUX0xUKDB1LCB0ZXh0dXJlLT5p
ZCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgxdSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOwog
CiAgICAgICAgIHRleHR1cmUtPmxlYWsoKTsKICAgICAgICAgRVhQRUNUX0VRKDB1LCB0ZXh0dXJl
LT5pZCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgxdSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkp
OwogCiAgICAgICAgIHRleHR1cmUtPmZyZWUoKTsKICAgICAgICAgRVhQRUNUX0VRKDB1LCB0ZXh0
dXJlLT5pZCgpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBhbGxvY2F0b3IubnVtVGV4dHVyZXMo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2Vz
KCkpOwogICAgIH0KIAotICAgIEVYUEVDVF9FUSgxdSwgYWxsb2NhdG9yLm51bVRleHR1cmVzKCkp
OworICAgIEVYUEVDVF9FUSgxdSwgcmVzb3VyY2VQcm92aWRlci0+bnVtUmVzb3VyY2VzKCkpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGV4dHVy
ZVVwZGF0ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXh0dXJl
VXBkYXRlclRlc3QuY3BwCmluZGV4IGQwYmJkMzZmNDc4ZWM1ODg0MmUzYzVlMWZjNGY5MGExNzVk
NDNjYjkuLmI3YTI2ZGYyZmRjYmY1OTE1ZjA2MjZiNjhkZWNlN2IwMWM0NjMxZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXh0dXJlVXBkYXRlclRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXh0dXJlVXBkYXRlclRlc3Qu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
Q29tcG9zaXRvci5oIgorI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIgLy8gRm9y
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRocmVhZC5o
IgogCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KQEAgLTYzLDEzICs2NCwxMiBAQCBjbGFzcyBU
ZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0IDogcHVibGljIEZha2VUZXh0dXJlVXBsb2FkZXIg
ewogcHVibGljOgogICAgIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3QoQ0NUZXh0dXJlVXBk
YXRlclRlc3QgKnRlc3QpIDogbV90ZXN0KHRlc3QpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGJl
Z2luVXBsb2FkcygpOwotICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCk7Ci0gICAgdmlydHVh
bCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQqLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OlRleHR1cmVB
bGxvY2F0b3IqLAorICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1
cGxvYWRUZXh0dXJlKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcios
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBz
b3VyY2VSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QgZGVzdFJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QgZGVzdFJlY3QpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIEND
VGV4dHVyZVVwZGF0ZXJUZXN0KiBtX3Rlc3Q7CkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiBj
bGFzcyBUZXh0dXJlRm9yVXBsb2FkVGVzdCA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKIHB1YmxpYzoKICAgICBUZXh0dXJlRm9yVXBsb2FkVGVzdCgpIDogTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZShhZG9wdFB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4oMCkpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVy
ZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlk
ZXIqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkg
eyB9CiB9OwogCiAKQEAgLTE2NSw2ICsxNjUsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgbV9j
b250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKAogICAgICAgICAgICAgICAgICAg
ICBhZG9wdFB0cihuZXcgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxvYWRUZXN0KHRoaXMpKSk7
CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgICAgICBt
X3Jlc291cmNlUHJvdmlkZXIgPSBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShtX2NvbnRleHQu
Z2V0KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCkBAIC0yMDAsOSAr
MjAyLDkgQEAgcHJvdGVjdGVkOgogcHJvdGVjdGVkOgogICAgIC8vIENsYXNzZXMgcmVxdWlyZWQg
dG8gaW50ZXJhY3QgYW5kIHRlc3QgdGhlIENDVGV4dHVyZVVwZGF0ZXIKICAgICBPd25QdHI8Q0NH
cmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVy
PiBtX3Jlc291cmNlUHJvdmlkZXI7CiAgICAgQ0NUZXh0dXJlVXBkYXRlciBtX3VwZGF0ZXI7CiAg
ICAgVGV4dHVyZUZvclVwbG9hZFRlc3QgbV90ZXh0dXJlOwotICAgIEZha2VUZXh0dXJlQWxsb2Nh
dG9yIG1fYWxsb2NhdG9yOwogICAgIEZha2VUZXh0dXJlQ29waWVyIG1fY29waWVyOwogICAgIFRl
eHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3QgbV91cGxvYWRlcjsKIApAQCAtMjM5LDExICsyNDEs
MTAgQEAgdm9pZCBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0OjplbmRVcGxvYWRzKCkKICAg
ICBtX3Rlc3QtPm9uRW5kVXBsb2FkcygpOwogfQogCi12b2lkIFRleHR1cmVVcGxvYWRlckZvclVw
bG9hZFRlc3Q6OnVwbG9hZFRleHR1cmUoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCBzb3VyY2VSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkKK3ZvaWQgVGV4dHVy
ZVVwbG9hZGVyRm9yVXBsb2FkVGVzdDo6dXBsb2FkVGV4dHVyZShXZWJDb3JlOjpMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlciosCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCBzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QgZGVzdFJlY3QpCiB7CiAgICAg
bV90ZXN0LT5vblVwbG9hZCgpOwogfQpAQCAtMjU0LDcgKzI1NSw3IEBAIFRFU1RfRihDQ1RleHR1
cmVVcGRhdGVyVGVzdCwgWmVyb1VwbG9hZHMpCiB7CiAgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1Vw
ZGF0ZXIoMCk7CiAgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIoMCk7Ci0gICAgbV91
cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAm
bV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworICAgIG1fdXBkYXRlci51
cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBt
X3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CiAKICAgICBFWFBFQ1RfRVEoMCwgbV9udW1CZWdp
blVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgwLCBtX251bUVuZFVwbG9hZHMpOwpAQCAtMjY4LDcg
KzI2OSw4IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgT25lRnVsbFVwbG9hZCkKIHsK
ICAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcigxKTsKICAgICBhcHBlbmRQYXJ0aWFsVXBs
b2Fkc1RvVXBkYXRlcigwKTsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwg
Jm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRF
eHBlY3RlZCk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAg
bV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1f
dXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKIAogICAgIEVYUEVDVF9FUSgx
LCBtX251bUJlZ2luVXBsb2Fkcyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7
CkBAIC0yODAsNyArMjgyLDggQEAgVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBPbmVQYXJ0
aWFsVXBsb2FkKQogewogICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDApOwogICAgIGFw
cGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKDEpOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9j
b250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90
YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwg
Jm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwogCiAg
ICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9u
dW1FbmRVcGxvYWRzKTsKQEAgLTI5Miw3ICsyOTUsOCBAQCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRl
clRlc3QsIE9uZUZ1bGxPbmVQYXJ0aWFsVXBsb2FkKQogewogICAgIGFwcGVuZEZ1bGxVcGxvYWRz
VG9VcGRhdGVyKDEpOwogICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKDEpOwotICAg
IG1fdXBkYXRlci51cGRhdGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxvY2F0b3IsICZtX2NvcGll
ciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKyAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVz
b3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9h
ZENvdW50RXhwZWN0ZWQpOwogCiAgICAgLy8gV2UgZXhwZWN0IHRoZSBmdWxsIHVwbG9hZHMgdG8g
YmUgZm9sbG93ZWQgYnkgYSBmbHVzaAogICAgIC8vIGJlZm9yZSB0aGUgcGFydGlhbCB1cGxvYWRz
IGJlZ2luLgpAQCAtMzE1LDcgKzMxOSw4IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwg
TWFueUZ1bGxVcGxvYWRzTm9SZW1haW5kZXIpCiB7CiAgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1Vw
ZGF0ZXIoZnVsbE5vUmVtYWluZGVyQ291bnQpOwogICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9V
cGRhdGVyKDApOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9jb250ZXh0LmdldCgpLCAmbV9hbGxv
Y2F0b3IsICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVk
KTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBtX3VwZGF0
ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRl
ciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwogCiAgICAgRVhQRUNUX0VRKDEsIG1fbnVt
QmVnaW5VcGxvYWRzKTsKICAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKQEAgLTMy
Nyw3ICszMzIsOCBAQCBURVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE1hbnlQYXJ0aWFsVXBs
b2Fkc05vUmVtYWluZGVyKQogewogICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDApOwog
ICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxOb1JlbWFpbmRlckNvdW50
KTsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAm
bV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgbV91cGRhdGVyLnVwZGF0
ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90
YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKIAogICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBs
b2Fkcyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC0zMzksNyArMzQ1
LDggQEAgVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBNYW55RnVsbE1hbnlQYXJ0aWFsVXBs
b2Fkc05vUmVtYWluZGVyKQogewogICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKGZ1bGxO
b1JlbWFpbmRlckNvdW50KTsKICAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihwYXJ0
aWFsTm9SZW1haW5kZXJDb3VudCk7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQuZ2V0
KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENv
dW50RXhwZWN0ZWQpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwor
ICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIs
ICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CiAKICAgICBFWFBFQ1Rf
RVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9h
ZHMpOwpAQCAtMzYxLDcgKzM2OCw4IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgTWFu
eUZ1bGxBbmRQYXJ0aWFsTWluUmVtYWluZGVyKQogewogICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9V
cGRhdGVyKGZ1bGxNaW5SZW1haW5kZXJDb3VudCk7CiAgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNU
b1VwZGF0ZXIocGFydGlhbE1pblJlbWFpbmRlckNvdW50KTsKLSAgICBtX3VwZGF0ZXIudXBkYXRl
KG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBt
X3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7CisgICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0
KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsK
IAogICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CiAgICAgRVhQRUNUX0VRKDEs
IG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC0zNzMsNyArMzgxLDggQEAgVEVTVF9GKENDVGV4dHVyZVVw
ZGF0ZXJUZXN0LCBNYW55RnVsbEFuZFBhcnRpYWxVcGxvYWRzTWF4UmVtYWluZGVyKQogewogICAg
IGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKGZ1bGxNYXhSZW1haW5kZXJDb3VudCk7CiAgICAg
YXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIocGFydGlhbE1heFJlbWFpbmRlckNvdW50KTsK
LSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9j
b3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgbV91cGRhdGVyLnVwZGF0ZSht
X3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxV
cGxvYWRDb3VudEV4cGVjdGVkKTsKIAogICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fk
cyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC0zODUsNyArMzk0LDgg
QEAgVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBNYW55RnVsbE1pblJlbWFpbmRlck1hbnlQ
YXJ0aWFsTWF4UmVtYWluZGVyKQogewogICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKGZ1
bGxNaW5SZW1haW5kZXJDb3VudCk7CiAgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIo
cGFydGlhbE1heFJlbWFpbmRlckNvdW50KTsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4
dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBs
b2FkQ291bnRFeHBlY3RlZCk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CisgICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2Nv
cGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKIAogICAgIEVY
UEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5k
VXBsb2Fkcyk7CkBAIC0zOTcsNyArNDA3LDggQEAgVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0
LCBNYW55RnVsbE1heFJlbWFpbmRlck1hbnlQYXJ0aWFsTWluUmVtYWluZGVyKQogewogICAgIGFw
cGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKGZ1bGxNYXhSZW1haW5kZXJDb3VudCk7CiAgICAgYXBw
ZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIocGFydGlhbE1pblJlbWFpbmRlckNvdW50KTsKLSAg
ICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3Bp
ZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jl
c291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxv
YWRDb3VudEV4cGVjdGVkKTsKIAogICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7
CiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC00MjksNyArNDQwLDggQEAg
VEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBUcmlwbGVVcGRhdGVGaW5hbFVwZGF0ZUZ1bGxB
bmRQYXJ0aWFsKQogICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKGtQYXJ0aWFsVXBs
b2Fkcyk7CiAKICAgICAvLyBGaXJzdCB1cGRhdGUgKDQwIGZ1bGwpCi0gICAgbV91cGRhdGVyLnVw
ZGF0ZShtX2NvbnRleHQuZ2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRl
ciwga01heFVwbG9hZHNQZXJVcGRhdGUpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOworICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgp
LCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CiAKICAgICBF
WFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgxLCBtX251bUVu
ZFVwbG9hZHMpOwpAQCAtNDQxLDcgKzQ1Myw3IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVz
dCwgVHJpcGxlVXBkYXRlRmluYWxVcGRhdGVGdWxsQW5kUGFydGlhbCkKICAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKIAogICAgIC8v
IFNlY29uZCB1cGRhdGUgKDQwIGZ1bGwpCi0gICAgbV91cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQu
Z2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwga01heFVwbG9hZHNQ
ZXJVcGRhdGUpOworICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgp
LCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CiAKICAgICBF
WFBFQ1RfRVEoMiwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgyLCBtX251bUVu
ZFVwbG9hZHMpOwpAQCAtNDUzLDcgKzQ2NSw3IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVz
dCwgVHJpcGxlVXBkYXRlRmluYWxVcGRhdGVGdWxsQW5kUGFydGlhbCkKICAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKIAogICAgIC8v
IFRoaXJkIHVwZGF0ZSAoMjAgZnVsbCwgMjAgcGFydGlhbCkKLSAgICBtX3VwZGF0ZXIudXBkYXRl
KG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBr
TWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisgICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJv
dmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBkYXRl
KTsKIAogICAgIEVYUEVDVF9FUSgzLCBtX251bUJlZ2luVXBsb2Fkcyk7CiAgICAgRVhQRUNUX0VR
KDMsIG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC00ODMsNyArNDk1LDggQEAgVEVTVF9GKENDVGV4dHVy
ZVVwZGF0ZXJUZXN0LCBUcmlwbGVVcGRhdGVGaW5hbFVwZGF0ZUFsbFBhcnRpYWwpCiAgICAgYXBw
ZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIoa1BhcnRpYWxVcGxvYWRzKTsKIAogICAgIC8vIEZp
cnN0IHVwZGF0ZSAoNDAgZnVsbCkKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQo
KSwgJm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVw
ZGF0ZSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgbV91
cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBs
b2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKIAogICAgIEVYUEVDVF9FUSgxLCBtX251bUJl
Z2luVXBsb2Fkcyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CkBAIC00OTUs
NyArNTA4LDcgQEAgVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBUcmlwbGVVcGRhdGVGaW5h
bFVwZGF0ZUFsbFBhcnRpYWwpCiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNVcGxvYWRz
LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7CiAKICAgICAvLyBTZWNvbmQgdXBkYXRlICgzMCBmdWxs
LCBvcHRpb25hbGx5IDEwIHBhcnRpYWwpCi0gICAgbV91cGRhdGVyLnVwZGF0ZShtX2NvbnRleHQu
Z2V0KCksICZtX2FsbG9jYXRvciwgJm1fY29waWVyLCAmbV91cGxvYWRlciwga01heFVwbG9hZHNQ
ZXJVcGRhdGUpOworICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgp
LCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CiAKICAgICBF
WFBFQ1RfRVEoMiwgbV9udW1CZWdpblVwbG9hZHMpOwogICAgIEVYUEVDVF9FUSgyLCBtX251bUVu
ZFVwbG9hZHMpOwpAQCAtNTA1LDcgKzUxOCw3IEBAIFRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVz
dCwgVHJpcGxlVXBkYXRlRmluYWxVcGRhdGVBbGxQYXJ0aWFsKQogICAgIC8vIG9uRmx1c2goKSwg
b25VcGxvYWQoKSwgYW5kIG9uRW5kVXBsb2FkKCkgd2lsbCBkbyBiYXNpYyBmbHVzaCBjaGVja3Mg
Zm9yIHVzIGFueXdheS4KIAogICAgIC8vIFRoaXJkIHVwZGF0ZSAoMzAgcGFydGlhbCBPUiAyMCBw
YXJ0aWFsIGlmIDEwIHBhcnRpYWwgdXBsb2FkZWQgaW4gc2Vjb25kIHVwZGF0ZSkKLSAgICBtX3Vw
ZGF0ZXIudXBkYXRlKG1fY29udGV4dC5nZXQoKSwgJm1fYWxsb2NhdG9yLCAmbV9jb3BpZXIsICZt
X3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisgICAgbV91cGRhdGVyLnVwZGF0ZSht
X3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxv
YWRzUGVyVXBkYXRlKTsKIAogICAgIEVYUEVDVF9FUSgzLCBtX251bUJlZ2luVXBsb2Fkcyk7CiAg
ICAgRVhQRUNUX0VRKDMsIG1fbnVtRW5kVXBsb2Fkcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCmluZGV4IDkxMDI4MTU4
OGE3MzRjYjgzMGU3N2VjOGMwMTkzYmYzMTA2ZGIzNTIuLmEwODUwYjI1MWYyODU0ZTlmZDE1MDdl
NTA2OGE4MmRhNzQ1OTIxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCkBAIC01MywxMCArNTMsMTAgQEAgc3RhdGlj
IFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY3JlYXRlTGF5ZXIoY29uc3QgSW50U2l6ZSYg
dGlsZVNpemUsIGNvbnN0IEkKICAgICBsYXllci0+c2V0Qm91bmRzKGxheWVyU2l6ZSk7CiAgICAg
bGF5ZXItPnNldENvbnRlbnRCb3VuZHMobGF5ZXJTaXplKTsKIAotICAgIGludCB0ZXh0dXJlSWQg
PSAxOworICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCByZXNvdXJjZUlkID0gMTsK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbGVyLT5udW1UaWxlc1goKTsgKytpKQogICAgICAg
ICBmb3IgKGludCBqID0gMDsgaiA8IHRpbGVyLT5udW1UaWxlc1koKTsgKytqKQotICAgICAgICAg
ICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNE
T2JqZWN0Pih0ZXh0dXJlSWQrKyksIEludFJlY3QoMCwgMCwgMSwgMSkpOworICAgICAgICAgICAg
bGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCByZXNvdXJjZUlkKyssIEludFJlY3QoMCwg
MCwgMSwgMSkpOwogCiAgICAgcmV0dXJuIGxheWVyLnJlbGVhc2UoKTsKIH0KQEAgLTE0Niw3ICsx
NDYsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVja2VyYm9hcmRpbmcpCiAKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRpbGVzWDsgKytpKQogICAgICAgICBmb3IgKGludCBq
ID0gMDsgaiA8IG51bVRpbGVzWTsgKytqKQotICAgICAgICAgICAgbGF5ZXItPnB1c2hUaWxlUHJv
cGVydGllcyhpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2JqZWN0PigwKSwgSW50UmVjdCgp
KTsKKyAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgMCwgSW50UmVj
dCgpKTsKIAogICAgIC8vIEFsbCBjaGVja2VyYm9hcmRpbmcKICAgICB7CkBAIC0yNDAsNyArMjQw
LDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGV4dHVyZUluZm9Gb3JMYXllck5vQm9y
ZGVycykKICAgICAgICAgQVNTRVJUX0VRKHF1YWRzW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFk
OjpUaWxlZENvbnRlbnQpIDw8IHF1YWRTdHJpbmcgPDwgaTsKICAgICAgICAgQ0NUaWxlRHJhd1F1
YWQqIHF1YWQgPSBzdGF0aWNfY2FzdDxDQ1RpbGVEcmF3UXVhZCo+KHF1YWRzW2ldLmdldCgpKTsK
IAotICAgICAgICBFWFBFQ1RfTkUocXVhZC0+dGV4dHVyZUlkKCksIDB1KSA8PCBxdWFkU3RyaW5n
IDw8IGk7CisgICAgICAgIEVYUEVDVF9ORShxdWFkLT5yZXNvdXJjZUlkKCksIDB1KSA8PCBxdWFk
U3RyaW5nIDw8IGk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkLT50ZXh0dXJlT2Zmc2V0KCksIElu
dFBvaW50KCkpIDw8IHF1YWRTdHJpbmcgPDwgaTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWQtPnRl
eHR1cmVTaXplKCksIHRpbGVTaXplKSA8PCBxdWFkU3RyaW5nIDw8IGk7CiAgICAgICAgIEVYUEVD
VF9FUShJbnRSZWN0KDAsIDAsIDEsIDEpLCBxdWFkLT5vcGFxdWVSZWN0KCkpIDw8IHF1YWRTdHJp
bmcgPDwgaTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVyVGVzdENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGls
ZWRMYXllclRlc3RDb21tb24uY3BwCmluZGV4IDI2ZmZkOTA3OWNmZGEzNGFlMGJkYmYwZGE0ZDE1
NTRkYmZmNTUxOTkuLjc3Nzg1NDliNjg1NDM4MDI3NTIyNmM2MGZmNDAyYTk0MTVhZmY1ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENv
bW1vbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJU
ZXN0Q29tbW9uLmNwcApAQCAtNDAsMTAgKzQwLDkgQEAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBGYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikKIHsK
LSAgICBpZiAoYWxsb2NhdG9yKQotICAgICAgICB0ZXh0dXJlKCktPmFjcXVpcmVCYWNraW5nVGV4
dHVyZShhbGxvY2F0b3IpOworICAgIHRleHR1cmUoKS0+YWNxdWlyZUJhY2tpbmdUZXh0dXJlKHJl
c291cmNlUHJvdmlkZXIpOwogICAgIG1fbGF5ZXItPnVwZGF0ZVJlY3QoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9u
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24u
aAppbmRleCA5NTAxY2FiYTlhYWM4MGM0NDljMmFmM2UwYmQ4NTE3M2IxODJhOTEyLi5iZTY4MWQ3
MWM5MjdlZTk4ZThjZTU5MTNmNzM5NDE2ZDM0NGNkMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaApAQCAtMjksMTIg
KzI5LDEyIEBACiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVw
ZGF0ZXIuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKLSNpbmNsdWRlICJUZXh0dXJlQWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZUNvcGllci5oIgogI2luY2x1ZGUgIlRleHR1cmVVcGxvYWRl
ci5oIgogI2luY2x1ZGUgIlRpbGVkTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNjL0NDR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaCIKKyNp
bmNsdWRlICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVV
cGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcios
IFBhc3NPd25QdHI8V2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU+KTsKICAgICAgICAgdmly
dHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KFdlYkNv
cmU6OkNDR3JhcGhpY3NDb250ZXh0KiwgV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvciogLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlk
ZXIqICwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBP
VkVSUklERTsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSBPVkVSUklERTsKIAogICAgIHByaXZhdGU6CkBAIC0xNTEsMTcgKzE1MSwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2ZvcmNlZENvbnRlbnRCb3VuZHM7
CiB9OwogCi1jbGFzcyBGYWtlVGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0
dXJlQWxsb2NhdG9yIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1
cmUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEdDM0RlbnVtKSBPVkVSUklERSB7IHJldHVybiAx
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBHQzNEZW51bSkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUFsbFRleHR1cmVzKCkgT1ZFUlJJREUgeyB9Ci19OwotCiBjbGFzcyBGYWtlVGV4dHVyZUNv
cGllciA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlQ29waWVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIHZvaWQgY29weVRleHR1cmUoV2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRleHQqLCB1bnNpZ25l
ZCwgdW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgY29weVRvVGV4dHVyZShXZWJDb3JlOjpDQ0dyYXBoaWNzQ29udGV4dCosIGNvbnN0IHZvaWQq
LCB1bnNpZ25lZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEdDM0RlbnVtKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgY29weVRleHR1cmUodW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGZsdXNoKCkgeyB9CiB9OwogCiBjbGFz
cyBGYWtlVGV4dHVyZVVwbG9hZGVyIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVVcGxvYWRlciB7
CkBAIC0xNjksNyArMTYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRU
ZXh0dXJlKFdlYkNvcmU6OkNDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBXZWJDb3JlOjpMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBXZWJDb3JlOjpUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQs
IGFsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CisgICAgdmlydHVhbCB2b2lkIHVw
bG9hZFRleHR1cmUoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVy
ZSwgV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QgZGVzdFJl
Y3QpIHsgdGV4dHVyZS0+dXBkYXRlUmVjdChyZXNvdXJjZVByb3ZpZGVyLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ29udGVudExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ29udGVudExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA3NTA0MTg1MzU2MGY1
YzViMWZjMDJlM2U4ZjZiZjgzZjUxZTBjZDQzLi5mY2ZjY2UxMTRjMWZmMDdjYTI0ZGQ3NzkzMjZh
MjI3YWZhNDQyMjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Nv
bnRlbnRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9Db250ZW50TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC05OSw3ICs5OSw3IEBAIFRFU1Qo
Q29udGVudExheWVyQ2hyb21pdW1UZXN0LCBDb250ZW50TGF5ZXJQYWludGVyV2l0aERldmljZVNj
YWxlKQogICAgIE9wYXF1ZVJlY3REcmF3aW5nR3JhcGhpY3NDb250ZXh0UGFpbnRlciBwYWludGVy
KG9wYXF1ZVJlY3RJbkxheWVyU3BhY2UsIGNvbnRlbnRSZWN0KTsKICAgICBPcGFxdWVSZWN0VHJh
Y2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZSBvcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJE
ZWxlZ2F0ZSgmcGFpbnRlcik7CiAgICAgTW9ja0NvbnRlbnRMYXllckRlbGVnYXRlIGRlbGVnYXRl
KCZvcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZSk7Ci0gICAgUmVmUHRyPEJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IHVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKCZkZWxl
Z2F0ZSksIGZhbHNlKTsKKyAgICBSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cj4gdXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShDb250
ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUoJmRlbGVnYXRlKSk7CiAKICAgICBJbnRSZWN0IHJlc3Vs
dGluZ09wYXF1ZVJlY3Q7CiAgICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRSZWN0
LCBJbnRTaXplKDI1NiwgMjU2KSwgY29udGVudHNTY2FsZSwgY29udGVudHNTY2FsZSwgcmVzdWx0
aW5nT3BhcXVlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0Zha2VDQ0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9G
YWtlQ0NHcmFwaGljc0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWI0ZWYzNjYyOThhNmM1ZjIxNTdl
MjFhZTNjMDFhMmFlNWFlMDBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9GYWtlQ0NHcmFwaGljc0NvbnRleHQuaApAQCAtMCwwICsxLDQxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBGYWtlQ0NHcmFwaGljc0NvbnRleHRfaAorI2RlZmluZSBGYWtlQ0NHcmFwaGlj
c0NvbnRleHRfaAorCisjaW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQz
RC5oIgorI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitzdGF0aWMgaW5saW5lIFBhc3NPd25QdHI8V2ViQ29yZTo6Q0NHcmFwaGljc0NvbnRl
eHQ+IGNyZWF0ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6
OkNDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChDb21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGUoV2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEZha2VDQ0dyYXBoaWNzQ29udGV4
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJl
bmRlcmVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCAxNDFiNzE5YmJmM2Q5ZjMzMzcwMDAzNjc5NGFm
M2UzNWI3NmQ5Y2Q0Li4xYjZiODAyOGI0ZmY1NGQ1OTY0OTJhOGE3YTNkYWUzZmI4MDkzMWRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5k
ZXJlckNocm9taXVtVGVzdC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogCiBjbGFz
cyBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIDogcHVibGljIExheWVyUmVuZGVyZXJDaHJvbWl1
bSB7CiBwdWJsaWM6Ci0gICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bShDQ1JlbmRlcmVyQ2xp
ZW50KiBjbGllbnQsIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KSA6IExheWVyUmVuZGVy
ZXJDaHJvbWl1bShjbGllbnQsIGNvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpIHsgfQorICAg
IEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0oQ0NSZW5kZXJlckNsaWVudCogY2xpZW50LCBDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpIDogTGF5ZXJSZW5kZXJlckNocm9taXVt
KGNsaWVudCwgcmVzb3VyY2VQcm92aWRlciwgVW50aHJvdHRsZWRVcGxvYWRlcikgeyB9CiAKICAg
ICAvLyBMYXllclJlbmRlcmVyQ2hyb21pdW0gbWV0aG9kcy4KIApAQCAtMTI2LDggKzEyNiw5IEBA
IHByb3RlY3RlZDoKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0KCkKICAgICAgICAgOiBt
X3N1Z2dlc3RIYXZlQmFja2J1ZmZlclllcygxLCB0cnVlKQogICAgICAgICAsIG1fc3VnZ2VzdEhh
dmVCYWNrYnVmZmVyTm8oMSwgZmFsc2UpCi0gICAgICAgICwgbV9jb250ZXh0KGFkb3B0UHRyKG5l
dyBGcmFtZUNvdW50aW5nTWVtb3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0KSkKLSAgICAgICAg
LCBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bSgmbV9tb2NrQ2xpZW50LCBtX2NvbnRleHQuZ2V0KCkp
CisgICAgICAgICwgbV9jb250ZXh0KENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0
cihuZXcgRnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCgpKSkpCisg
ICAgICAgICwgbV9yZXNvdXJjZVByb3ZpZGVyKENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG1f
Y29udGV4dC5nZXQoKSkpCisgICAgICAgICwgbV9sYXllclJlbmRlcmVyQ2hyb21pdW0oJm1fbW9j
a0NsaWVudCwgbV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKQogICAgIHsKICAgICB9CiAKQEAgLTE0
NywxMSArMTQ4LDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9sYXllclJlbmRlcmVyQ2hyb21p
dW0uc3dhcEJ1ZmZlcnMoSW50UmVjdCgpKTsKICAgICB9CiAKKyAgICBGcmFtZUNvdW50aW5nTWVt
b3J5QWxsb2NhdGlvblNldHRpbmdDb250ZXh0KiBjb250ZXh0KCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RnJhbWVDb3VudGluZ01lbW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dCo+KG1fY29udGV4
dC0+Y29udGV4dDNEKCkpOyB9CisKICAgICBXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb24gbV9z
dWdnZXN0SGF2ZUJhY2tidWZmZXJZZXM7CiAgICAgV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9u
IG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm87CiAKLSAgICBPd25QdHI8RnJhbWVDb3VudGluZ01l
bW9yeUFsbG9jYXRpb25TZXR0aW5nQ29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OwogICAgIEZha2VDQ1JlbmRlcmVyQ2xpZW50IG1fbW9j
a0NsaWVudDsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBtX3Jlc291cmNlUHJvdmlk
ZXI7CiAgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBtX2xheWVyUmVuZGVyZXJDaHJvbWl1
bTsKICAgICBDQ1Njb3BlZFNldHRpbmdzIG1fc2NvcGVkU2V0dGluZ3M7CiB9OwpAQCAtMTYxLDEy
ICsxNjUsMTIgQEAgcHJvdGVjdGVkOgogLy8gRXhwZWN0ZWQ6IGl0IGRvZXMgbm90aGluZy4KIFRF
U1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlclllc1doZW5J
dEFscmVhZHlFeGlzdHNTaG91bGREb05vdGhpbmcpCiB7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1v
cnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyWWVzKTsKKyAgICBjb250ZXh0KCkt
PnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJZZXMpOwogICAgIEVY
UEVDVF9FUSgwLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwog
ICAgIEVYUEVDVF9GQUxTRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlz
Y2FyZGVkKCkpOwogCiAgICAgc3dhcEJ1ZmZlcnMoKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9jb250
ZXh0LT5mcmFtZUNvdW50KCkpOworICAgIEVYUEVDVF9FUSgxLCBjb250ZXh0KCktPmZyYW1lQ291
bnQoKSk7CiB9CiAKIC8vIFRlc3QgTGF5ZXJSZW5kZXJlckNocm9taXVtIGRpc2NhcmRGcmFtZWJ1
ZmZlciBmdW5jdGlvbmFsaXR5OgpAQCAtMTc1LDcgKzE3OSw3IEBAIFRFU1RfRihMYXllclJlbmRl
cmVyQ2hyb21pdW1UZXN0LCBTdWdnZXN0QmFja2J1ZmZlclllc1doZW5JdEFscmVhZHlFeGlzdHNT
aG91bGRECiBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZm
ZXJOb1Nob3VsZERpc2NhcmRCYWNrYnVmZmVyQW5kRGFtYWdlUm9vdExheWVyV2hpbGVOb3RWaXNp
YmxlKQogewogICAgIG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLnNldFZpc2libGUoZmFsc2UpOwot
ICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZl
ck5vKTsKKyAgICBjb250ZXh0KCktPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJh
Y2tidWZmZXJObyk7CiAgICAgRVhQRUNUX0VRKDEsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExh
eWVyRGFtYWdlQ291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21p
dW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgpKTsKIH0KQEAgLTE4Niw3ICsxOTAsNyBAQCBURVNU
X0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb1Nob3VsZERp
c2NhcmRCYWNrYnVmZmVyQW5kRAogVEVTVF9GKExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN1
Z2dlc3RCYWNrYnVmZmVyTm9Eb05vdGhpbmdXaGVuVmlzaWJsZSkKIHsKICAgICBtX2xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5zZXRWaXNpYmxlKHRydWUpOwotICAgIG1fY29udGV4dC0+c2V0TWVtb3J5
QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAgICBjb250ZXh0KCktPnNl
dE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CiAgICAgRVhQRUNU
X0VRKDAsIG1fbW9ja0NsaWVudC5zZXRGdWxsUm9vdExheWVyRGFtYWdlQ291bnQoKSk7CiAgICAg
RVhQRUNUX0ZBTFNFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJk
ZWQoKSk7CiB9CkBAIC0xOTgsMTEgKzIwMiwxMSBAQCBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9t
aXVtVGVzdCwgU3VnZ2VzdEJhY2tidWZmZXJOb0RvTm90aGluZ1doZW5WaXNpYmxlKQogVEVTVF9G
KExheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RCYWNrYnVmZmVyTm9XaGVuSXREb2Vz
bnRFeGlzdFNob3VsZERvTm90aGluZykKIHsKICAgICBtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5z
ZXRWaXNpYmxlKGZhbHNlKTsKLSAgICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9z
dWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CisgICAgY29udGV4dCgpLT5zZXRNZW1vcnlBbGxvY2F0
aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tD
bGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNvdW50KCkpOwogICAgIEVYUEVDVF9UUlVFKG1f
bGF5ZXJSZW5kZXJlckNocm9taXVtLmlzRnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiAKLSAgICBt
X2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7
CisgICAgY29udGV4dCgpLT5zZXRNZW1vcnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVm
ZmVyTm8pOwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRh
bWFnZUNvdW50KCkpOwogICAgIEVYUEVDVF9UUlVFKG1fbGF5ZXJSZW5kZXJlckNocm9taXVtLmlz
RnJhbWVidWZmZXJEaXNjYXJkZWQoKSk7CiB9CkBAIC0yMTMsNyArMjE3LDcgQEAgVEVTVF9GKExh
eWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QsIFN1Z2dlc3RCYWNrYnVmZmVyTm9XaGVuSXREb2VzbnRF
eGlzdFNob3VsZERvTm8KIFRFU1RfRihMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LCBEaXNjYXJk
ZWRCYWNrYnVmZmVySXNSZWNyZWF0ZWRGb3JTY29wZUR1cmF0aW9uKQogewogICAgIG1fbGF5ZXJS
ZW5kZXJlckNocm9taXVtLnNldFZpc2libGUoZmFsc2UpOwotICAgIG1fY29udGV4dC0+c2V0TWVt
b3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKKyAgICBjb250ZXh0KCkt
PnNldE1lbW9yeUFsbG9jYXRpb24obV9zdWdnZXN0SGF2ZUJhY2tidWZmZXJObyk7CiAgICAgRVhQ
RUNUX1RSVUUobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRpc2NhcmRlZCgp
KTsKICAgICBFWFBFQ1RfRVEoMSwgbV9tb2NrQ2xpZW50LnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VD
b3VudCgpKTsKIApAQCAtMjIyLDEzICsyMjYsMTMgQEAgVEVTVF9GKExheWVyUmVuZGVyZXJDaHJv
bWl1bVRlc3QsIERpc2NhcmRlZEJhY2tidWZmZXJJc1JlY3JlYXRlZEZvclNjb3BlRHVyYXRpb24K
ICAgICBFWFBFQ1RfRkFMU0UobV9sYXllclJlbmRlcmVyQ2hyb21pdW0uaXNGcmFtZWJ1ZmZlckRp
c2NhcmRlZCgpKTsKIAogICAgIHN3YXBCdWZmZXJzKCk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fY29u
dGV4dC0+ZnJhbWVDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMSwgY29udGV4dCgpLT5mcmFtZUNv
dW50KCkpOwogfQogCiBURVNUX0YoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdCwgRnJhbWVidWZm
ZXJEaXNjYXJkZWRBZnRlclJlYWRiYWNrV2hlbk5vdFZpc2libGUpCiB7CiAgICAgbV9sYXllclJl
bmRlcmVyQ2hyb21pdW0uc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9jb250ZXh0LT5zZXRNZW1v
cnlBbGxvY2F0aW9uKG1fc3VnZ2VzdEhhdmVCYWNrYnVmZmVyTm8pOworICAgIGNvbnRleHQoKS0+
c2V0TWVtb3J5QWxsb2NhdGlvbihtX3N1Z2dlc3RIYXZlQmFja2J1ZmZlck5vKTsKICAgICBFWFBF
Q1RfVFJVRShtX2xheWVyUmVuZGVyZXJDaHJvbWl1bS5pc0ZyYW1lYnVmZmVyRGlzY2FyZGVkKCkp
OwogICAgIEVYUEVDVF9FUSgxLCBtX21vY2tDbGllbnQuc2V0RnVsbFJvb3RMYXllckRhbWFnZUNv
dW50KCkpOwogCkBAIC0zMTIsOCArMzE2LDkgQEAgVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1U
ZXN0MiwgaW5pdGlhbGl6YXRpb25Eb2VzTm90TWFrZVN5bmNocm9ub3VzQ2FsbHMpCiB7CiAgICAg
Q0NTY29wZWRTZXR0aW5ncyBzY29wZWRTZXR0aW5nczsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVu
dCBtb2NrQ2xpZW50OwotICAgIE93blB0cjxXZWJHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChh
ZG9wdFB0cihuZXcgRm9yYmlkU3luY2hyb25vdXNDYWxsQ29udGV4dCkpOwotICAgIEZha2VMYXll
clJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBjb250
ZXh0LmdldCgpKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQoQ0NHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBGb3JiaWRTeW5jaHJvbm91c0NhbGxD
b250ZXh0KSkpOworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IHJlc291cmNlUHJvdmlk
ZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY29udGV4dC5nZXQoKSkpOworICAgIEZha2VM
YXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9taXVtKCZtb2NrQ2xpZW50LCBy
ZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGxheWVyUmVuZGVyZXJD
aHJvbWl1bS5pbml0aWFsaXplKCkpOwogfQpAQCAtMzU1LDggKzM2MCw5IEBAIFRFU1QoTGF5ZXJS
ZW5kZXJlckNocm9taXVtVGVzdDIsIGluaXRpYWxpemF0aW9uV2l0aFF1aWNrbHlMb3N0Q29udGV4
dERvZXNOb3RBc3NlCiB7CiAgICAgQ0NTY29wZWRTZXR0aW5ncyBzY29wZWRTZXR0aW5nczsKICAg
ICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwotICAgIE93blB0cjxXZWJHcmFwaGlj
c0NvbnRleHQzRD4gY29udGV4dChhZG9wdFB0cihuZXcgTG9zZUNvbnRleHRPbkZpcnN0R2V0Q29u
dGV4dCkpOwotICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNocm9t
aXVtKCZtb2NrQ2xpZW50LCBjb250ZXh0LmdldCgpKTsKKyAgICBPd25QdHI8Q0NHcmFwaGljc0Nv
bnRleHQ+IGNvbnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBM
b3NlQ29udGV4dE9uRmlyc3RHZXRDb250ZXh0KSkpOworICAgIE93blB0cjxDQ1Jlc291cmNlUHJv
dmlkZXI+IHJlc291cmNlUHJvdmlkZXIoQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoY29udGV4
dC5nZXQoKSkpOworICAgIEZha2VMYXllclJlbmRlcmVyQ2hyb21pdW0gbGF5ZXJSZW5kZXJlckNo
cm9taXVtKCZtb2NrQ2xpZW50LCByZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKIAogICAgIGxheWVy
UmVuZGVyZXJDaHJvbWl1bS5pbml0aWFsaXplKCk7CiB9CkBAIC0zNzYsOCArMzgyLDkgQEAgcHVi
bGljOgogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0MiwgaW5pdGlhbGl6YXRpb25XaXRo
b3V0R3B1TWVtb3J5TWFuYWdlckV4dGVuc2lvblN1cHBvcnRTaG91bGREZWZhdWx0VG9Ob25aZXJv
QWxsb2NhdGlvbikKIHsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwotICAg
IE93blB0cjxXZWJHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChhZG9wdFB0cihuZXcgQ29udGV4
dFRoYXREb2VzTm90U3VwcG9ydE1lbW9yeU1hbmFnbWVudEV4dGVuc2lvbnMpKTsKLSAgICBGYWtl
TGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwg
Y29udGV4dC5nZXQoKSk7CisgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KEND
R3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcgQ29udGV4dFRoYXREb2VzTm90
U3VwcG9ydE1lbW9yeU1hbmFnbWVudEV4dGVuc2lvbnMpKSk7CisgICAgT3duUHRyPENDUmVzb3Vy
Y2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShj
b250ZXh0LmdldCgpKSk7CisgICAgRmFrZUxheWVyUmVuZGVyZXJDaHJvbWl1bSBsYXllclJlbmRl
cmVyQ2hyb21pdW0oJm1vY2tDbGllbnQsIHJlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogCiAgICAg
bGF5ZXJSZW5kZXJlckNocm9taXVtLmluaXRpYWxpemUoKTsKIApAQCAtNDAyLDggKzQwOSwxMCBA
QCBwcml2YXRlOgogVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0Miwgb3BhcXVlQmFja2dy
b3VuZCkKIHsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwotICAgIE93blB0
cjxDbGVhckNvdW50aW5nQ29udGV4dD4gY29udGV4dChhZG9wdFB0cihuZXcgQ2xlYXJDb3VudGlu
Z0NvbnRleHQpKTsKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJD
aHJvbWl1bSgmbW9ja0NsaWVudCwgY29udGV4dC5nZXQoKSk7CisgICAgT3duUHRyPENDR3JhcGhp
Y3NDb250ZXh0PiBjY0NvbnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRy
KG5ldyBDbGVhckNvdW50aW5nQ29udGV4dCkpKTsKKyAgICBDbGVhckNvdW50aW5nQ29udGV4dCog
Y29udGV4dCA9IHN0YXRpY19jYXN0PENsZWFyQ291bnRpbmdDb250ZXh0Kj4oY2NDb250ZXh0LT5j
b250ZXh0M0QoKSk7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92
aWRlcihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShjY0NvbnRleHQuZ2V0KCkpKTsKKyAgICBG
YWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVu
dCwgcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CiAKICAgICBtb2NrQ2xpZW50LnJvb3RSZW5kZXJQ
YXNzKCktPnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChmYWxzZSk7CiAKQEAgLTQyNCw4ICs0
MzMsMTAgQEAgVEVTVChMYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0Miwgb3BhcXVlQmFja2dyb3Vu
ZCkKIFRFU1QoTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdDIsIHRyYW5zcGFyZW50QmFja2dyb3Vu
ZCkKIHsKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCBtb2NrQ2xpZW50OwotICAgIE93blB0cjxD
bGVhckNvdW50aW5nQ29udGV4dD4gY29udGV4dChhZG9wdFB0cihuZXcgQ2xlYXJDb3VudGluZ0Nv
bnRleHQpKTsKLSAgICBGYWtlTGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJv
bWl1bSgmbW9ja0NsaWVudCwgY29udGV4dC5nZXQoKSk7CisgICAgT3duUHRyPENDR3JhcGhpY3ND
b250ZXh0PiBjY0NvbnRleHQoQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5l
dyBDbGVhckNvdW50aW5nQ29udGV4dCkpKTsKKyAgICBDbGVhckNvdW50aW5nQ29udGV4dCogY29u
dGV4dCA9IHN0YXRpY19jYXN0PENsZWFyQ291bnRpbmdDb250ZXh0Kj4oY2NDb250ZXh0LT5jb250
ZXh0M0QoKSk7CisgICAgT3duUHRyPENDUmVzb3VyY2VQcm92aWRlcj4gcmVzb3VyY2VQcm92aWRl
cihDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShjY0NvbnRleHQuZ2V0KCkpKTsKKyAgICBGYWtl
TGF5ZXJSZW5kZXJlckNocm9taXVtIGxheWVyUmVuZGVyZXJDaHJvbWl1bSgmbW9ja0NsaWVudCwg
cmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CiAKICAgICBtb2NrQ2xpZW50LnJvb3RSZW5kZXJQYXNz
KCktPnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZCh0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcAppbmRleCBiM2VmNGMy
ZWJlZmI4NGQxZTcyMzRiNTM0NjUxOGMwNTZlOTk3YjNkLi4wZjU2ZWQ5Y2M1N2E2MDI3NjEwMzVh
NjgxMDU3NjU1ZGM0ZWJhN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcApAQCAtNTIsMzQgKzUyLDMzIEBAIHB1YmxpYzoKIFRF
U1QoVGV4dHVyZUNvcGllclRlc3QsIHRlc3REcmF3QXJyYXlzQ29weSkKIHsKICAgICBHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyczsKLSAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRl
eHQ+IGNjQ29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChhZG9wdFB0cihuZXcg
TW9ja0NvbnRleHQpKTsKLSAgICBNb2NrQ29udGV4dCYgbW9ja0NvbnRleHQgPSAqc3RhdGljX2Nh
c3Q8TW9ja0NvbnRleHQqPihjY0NvbnRleHQtPmNvbnRleHQzRCgpKTsKKyAgICBPd25QdHI8TW9j
a0NvbnRleHQ+IG1vY2tDb250ZXh0ID0gYWRvcHRQdHIobmV3IE1vY2tDb250ZXh0KTsKIAogICAg
IHsKICAgICAgICAgSW5TZXF1ZW5jZSBzZXF1ZW5jZTsKIAogICAgICAgICAvLyBIZXJlIHdlIGNo
ZWNrIGp1c3Qgc29tZSBlc3NlbnRpYWwgcHJvcGVydGllcyBvZiBjb3B5VGV4dHVyZSgpIHRvIGF2
b2lkIG1pcnJvcmluZyB0aGUgZnVsbCBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgRVhQRUNUX0NB
TEwobW9ja0NvbnRleHQsIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIF8pKTsKKyAgICAgICAgRVhQRUNUX0NBTEwoKm1vY2tDb250ZXh0LCBiaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBfKSk7CiAKICAgICAgICAgLy8g
TWFrZSBzdXJlIGxpbmVhciBmaWx0ZXJpbmcgaXMgZGlzYWJsZWQgZHVyaW5nIHRoZSBjb3B5Lgot
ICAgICAgICBFWFBFQ1RfQ0FMTChtb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKLSAgICAgICAgRVhQRUNUX0NBTEwobW9j
a0NvbnRleHQsIHRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpO
RUFSRVNUKSk7CisgICAgICAgIEVYUEVDVF9DQUxMKCptb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVy
aShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKKyAgICAgICAgRVhQ
RUNUX0NBTEwoKm1vY2tDb250ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6TkVBUkVTVCkpOwogCi0gICAgICAgIEVYUEVDVF9DQUxMKG1vY2tDb250ZXh0
LCBkcmF3QXJyYXlzKF8sIF8sIF8pKTsKKyAgICAgICAgRVhQRUNUX0NBTEwoKm1vY2tDb250ZXh0
LCBkcmF3QXJyYXlzKF8sIF8sIF8pKTsKIAogICAgICAgICAvLyBMaW5lYXIgZmlsdGVyaW5nIHNo
b3VsZCBiZSByZXN0b3JlZC4KLSAgICAgICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIHRleFBh
cmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKLSAgICAg
ICAgRVhQRUNUX0NBTEwobW9ja0NvbnRleHQsIHRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdy
YXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICAgICAgRVhQRUNUX0NBTEwoKm1vY2tDb250
ZXh0LCB0ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFS
KSk7CisgICAgICAgIEVYUEVDVF9DQUxMKCptb2NrQ29udGV4dCwgdGV4UGFyYW1ldGVyaShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFH
X0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOwogCiAgICAgICAgIC8vIERlZmF1
bHQgZnJhbWVidWZmZXIgc2hvdWxkIGJlIHJlc3RvcmVkCi0gICAgICAgIEVYUEVDVF9DQUxMKG1v
Y2tDb250ZXh0LCBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCAwKSk7CisgICAgICAgIEVYUEVDVF9DQUxMKCptb2NrQ29udGV4dCwgYmluZEZyYW1lYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOwogICAgIH0KIAogICAgIGludCBz
b3VyY2VUZXh0dXJlSWQgPSAxOwogICAgIGludCBkZXN0VGV4dHVyZUlkID0gMjsKICAgICBJbnRT
aXplIHNpemUoMjU2LCAxMjgpOwotICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+
IGNvcGllcihBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShjY0NvbnRleHQtPmNvbnRl
eHQzRCgpLCBmYWxzZSkpOwotICAgIGNvcGllci0+Y29weVRleHR1cmUoY2NDb250ZXh0LmdldCgp
LCBzb3VyY2VUZXh0dXJlSWQsIGRlc3RUZXh0dXJlSWQsIHNpemUpOworICAgIE93blB0cjxBY2Nl
bGVyYXRlZFRleHR1cmVDb3BpZXI+IGNvcGllcihBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNy
ZWF0ZShtb2NrQ29udGV4dC5nZXQoKSwgZmFsc2UpKTsKKyAgICBjb3BpZXItPmNvcHlUZXh0dXJl
KHNvdXJjZVRleHR1cmVJZCwgZGVzdFRleHR1cmVJZCwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcAppbmRleCBiZDU5N2MxZTZjMTlhM2M3NjRiOGI5ODU4ZjZmZWNmOGM3
MDE0NmM0Li4xMWJmMTE1YjVlMzA4ZjVjNWUyNGM4MmEyOGJlMWEwMTI1MzBmNDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21t
b24uaCIKICNpbmNsdWRlICJDQ0xheWVyVHJlZVRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ1Rp
bGVkTGF5ZXJUZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiRmFrZUNDR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIgogI2luY2x1ZGUgIkxheWVy
UGFpbnRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgpAQCAtNzIsMjkg
KzczLDM3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6Ci0gICAgVGlsZWRMYXllckNocm9taXVtVGVzdCgp
IDogY2NDb250ZXh0KENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRChXZWJLaXQ6OkNvbXBvc2l0
b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJLaXQ6OldlYkdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzKCkpKSkgeyB9Ci0gICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9t
aXVtVGVzdCgpIHsgfQorICAgIFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QoKQorICAgICAgICA6IG1f
Y29udGV4dChXZWJLaXQ6OmNyZWF0ZUZha2VDQ0dyYXBoaWNzQ29udGV4dCgpKQorICAgIHsKKyAg
ICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIG1fcmVz
b3VyY2VQcm92aWRlciA9IENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQo
KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtVGVzdCgpCisgICAg
eworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAgICAg
bV9yZXNvdXJjZVByb3ZpZGVyLmNsZWFyKCk7CisgICAgfQogCiAgICAgdm9pZCB1cGRhdGVUZXh0
dXJlcyhpbnQgY291bnQgPSA1MDApCiAgICAgewotICAgICAgICB1cGRhdGVyLnVwZGF0ZShjY0Nv
bnRleHQuZ2V0KCksICZhbGxvY2F0b3IsICZjb3BpZXIsICZ1cGxvYWRlciwgY291bnQpOworICAg
ICAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVy
LCAmbV91cGxvYWRlciwgY291bnQpOwogICAgIH0KIHB1YmxpYzoKLSAgICAvLyBGSVhNRTogUmVu
YW1lIHRoZXNlIHRvIGFkZCAibV8iLgotICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2ND
b250ZXh0OwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKLSAgICBGYWtlVGV4dHVyZUFs
bG9jYXRvciBhbGxvY2F0b3I7Ci0gICAgRmFrZVRleHR1cmVDb3BpZXIgY29waWVyOwotICAgIEZh
a2VUZXh0dXJlVXBsb2FkZXIgdXBsb2FkZXI7Ci0gICAgQ0NQcmlvcml0eUNhbGN1bGF0b3IgcHJp
b3JpdHlDYWxjdWxhdG9yOworICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0
OworICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKKyAg
ICBDQ1RleHR1cmVVcGRhdGVyIG1fdXBkYXRlcjsKKyAgICBGYWtlVGV4dHVyZUNvcGllciBtX2Nv
cGllcjsKKyAgICBGYWtlVGV4dHVyZVVwbG9hZGVyIG1fdXBsb2FkZXI7CisgICAgQ0NQcmlvcml0
eUNhbGN1bGF0b3IgbV9wcmlvcml0eUNhbGN1bGF0b3I7CiB9OwogCiAKIAogVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogewotICAgIENDUHJpb3JpdHlDYWxj
dWxhdG9yIHByaW9yaXR5Q2FsY3VsYXRvcjsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAg
UmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VU
aWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllcklt
cGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKQEAg
LTEwNCwxMCArMTEzLDEwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGly
dHlUaWxlcykKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwg
MTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwg
MCwgMTAwLCAyMDApKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5
Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwog
Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAw
LCAyMDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXll
ci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0xMTgsOSArMTI3LDkg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIC8v
IEludmFsaWRhdGVzIGJvdGggdGlsZXMuLi4KICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1
cGRhdGUgb25lIG9mIHRoZW0uCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9y
aXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3Jp
dHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAw
LCAxMDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBvbmx5IGhhdmUgdGhlIGZpcnN0IHRp
bGUgc2luY2UgdGhlIG90aGVyIHRpbGUgd2FzIGludmFsaWRhdGVkIGJ1dCBub3QgcGFpbnRlZC4K
QEAgLTEzMCw4ICsxMzksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERp
cnR5VGlsZXMpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVkZWRE
aXJ0eVRpbGVzKQogewotICAgIENDUHJpb3JpdHlDYWxjdWxhdG9yIHByaW9yaXR5Q2FsY3VsYXRv
cjsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0
KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0
LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hy
b21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVy
ZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihu
ZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTE0MywxMCArMTUxLDEwIEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVkZWREaXJ0eVRpbGVzKQogICAgIGxh
eWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAg
IGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwog
Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Cisg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKLSAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2NsdWRl
ZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCksICZvY2NsdWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXll
ci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0xNjIsNyArMTcwLDcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMp
CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDUwLCA1MCkp
OwogICAgIC8vIC4uLi5idXQgdGhlIGFyZWEgaXMgb2NjbHVkZWQuCiAgICAgb2NjbHVkZWQuc2V0
T2NjbHVzaW9uKEludFJlY3QoMCwgMCwgNTAsIDUwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOworICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAx
MDApLCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMTc3LDcgKzE4NSw3IEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVkZWREaXJ0eVRpbGVzKQogCiBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKIHsKLSAgICBPd25Q
dHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25Q
dHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVy
OjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVy
ID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0
KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25Q
dHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGls
ZWRMYXllckltcGwoMSkpKTsKQEAgLTE4NywxMCArMTk1LDEwIEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29u
dGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRl
Q29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCi0gICAgbGF5ZXItPnNldFRl
eHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1
cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+
cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBk
YXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICB1cGRh
dGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQo
KSk7CiAKQEAgLTE5OSw3ICsyMDcsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaERlbGV0ZWRUaWxlcykKICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgw
LCAxKSk7CiAKICAgICB0ZXh0dXJlTWFuYWdlci0+Y2xlYXJQcmlvcml0aWVzKCk7Ci0gICAgdGV4
dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KCZhbGxvY2F0b3IpOworICAgIHRleHR1cmVNYW5h
Z2VyLT5jbGVhckFsbE1lbW9yeShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogICAgIHRleHR1
cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKDQqMTAyNCoxMDI0KTsKIAogICAgIC8v
IFRoaXMgc2hvdWxkIGRyb3AgdGhlIHRpbGVzIG9uIHRoZSBpbXBsIHRocmVhZC4KQEAgLTIxMCw5
ICsyMTgsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxl
cykKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkpOwogCiAgICAg
Ly8gVGhpcyBzaG91bGQgcmVjcmVhdGUgYW5kIHVwZGF0ZSB0aGUgZGVsZXRlZCB0ZXh0dXJlcy4K
LSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAg
ICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAg
IHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOworICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
LCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTIyMyw3ICsyMzEsNyBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7
CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3
IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRM
YXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkp
KTsKQEAgLTIzOCwxMCArMjQ2LDEwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoSWRsZVBhaW50VGlsZXMpCiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdCh2aXNp
YmxlUmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7
CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
KyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwog
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAotICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CisgICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgIHVwZGF0ZVRl
eHR1cmVzKCk7CiAKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciAzeDMg
dGlsZXMgaW4gdGhlIGNlbnRlci4KQEAgLTI1NCwxMCArMjYyLDEwIEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAKICAgICAvLyBGb3IgdGhlIG5l
eHQgZm91ciB1cGRhdGVzLCB3ZSBzaG91bGQgZGV0ZWN0IHdlIHN0aWxsIG5lZWQgaWRsZSBwYWlu
dGluZy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICAgICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICAgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCi0gICAgICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CisgICAgICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKICAgICAgICAgRVhQ
RUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAgICAgICAgIHVw
ZGF0ZVRleHR1cmVzKCk7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CkBAIC0yODEsNyArMjg5LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKIHsKICAgICAvLyBTdGFydCB3aXRoIDJtYiBv
ZiBtZW1vcnksIGJ1dCB0aGUgdGVzdCBpcyBnb2luZyB0byB0cnkgdG8gdXNlIGp1c3QgbW9yZSB0
aGFuIDFtYiwgc28gd2UgcmVkdWNlIHRvIDFtYiBsYXRlci4KLSAgICBPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDIqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9v
bCk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRy
PEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRM
YXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgT3duUHRyPEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsPiBsYXllckltcGwxKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1w
bCgxKSkpOwpAQCAtMzA1LDExICszMTMsMTEgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIGxheWVyMS0+aW52YWxpZGF0
ZUNvbnRlbnRSZWN0KGxheWVyUmVjdCk7CiAKICAgICAvLyBQYWludCBhIHNpbmdsZSB0aWxlIGlu
IGxheWVyMiBzbyB0aGF0IGl0IHdpbGwgaWRsZSBwYWludC4KLSAgICBsYXllcjItPnNldFRleHR1
cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Ci0gICAgbGF5ZXIxLT5zZXRUZXh0dXJl
UHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyMi0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyMS0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIs
IGxheWVyUmVjdCwgMCk7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CisgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVj
dChtX3VwZGF0ZXIsIGxheWVyUmVjdCwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVj
dChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKIAogICAgIC8vIFdlIHNo
b3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIGJvdGggcmVtYWluaW5nIHRpbGVzIGluIGxheWVy
Mi4KICAgICBFWFBFQ1RfVFJVRShsYXllcjItPm5lZWRzSWRsZVBhaW50KGxheWVyMlJlY3QpKTsK
QEAgLTMyMywxMCArMzMxLDEwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNo
VGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVt
b3J5TGltaXRCeXRlcygxMDI0ICogMTAyNCk7CiAKICAgICAvLyBOb3cgaWRsZSBwYWludCBsYXll
cjIuIFdlIGFyZSBnb2luZyB0byBydW4gb3V0IG9mIG1lbW9yeSB0aG91Z2ghCi0gICAgbGF5ZXIy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIGxheWVyMS0+
c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjItPnNl
dFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllcjEtPnNl
dFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVj
dCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CisgICAgbGF5ZXIyLT51cGRh
dGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKIAog
ICAgIC8vIE9oIHdlbGwsIGNvbW1pdCB0aGUgZnJhbWUgYW5kIHB1c2guCiAgICAgdXBkYXRlVGV4
dHVyZXMoKTsKQEAgLTM0MywxMSArMzUxLDExIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwdXNoVGlsZXNBZnRlcklkbGVQYWludEZhaWxlZCkKICAgICBFWFBFQ1RfRkFMU0UobGF5
ZXJJbXBsMi0+aGFzVGlsZUF0KDAsIDIpKTsKIAogICAgIC8vIE5vdyBpZiBsYXllcjIgYmVjb21l
cyBmdWxseSB2aXNpYmxlLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBwYWludCBpdCBhbmQgcHVzaCB2
YWxpZCB0ZXh0dXJlcy4KLSAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5
Q2FsY3VsYXRvcik7Ci0gICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNh
bGN1bGF0b3IpOworICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNh
bGN1bGF0b3IpOworICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNh
bGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAg
ICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGxheWVyMlJlY3QsIDApOwotICAg
IGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgbGF5ZXJSZWN0LCAwKTsKKyAgICBs
YXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgbGF5ZXIyUmVjdCwgMCk7CisgICAg
bGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGxheWVyUmVjdCwgMCk7CiAKICAg
ICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhsYXllcklt
cGwxLmdldCgpKTsKQEAgLTM2Myw3ICszNzEsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAKIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50ZWRPY2NsdWRlZFRpbGVzKQogewotICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6
OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0
cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxl
ZExheWVySW1wbCgxKSkpOwpAQCAtMzc3LDkgKzM4NSw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBwdXNoSWRsZVBhaW50ZWRPY2NsdWRlZFRpbGVzKQogICAgIGxheWVyLT5zZXRW
aXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCi0gICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOworICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
LCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMzg5LDcgKzM5Nyw3IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50ZWRPY2NsdWRlZFRpbGVzKQogCiBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTWFya2VkRGlydHlEdXJpbmdQ
YWludCkKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExh
eWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0o
dGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9w
dFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTQwMiw5ICs0MTAsOSBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTWFya2VkRGlydHlEdXJpbmdQ
YWludCkKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRv
SW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwogCi0gICAg
bGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCkBAIC00MTUsNyArNDIzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hUaWxlc01hcmtlZERpcnR5RHVyaW5nUGFpbnQpCiAKIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRP
bk5leHRMYXllcikKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAy
NCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAy
NCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VU
aWxlZExheWVyQ2hyb21pdW0+IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNo
cm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVy
Q2hyb21pdW0+IGxheWVyMiA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRl
eHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxU
aHJlYWQ7CkBAIC00MzAsMTUgKzQzOCwxNSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiAgICAg
bGF5ZXIyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwog
ICAgIGxheWVyMi0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
KTsKIAotICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9y
KTsKLSAgICBsYXllcjItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7
CisgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7
CisgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7
CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCi0gICAgbGF5ZXIx
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
CisgICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwg
MTAwLCAyMDApLCAwKTsKIAogICAgIC8vIEludmFsaWRhdGUgYSB0aWxlIG9uIGxheWVyMQogICAg
IGxheWVyMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJ
bnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIxLmdldCgpKTsKLSAgICBsYXllcjItPnVwZGF0
ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBs
YXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCksIDApOwogCiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXIxSW1wbC5nZXQoKSk7CkBAIC00NTMsNyArNDYxLDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVyTWFya2VkRGlydHlEdXJpbmdQYWludE9u
TmV4dExheWVyKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5
ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25QcmV2aW91c0xheWVyKQogewotICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNv
bnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIxID0g
YWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkp
KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIyID0gYWRvcHRSZWYo
bmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKQEAgLTQ2OCwxNCArNDc2LDE0IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5
RHVyaW5nUGFpbnRPblByZXZpb3VzTGF5CiAgICAgbGF5ZXIyLT5zZXRWaXNpYmxlQ29udGVudFJl
Y3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyMi0+aW52YWxpZGF0ZUNvbnRl
bnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKIAotICAgIGxheWVyMS0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKLSAgICBsYXllcjItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gSW52YWxpZGF0ZSBhIHRpbGUgb24gbGF5ZXIyCiAg
ICAgbGF5ZXIxLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRl
KEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXllcjIuZ2V0KCkpOwotICAgIGxheWVyMS0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAg
IGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCksIDApOworICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdChtX3Vw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICB1cGRhdGVUZXh0dXJlcygp
OwogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjFJbXBsLmdldCgpKTsKICAgICBs
YXllcjItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIySW1wbC5nZXQoKSk7CkBAIC00OTcsNyArNTA1
LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5
KQogICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSB0aGUgdmlzaWJsZSByZWN0
LCBzbyB3ZSB3aWxsIHJ1biBvdXQgb2YgbWVtb3J5IGluIGZpcnN0IGlkbGUgcGFpbnQuCiAgICAg
aW50IG1lbW9yeUxpbWl0ID0gNCAqIDEwMCAqIDEwMDsgLy8gMSB0aWxlcywgNCBieXRlcyBwZXIg
cGl4ZWwuCiAKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1lbW9yeUxpbWl0
LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1lbW9yeUxpbWl0
LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExh
eWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0o
dGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9w
dFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTUwNyw5ICs1MTUsOSBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAg
bGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdCh2aXNpYmxlUmVjdCk7CiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVBy
aW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwg
dmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIElkbGUtcGFpbnRpbmcgc2hvdWxkIHNlZSBubyBt
b3JlIHByaW9yaXR5IHRpbGVzIGZvciBwYWludGluZy4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXIt
Pm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CkBAIC01MjAsOSArNTI4LDkgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIC8vIFdl
IHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBpbXBsIHNpZGUuCiAgICAgRVhQRUNUX1RSVUUo
bGF5ZXJJbXBsLT5oYXNUaWxlQXQoMSwgMSkpOwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0
aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2li
bGVSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCB2aXNp
YmxlUmVjdCwgMCk7CiAKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2lnbmFsIHdlIG5lZWQgYW5vdGhl
ciBpZGxlIHBhaW50LgogICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlz
aWJsZVJlY3QpKTsKQEAgLTUzMCw3ICs1MzgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBpZGxlUGFpbnRaZXJvU2l6ZWRMYXllcikKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKDIwMDAwLCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlKDIwMDAwLCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRy
PEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExh
eWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxh
eWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKQEAgLTU0Nywx
MSArNTU1LDExIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJv
U2l6ZWRMYXllcikKICAgICAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChjb250ZW50
UmVjdCk7CiAgICAgICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudFJlY3Qp
OwogCi0gICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0
b3IpOworICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1
bGF0b3IpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAK
ICAgICAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IHBhaW50IG9yIGlkbGUtcGFpbnQuCi0gICAg
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7Cisg
ICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRSZWN0LCAw
KTsKIAogICAgICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxlcy4KICAgICAgICAg
RVhQRUNUX0VRKDB1LCBsYXllci0+bnVtUGFpbnRlZFRpbGVzKCkpOwpAQCAtNTcxLDcgKzU3OSw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlTGF5
ZXJzKQogICAgIEludFNpemUgY29udGVudEJvdW5kcygxMDAsIDEwMCk7CiAgICAgSW50UmVjdCBj
b250ZW50UmVjdChJbnRQb2ludDo6emVybygpLCBjb250ZW50Qm91bmRzKTsKIAotICAgIE93blB0
cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoMjAwMDAsIDEwMjQpOworICAgIE93blB0cjxDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoMjAwMDAsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29s
KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihu
ZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxGYWtlQ0NUaWxl
ZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgx
KSkpOwpAQCAtNTg1LDkgKzU5Myw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBp
ZGxlUGFpbnROb25WaXNpYmxlTGF5ZXJzKQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBp
KyspIHsKICAgICAgICAgLy8gUGFpbnQgLyBpZGxlLXBhaW50LgotICAgICAgICBsYXllci0+c2V0
VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICAgICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICAgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgICAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOworICAgICAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QobV91cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAKICAgICAgICAgLy8gTm9u
LXZpc2libGUgbGF5ZXJzIGRvbid0IG5lZWQgaWRsZSBwYWludC4KICAgICAgICAgRVhQRUNUX0ZB
TFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpAQCAtNjExLDcgKzYxOSw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RIYXZlT3V0ZXJUaWxlcyhGYWtlQ0NUaWxlZExheWVySW1wbCog
bGF5ZXJJbXBsLCBpbnQgd2lkdGgsIGludCBoCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlQW5pbWF0aW5nTGF5ZXJzKQogewotICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoODAwMCo4MDAwKjgsIDEwMjQpOworICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoODAwMCo4MDAwKjgsIDEwMjQsIENDUmVuZGVyZXI6OkNv
bnRlbnRQb29sKTsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKIAog
ICAgIGludCB0aWxlV2lkdGggPSBGYWtlVGlsZWRMYXllckNocm9taXVtOjp0aWxlU2l6ZSgpLndp
ZHRoKCk7CkBAIC02MzUsNyArNjQzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXllcnMpCiAgICAgICAgICAgICBsYXllci0+
c2V0VmlzaWJsZUNvbnRlbnRSZWN0KHZpc2libGVSZWN0KTsKICAgICAgICAgICAgIGxheWVyLT5p
bnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCi0gICAgICAgICAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICAgICAgICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgICAg
ICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAgICAgICAg
IC8vIElmIGlkbGVQYWludFJlY3QgZ2l2ZXMgYmFjayBhIG5vbi1lbXB0eSByZXN1bHQgdGhlbiB3
ZSBzaG91bGQgcGFpbnQgaXQuIE90aGVyd2lzZSwKQEAgLTY0NywxMCArNjU1LDEwIEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlQW5pbWF0aW5nTGF5
ZXJzKQogCiAgICAgICAgICAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgdG8gYmUgcHJlcGFpbnRlZCBh
dCBhbGwsIHRoZW4gYWZ0ZXIgZm91ciB1cGRhdGVzIHdlIHNob3VsZCBoYXZlIHRoZSBvdXRlciBy
b3cvY29sdW1ucyBwYWludGVkLgogICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCA0OyAr
K2spIHsKLSAgICAgICAgICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3Jp
dHlDYWxjdWxhdG9yKTsKKyAgICAgICAgICAgICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgICAgICAgICAgICAgIHRleHR1cmVNYW5hZ2Vy
LT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAotICAgICAgICAgICAgICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CisgICAgICAgICAgICAgICAgbGF5
ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAg
ICAgICAgICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgICAgICAgICAgICAgbGF5ZXItPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAgICAgIH0KQEAgLTY2MCwxMCAr
NjY4LDEwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNp
YmxlQW5pbWF0aW5nTGF5ZXJzKQogICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGlk
bGUgcGFpbnQgcGFzdCB0aGUgb3V0ZXJtb3N0IHRpbGVzLgogICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogICAgICAgICAgICAgZm9y
IChpbnQgayA9IDA7IGsgPCA0OyArK2spIHsKLSAgICAgICAgICAgICAgICBsYXllci0+c2V0VGV4
dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICAgICAgICAgICAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgICAgICAg
ICAgICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAotICAgICAgICAg
ICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7
CisgICAgICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgdmlz
aWJsZVJlY3QsIDApOwogICAgICAgICAgICAgICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgICAg
ICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAg
ICAgICAgIH0KQEAgLTY3NSwyNCArNjgzLDE5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlQW5pbWF0aW5nTGF5ZXJzKQogCiBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogewotICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNv
bnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBh
ZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkp
OwogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIE93blB0cjxG
YWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExh
eWVySW1wbCgxKSkpOwogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgZmFrZUFsbG9jYXRvcjsK
LSAgICBGYWtlVGV4dHVyZUNvcGllciBmYWtlQ29waWVyOwotICAgIEZha2VUZXh0dXJlVXBsb2Fk
ZXIgZmFrZVVwbG9hZGVyOwotICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0
ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKFdlYktpdDo6Q29tcG9zaXRvckZha2VXZWJH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMoKSkpOwotCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlz
IGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJv
dW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVj
dChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50
UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0
aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6
ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKLSAgICB1cGRhdGVyLnVwZGF0ZShjY0NvbnRleHQuZ2V0
KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7Cisg
ICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCksIDApOworICAgIHVwZGF0ZVRleHR1cmVzKDEwMDApOwogICAgIGxheWVyLT5wdXNoUHJv
cGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBib3Ro
IHRpbGVzIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC03MDIsMjEgKzcwNSwyMSBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwogICAgIC8vIElu
dm9rZSB1cGRhdGVDb250ZW50UmVjdCBhZ2Fpbi4gQXMgdGhlIGxheWVyIGlzIHZhbGlkIHVwZGF0
ZUNvbnRlbnRSZWN0IHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExheWVyVGV4
dHVyZVVwZGF0ZXIuCi0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKLSAgICB1cGRhdGVyLnVwZGF0ZShjY0NvbnRleHQuZ2V0
KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRlciwgMTAwMCk7Cisg
ICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCksIDApOworICAgIHVwZGF0ZVRleHR1cmVzKDEwMDApOwogICAgIEVYUEVDVF9FUSgwLCBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogCiAgICAg
bGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDUwLCA1MCkpOwogICAg
IC8vIHNldFJlY3RUb0ludmFsaWRhdGUgdHJpZ2dlcnMgaW52YWxpZGF0ZUNvbnRlbnRSZWN0KCkg
YmVpbmcgaW52b2tlZCBmcm9tIHVwZGF0ZUNvbnRlbnRSZWN0LgogICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMjUsIDI1LCA1
MCwgNTApLCBsYXllci5nZXQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPmNsZWFyUHJlcGFyZUNvdW50KCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKLSAgICB1cGRhdGVyLnVwZGF0ZShj
Y0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZha2VVcGxvYWRl
ciwgMTAwMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIHVwZGF0ZVRleHR1cmVzKDEwMDApOwogICAgIEVY
UEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50
KCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVD
b3VudCgpOwogICAgIC8vIFRoZSBsYXllciBzaG91bGQgc3RpbGwgYmUgaW52YWxpZCBhcyB1cGRh
dGVDb250ZW50UmVjdCBpbnZva2VkIGludmFsaWRhdGUuCi0gICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKLSAgICB1cGRhdGVy
LnVwZGF0ZShjY0NvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgJmZh
a2VVcGxvYWRlciwgMTAwMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRl
ciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIHVwZGF0ZVRleHR1cmVzKDEwMDAp
OwogICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJl
cGFyZUNvdW50KCkpOwogfQogCkBAIC03MjUsOCArNzI4LDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkK
ICAgICAvLyBUaGUgdXBkYXRlUmVjdCAodGhhdCBpbmRpY2F0ZXMgd2hhdCB3YXMgYWN0dWFsbHkg
cGFpbnRlZCkgc2hvdWxkIGJlIGluCiAgICAgLy8gbGF5ZXIgc3BhY2UsIG5vdCB0aGUgY29udGVu
dCBzcGFjZS4KIAotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEw
MjQsIDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEw
MjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVk
TGF5ZXJXaXRoU2NhbGVkQm91bmRzPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
cldpdGhTY2FsZWRCb3VuZHModGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKIAogICAgIEludFJlY3QgbGF5ZXJCb3VuZHMoMCwg
MCwgMzAwLCAyMDApOwogICAgIEludFJlY3QgY29udGVudEJvdW5kcygwLCAwLCAyMDAsIDI1MCk7
CkBAIC03MzksMzIgKzc0MywzMiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVy
aWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogICAgIC8vIEhvd2V2ZXIs
IGl0IHNob3VsZCBzdGlsbCBiZSBpbiBsYXllciBzcGFjZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAg
ICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50Qm91bmRzKTsKIAotICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVy
LT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVy
ZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVD
VF9FUShGbG9hdFJlY3QoMCwgMCwgMzAwLCAzMDAgKiAwLjgpLCBsYXllci0+dXBkYXRlUmVjdCgp
KTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogCiAgICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFyZSB1
cGRhdGVkIG9uY2UsIGFub3RoZXIgaW52YWxpZGF0ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0aGUg
Ym91bmRzIG9mIHRoZSBsYXllci4KLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJp
b3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlv
cml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
KTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAwKTsKKyAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAwKTsK
ICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QobGF5ZXJCb3VuZHMpLCBsYXllci0+
dXBkYXRlUmVjdCgpKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogCiAgICAgLy8gUGFydGlhbCBy
ZS1wYWludCBzaG91bGQgYWxzbyBiZSByZXByZXNlbnRlZCBieSB0aGUgdXBkYXRlUmVjdCBpbiBs
YXllciBzcGFjZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAgICAgSW50UmVjdCBwYXJ0aWFsRGFtYWdl
KDMwLCAxMDAsIDEwLCAxMCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChwYXJ0
aWFsRGFtYWdlKTsKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxj
dWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1
bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7CisgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7CiAg
ICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDQ1LCA4MCwgMTUsIDgpLCBsYXllci0+
dXBkYXRlUmVjdCgpKTsKIH0KIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlm
eUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKIHsKLSAgICBPd25QdHI8Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250
ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRv
cHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsK
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFr
ZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXll
ckltcGwoMSkpKTsKQEAgLTc3OCw5ICs3ODIsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIEVY
UEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCksIGxheWVyLT5sYXN0
TmVlZHNEaXNwbGF5UmVjdCgpKTsKIAogICAgIC8vIFB1c2ggdGhlIHRpbGVzIHRvIHRoZSBpbXBs
IHNpZGUgYW5kIGNoZWNrIHRoYXQgdGhlcmUgaXMgZXhhY3RseSBvbmUuCi0gICAgbGF5ZXItPnNl
dFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRl
eHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdl
ci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CiAgICAgdXBk
YXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0
KCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKQEAgLTc5
NSw5ICs3OTksOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxp
ZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VR
KEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCksIGxheWVyLT5sYXN0TmVlZHNEaXNwbGF5UmVjdCgp
KTsKIAogICAgIC8vIFRoZSBpbXBsIHNpZGUgc2hvdWxkIGdldCAyeDIgdGlsZXMgbm93LgotICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCksIDAp
OwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAw
KSk7CkBAIC04MDgsOCArODEyLDggQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZl
cmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICAvLyBJbnZhbGlk
YXRlIHRoZSBlbnRpcmUgbGF5ZXIgYWdhaW4sIGJ1dCBkbyBub3QgcGFpbnQuIEFsbCB0aWxlcyBz
aG91bGQgYmUgZ29uZSBub3cgZnJvbSB0aGUKICAgICAvLyBpbXBsIHNpZGUuCiAgICAgbGF5ZXIt
PnNldE5lZWRzRGlzcGxheSgpOwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlv
cml0eUNhbGN1bGF0b3IpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJ
bnRSZWN0KDEsIDAsIDAsIDEpLCAwKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMo
bV9wcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3Vw
ZGF0ZXIsIEludFJlY3QoMSwgMCwgMCwgMSksIDApOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlv
cml0aXplVGV4dHVyZXMoKTsKIAogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CkBAIC04NTAsNyArODU0LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHNraXBzRHJhd0dldHNSZXNldCkKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXll
cihyb290TGF5ZXIpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNp
emUoMzAwLCAzMDApKTsKIAotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0
ZXIsIG1lbW9yeUxpbWl0KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3Vw
ZGF0ZXIsIG1lbW9yeUxpbWl0KTsKIAogICAgIC8vIFdlJ2xsIHNraXAgdGhlIHJvb3QgbGF5ZXIu
CiAgICAgRVhQRUNUX1RSVUUocm9vdExheWVyLT5za2lwc0RyYXcoKSk7CkBAIC04NjEsMTAgKzg2
NSwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0
KQogICAgIC8vIFJlbW92ZSB0aGUgY2hpbGQgbGF5ZXIuCiAgICAgcm9vdExheWVyLT5yZW1vdmVB
bGxDaGlsZHJlbigpOwogCi0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRl
ciwgbWVtb3J5TGltaXQpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBk
YXRlciwgbWVtb3J5TGltaXQpOwogICAgIEVYUEVDVF9GQUxTRShyb290TGF5ZXItPnNraXBzRHJh
dygpKTsKIAotICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5j
bGVhckFsbE1lbW9yeSgmYWxsb2NhdG9yKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRz
VGV4dHVyZU1hbmFnZXIoKS0+Y2xlYXJBbGxNZW1vcnkobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgp
KTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcigwKTsKICAgICBjY0xheWVyVHJl
ZUhvc3QuY2xlYXIoKTsKICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CkBA
IC04NzIsMTYgKzg3NiwxNiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNE
cmF3R2V0c1Jlc2V0KQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9T
bWFsbGVyKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAqMTAyNCox
MDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDYwKjEwMjQq
MTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGls
ZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9t
aXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNp
emUoNzAwLCA3MDApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3Qo
MCwgMCwgNzAwLCA3MDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJl
Y3QoMCwgMCwgNzAwLCA3MDApKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhw
cmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3By
aW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJl
cygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAs
IDcwMCwgNzAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwg
SW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOwogCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRT
aXplKDIwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0
KDAsIDAsIDIwMCwgMjAwKSk7CkBAIC04ODksNyArODkzLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHJlc2l6ZVRvU21hbGxlcikKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIGh1Z2VMYXllclVwZGF0ZUNyYXNoKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpjcmVhdGUoNjAqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKDYwKjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKICAgICBp
bnQgc2l6ZSA9IDEgPDwgMzA7CkBAIC04OTgsOSArOTAyLDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGh1Z2VMYXllclVwZGF0ZUNyYXNoKQogICAgIGxheWVyLT5pbnZhbGlkYXRl
Q29udGVudFJlY3QoSW50UmVjdCgwLCAwLCBzaXplLCBzaXplKSk7CiAKICAgICAvLyBFbnN1cmUg
bm8gY3Jhc2ggZm9yIGJvdW5kcyB3aGVyZSBzaXplICogc2l6ZSB3b3VsZCBvdmVyZmxvdyBhbiBp
bnQuCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7
CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsK
ICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNzAwLCA3MDApLCAwKTsKKyAg
ICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDcwMCwg
NzAwKSwgMCk7CiB9CiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBk
YXRlcykKQEAgLTkyOSwxNyArOTMzLDE3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwYXJ0aWFsVXBkYXRlcykKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJ
bnRTaXplKDMwMCwgMjAwKSk7CiAKICAgICAvLyBGdWxsIHVwZGF0ZSBvZiBhbGwgNiB0aWxlcy4K
LSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cyhtX3VwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgIHsK
ICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgICAgIE93
blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NU
aWxlZExheWVySW1wbCgxKSkpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAg
RVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3Vu
dCgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAg
ICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShtX3Vw
ZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVy
dGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgfQpAQCAtOTQ3LDE3ICs5NTEsMTcgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogCiAgICAgLy8gRnVs
bCB1cGRhdGUgb2YgMyB0aWxlcyBhbmQgcGFydGlhbCB1cGRhdGUgb2YgMyB0aWxlcy4KICAgICBs
YXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgMzAwLCAxNTApKTsKLSAg
ICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyht
X3VwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgIHsKICAg
ICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgICAgIE93blB0
cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxl
ZExheWVySW1wbCgxKSkpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQ
RUNUX0VRKDMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgp
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAg
ICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQRUNUX0VRKDMsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNF
KHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0
ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgfQpAQCAtOTY4LDE0ICs5NzIsMTQgQEAgVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogICAgIHsKICAgICAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgICAgIE93blB0cjxGYWtl
Q0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVy
SW1wbCgxKSkpOwotICAgICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVy
LCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICAgICAgY2NMYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9F
USgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKICAgICAgICAgdXBk
YXRlVGV4dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh1cGRh
dGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRhdGVyLmhh
c01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwogICAgIH0KQEAgLTk5NSwxNCArOTk5LDE0IEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKICAgICB7CiAgICAgICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgICAgICBPd25QdHI8RmFrZUNDVGls
ZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwo
MSkpKTsKLSAgICAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIGNjTGF5ZXJUcmVlSG9z
dC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKSk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAg
ICBFWFBFQ1RfVFJVRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIHVwZGF0ZVRl
eHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5o
YXNNb3JlVXBkYXRlcygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG1fdXBkYXRlci5oYXNNb3Jl
VXBkYXRlcygpKTsKICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNs
ZWFyVXBkYXRlQ291bnQoKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsLmdldCgpKTsKICAgICB9CkBAIC0xMDEzLDE2ICsxMDE3LDE5IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKICAgICB7CiAgICAgICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgICAgICBPd25QdHI8RmFrZUNDVGlsZWRM
YXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkp
KTsKLSAgICAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIGNjTGF5ZXJUcmVlSG9zdC0+
dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBF
WFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKICAgICAgICAgbGF5ZXItPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICB9CiAgICAgY2NMYXllclRyZWVI
b3N0LT5jb21taXRDb21wbGV0ZSgpOwogCi0gICAgY2NMYXllclRyZWVIb3N0LT5jb250ZW50c1Rl
eHR1cmVNYW5hZ2VyKCktPmNsZWFyQWxsTWVtb3J5KCZhbGxvY2F0b3IpOworICAgIHsKKyAgICAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIGNjTGF5ZXJU
cmVlSG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jbGVhckFsbE1lbW9yeShtX3Jlc291
cmNlUHJvdmlkZXIuZ2V0KCkpOworICAgIH0KICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RM
YXllcigwKTsKICAgICBjY0xheWVyVHJlZUhvc3QuY2xlYXIoKTsKICAgICBXZWJLaXQ6OldlYkNv
bXBvc2l0b3I6OnNodXRkb3duKCk7CkBAIC0xMDMwLDcgKzEwMzcsNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAKIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRob3V0T2NjbHVzaW9uKQogewotICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNv
bnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBh
ZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkp
OwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVz
IGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCkBAIC0xMDM4LDE1ICsxMDQ1LDE1IEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRob3V0T2NjbHVzaW9uKQog
ICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRv
cik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9y
KTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsK
KyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSwgMCk7CiAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogfQogCiBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikKIHsKLSAgICBPd25QdHI8Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50
UG9vbCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRS
ZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwogCkBAIC0xMDU5LDkgKzEwNjYsOSBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lv
bikKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwg
bGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMo
cHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9w
cmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1f
dXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNU
X0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENv
dW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4
ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMDcyLDcgKzEwNzksNyBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikKIAogICAg
IG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDI1MCwgMjAwLCAzMDAsIDEwMCkpOwogICAg
IGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwot
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYt
MiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7
CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxv
YWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwODMsNyArMTA5MCw3IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQogCiAgICAgb2NjbHVk
ZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjUwLCAyNTAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5
ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAm
b2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNiwgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBF
WFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1
ZSgpLCAwLCAxKTsKQEAgLTEwOTMsNyArMTEwMCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQogCiBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFp
bnRzKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQs
IDEwMjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQs
IDEwMjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0
ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVk
ZWQ7CiAKQEAgLTExMDcsOSArMTExNCw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiAgICAg
bGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgMzYwKSk7CiAg
ICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7
CiAKLSAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsK
KyAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwog
ICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDM2MCksICZvY2NsdWRl
ZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAw
LCA2MDAsIDM2MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDI0LTMsIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNU
X05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwg
MCwgMSk7CkBAIC0xMTIyLDkgKzExMjksOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAg
IG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCkpOwogICAg
IGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM1MCkpOwog
ICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkp
OwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOwor
ICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRh
dGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzUwKSwgJm9jY2x1ZGVk
KTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAs
IDYwMCwgMzUwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMjQtNiwgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1Rf
TkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAw
LCAxKTsKQEAgLTExMzcsOSArMTE0NCw5IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiAgICAg
b2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTUwKSk7CiAgICAg
bGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgMzQwKSk7CiAg
ICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7
Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7Cisg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0
ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNDApLCAmb2NjbHVkZWQp
OworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwg
NjAwLCAzNDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgyNC02LCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9O
RUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAs
IDEpOwpAQCAtMTE1MCw3ICsxMTU3LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxpdHlDb25zdHJhaW50cykKIAogVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlk
YXRpb24pCiB7Ci0gICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVy
ZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAy
NCwgMTAyNCk7CisgICAgT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVy
ZU1hbmFnZXIgPSBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAy
NCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRM
YXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVt
KHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2Ns
dWRlZDsKIApAQCAtMTE2MiwxMSArMTE2OSwxNCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKICAgICBvY2NsdWRlZC5z
ZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+c2V0
VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3JpdHlDYWxjdWxhdG9yKTsKKyAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5
ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCks
ICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwotICAgIHVwZGF0ZVRleHR1cmVzKCk7Cisg
ICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAg
ICAgdXBkYXRlVGV4dHVyZXMoKTsKKyAgICB9CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5v
dmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKICAgICBFWFBF
Q1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZFRyYW5zbHVj
ZW50KCksIDMzMDAwMCwgMSk7CkBAIC0xMTc1LDcgKzExODUsNyBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7
CiAKICAgICAvLyBSZXBhaW50IHdpdGhvdXQgbWFya2luZyBpdCBkaXJ0eS4gVGhlIDMgY3VsbGVk
IHRpbGVzIHdpbGwgYmUgcHJlLXBhaW50ZWQgbm93LgotICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRl
ZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEx
ODUsNyArMTE5NSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc05vdFBh
aW50ZWRXaXRob3V0SW52YWxpZGF0aW9uKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFRyYW5zZm9ybXMpCiB7Ci0gICAgT3duUHRy
PENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCk7CisgICAgT3duUHRy
PENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6
Q29udGVudFBvb2wpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9
IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgp
KSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKIApAQCAtMTIwMiw5ICsx
MjEyLDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhP
Y2NsdXNpb25BbmRUcmFuc2Zvcm1zKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0
KDEwMCwgMTAwLCAxNTAsIDUwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJ
bnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlk
YXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5zZXRU
ZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1
ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVy
ZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEyMTQsNyAr
MTIyNCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRo
T2NjbHVzaW9uQW5kVHJhbnNmb3JtcykKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogewotICAgIE93blB0cjxDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQpOworICAgIE93blB0cjxDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEwMjQsIENDUmVuZGVyZXI6OkNvbnRl
bnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9w
dFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwog
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAKQEAgLTEyMzAsOSArMTI0MCw5
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVz
aW9uQW5kU2NhbGluZykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIw
MCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250
ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlv
cml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3Jp
dGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwog
ICAgIC8vIFRoZSBjb250ZW50IGlzIGhhbGYgdGhlIHNpemUgb2YgdGhlIGxheWVyIChzbyB0aGUg
bnVtYmVyIG9mIHRpbGVzIGlzIGZld2VyKS4KICAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBjb250
ZW50IGlzIDMwMHgzMDAsIGFuZCBzaW5jZSB0aGUgdGlsZSBzaXplIGlzIDEwMCwgdGhlCiAgICAg
Ly8gbnVtYmVyIG9mIHRpbGVzIDN4My4KQEAgLTEyNTAsOSArMTI2MCw5IEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykK
ICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAyMDApKTsK
ICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5
ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9y
aXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3Jp
dHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAw
LCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0
ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSg5
LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkp
OwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBs
b2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMjcwLDkgKzEyODAsOSBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAg
ICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDE1MCwgMTAwKSk7CiAg
ICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVy
LT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhwcmlvcml0
eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5
Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwot
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoOS0x
LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsK
IAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9h
ZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTI4Miw5ICsxMjkyLDEwIEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKIAog
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9u
KQogewotICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEw
MjQpOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDEw
MjQsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0
dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7
CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAKICAgICAvLyBUaGUg
dGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRz
IHR3byB0aWxlcyBpbiB2YXJpb3VzIHdheXMuCiAKQEAgLTEyOTksMTMgKzEzMTAsMTMgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQog
ICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QodmlzaWJsZUJvdW5kcyk7CiAgICAgbGF5
ZXItPnNldERyYXdPcGFjaXR5KDEpOwogCi0gICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KHByaW9yaXR5Q2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1f
cHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7CiAKICAgICAvLyBJZiB0aGUgbGF5ZXIgZG9lc24ndCBwYWludCBvcGFxdWUgY29udGVu
dCwgdGhlbiB0aGUgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24gc2hvdWxkIGJlIGVtcHR5Lgog
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qo
SW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRCb3Vu
ZHMpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRz
LCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNv
bnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlz
aWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250ZW50
cy5pc0VtcHR5KCkpOwogCkBAIC0xMzE4LDcgKzEzMjksNyBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgb3BhcXVlUGFpbnRS
ZWN0ID0gSW50UmVjdCgxMCwgMTAsIDkwLCAxOTApOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKICAgICBs
YXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2Ns
dWRlZCk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVy
LT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVy
c2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5i
b3VuZHMoKSk7CkBAIC0xMzMxLDcgKzEzNDIsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAKICAgICAvLyBJZiB3ZSBwYWludCBh
Z2FpbiB3aXRob3V0IGludmFsaWRhdGluZywgdGhlIHNhbWUgc3R1ZmYgc2hvdWxkIGJlIG9wYXF1
ZS4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRS
ZWN0KEludFJlY3QoKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNv
bnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1f
dXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICB1cGRhdGVUZXh0dXJlcygp
OwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9u
KCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlz
aWJsZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKQEAgLTEzNDYsNyArMTM1Nyw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJl
Z2lvbikKICAgICAvLyBub3QgYmUgYWZmZWN0ZWQuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCAxLCAxKSk7Ci0gICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1
ZGVkKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXIt
PnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJz
ZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJv
dW5kcygpKTsKQEAgLTEzNjEsNyArMTM3Miw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKICAgICAvLyBub3QgYmUgYWZmZWN0ZWQu
CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVj
dChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgx
MCwgMTAsIDEsIDEpKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QodXBkYXRlciwgY29u
dGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91
cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7
CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24o
KTsKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24oSW50UmVjdCgxMCwgMTAwLCA5MCwg
MTAwKSwgdmlzaWJsZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKQEAgLTEzNzUs
OSArMTM4NiwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNvbnRl
bnRPcGFxdWVSZWdpb24pCiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwaXhlbHNQ
YWludGVkTWV0cmljcykKIHsKLSAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAxMDI0KTsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAxMDI0LCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCk7CiAgICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
Q2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1ZGVkOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwog
CiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFu
ZCB0aGVuIHBhaW50cyB0d28gdGlsZXMgaW4gdmFyaW91cyB3YXlzLgogCkBAIC0xMzkyLDEzICsx
NDA0LDEzIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwaXhlbHNQYWludGVkTWV0
cmljcykKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KHZpc2libGVCb3VuZHMpOwog
ICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKIAotICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhwcmlvcml0eUNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwogCiAgICAgLy8gSW52YWxpZGF0ZXMgYW5kIHBhaW50cyB0aGUgd2hvbGUg
bGF5ZXIuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBh
aW50UmVjdChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29u
dGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRl
bnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBk
YXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwog
ICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7
CiAgICAgRVhQRUNUX1RSVUUob3BhcXVlQ29udGVudHMuaXNFbXB0eSgpKTsKQEAgLTE0MTMsNyAr
MTQyNSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwaXhlbHNQYWludGVkTWV0
cmljcykKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFp
bnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRS
ZWN0KDAsIDAsIDEsIDEpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJl
Y3QoNTAsIDIwMCwgMTAsIDEwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0
ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICB1cGRhdGVUZXh0
dXJlcygpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVl
UmVnaW9uKCk7CiAgICAgRVhQRUNUX1RSVUUob3BhcXVlQ29udGVudHMuaXNFbXB0eSgpKTsKQEAg
LTE0NzQsMTQgKzE0ODYsMTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGRvbnRB
bGxvY2F0ZUNvbnRlbnRzV2hlblRhcmdldFN1cmZhY2VDYW50QmVBbGxvY2EKICAgICByb290LT5p
bnZhbGlkYXRlQ29udGVudFJlY3Qocm9vdFJlY3QpOwogICAgIGNoaWxkLT5pbnZhbGlkYXRlQ29u
dGVudFJlY3QoY2hpbGRSZWN0KTsKICAgICBjaGlsZDItPmludmFsaWRhdGVDb250ZW50UmVjdChj
aGlsZDJSZWN0KTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICBjY0xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkpOwogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDEwMDApOwogICAgICAgICBFWFBFQ1RfRVEoNiwgcm9v
dC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgzLCBjaGlsZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgzLCBjaGlsZDItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3Jl
VXBkYXRlcygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRl
cygpKTsKIAogICAgICAgICByb290LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVw
ZGF0ZUNvdW50KCk7CiAgICAgICAgIGNoaWxkLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5j
bGVhclVwZGF0ZUNvdW50KCk7CkBAIC0xNTA5LDE0ICsxNTIxLDE0IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBkb250QWxsb2NhdGVDb250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2Fu
dEJlQWxsb2NhCiAgICAgcm9vdC0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KHJvb3RSZWN0KTsKICAg
ICBjaGlsZC0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNoaWxkUmVjdCk7CiAgICAgY2hpbGQyLT5p
bnZhbGlkYXRlQ29udGVudFJlY3QoY2hpbGQyUmVjdCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnModXBkYXRlciwgKDMgKiAyICsgMyAqIDEpICogKDEwMCAqIDEwMCkgKiA0KTsK
KyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsICgzICogMiArIDMg
KiAxKSAqICgxMDAgKiAxMDApICogNCk7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CiAgICAg
ICAgIEVYUEVDVF9FUSg2LCByb290LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVD
b3VudCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDAsIGNoaWxkLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDAsIGNoaWxkMi0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9G
QUxTRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UobV91
cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogCiAgICAgICAgIHJvb3QtPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKICAgICAgICAgY2hpbGQtPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKQEAgLTE1NDUsMTQgKzE1NTcs
MTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGRvbnRBbGxvY2F0ZUNvbnRlbnRz
V2hlblRhcmdldFN1cmZhY2VDYW50QmVBbGxvY2EKICAgICByb290LT5pbnZhbGlkYXRlQ29udGVu
dFJlY3Qocm9vdFJlY3QpOwogICAgIGNoaWxkLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY2hpbGRS
ZWN0KTsKICAgICBjaGlsZDItPmludmFsaWRhdGVDb250ZW50UmVjdChjaGlsZDJSZWN0KTsKLSAg
ICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCAoMyAqIDEpICogKDEwMCAq
IDEwMCkgKiA0KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIs
ICgzICogMSkgKiAoMTAwICogMTAwKSAqIDQpOwogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDEwMDApOwog
ICAgICAgICBFWFBFQ1RfRVEoMCwgcm9vdC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBk
YXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBjaGlsZC0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBjaGlsZDIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBF
Q1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KG1fdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKIAogICAgICAgICByb290LT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIGNoaWxkLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CkBAIC0xNTc0LDcgKzE1
ODYsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGRvbnRBbGxvY2F0ZUNvbnRl
bnRzV2hlblRhcmdldFN1cmZhY2VDYW50QmVBbGxvY2EKICAgICB9CiAgICAgY2NMYXllclRyZWVI
b3N0LT5jb21taXRDb21wbGV0ZSgpOwogCi0gICAgY2NMYXllclRyZWVIb3N0LT5jb250ZW50c1Rl
eHR1cmVNYW5hZ2VyKCktPmNsZWFyQWxsTWVtb3J5KCZhbGxvY2F0b3IpOworICAgIHsKKyAgICAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIGNjTGF5ZXJU
cmVlSG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jbGVhckFsbE1lbW9yeShtX3Jlc291
cmNlUHJvdmlkZXIuZ2V0KCkpOworICAgIH0KICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RM
YXllcigwKTsKICAgICBjY0xheWVyVHJlZUhvc3QuY2xlYXIoKTsKICAgICBXZWJLaXQ6OldlYkNv
bXBvc2l0b3I6OnNodXRkb3duKCk7CkBAIC0xNjA1LDcgKzE2MjAsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBPd25QdHI8VHJhY2tpbmdMYXllclBhaW50ZXI+IHRyYWNraW5nTGF5ZXJQYWlu
dGVyKFRyYWNraW5nTGF5ZXJQYWludGVyOjpjcmVhdGUoKSk7CiAgICAgICAgIG1fdHJhY2tpbmdM
YXllclBhaW50ZXIgPSB0cmFja2luZ0xheWVyUGFpbnRlci5nZXQoKTsKLSAgICAgICAgbV9sYXll
clRleHR1cmVVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRl
KHRyYWNraW5nTGF5ZXJQYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOworICAgICAgICBtX2xheWVy
VGV4dHVyZVVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUo
dHJhY2tpbmdMYXllclBhaW50ZXIucmVsZWFzZSgpKTsKICAgICB9CiAgICAgdmlydHVhbCB+VXBk
YXRlVHJhY2tpbmdUaWxlZExheWVyQ2hyb21pdW0oKSB7IH0KIApAQCAtMTYyMSw4ICsxNjM2LDcg
QEAgcHJpdmF0ZToKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG5vbkludGVnZXJD
b250ZW50c1NjYWxlSXNOb3REaXN0b3J0ZWREdXJpbmdQYWludCkKIHsKLSAgICBPd25QdHI8Q0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlcihDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0MDAwMDAwLCA0MDAwMDAwKSk7Ci0gICAgQ0NQcmlvcml0eUNh
bGN1bGF0b3IgY2FsY3VsYXRvcjsKKyAgICBPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlcihDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0
MDAwMDAwLCA0MDAwMDAwLCBDQ1JlbmRlcmVyOjpDb250ZW50UG9vbCkpOwogCiAgICAgUmVmUHRy
PFVwZGF0ZVRyYWNraW5nVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBV
cGRhdGVUcmFja2luZ1RpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwog
CkBAIC0xNjM1LDI4ICsxNjQ5LDMwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBu
b25JbnRlZ2VyQ29udGVudHNTY2FsZUlzTm90RGlzdG9ydGVkRHVyaW5nUGFpbnQpCiAgICAgRVhQ
RUNUX0VRKGNvbnRlbnRSZWN0LnNpemUoKSwgbGF5ZXItPmNvbnRlbnRCb3VuZHMoKSk7CiAgICAg
bGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKLSAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMoY2FsY3VsYXRvcik7CisgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHdob2xlIHRpbGUuCi0gICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKKyAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CiAgICAg
bGF5ZXItPnRyYWNraW5nTGF5ZXJQYWludGVyKCktPnJlc2V0UGFpbnRlZFJlY3QoKTsKIAogICAg
IEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KCksIGxheWVyLT50cmFja2luZ0xheWVyUGFpbnRl
cigpLT5wYWludGVkUmVjdCgpKTsKIAotICAgIHVwZGF0ZVRleHR1cmVzKCk7CisgICAgeworICAg
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAgICAgdXBkYXRl
VGV4dHVyZXMoKTsKKyAgICB9CiAKICAgICAvLyBJbnZhbGlkYXRlIHRoZSBlbnRpcmUgbGF5ZXIg
aW4gY29udGVudCBzcGFjZS4gV2hlbiBwYWludGluZywgdGhlIHJlY3QgZ2l2ZW4gdG8gd2Via2l0
IHNob3VsZCBtYXRjaCB0aGUgbGF5ZXIncyBib3VuZHMuCiAgICAgbGF5ZXItPmludmFsaWRhdGVD
b250ZW50UmVjdChjb250ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KHVw
ZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91
cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CiAKICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEobGF5ZXJS
ZWN0LCBsYXllci0+dHJhY2tpbmdMYXllclBhaW50ZXIoKS0+cGFpbnRlZFJlY3QoKSk7CiB9CiAK
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBub25JbnRlZ2VyQ29udGVudHNTY2FsZUlz
Tm90RGlzdG9ydGVkRHVyaW5nSW52YWxpZGF0aW9uKQogewotICAgIE93blB0cjxDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKDQwMDAwMDAsIDQwMDAwMDApKTsKLSAgICBDQ1ByaW9yaXR5Q2FsY3VsYXRv
ciBjYWxjdWxhdG9yOworICAgIE93blB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQwMDAwMDAs
IDQwMDAwMDAsIENDUmVuZGVyZXI6OkNvbnRlbnRQb29sKSk7CiAKICAgICBSZWZQdHI8VXBkYXRl
VHJhY2tpbmdUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IFVwZGF0ZVRy
YWNraW5nVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKQEAgLTE2
NjgsMjAgKzE2ODQsMjMgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIG5vbkludGVn
ZXJDb250ZW50c1NjYWxlSXNOb3REaXN0b3J0ZWREdXJpbmdJbnZhbGkKICAgICBJbnRSZWN0IGNv
bnRlbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5jb250ZW50Qm91bmRzKCkpOwogICAgIGxheWVy
LT5zZXRWaXNpYmxlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwogCi0gICAgbGF5ZXItPnNldFRl
eHR1cmVQcmlvcml0aWVzKGNhbGN1bGF0b3IpOworICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3Jp
dGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRp
emVUZXh0dXJlcygpOwogCiAgICAgLy8gVXBkYXRlIHRoZSB3aG9sZSB0aWxlLgotICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CisgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudFJlY3QsIDApOwogICAgIGxheWVy
LT50cmFja2luZ0xheWVyUGFpbnRlcigpLT5yZXNldFBhaW50ZWRSZWN0KCk7CiAKICAgICBFWFBF
Q1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgpLCBsYXllci0+dHJhY2tpbmdMYXllclBhaW50ZXIoKS0+
cGFpbnRlZFJlY3QoKSk7CiAKLSAgICB1cGRhdGVUZXh0dXJlcygpOworICAgIHsKKyAgICAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIHVwZGF0ZVRleHR1
cmVzKCk7CisgICAgfQogCiAgICAgLy8gSW52YWxpZGF0ZSB0aGUgZW50aXJlIGxheWVyIGluIGxh
eWVyIHNwYWNlLiBXaGVuIHBhaW50aW5nLCB0aGUgcmVjdCBnaXZlbiB0byB3ZWJraXQgc2hvdWxk
IG1hdGNoIHRoZSBsYXllcidzIGJvdW5kcy4KICAgICBsYXllci0+c2V0TmVlZHNEaXNwbGF5UmVj
dChsYXllclJlY3QpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250
ZW50UmVjdCwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29u
dGVudFJlY3QsIDApOwogCiAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKGxheWVyUmVjdCwgbGF5ZXIt
PnRyYWNraW5nTGF5ZXJQYWludGVyKCktPnBhaW50ZWRSZWN0KCkpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>