<?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>91001</bug_id>
          
          <creation_ts>2012-07-11 12:35:25 -0700</creation_ts>
          <short_desc>[chromium] Use CCTexture/TextureAllocator and remove TextureManager</short_desc>
          <delta_ts>2012-07-12 14:35:55 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Penner">epenner</reporter>
          <assigned_to name="Eric Penner">epenner</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jamesr</cc>
    
    <cc>mmocny</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>666958</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-11 12:35:25 -0700</bug_when>
    <thetext>[chromium] Use CCTexture in CCPrioritizedTexture, remove TextureManager.h, and minor refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666961</commentid>
    <comment_count>1</comment_count>
      <attachid>151753</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-11 12:38:43 -0700</bug_when>
    <thetext>Created attachment 151753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666968</commentid>
    <comment_count>2</comment_count>
      <attachid>151753</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-11 12:54:19 -0700</bug_when>
    <thetext>Comment on attachment 151753
Patch

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

yes! very cool. Although i was hoping TextureManager.h was being rm -f entirely :) We&apos;ll get there soon!

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTextureManager.h:34
&gt; +

nit: extra line :)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTexture.h:39
&gt; +            : m_id(id), m_size(size), m_format(format) { }

these should be split up over 4 lines. and the : should be 4-space indented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666975</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-11 12:59:12 -0700</bug_when>
    <thetext>Yeah this patch is actually pretty minor. But figured I&apos;d upload it while it was small and self-contained.

Looks like it might be possible to nuke the old manager from orbit now. I&apos;ll try to do that and add it to this patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667065</commentid>
    <comment_count>4</comment_count>
      <attachid>151778</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-11 14:29:38 -0700</bug_when>
    <thetext>Created attachment 151778
whomp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667070</commentid>
    <comment_count>5</comment_count>
      <attachid>151778</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-11 14:33:26 -0700</bug_when>
    <thetext>Comment on attachment 151778
whomp

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

&gt; Source/WebCore/platform/graphics/chromium/TextureAllocator.h:1
&gt; +/*

I added this as TextureAllocator.h rather than cc/CCTextureAllocator.h intentionally to be consistent with derived classes (TrackingTextureAllocator) and similar classes (TextureUploader etc.). I figure the names should be changed together if we decide to do that, and this has become pretty big already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667209</commentid>
    <comment_count>6</comment_count>
      <attachid>151778</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-11 16:52:50 -0700</bug_when>
    <thetext>Comment on attachment 151778
whomp

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

&gt; Source/WebKit/chromium/ChangeLog:8
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

You need to remove this and add something here.  prepare-ChangeLog has gotten snarkier.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:221
&gt; +        m_client-&gt;setMemoryAllocationLimitBytes(64 * 1024 * 1024);

This is strange.  You bake this literal in here and in CCLayerTreeHostImpl, but aren&apos;t both of them overridden by messages from the GPU memory manager?

If we need to have some initial pre-message value, can you make it a setting or somesuch? Is there a better solution?

&gt;&gt; Source/WebCore/platform/graphics/chromium/TextureAllocator.h:1
&gt;&gt; +/*
&gt; 
&gt; I added this as TextureAllocator.h rather than cc/CCTextureAllocator.h intentionally to be consistent with derived classes (TrackingTextureAllocator) and similar classes (TextureUploader etc.). I figure the names should be changed together if we decide to do that, and this has become pretty big already.

Sounds fine to me.  There&apos;s plenty of renaming that&apos;ll happen in the future.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTexture.cpp:154
&gt; +
&gt; +

nit: unneeded whitespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667224</commentid>
    <comment_count>7</comment_count>
      <attachid>151778</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-11 17:09:38 -0700</bug_when>
    <thetext>Comment on attachment 151778
whomp

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:221
&gt;&gt; +        m_client-&gt;setMemoryAllocationLimitBytes(64 * 1024 * 1024);
&gt; 
&gt; This is strange.  You bake this literal in here and in CCLayerTreeHostImpl, but aren&apos;t both of them overridden by messages from the GPU memory manager?
&gt; 
&gt; If we need to have some initial pre-message value, can you make it a setting or somesuch? Is there a better solution?

Yeah this needs a better solution. The default was just to be safe but I&apos;ll try to understand exactly when we fall back on these defaults such that maybe they can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667232</commentid>
    <comment_count>8</comment_count>
      <attachid>151778</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-07-11 17:15:13 -0700</bug_when>
    <thetext>Comment on attachment 151778
whomp

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:221
&gt;&gt;&gt; +        m_client-&gt;setMemoryAllocationLimitBytes(64 * 1024 * 1024);
&gt;&gt; 
&gt;&gt; This is strange.  You bake this literal in here and in CCLayerTreeHostImpl, but aren&apos;t both of them overridden by messages from the GPU memory manager?
&gt;&gt; 
&gt;&gt; If we need to have some initial pre-message value, can you make it a setting or somesuch? Is there a better solution?
&gt; 
&gt; Yeah this needs a better solution. The default was just to be safe but I&apos;ll try to understand exactly when we fall back on these defaults such that maybe they can be removed.

AIUI its there just for layout tests. DRT&apos;s GPU process doesnt have a mem manager. I think that the CCLTHI can initialize its value to 0, since it always gets a value from here. And here we can just use anything to support DRT such as this value. Why did you choose 1024 * 1024 * 16 * 4channels?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667242</commentid>
    <comment_count>9</comment_count>
      <attachid>151778</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-11 17:35:29 -0700</bug_when>
    <thetext>Comment on attachment 151778
whomp

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:221
&gt;&gt;&gt;&gt; +        m_client-&gt;setMemoryAllocationLimitBytes(64 * 1024 * 1024);
&gt;&gt;&gt; 
&gt;&gt;&gt; This is strange.  You bake this literal in here and in CCLayerTreeHostImpl, but aren&apos;t both of them overridden by messages from the GPU memory manager?
&gt;&gt;&gt; 
&gt;&gt;&gt; If we need to have some initial pre-message value, can you make it a setting or somesuch? Is there a better solution?
&gt;&gt; 
&gt;&gt; Yeah this needs a better solution. The default was just to be safe but I&apos;ll try to understand exactly when we fall back on these defaults such that maybe they can be removed.
&gt; 
&gt; AIUI its there just for layout tests. DRT&apos;s GPU process doesnt have a mem manager. I think that the CCLTHI can initialize its value to 0, since it always gets a value from here. And here we can just use anything to support DRT such as this value. Why did you choose 1024 * 1024 * 16 * 4channels?

What if we set the callback but it doesn&apos;t arrive for a while? It seems like the limit of zero can propagate from here to CCLayerTreeHostImpl and into CCLayerTreeHost before the message arrives (unless we delay rendering for a non-zero limit somewhere that I&apos;m not seeing), whereas with highLimitBytes as a default we would still have memory right away on initialization

Regarding 64MB I just picked that as it in highLimitBytes(), although looking now that appears to only be for android.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667262</commentid>
    <comment_count>10</comment_count>
      <attachid>151778</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-11 17:50:35 -0700</bug_when>
    <thetext>Comment on attachment 151778
whomp

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:221
&gt;&gt;&gt;&gt;&gt; +        m_client-&gt;setMemoryAllocationLimitBytes(64 * 1024 * 1024);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; This is strange.  You bake this literal in here and in CCLayerTreeHostImpl, but aren&apos;t both of them overridden by messages from the GPU memory manager?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; If we need to have some initial pre-message value, can you make it a setting or somesuch? Is there a better solution?
&gt;&gt;&gt; 
&gt;&gt;&gt; Yeah this needs a better solution. The default was just to be safe but I&apos;ll try to understand exactly when we fall back on these defaults such that maybe they can be removed.
&gt;&gt; 
&gt;&gt; AIUI its there just for layout tests. DRT&apos;s GPU process doesnt have a mem manager. I think that the CCLTHI can initialize its value to 0, since it always gets a value from here. And here we can just use anything to support DRT such as this value. Why did you choose 1024 * 1024 * 16 * 4channels?
&gt; 
&gt; What if we set the callback but it doesn&apos;t arrive for a while? It seems like the limit of zero can propagate from here to CCLayerTreeHostImpl and into CCLayerTreeHost before the message arrives (unless we delay rendering for a non-zero limit somewhere that I&apos;m not seeing), whereas with highLimitBytes as a default we would still have memory right away on initialization
&gt; 
&gt; Regarding 64MB I just picked that as it in highLimitBytes(), although looking now that appears to only be for android.

What if I add the highLimitBytes in this file with a FIXME, and we always call m_client-&gt;setMemoryAllocationLimitBytes(highLimitBytes(viewportSize()) here before setting the callback. That will replicate the old behavior while we figure out the best solution for the initialization race?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667287</commentid>
    <comment_count>11</comment_count>
      <attachid>151837</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-11 18:23:45 -0700</bug_when>
    <thetext>Created attachment 151837
add_fixme_remove_whitespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667313</commentid>
    <comment_count>12</comment_count>
      <attachid>151843</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-11 19:00:59 -0700</bug_when>
    <thetext>Created attachment 151843
add_fixme_remove_whitespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667316</commentid>
    <comment_count>13</comment_count>
      <attachid>151844</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-11 19:03:50 -0700</bug_when>
    <thetext>Created attachment 151844
remove_more_whitespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668020</commentid>
    <comment_count>14</comment_count>
      <attachid>151844</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-12 11:24:56 -0700</bug_when>
    <thetext>Comment on attachment 151844
remove_more_whitespace

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:126
&gt; -    , m_memoryAllocationLimitBytes(TextureManager::highLimitBytes(viewportSize()))
&gt; +    , m_memoryAllocationLimitBytes(CCPrioritizedTextureManager::defaultMemoryAllocationLimit())

It&apos;s still a little weird to double-set the initial limit.  Who should be responsible for that?

Since LRC is the one that receives the GPU memory manager limits in the general case, maybe this line should initialize to zero, and then we get an initial limit after initializing LRC?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPrioritizedTextureManager.h:58
&gt; +    // FIXME: This 96MB default is a straggler from the old texture manager and
&gt; +    // is just to give us a default memory allocation before we get a callback
&gt; +    // from the GPU memory manager. We should probaby either:
&gt; +    // - wait for the callback before rendering anything instead
&gt; +    // - make a synchronous call to GPU mem-manager to get the default (it can
&gt; +    //   decide whether to block or just return this default itself).

Can you file a crbug about getting initial limits from the memory manager and put a link here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668036</commentid>
    <comment_count>15</comment_count>
    <who name="Michal Mocny">mmocny</who>
    <bug_when>2012-07-12 11:40:27 -0700</bug_when>
    <thetext>There were two reasons for the default value, both have been mentioned but just confirming:
- DRT needs a non 0 default since we will never get an allocation ipc, but LRC already handles this directly (see the else case of the if (m_capabilities.usingGpuMemoryManager) block in LRC::initialize).
- We set a non 0 default so as we can generate frames before first allocation message arrives.

For the second point, I am not sure its important.  This default only applies to the first time you switch to a new tab -- for subsequent tab switches we wait until we receive a non-0 memory allocation, so setting a default on init case seems needlessly different than the usual case.

Also, I thought the default used to be 64M not 96?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668042</commentid>
    <comment_count>16</comment_count>
      <attachid>151844</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-12 11:48:08 -0700</bug_when>
    <thetext>Comment on attachment 151844
remove_more_whitespace

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:126
&gt;&gt; +    , m_memoryAllocationLimitBytes(CCPrioritizedTextureManager::defaultMemoryAllocationLimit())
&gt; 
&gt; It&apos;s still a little weird to double-set the initial limit.  Who should be responsible for that?
&gt; 
&gt; Since LRC is the one that receives the GPU memory manager limits in the general case, maybe this line should initialize to zero, and then we get an initial limit after initializing LRC?

Unfortunately, removing either was breaking tests:
- This call is not early enough for the CCLTHI, as the zero limit still makes it through to CCLTH::updateLayers
- Removing this call breaks initializationWithoutGpuMemoryManagerExtensionSupportShouldDefaultToNonZeroAllocation as the mock doesn&apos;t set the limit in the constructor like CCLTHI.

Would it be acceptable to add these details to the bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668109</commentid>
    <comment_count>17</comment_count>
      <attachid>152031</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-12 12:52:55 -0700</bug_when>
    <thetext>Created attachment 152031
rebase_add_bug_link_use_64mb_default</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668111</commentid>
    <comment_count>18</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-12 12:54:33 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt;
&gt; Unfortunately, removing either was breaking tests:
&gt; - This call is not early enough for the CCLTHI, as the zero limit still makes it through to CCLTH::updateLayers
&gt; - Removing this call breaks initializationWithoutGpuMemoryManagerExtensionSupportShouldDefaultToNonZeroAllocation as the mock doesn&apos;t set the limit in the constructor like CCLTHI.
&gt; 
&gt; Would it be acceptable to add these details to the bug?

I would prefer to not have duplicate initialization.  It just seems sloppy.

Given what you say above, can you initialize the limit in the CCLTHI constructor and the mock and remove the LRC call? Or, find some other place common to all paths to do this initialization?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668112</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-12 12:56:50 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; &gt;
&gt; &gt; Unfortunately, removing either was breaking tests:
&gt; &gt; - This call is not early enough for the CCLTHI, as the zero limit still makes it through to CCLTH::updateLayers
&gt; &gt; - Removing this call breaks initializationWithoutGpuMemoryManagerExtensionSupportShouldDefaultToNonZeroAllocation as the mock doesn&apos;t set the limit in the constructor like CCLTHI.
&gt; &gt; 
&gt; &gt; Would it be acceptable to add these details to the bug?
&gt; 
&gt; I would prefer to not have duplicate initialization.  It just seems sloppy.
&gt; 
&gt; Given what you say above, can you initialize the limit in the CCLTHI constructor and the mock and remove the LRC call? Or, find some other place common to all paths to do this initialization?

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668136</commentid>
    <comment_count>20</comment_count>
      <attachid>152040</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-12 13:15:35 -0700</bug_when>
    <thetext>Created attachment 152040
remove_double_init</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668145</commentid>
    <comment_count>21</comment_count>
      <attachid>152040</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-12 13:19:56 -0700</bug_when>
    <thetext>Comment on attachment 152040
remove_double_init

R=me.  Thanks for that extra cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668159</commentid>
    <comment_count>22</comment_count>
      <attachid>152040</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-07-12 13:36:35 -0700</bug_when>
    <thetext>Comment on attachment 152040
remove_double_init

Ready to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668228</commentid>
    <comment_count>23</comment_count>
      <attachid>152040</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-12 14:35:49 -0700</bug_when>
    <thetext>Comment on attachment 152040
remove_double_init

Clearing flags on attachment: 152040

Committed r122506: &lt;http://trac.webkit.org/changeset/122506&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668231</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-12 14:35:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151753</attachid>
            <date>2012-07-11 12:38:43 -0700</date>
            <delta_ts>2012-07-11 14:29:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91001-20120711123842.patch</filename>
            <type>text/plain</type>
            <size>25204</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg0ZDhiODYyMzliZjQy
NTUwY2RhY2E2OTMzOWNiNDZmYjAzZDY2YS4uMTViZmFhYzdlMGFlZDBlYzlkMjRjNWVkNmFhMmY4
MGFhNmZiMTQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA3LTExICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSBD
Q1RleHR1cmUgaW4gQ0NQcmlvcml0aXplZFRleHR1cmUsIHJlbW92ZSBUZXh0dXJlTWFuYWdlci5o
LCBhbmQgbWlub3IgcmVmYWN0b3JpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgdXNlcyBDQ1RleHR1cmUgdG8gY2xlYW51cCBDQ1ByaW9yaXRp
emVkVGV4dHVyZTo6QmFja2luZy4gQWxzbyByZW1vdmUKKyAgICAgICAgVGV4dHVyZU1hbmFnZXIu
aCBhbmQgbW92ZS9jbGVhbnVwIHNvbWUgY29kZS4KKworICAgICAgICBSZWZhY3RvcmluZyBDTC4g
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0RGltZW5zaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmxpbmspOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dW5saW5rKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmJ5dGVzKToKKyAgICAg
ICAgKENDUHJpb3JpdGl6ZWRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpoYXZlQmFja2luZ1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlv
cml0aXplZFRleHR1cmU6OkJhY2tpbmc6OkJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
cmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmc6On5CYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nOjpvd25lcik6CisgICAgICAgIChCYWNraW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiYWNraW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpwcmlvcml0aXplVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0TGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y2xlYXJB
bGxNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
OjpyZWdpc3RlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpyZXR1cm5CYWNraW5nVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZXN0cm95QmFja2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFzc2VydEludmFyaWFudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjpjb21wYXJlQmFja2luZ3MpOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZTo6Q0NUZXh0dXJlKToKKwogMjAxMi0w
Ny0xMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgVGlsZUNhY2hl
IGxheWVycyBoYXZlIHdyb25nIGJvcmRlciBkZWJ1ZyBjb2xvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cmlvcml0aXplZFRleHR1cmUuY3BwCmluZGV4IGQ4Y2MxNzQ4NWE5MGY5MjAyZDE3YTZmMTg1MjIw
YWE2MmU3Njc0M2YuLmU5ZTUxZmI5YzdjNTBiNGQ1MTJiNDNmNDFmYTlhYzllOTQ2YTE0N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJpb3JpdGl6ZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAKQEAgLTM4LDE2ICszOCwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6Q0NQcmlvcml0
aXplZFRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyLCBJbnRTaXpl
IHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9mb3Jt
YXQoZm9ybWF0KQotICAgICwgbV9tZW1vcnlTaXplQnl0ZXMoMCkKKyAgICAsIG1fYnl0ZXMoMCkK
ICAgICAsIG1fcHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCkp
CiAgICAgLCBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZihmYWxzZSkKLSAgICAsIG1fY3VycmVudEJh
Y2tpbmcoMCkKKyAgICAsIG1fYmFja2luZygwKQogICAgICwgbV9tYW5hZ2VyKDApCiB7CiAgICAg
Ly8gbV9tYW5hZ2VyIGlzIHNldCBpbiByZWdpc3RlclRleHR1cmUoKSBzbyB2YWxpZGl0eSBjYW4g
YmUgY2hlY2tlZC4KICAgICBBU1NFUlQoZm9ybWF0IHx8IHNpemUuaXNFbXB0eSgpKTsKICAgICBp
ZiAoZm9ybWF0KQotICAgICAgICBtX21lbW9yeVNpemVCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjpt
ZW1vcnlVc2VCeXRlcyhzaXplLCBmb3JtYXQpOworICAgICAgICBtX2J5dGVzID0gQ0NUZXh0dXJl
OjptZW1vcnlTaXplQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKICAgICBpZiAobWFuYWdlcikKICAgICAg
ICAgbWFuYWdlci0+cmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwogfQpAQCAtNzQsOCArNzQsOCBAQCB2
b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpzZXREaW1lbnNpb25zKEludFNpemUgc2l6ZSwgR0Mz
RGVudW0gZm9ybWF0KQogICAgICAgICBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZiA9IGZhbHNlOwog
ICAgICAgICBtX2Zvcm1hdCA9IGZvcm1hdDsKICAgICAgICAgbV9zaXplID0gc2l6ZTsKLSAgICAg
ICAgbV9tZW1vcnlTaXplQnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6
ZSwgZm9ybWF0KTsKLSAgICAgICAgQVNTRVJUKG1fbWFuYWdlciB8fCAhbV9jdXJyZW50QmFja2lu
Zyk7CisgICAgICAgIG1fYnl0ZXMgPSBDQ1RleHR1cmU6Om1lbW9yeVNpemVCeXRlcyhzaXplLCBm
b3JtYXQpOworICAgICAgICBBU1NFUlQobV9tYW5hZ2VyIHx8ICFtX2JhY2tpbmcpOwogICAgICAg
ICBpZiAobV9tYW5hZ2VyKQogICAgICAgICAgICAgbV9tYW5hZ2VyLT5yZXR1cm5CYWNraW5nVGV4
dHVyZSh0aGlzKTsKICAgICB9CkBAIC05Nyw4ICs5Nyw4IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmU6OmFjcXVpcmVCYWNraW5nVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Ip
CiAKIHVuc2lnbmVkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjp0ZXh0dXJlSWQoKQogewotICAgIGlm
IChtX2N1cnJlbnRCYWNraW5nKQotICAgICAgICByZXR1cm4gbV9jdXJyZW50QmFja2luZy0+dGV4
dHVyZUlkKCk7CisgICAgaWYgKG1fYmFja2luZykKKyAgICAgICAgcmV0dXJuIG1fYmFja2luZy0+
aWQoKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQ0NQcmlv
cml0aXplZFRleHR1cmU6OmJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhCiAgICAgQVNTRVJUKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKICAgICBp
ZiAobV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpCiAgICAgICAgIGFjcXVpcmVCYWNraW5nVGV4dHVy
ZShhbGxvY2F0b3IpOwotICAgIEFTU0VSVChtX2N1cnJlbnRCYWNraW5nKTsKKyAgICBBU1NFUlQo
bV9iYWNraW5nKTsKICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2Qg
PSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCkBA
IC0xMjEsNyArMTIxLDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHQKICAgICBBU1NFUlQobV9p
c0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwogICAgIGlmIChtX2lzQWJvdmVQcmlvcml0eUN1dG9mZikK
ICAgICAgICAgYWNxdWlyZUJhY2tpbmdUZXh0dXJlKGFsbG9jYXRvcik7Ci0gICAgQVNTRVJUKG1f
Y3VycmVudEJhY2tpbmcpOworICAgIEFTU0VSVChtX2JhY2tpbmcpOwogICAgIFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwogICAg
IGlmICghY29udGV4dDNkKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRo
IGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KQEAgLTEzMCwxMiArMTMwLDI2IEBAIHZvaWQgQ0NQ
cmlvcml0aXplZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKENDR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBUZXh0CiAgICAgY29udGV4dDNkLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRB
Q0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCgpLCAwKTsK
IH0KIAotdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0Q3VycmVudEJhY2tpbmcoQ0NQcmlv
cml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcpCit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0
dXJlOjpsaW5rKEJhY2tpbmcqIGJhY2tpbmcpCiB7Ci0gICAgaWYgKG1fY3VycmVudEJhY2tpbmcg
PT0gYmFja2luZykKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY3VycmVudEJhY2tpbmcgPSBiYWNr
aW5nOworICAgIEFTU0VSVChiYWNraW5nKTsKKyAgICBBU1NFUlQoIWJhY2tpbmctPm1fb3duZXIp
OworICAgIEFTU0VSVCghbV9iYWNraW5nKTsKKworICAgIG1fYmFja2luZyA9IGJhY2tpbmc7Cisg
ICAgbV9iYWNraW5nLT5tX293bmVyID0gdGhpczsKK30KKwordm9pZCBDQ1ByaW9yaXRpemVkVGV4
dHVyZTo6dW5saW5rKCkKK3sKKyAgICBBU1NFUlQobV9iYWNraW5nKTsKKyAgICBBU1NFUlQobV9i
YWNraW5nLT5tX293bmVyID09IHRoaXMpOworCisgICAgbV9iYWNraW5nLT5tX293bmVyID0gMDsK
KyAgICBtX2JhY2tpbmcgPSAwOwogfQogCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaAppbmRleCA5ZWEyZmIxZTQxNTc5ZjY0
NTA0ZjZhM2M5YmIwZDdiZTBiMzJlMWYyLi40ZWY1NzJjZDc2NmZmZTJjYWE2ZDE2MGNhOGFhZWU2
ZGRhYWY5OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKQEAgLTI2
LDEwICsyNiwxMCBAQAogI2RlZmluZSBDQ1ByaW9yaXRpemVkVGV4dHVyZV9oCiAKICNpbmNsdWRl
ICJDQ1ByaW9yaXR5Q2FsY3VsYXRvci5oIgorI2luY2x1ZGUgIkNDVGV4dHVyZS5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGltZW5zaW9u
cyhJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQpOwogICAgIEdDM0RlbnVtIGZvcm1hdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9Ci0gICAgc2l6ZV90IG1lbW9yeVNpemVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1f
bWVtb3J5U2l6ZUJ5dGVzOyB9CisgICAgc2l6ZV90IGJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9i
eXRlczsgfQogCiAgICAgLy8gU2V0IHByaW9yaXR5IGZvciB0aGUgcmVxdWVzdGVkIHRleHR1cmUu
IAogICAgIHZvaWQgc2V0UmVxdWVzdFByaW9yaXR5KGludCBwcmlvcml0eSkgeyBtX3ByaW9yaXR5
ID0gcHJpb3JpdHk7IH0KQEAgLTY4LDEyICs2OCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5B
Y3F1aXJlQmFja2luZ1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzQWJvdmVQcmlvcml0eUN1
dG9mZjsgfQogCiAgICAgLy8gVGhpcyByZXR1cm5zIHdoZXRoZXIgd2Ugc3RpbGwgaGF2ZSBhIGJh
Y2tpbmcgdGV4dHVyZS4gVGhpcyBjYW4gY29udGludWUKLSAgICAvLyB0byBiZSB0cnVlIGV2ZW4g
YWZ0ZXIgY2FuQXF1aXJlQmFja2luZ1RleHR1cmUoKSBiZWNvbWVzIGZhbHNlLiBJbiB0aGlzCisg
ICAgLy8gdG8gYmUgdHJ1ZSBldmVuIGFmdGVyIGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIGJl
Y29tZXMgZmFsc2UuIEluIHRoaXMKICAgICAvLyBjYXNlIHRoZSB0ZXh0dXJlIGNhbiBiZSB1c2Vk
IGJ1dCBzaG91bGRuJ3QgYmUgdXBkYXRlZCBzaW5jZSBpdCB3aWxsIGdldAogICAgIC8vIHRha2Vu
IGF3YXkgInNvb24iLgotICAgIGJvb2wgaGF2ZUJhY2tpbmdUZXh0dXJlKCkgY29uc3QgeyByZXR1
cm4gISFjdXJyZW50QmFja2luZygpOyB9CisgICAgYm9vbCBoYXZlQmFja2luZ1RleHR1cmUoKSBj
b25zdCB7IHJldHVybiAhIWJhY2tpbmcoKTsgfQogCi0gICAgLy8gSWYgY2FuQXF1aXJlQmFja2lu
Z1RleHR1cmUoKSBpcyB0cnVlIGFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIHdpbGwgYWNxdWlyZQor
ICAgIC8vIElmIGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIGlzIHRydWUgYWNxdWlyZUJhY2tp
bmdUZXh0dXJlKCkgd2lsbCBhY3F1aXJlCiAgICAgLy8gYSBiYWNraW5nIHRleHR1cmUgZm9yIHVz
ZS4gQ2FsbCB0aGlzIHdoZW5ldmVyIHRoZSB0ZXh0dXJlIGlzIGFjdHVhbGx5IG5lZWRlZC4KICAg
ICB2b2lkIGFjcXVpcmVCYWNraW5nVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKik7CiAKQEAgLTgx
LDEzICs4MSwxMyBAQCBwdWJsaWM6CiAgICAgLy8gICAgICAgIChhbGwgdGV4dHVyZXMgYXJlIHZp
c2libGUpIGJ1dCB3ZSBjYW4gc3RpbGwgc3F1ZWV6ZSBpbnRvIHRoZSBsaW1pdAogICAgIC8vICAg
ICAgICBieSBub3QgcGFpbnRpbmcgb2NjbHVkZWQgdGV4dHVyZXMuIEluIHRoaXMgY2FzZSB0aGUg
bWFuYWdlcgogICAgIC8vICAgICAgICByZWZ1c2VzIGFsbCB2aXNpYmxlIHRleHR1cmVzIGFuZCBy
ZXF1ZXN0TGF0ZSgpIHdpbGwgZW5hYmxlCi0gICAgLy8gICAgICAgIGNhbkFxdWlyZUJhY2tpbmdU
ZXh0dXJlKCkgb24gYSBjYWxsLW9yZGVyIGJhc2lzLiBXZSBtaWdodCB3YW50IHRvCisgICAgLy8g
ICAgICAgIGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIG9uIGEgY2FsbC1vcmRlciBiYXNpcy4g
V2UgbWlnaHQgd2FudCB0bwogICAgIC8vICAgICAgICBqdXN0IHJlbW92ZSB0aGlzIGluIHRoZSBm
dXR1cmUgKGNhcmVmdWxseSkgYW5kIGp1c3QgbWFrZSBzdXJlIHdlIGRvbid0CiAgICAgLy8gICAg
ICAgIHJlZ3Jlc3MgT09NcyBzaXR1YXRpb25zLgogICAgIGJvb2wgcmVxdWVzdExhdGUoKTsKIAot
ICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFxdWlyZSB0aGUgdGV4dHVyZSBpZiBwb3NzaWJs
ZS4gSWYgbmVpdGhlciBoYXZlQmFja2luZ1RleHR1cmUoKQotICAgIC8vIG5vciBjYW5BcXVpcmVC
YWNraW5nVGV4dHVyZSgpIGlzIHRydWUsIGFuIElEIG9mIHplcm8gd2lsbCBiZSB1c2VkL3JldHVy
bmVkLgorICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFjcXVpcmUgdGhlIHRleHR1cmUgaWYg
cG9zc2libGUuIElmIG5laXRoZXIgaGF2ZUJhY2tpbmdUZXh0dXJlKCkKKyAgICAvLyBub3IgY2Fu
Y0FjcXVpcmVCYWNraW5nVGV4dHVyZSgpIGlzIHRydWUsIGFuIElEIG9mIHplcm8gd2lsbCBiZSB1
c2VkL3JldHVybmVkLgogICAgIHZvaWQgYmluZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqLCBU
ZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBo
aWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQo
KTsKQEAgLTk1LDM0ICs5NSwxNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI7CiAKLSAgICBjbGFzcyBCYWNraW5nIHsKKyAg
ICBjbGFzcyBCYWNraW5nIDogcHVibGljIENDVGV4dHVyZSB7CiAgICAgICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEJhY2tpbmcpOwogICAgIHB1YmxpYzoKLSAgICAgICAgSW50U2l6ZSBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgICAgIEdDM0RlbnVtIGZvcm1hdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9ybWF0OyB9Ci0gICAgICAgIHNpemVfdCBtZW1vcnlTaXplQnl0ZXMoKSBj
b25zdCB7IHJldHVybiBtX21lbW9yeVNpemVCeXRlczsgfQotICAgICAgICB1bnNpZ25lZCB0ZXh0
dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQotICAgICAgICBDQ1ByaW9yaXRp
emVkVGV4dHVyZSogY3VycmVudFRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUZXh0
dXJlOyB9Ci0gICAgICAgIHZvaWQgc2V0Q3VycmVudFRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1
cmUqIGN1cnJlbnQpIHsgbV9jdXJyZW50VGV4dHVyZSA9IGN1cnJlbnQ7IH0KKyAgICAgICAgQmFj
a2luZyh1bnNpZ25lZCBpZCwgSW50U2l6ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQpCisgICAgICAg
ICAgICA6IENDVGV4dHVyZShpZCwgc2l6ZSwgZm9ybWF0KSwgbV9vd25lcigwKSB7IH0KKyAgICAg
ICAgfkJhY2tpbmcoKSB7IEFTU0VSVCghbV9vd25lcik7IH0KIAorICAgICAgICBDQ1ByaW9yaXRp
emVkVGV4dHVyZSogb3duZXIoKSB7IHJldHVybiBtX293bmVyOyB9CiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKLQotICAgICAg
ICBCYWNraW5nKEludFNpemUgc2l6ZSwgR0MzRGVudW0gZm9ybWF0LCB1bnNpZ25lZCB0ZXh0dXJl
SWQpCi0gICAgICAgICAgICA6IG1fc2l6ZShzaXplKQotICAgICAgICAgICAgLCBtX2Zvcm1hdChm
b3JtYXQpCi0gICAgICAgICAgICAsIG1fbWVtb3J5U2l6ZUJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpt
ZW1vcnlVc2VCeXRlcyhzaXplLCBmb3JtYXQpKQotICAgICAgICAgICAgLCBtX3RleHR1cmVJZCh0
ZXh0dXJlSWQpCi0gICAgICAgICAgICAsIG1fcHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6
Omxvd2VzdFByaW9yaXR5KCkpCi0gICAgICAgICAgICAsIG1fY3VycmVudFRleHR1cmUoMCkgeyB9
Ci0gICAgICAgIH5CYWNraW5nKCkgeyBBU1NFUlQoIW1fY3VycmVudFRleHR1cmUpOyB9Ci0KLSAg
ICAgICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgICAgIEdDM0RlbnVtIG1fZm9ybWF0OwotICAgICAg
ICBzaXplX3QgbV9tZW1vcnlTaXplQnl0ZXM7Ci0gICAgICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlk
OwotICAgICAgICBpbnQgbV9wcmlvcml0eTsKLSAgICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUq
IG1fY3VycmVudFRleHR1cmU7CisgICAgICAgIGZyaWVuZCBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4
dHVyZTsKKyAgICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUqIG1fb3duZXI7CiAgICAgfTsKIAog
ICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciosIElu
dFNpemUsIEdDM0RlbnVtIGZvcm1hdCk7CkBAIC0xMzEsMTcgKzExNCwxOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0QWJvdmVQcmlvcml0eUN1dG9mZihib29sIGlzQWJvdmVQcmlvcml0eUN1dG9m
ZikgeyBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZiA9IGlzQWJvdmVQcmlvcml0eUN1dG9mZjsgfQog
ICAgIHZvaWQgc2V0TWFuYWdlckludGVybmFsKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciog
bWFuYWdlcikgeyBtX21hbmFnZXIgPSBtYW5hZ2VyOyB9CiAKLSAgICBCYWNraW5nKiBjdXJyZW50
QmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEJhY2tpbmc7IH0KLSAgICB2b2lkIHNl
dEN1cnJlbnRCYWNraW5nKEJhY2tpbmcqKTsKKyAgICBCYWNraW5nKiBiYWNraW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgdm9pZCBsaW5rKEJhY2tpbmcqKTsKKyAgICB2b2lk
IHVubGluaygpOwogCiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgR0MzRGVudW0gbV9mb3JtYXQ7
Ci0gICAgc2l6ZV90IG1fbWVtb3J5U2l6ZUJ5dGVzOworICAgIHNpemVfdCBtX2J5dGVzOwogCiAg
ICAgc2l6ZV90IG1fcHJpb3JpdHk7CiAgICAgYm9vbCBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZjsK
IAotICAgIEJhY2tpbmcqIG1fY3VycmVudEJhY2tpbmc7CisgICAgQmFja2luZyogbV9iYWNraW5n
OwogICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciogbV9tYW5hZ2VyOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKaW5kZXgg
NWFmNTNkZjA0YmRlYjY3ZTJhMGVjYzFhMzRhOWVhNmJjZTk5ZjMyNS4uMDE5NWI2ZjFjZGVhYjUw
NmYwMzMyNzg1NjgzOThkYjY4NDE3N2RkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMoc2l6ZV90IHJlbmRlclN1
cmZhY2VzTWVtb3J5CiAgICAgICAgICAgICByZXNlcnZlZFJlbmRlclN1cmZhY2VzID0gdHJ1ZTsK
ICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9IG1lbW9yeUJ5dGVz
ICsgKCppdCktPm1lbW9yeVNpemVCeXRlcygpOworICAgICAgICBzaXplX3QgbmV3TWVtb3J5Qnl0
ZXMgPSBtZW1vcnlCeXRlcyArICgqaXQpLT5ieXRlcygpOwogICAgICAgICBpZiAobmV3TWVtb3J5
Qnl0ZXMgPiBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzKSB7CiAgICAgICAgICAgICBtX3ByaW9yaXR5
Q3V0b2ZmID0gKCppdCktPnJlcXVlc3RQcmlvcml0eSgpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMTQsNyArMTE0LDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9y
aXRpemVUZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnkKICAgICAgICAgYm9vbCBp
c0Fib3ZlUHJpb3JpdHlDdXRvZmYgPSBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0hp
Z2hlcigoKml0KS0+cmVxdWVzdFByaW9yaXR5KCksIG1fcHJpb3JpdHlDdXRvZmYpOwogICAgICAg
ICAoKml0KS0+c2V0QWJvdmVQcmlvcml0eUN1dG9mZihpc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwog
ICAgICAgICBpZiAoaXNBYm92ZVByaW9yaXR5Q3V0b2ZmKQotICAgICAgICAgICAgbV9tZW1vcnlB
Ym92ZUN1dG9mZkJ5dGVzICs9ICgqaXQpLT5tZW1vcnlTaXplQnl0ZXMoKTsKKyAgICAgICAgICAg
IG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyArPSAoKml0KS0+Ynl0ZXMoKTsKICAgICB9CiAgICAg
QVNTRVJUKG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyA8PSBtX21lbW9yeUF2YWlsYWJsZUJ5dGVz
KTsKIApAQCAtMTU3LDE1ICsxNTcsMTUgQEAgYm9vbCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OnJlcXVlc3RMYXRlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlKQogICAgIGlmIChD
Q1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0xvd2VyKHRleHR1cmUtPnJlcXVlc3RQcmlv
cml0eSgpLCBtX3ByaW9yaXR5Q3V0b2ZmKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
c2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzICsgdGV4dHVy
ZS0+bWVtb3J5U2l6ZUJ5dGVzKCk7CisgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbV9tZW1v
cnlBYm92ZUN1dG9mZkJ5dGVzICsgdGV4dHVyZS0+Ynl0ZXMoKTsKICAgICBpZiAobmV3TWVtb3J5
Qnl0ZXMgPiBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBtX21lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMgPSBuZXdNZW1vcnlCeXRlczsKICAgICB0ZXh0
dXJlLT5zZXRBYm92ZVByaW9yaXR5Q3V0b2ZmKHRydWUpOwotICAgIGlmICh0ZXh0dXJlLT5jdXJy
ZW50QmFja2luZygpKSB7Ci0gICAgICAgIG1fYmFja2luZ3MucmVtb3ZlKHRleHR1cmUtPmN1cnJl
bnRCYWNraW5nKCkpOwotICAgICAgICBtX2JhY2tpbmdzLmFkZCh0ZXh0dXJlLT5jdXJyZW50QmFj
a2luZygpKTsKKyAgICBpZiAodGV4dHVyZS0+YmFja2luZygpKSB7CisgICAgICAgIG1fYmFja2lu
Z3MucmVtb3ZlKHRleHR1cmUtPmJhY2tpbmcoKSk7CisgICAgICAgIG1fYmFja2luZ3MuYWRkKHRl
eHR1cmUtPmJhY2tpbmcoKSk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTczLDcg
KzE3Myw3IEBAIGJvb2wgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0TGF0ZShD
Q1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSkKIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4dHVy
ZSogdGV4dHVyZSwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIEFTU0VSVCh0
ZXh0dXJlLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSk7Ci0gICAgaWYgKHRleHR1cmUtPmN1cnJl
bnRCYWNraW5nKCkgfHwgIXRleHR1cmUtPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQorICAgIGlm
ICh0ZXh0dXJlLT5iYWNraW5nKCkgfHwgIXRleHR1cmUtPmlzQWJvdmVQcmlvcml0eUN1dG9mZigp
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGaW5kIGEgYmFja2luZyBiZWxvdywgYnkgZWl0
aGVyIHJlY3ljbGluZyBvciBhbGxvY2F0aW5nLgpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChD
Q1ByaW9yaXRpemVkVGV4CiAKICAgICAvLyBGaXJzdCB0cnkgdG8gcmVjeWNsZQogICAgIGZvciAo
QmFja2luZ1NldDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7IGl0ICE9IG1fYmFj
a2luZ3MuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgp
ICYmICgqaXQpLT5jdXJyZW50VGV4dHVyZSgpLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKKyAg
ICAgICAgaWYgKCgqaXQpLT5vd25lcigpICYmICgqaXQpLT5vd25lcigpLT5pc0Fib3ZlUHJpb3Jp
dHlDdXRvZmYoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoKCppdCktPnNpemUo
KSA9PSB0ZXh0dXJlLT5zaXplKCkgJiYgKCppdCktPmZvcm1hdCgpID09IHRleHR1cmUtPmZvcm1h
dCgpKSB7CiAgICAgICAgICAgICBiYWNraW5nID0gKCppdCk7CkBAIC0xOTEsMTQgKzE5MSwxNCBA
QCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJl
SWZOZWVkZWQoQ0NQcmlvcml0aXplZFRleAogCiAgICAgLy8gT3RoZXJ3aXNlIHJlZHVjZSBtZW1v
cnkgYW5kIGp1c3QgYWxsb2NhdGUgYSBuZXcgYmFja2luZyB0ZXh1cmVzLgogICAgIGlmICghYmFj
a2luZykgewotICAgICAgICByZWR1Y2VNZW1vcnkobV9tZW1vcnlBdmFpbGFibGVCeXRlcyAtIHRl
eHR1cmUtPm1lbW9yeVNpemVCeXRlcygpLCBhbGxvY2F0b3IpOworICAgICAgICByZWR1Y2VNZW1v
cnkobV9tZW1vcnlBdmFpbGFibGVCeXRlcyAtIHRleHR1cmUtPmJ5dGVzKCksIGFsbG9jYXRvcik7
CiAgICAgICAgIGJhY2tpbmcgPSBjcmVhdGVCYWNraW5nKHRleHR1cmUtPnNpemUoKSwgdGV4dHVy
ZS0+Zm9ybWF0KCksIGFsbG9jYXRvcik7CiAgICAgfQogCiAgICAgLy8gTW92ZSB0aGUgdXNlZCBi
YWNraW5nIHRleHR1cmUgdG8gdGhlIGVuZCBvZiB0aGUgZXZpY3Rpb24gbGlzdC4KLSAgICBpZiAo
YmFja2luZy0+Y3VycmVudFRleHR1cmUoKSkKLSAgICAgICAgdW5saW5rKGJhY2tpbmctPmN1cnJl
bnRUZXh0dXJlKCksIGJhY2tpbmcpOwotICAgIGxpbmsodGV4dHVyZSwgYmFja2luZyk7CisgICAg
aWYgKGJhY2tpbmctPm93bmVyKCkpCisgICAgICAgIGJhY2tpbmctPm93bmVyKCktPnVubGluaygp
OworICAgIHRleHR1cmUtPmxpbmsoYmFja2luZyk7CiAgICAgbV9iYWNraW5ncy5yZW1vdmUoYmFj
a2luZyk7CiAgICAgbV9iYWNraW5ncy5hZGQoYmFja2luZyk7CiB9CkBAIC0yMTEsNyArMjExLDcg
QEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeShzaXplX3Qg
bGltaXRCeXRlcywgVGV4dHVyZUFsbG9jYXQKICAgICAvLyBvciB1bnRpbCBhbGwgYmFja2luZ3Mg
cmVtYWluaW5nIGFyZSBhYm92ZSB0aGUgY3V0b2ZmLgogICAgIHdoaWxlIChtZW1vcnlVc2VCeXRl
cygpID4gbGltaXRCeXRlcyAmJiBtX2JhY2tpbmdzLnNpemUoKSA+IDApIHsKICAgICAgICAgQmFj
a2luZ1NldDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7Ci0gICAgICAgIGlmICgo
Kml0KS0+Y3VycmVudFRleHR1cmUoKSAmJiAoKml0KS0+Y3VycmVudFRleHR1cmUoKS0+aXNBYm92
ZVByaW9yaXR5Q3V0b2ZmKCkpCisgICAgICAgIGlmICgoKml0KS0+b3duZXIoKSAmJiAoKml0KS0+
b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVzdHJveUJhY2tpbmcoKCppdCksIGFsbG9jYXRvcik7CiAgICAgfQpAQCAtMjI5LDkg
KzIyOSw5IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnko
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogICAgIC8vIGJhY2tpbmcgdGV4dHVyZXMgKGFu
eSBtb3JlIHRoYW4gMTAlKS4KICAgICBzaXplX3Qgd2FzdGVkTWVtb3J5ID0gMDsKICAgICBmb3Ig
KEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigpOyBpdCAhPSBtX2Jh
Y2tpbmdzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+Y3VycmVudFRleHR1cmUo
KSkKKyAgICAgICAgaWYgKCgqaXQpLT5vd25lcigpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIHdhc3RlZE1lbW9yeSArPSAoKml0KS0+bWVtb3J5U2l6ZUJ5dGVzKCk7CisgICAgICAgIHdh
c3RlZE1lbW9yeSArPSAoKml0KS0+Ynl0ZXMoKTsKICAgICB9CiAgICAgc2l6ZV90IHRlblBlcmNl
bnRPZk1lbW9yeSA9IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLyAxMDsKICAgICBpZiAod2FzdGVk
TWVtb3J5IDw9IHRlblBlcmNlbnRPZk1lbW9yeSkKQEAgLTI0NCw4ICsyNDQsOCBAQCB2b2lkIEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y2xlYXJBbGxNZW1vcnkoVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yKQogICAgIC8vIFVubGluayBhbmQgZGVzdHJveSBhbGwgYmFja2luZyB0ZXh0
dXJlcy4KICAgICB3aGlsZSAobV9iYWNraW5ncy5zaXplKCkgPiAwKSB7CiAgICAgICAgIEJhY2tp
bmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigpOwotICAgICAgICBpZiAoKCpp
dCktPmN1cnJlbnRUZXh0dXJlKCkpCi0gICAgICAgICAgICB1bmxpbmsoKCppdCktPmN1cnJlbnRU
ZXh0dXJlKCksICgqaXQpKTsKKyAgICAgICAgaWYgKCgqaXQpLT5vd25lcigpKQorICAgICAgICAg
ICAgKCppdCktPm93bmVyKCktPnVubGluaygpOwogICAgICAgICBkZXN0cm95QmFja2luZygoKml0
KSwgYWxsb2NhdG9yKTsKICAgICB9CiB9CkBAIC0yNTgsMzIgKzI1OCwxMSBAQCB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWxsQmFja2luZ1RleHR1cmVzV2VyZURlbGV0ZWQoKQog
ICAgIGNsZWFyQWxsTWVtb3J5KDApOwogfQogCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6dW5saW5rKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBDQ1ByaW9yaXRpemVk
VGV4dHVyZTo6QmFja2luZyogYmFja2luZykKLXsKLSAgICBBU1NFUlQodGV4dHVyZSAmJiBiYWNr
aW5nKTsKLSAgICBBU1NFUlQodGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSA9PSBiYWNraW5nKTsK
LSAgICBBU1NFUlQoYmFja2luZy0+Y3VycmVudFRleHR1cmUoKSA9PSB0ZXh0dXJlKTsKLQotICAg
IHRleHR1cmUtPnNldEN1cnJlbnRCYWNraW5nKDApOwotICAgIGJhY2tpbmctPnNldEN1cnJlbnRU
ZXh0dXJlKDApOwotfQotCi12b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6bGluayhD
Q1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tp
bmcqIGJhY2tpbmcpCi17Ci0gICAgQVNTRVJUKHRleHR1cmUgJiYgYmFja2luZyk7Ci0gICAgQVNT
RVJUKCF0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKTsKLSAgICBBU1NFUlQoIWJhY2tpbmctPmN1
cnJlbnRUZXh0dXJlKCkpOwotCi0gICAgdGV4dHVyZS0+c2V0Q3VycmVudEJhY2tpbmcoYmFja2lu
Zyk7Ci0gICAgYmFja2luZy0+c2V0Q3VycmVudFRleHR1cmUodGV4dHVyZSk7Ci19Ci0KLQogdm9p
ZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZ2lzdGVyVGV4dHVyZShDQ1ByaW9yaXRp
emVkVGV4dHVyZSogdGV4dHVyZSkKIHsKICAgICBBU1NFUlQodGV4dHVyZSk7CiAgICAgQVNTRVJU
KCF0ZXh0dXJlLT50ZXh0dXJlTWFuYWdlcigpKTsKLSAgICBBU1NFUlQoIXRleHR1cmUtPmN1cnJl
bnRCYWNraW5nKCkpOworICAgIEFTU0VSVCghdGV4dHVyZS0+YmFja2luZygpKTsKICAgICBBU1NF
UlQobV90ZXh0dXJlcy5maW5kKHRleHR1cmUpID09IG1fdGV4dHVyZXMuZW5kKCkpOwogCiAgICAg
dGV4dHVyZS0+c2V0TWFuYWdlckludGVybmFsKHRoaXMpOwpAQCAtMzA1LDExICsyODQsMTEgQEAg
dm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnVucmVnaXN0ZXJUZXh0dXJlKENDUHJp
b3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXIKIAogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OnJldHVybkJhY2tpbmdUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlKQog
ewotICAgIGlmICh0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKSB7CisgICAgaWYgKHRleHR1cmUt
PmJhY2tpbmcoKSkgewogICAgICAgICAvLyBNb3ZlIHRoZSBiYWNraW5nIHRleHR1cmUgdG8gdGhl
IGZyb250IGZvciBldmljdGlvbi9yZWN5Y2xpbmcgYW5kIHVubGluayBpdC4KLSAgICAgICAgbV9i
YWNraW5ncy5yZW1vdmUodGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSk7Ci0gICAgICAgIG1fYmFj
a2luZ3MuaW5zZXJ0QmVmb3JlKG1fYmFja2luZ3MuYmVnaW4oKSwgdGV4dHVyZS0+Y3VycmVudEJh
Y2tpbmcoKSk7Ci0gICAgICAgIHVubGluayh0ZXh0dXJlLCB0ZXh0dXJlLT5jdXJyZW50QmFja2lu
ZygpKTsKKyAgICAgICAgbV9iYWNraW5ncy5yZW1vdmUodGV4dHVyZS0+YmFja2luZygpKTsKKyAg
ICAgICAgbV9iYWNraW5ncy5pbnNlcnRCZWZvcmUobV9iYWNraW5ncy5iZWdpbigpLCB0ZXh0dXJl
LT5iYWNraW5nKCkpOworICAgICAgICB0ZXh0dXJlLT51bmxpbmsoKTsKICAgICB9CiB9CiAKQEAg
LTMxNyw5ICsyOTYsOCBAQCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVCYWNraW5nKEludFNpegogewogICAgIEFTU0VSVChh
bGxvY2F0b3IpOwogCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkID0gYWxsb2NhdG9yLT5jcmVhdGVU
ZXh0dXJlKHNpemUsIGZvcm1hdCk7Ci0gICAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcq
IGJhY2tpbmcgPSBuZXcgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcoc2l6ZSwgZm9ybWF0
LCB0ZXh0dXJlSWQpOwotICAgIG1fbWVtb3J5VXNlQnl0ZXMgKz0gYmFja2luZy0+bWVtb3J5U2l6
ZUJ5dGVzKCk7CisgICAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcgPSBu
ZXcgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcoYWxsb2NhdG9yLT5jcmVhdGVUZXh0dXJl
KHNpemUsIGZvcm1hdCksIHNpemUsIGZvcm1hdCk7CisgICAgbV9tZW1vcnlVc2VCeXRlcyArPSBi
YWNraW5nLT5ieXRlcygpOwogICAgIC8vIFB1dCBiYWNraW5nIHRleHR1cmUgYXQgdGhlIGZyb250
IGZvciBldmljdGlvbiwgc2luY2UgaXQgaXNuJ3QgaW4gdXNlIHlldC4KICAgICBtX2JhY2tpbmdz
Lmluc2VydEJlZm9yZShtX2JhY2tpbmdzLmJlZ2luKCksIGJhY2tpbmcpOwogICAgIHJldHVybiBi
YWNraW5nOwpAQCAtMzI4LDE0ICszMDYsMTQgQEAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tp
bmcqIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlQmFja2luZyhJbnRTaXoKIHZv
aWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZXN0cm95QmFja2luZyhDQ1ByaW9yaXRp
emVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZywgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
KQogewogICAgIEFTU0VSVChiYWNraW5nKTsKLSAgICBBU1NFUlQoIWJhY2tpbmctPmN1cnJlbnRU
ZXh0dXJlKCkgfHwgIWJhY2tpbmctPmN1cnJlbnRUZXh0dXJlKCktPmlzQWJvdmVQcmlvcml0eUN1
dG9mZigpKTsKKyAgICBBU1NFUlQoIWJhY2tpbmctPm93bmVyKCkgfHwgIWJhY2tpbmctPm93bmVy
KCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKTsKICAgICBBU1NFUlQobV9iYWNraW5ncy5maW5k
KGJhY2tpbmcpICE9IG1fYmFja2luZ3MuZW5kKCkpOwogCiAgICAgaWYgKGFsbG9jYXRvcikKLSAg
ICAgICAgYWxsb2NhdG9yLT5kZWxldGVUZXh0dXJlKGJhY2tpbmctPnRleHR1cmVJZCgpLCBiYWNr
aW5nLT5zaXplKCksIGJhY2tpbmctPmZvcm1hdCgpKTsKLSAgICBpZiAoYmFja2luZy0+Y3VycmVu
dFRleHR1cmUoKSkKLSAgICAgICAgdW5saW5rKGJhY2tpbmctPmN1cnJlbnRUZXh0dXJlKCksIGJh
Y2tpbmcpOwotICAgIG1fbWVtb3J5VXNlQnl0ZXMgLT0gYmFja2luZy0+bWVtb3J5U2l6ZUJ5dGVz
KCk7CisgICAgICAgIGFsbG9jYXRvci0+ZGVsZXRlVGV4dHVyZShiYWNraW5nLT5pZCgpLCBiYWNr
aW5nLT5zaXplKCksIGJhY2tpbmctPmZvcm1hdCgpKTsKKyAgICBpZiAoYmFja2luZy0+b3duZXIo
KSkKKyAgICAgICAgYmFja2luZy0+b3duZXIoKS0+dW5saW5rKCk7CisgICAgbV9tZW1vcnlVc2VC
eXRlcyAtPSBiYWNraW5nLT5ieXRlcygpOwogICAgIG1fYmFja2luZ3MucmVtb3ZlKGJhY2tpbmcp
OwogCiAgICAgZGVsZXRlIGJhY2tpbmc7CkBAIC0zNTEsMTUgKzMyOSwxNSBAQCB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YXNzZXJ0SW52YXJpYW50cygpCiAKICAgICAvLyBCYWNr
aW5ncy90ZXh0dXJlcyBtdXN0IGJlIGRvdWJseS1saW5rZWQgYW5kIG9ubHkgdG8gb3RoZXIgYmFj
a2luZ3MvdGV4dHVyZXMgaW4gdGhpcyBtYW5hZ2VyLgogICAgIGZvciAoQmFja2luZ1NldDo6aXRl
cmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7IGl0ICE9IG1fYmFja2luZ3MuZW5kKCk7ICsr
aXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQobV90ZXh0dXJlcy5maW5kKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpKSAhPSBtX3Rl
eHR1cmVzLmVuZCgpKTsKLSAgICAgICAgICAgIEFTU0VSVCgoKml0KS0+Y3VycmVudFRleHR1cmUo
KS0+Y3VycmVudEJhY2tpbmcoKSA9PSAoKml0KSk7CisgICAgICAgIGlmICgoKml0KS0+b3duZXIo
KSkgeworICAgICAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXMuZmluZCgoKml0KS0+b3duZXIoKSkg
IT0gbV90ZXh0dXJlcy5lbmQoKSk7CisgICAgICAgICAgICBBU1NFUlQoKCppdCktPm93bmVyKCkt
PmJhY2tpbmcoKSA9PSAoKml0KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yIChUZXh0dXJl
U2V0OjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0gbV90ZXh0dXJlcy5l
bmQoKTsgKytpdCkgewotICAgICAgICBpZiAoKCppdCktPmN1cnJlbnRCYWNraW5nKCkpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChtX2JhY2tpbmdzLmZpbmQoKCppdCktPmN1cnJlbnRCYWNraW5nKCkp
ICE9IG1fYmFja2luZ3MuZW5kKCkpOwotICAgICAgICAgICAgQVNTRVJUKCgqaXQpLT5jdXJyZW50
QmFja2luZygpLT5jdXJyZW50VGV4dHVyZSgpID09ICgqaXQpKTsKKyAgICAgICAgaWYgKCgqaXQp
LT5iYWNraW5nKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2JhY2tpbmdzLmZpbmQoKCppdCkt
PmJhY2tpbmcoKSkgIT0gbV9iYWNraW5ncy5lbmQoKSk7CisgICAgICAgICAgICBBU1NFUlQoKCpp
dCktPmJhY2tpbmcoKS0+b3duZXIoKSA9PSAoKml0KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTM2OCwxMCArMzQ2LDEwIEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphc3Nl
cnRJbnZhcmlhbnRzKCkKICAgICAvLyByZWR1Y2VNZW1vcnkgd2lsbCBub3QgZmluZCBhbGwgdGV4
dHVyZXMgYXZhaWxhYmxlIGZvciBldmljdGlvbi9yZWN5Y2xpbmcpLgogICAgIGJvb2wgcmVhY2hl
ZFByb3RlY3RlZCA9IGZhbHNlOwogICAgIGZvciAoQmFja2luZ1NldDo6aXRlcmF0b3IgaXQgPSBt
X2JhY2tpbmdzLmJlZ2luKCk7IGl0ICE9IG1fYmFja2luZ3MuZW5kKCk7ICsraXQpIHsKLSAgICAg
ICAgaWYgKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpICYmICgqaXQpLT5jdXJyZW50VGV4dHVyZSgp
LT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKKyAgICAgICAgaWYgKCgqaXQpLT5vd25lcigpICYm
ICgqaXQpLT5vd25lcigpLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKICAgICAgICAgICAgIHJl
YWNoZWRQcm90ZWN0ZWQgPSB0cnVlOwogICAgICAgICBpZiAocmVhY2hlZFByb3RlY3RlZCkKLSAg
ICAgICAgICAgIEFTU0VSVCgoKml0KS0+Y3VycmVudFRleHR1cmUoKSAmJiAoKml0KS0+Y3VycmVu
dFRleHR1cmUoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpOworICAgICAgICAgICAgQVNTRVJU
KCgqaXQpLT5vd25lcigpICYmICgqaXQpLT5vd25lcigpLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYo
KSk7CiAgICAgfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlci5oCmluZGV4IDNjNzBiMmIyYTAyMzA5Y2ExNjRkNmRjYTkxY2Q5MGJjNDJh
ZmU2ZWQuLjYyZTU1ODhjOTk4Njg4MzE5ODRkMjcyNDViZWI2MzcyNzM1ODkxNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oCkBAIC0yNywxMCAr
MjcsMTEgQEAKIAogI2luY2x1ZGUgIkNDUHJpb3JpdGl6ZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAi
Q0NQcmlvcml0eUNhbGN1bGF0b3IuaCIKKyNpbmNsdWRlICJDQ1RleHR1cmUuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKKwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTkxLDggKzkyLDggQEAgcHJpdmF0ZToKICAgICAvLyBDb21wYXJlIGJhY2tp
bmdzLiBMb3dlc3QgcHJpb3JpdHkgZmlyc3QuCiAgICAgc3RhdGljIGlubGluZSBib29sIGNvbXBh
cmVCYWNraW5ncyhDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYSwgQ0NQcmlvcml0aXpl
ZFRleHR1cmU6OkJhY2tpbmcqIGIpCiAgICAgewotICAgICAgICBpbnQgcHJpb3JpdHlBID0gYS0+
Y3VycmVudFRleHR1cmUoKSA/IGEtPmN1cnJlbnRUZXh0dXJlKCktPnJlcXVlc3RQcmlvcml0eSgp
IDogQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCk7Ci0gICAgICAgIGludCBw
cmlvcml0eUIgPSBiLT5jdXJyZW50VGV4dHVyZSgpID8gYi0+Y3VycmVudFRleHR1cmUoKS0+cmVx
dWVzdFByaW9yaXR5KCkgOiBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKTsK
KyAgICAgICAgaW50IHByaW9yaXR5QSA9IGEtPm93bmVyKCkgPyBhLT5vd25lcigpLT5yZXF1ZXN0
UHJpb3JpdHkoKSA6IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpOworICAg
ICAgICBpbnQgcHJpb3JpdHlCID0gYi0+b3duZXIoKSA/IGItPm93bmVyKCktPnJlcXVlc3RQcmlv
cml0eSgpIDogQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCk7CiAgICAgICAg
IGlmIChwcmlvcml0eUEgPT0gcHJpb3JpdHlCKQogICAgICAgICAgICAgcmV0dXJuIGEgPCBiOwog
ICAgICAgICByZXR1cm4gQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnByaW9yaXR5SXNMb3dlcihwcmlv
cml0eUEsIHByaW9yaXR5Qik7CkBAIC0xMDIsOSArMTAzLDYgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdCwgVGV4dHVyZUFsbG9jYXRvciopOwogCi0gICAg
dm9pZCBsaW5rKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiwgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJh
Y2tpbmcqKTsKLSAgICB2b2lkIHVubGluayhDQ1ByaW9yaXRpemVkVGV4dHVyZSosIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlOjpCYWNraW5nKik7Ci0KICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFj
a2luZyogY3JlYXRlQmFja2luZyhJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVBbGxv
Y2F0b3IqKTsKICAgICB2b2lkIGRlc3Ryb3lCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpC
YWNraW5nKiwgVGV4dHVyZUFsbG9jYXRvciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oCmluZGV4IGEyOTYx
MDQ2OTNkZDQ1MmYyYjk4NTc4MjA0NWVmMGNhNzZjMTJlODIuLjMyNjM0YjQzZWRkZDQ3NGI2ZWZi
NGQ0NDExMmU5NmQxM2Q1ZTRkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oCkBAIC0zNSw2ICszNSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDVGV4dHVyZSB7CiBwdWJsaWM6CiAgICAgQ0NU
ZXh0dXJlKCkgOiBtX2lkKDApIHsgfQorICAgIENDVGV4dHVyZSh1bnNpZ25lZCBpZCwgSW50U2l6
ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQpCisgICAgICAgICAgICA6IG1faWQoaWQpLCBtX3NpemUo
c2l6ZSksIG1fZm9ybWF0KGZvcm1hdCkgeyB9CiAKICAgICB1bnNpZ25lZCBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151778</attachid>
            <date>2012-07-11 14:29:38 -0700</date>
            <delta_ts>2012-07-11 18:23:42 -0700</delta_ts>
            <desc>whomp</desc>
            <filename>bug-91001-20120711142938.patch</filename>
            <type>text/plain</type>
            <size>88630</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg0ZDhiODYyMzliZjQy
NTUwY2RhY2E2OTMzOWNiNDZmYjAzZDY2YS4uMTY5ZTY4NmI4YmI4MzM3ZTNkOGZjNzI0OWRlN2Q0
MGRiMzcwZDAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTA3LTExICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSBD
Q1RleHR1cmUgaW4gQ0NQcmlvcml0aXplZFRleHR1cmUsIHJlbW92ZSBUZXh0dXJlTWFuYWdlci5o
LCBhbmQgbWlub3IgcmVmYWN0b3JpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBDQ1RleHR1cmUgdG8gY2xlYW4gdXAgQ0NQcmlvcml0aXplZFRl
eHR1cmU6OkJhY2tpbmcuCisgICAgICAgIEFkZCBUZXh0dXJlQWxsb2NhdG9yLmggYW5kIHJlbW92
ZSByZW1haW5kZXIgb2YgVGV4dHVyZU1hbmFnZXIuaC9jcHAuCisgICAgICAgIE1pbm9yIG1vdmUv
cmVmYWN0b3Jpbmcgb2YgbGluay91bmxpbmsgaW4gQ0NQcmlvcml0aXplZFRleHR1cmUuCisKKyAg
ICAgICAgUmVmYWN0b3JpbmcgLSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmguCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVBbGxvY2F0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZUFsbG9jYXRvcjo6flRleHR1cmVBbGxvY2F0b3IpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0RGltZW5zaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmxpbmspOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dW5saW5rKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4
dHVyZTo6Ynl0ZXMpOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmhhdmVCYWNraW5nVGV4dHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZzo6QmFja2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZzo6fkJhY2tpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmc6Om93bmVy
KToKKyAgICAgICAgKEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRl
eHR1cmU6OmJhY2tpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RMYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdU
ZXh0dXJlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjpyZWR1Y2VNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZ2lzdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJldHVybkJhY2tpbmdUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlQmFja2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ry
b3lCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6YXNzZXJ0SW52YXJpYW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNvbXBhcmVCYWNraW5ncyk6CisgICAgICAgIChD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGV4dHVyZTo6Q0NUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3Bw
OgorCiAyMDEyLTA3LTExICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUaWxlQ2FjaGUgbGF5ZXJzIGhhdmUgd3JvbmcgYm9yZGVyIGRlYnVnIGNvbG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDU2MDNkNDFjN2FlYjA4OGM3MTRjOGMxNDkwMjU2NTM5NTgw
MjBlYjIuLmFmYTRlOWIyNTAzZjU2NThkYTBiZWM4ZDY3MjlkODc2ZDZkZWE0NjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDctMTEgIEVyaWMgUGVu
bmVyICA8ZXBlbm5lckBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIENDVGV4
dHVyZSBpbiBDQ1ByaW9yaXRpemVkVGV4dHVyZSwgcmVtb3ZlIFRleHR1cmVNYW5hZ2VyLmgsIGFu
ZCBtaW5vciByZWZhY3RvcmluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxMDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMg
YXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25z
IGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NQcmlvcml0
aXplZFRleHR1cmVUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1cmVU
ZXN0Ojp0ZXh0dXJlc01lbW9yeVNpemUpOgorICAgICAgICAqIHRlc3RzL0NDVGhyZWFkZWRUZXN0
LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmg6CisgICAgICAg
ICogdGVzdHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1Rl
eHR1cmVNYW5hZ2VyVGVzdC5jcHA6IFJlbW92ZWQuCisKIDIwMTItMDctMTEgIFNoYXduIFNpbmdo
ICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBm
aXgsIGZvcmdvdCB0byBhZGQgVVJMVGVzdEhlbHBlcnMuKiB3aGVuIGxhbmRpbmcgcjEyMjM0NApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDcyZjc0ZTI0NmE4NzNlODI2OTExOTM1YjY4MGY1MmMzMGY5MWYz
YWYuLmM2MmJkNDQwMDk0MjBjYzQwMTg0MmE4ZTBiOTI5NzBiMzI4NzU5ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTgyNDAsOCArODI0MCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgnLAot
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNw
cCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1
cmUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1D
YW52YXMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0
Zm9ybUNhbnZhcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bGF0Zm9ybUNvbG9yLmgnLApAQCAtODI2Myw4ICs4MjYxLDcgQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0u
aCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFn
ZXIuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TWFuYWdlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0
dXJlQWxsb2NhdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVVcGxvYWRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGY4
NjljNThhMmNjYzBiMDlmMjNmNTJjNDcxYzMyYTkwNDhlZGNlNDQuLmQ3NWNmMDU0ZGM1MmU5YjI3
Zjg1NTRhYTVlNWFkN2JmNTllODIyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
TGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgInNraWEvZXh0
L3BsYXRmb3JtX2NhbnZhcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKaW5kZXggZDk3OTY4YzAzNTU2MjQzMDU1MmNmZDhiZjc5NzYwNDBm
ZjkzOGQyNi4uMjc2ZTJiMzkxNzkyNjczYzRhNGYyYjQ0MjlmZGFkODg2YjRlZGVhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzgs
NiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUGFpbnRlckNocm9t
aXVtOwogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwog
CiAvLyBUaGlzIGNsYXNzIHJhc3Rlcml6ZXMgdGhlIGNvbnRlbnRSZWN0IGludG8gYSBza2lhIGJp
dG1hcCBjYW52YXMuIEl0IHRoZW4gdXBkYXRlcwogLy8gdGV4dHVyZXMgYnkgY29weWluZyBmcm9t
IHRoZSBjYW52YXMgaW50byB0aGUgdGV4dHVyZSwgdXNpbmcgTWFwU3ViSW1hZ2UgaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKaW5kZXggMjNjZmZlYTk0MjBjMWI2MDY0NTdiZmUxZWZmMjcyZWU4Y2FmMzU0
My4uODZmYjJjOGMzYjQxMzg4NWZlYjlmZGU4MjNmOTUyMDgyODllYjE2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAj
aW5jbHVkZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0RldmljZS5oIgorI2luY2x1ZGUgIlRl
eHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNzg3YjM5OTM3Yzk5ZTE3YTY0
YWViNGQwODhhNWNlODk4YmVlZGI2Yy4uOWYxMzg4ODI3YjM2ZDc3Y2E4OTNmMzNmM2I3MTMwZjU2
MzE2ZGZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIFRleHR1cmVBbGxvY2F0b3I7CisKIC8vIFRoaXMgY2xhc3MgcmVj
b3JkcyB0aGUgY29udGVudFJlY3QgaW50byBhbiBTa1BpY3R1cmUsIHRoZW4gc29mdHdhcmUgcmFz
dGVyaXplcwogLy8gdGhlIFNrUGljdHVyZSBpbnRvIGJpdG1hcHMgZm9yIGVhY2ggdGlsZS4gVGhp
cyBpbXBsZW1lbnRzIENDU2V0dGluZ3M6OnBlclRpbGVQYWludGluZy4KIGNsYXNzIEJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRl
eCAxNDE2NDEzM2QxNmI4MjFiNWQyMGM1ZDk0NTYyMjBiYTg2YTJiYjZjLi43ZGNkNzNhOGEwNDkx
MjlkMmUyOTgwM2IxYjRlYjU0ZjBlOGU1Yzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKIAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdl
LmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgotI2luY2x1ZGUgIk1hbmFnZWRU
ZXh0dXJlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJUcmVlSG9zdC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRl
eCA1NWI1OTI5YTM0NjkxN2E1ZTZjNDExYTUwYTAxYTkyZGZmZGVkNzg0Li5mZjJiZWE5MGU0YWVi
ODRjMDUzN2RhM2VjMTEzN2FlOTU3ZTljMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIlNrQml0bWFwLmgiCiAjaW5jbHVkZSAiU2tDb2xvci5oIgot
I2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlRyYWNraW5nVGV4
dHVyZUFsbG9jYXRvci5oIgpAQCAtMjE5LDcgKzIxOCw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjppbml0aWFsaXplKCkKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdHcHVNZW1v
cnlNYW5hZ2VyKQogICAgICAgICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb25DaGFuZ2Vk
Q2FsbGJhY2tDSFJPTUlVTSh0aGlzKTsKICAgICBlbHNlCi0gICAgICAgIG1fY2xpZW50LT5zZXRN
ZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMo
dmlld3BvcnRTaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQtPnNldE1lbW9yeUFsbG9jYXRpb25M
aW1pdEJ5dGVzKDY0ICogMTAyNCAqIDEwMjQpOwogCiAgICAgbV9jYXBhYmlsaXRpZXMudXNpbmdE
aXNjYXJkRnJhbWVidWZmZXIgPSBleHRlbnNpb25zLmNvbnRhaW5zKCJHTF9DSFJPTUlVTV9kaXNj
YXJkX2ZyYW1lYnVmZmVyIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNGRhYmYxYmViZGVhNTY2YzgwZDhiMWNiNWEyYWVlNGJmN2JjMWQ5
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2luY2x1ZGUg
Ik1hbmFnZWRUZXh0dXJlLmgiCi0KLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2lu
Y2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkdyYXBo
aWNzQ29udGV4dDNELmg+Ci0KLXVzaW5nIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTWFuYWdlZFRleHR1cmU6Ok1hbmFnZWRUZXh0dXJlKFRl
eHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQotICAgIDogbV90ZXh0dXJlTWFuYWdlcihtYW5hZ2VyKQot
ICAgICwgbV90b2tlbigwKQotICAgICwgbV9mb3JtYXQoMCkKLSAgICAsIG1fdGV4dHVyZUlkKDAp
Ci17Ci0gICAgbV90ZXh0dXJlTWFuYWdlci0+cmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwotfQotCi1N
YW5hZ2VkVGV4dHVyZTo6TWFuYWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIsIFRl
eHR1cmVUb2tlbiB0b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVk
IHRleHR1cmVJZCkKLSAgICA6IG1fdGV4dHVyZU1hbmFnZXIobWFuYWdlcikKLSAgICAsIG1fdG9r
ZW4odG9rZW4pCi0gICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZm9ybWF0KGZvcm1hdCkKLSAg
ICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKLXsKLSAgICBtX3RleHR1cmVNYW5hZ2VyLT5yZWdp
c3RlclRleHR1cmUodGhpcyk7Ci19Ci0KLU1hbmFnZWRUZXh0dXJlOjp+TWFuYWdlZFRleHR1cmUo
KQotewotICAgIGlmICghbV90ZXh0dXJlTWFuYWdlcikKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
dGV4dHVyZU1hbmFnZXItPnVucmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwotICAgIGlmIChtX3Rva2Vu
KQotICAgICAgICBtX3RleHR1cmVNYW5hZ2VyLT5yZWxlYXNlVG9rZW4obV90b2tlbik7Ci19Ci0K
LXZvaWQgTWFuYWdlZFRleHR1cmU6OnNldFRleHR1cmVNYW5hZ2VyKFRleHR1cmVNYW5hZ2VyKiBt
YW5hZ2VyKQotewotICAgIGlmIChtYW5hZ2VyID09IG1fdGV4dHVyZU1hbmFnZXIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChtX3RleHR1cmVNYW5hZ2VyKQotICAgICAgICBtX3RleHR1cmVN
YW5hZ2VyLT51bnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsKLSAgICBtX3RleHR1cmVNYW5hZ2VyID0g
bWFuYWdlcjsKLSAgICBjbGVhcigpOwotICAgIGlmIChtX3RleHR1cmVNYW5hZ2VyKQotICAgICAg
ICBtX3RleHR1cmVNYW5hZ2VyLT5yZWdpc3RlclRleHR1cmUodGhpcyk7Ci19Ci0KLWJvb2wgTWFu
YWdlZFRleHR1cmU6OmlzVmFsaWQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgZm9ybWF0
KQotewotICAgIHJldHVybiBtX3Rva2VuICYmIHNpemUgPT0gbV9zaXplICYmIGZvcm1hdCA9PSBt
X2Zvcm1hdCAmJiBtX3RleHR1cmVNYW5hZ2VyICYmIG1fdGV4dHVyZU1hbmFnZXItPmhhc1RleHR1
cmUobV90b2tlbik7Ci19Ci0KLWJvb2wgTWFuYWdlZFRleHR1cmU6OnJlc2VydmUoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQotewotICAgIGlmICghbV90ZXh0dXJlTWFuYWdl
cikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFtX3Rva2VuKQotICAgICAgICBt
X3Rva2VuID0gbV90ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKTsKLQotICAgIGJvb2wgcmVzZXJ2
ZWQgPSB0cnVlOwotICAgIGlmIChzaXplID09IG1fc2l6ZSAmJiBmb3JtYXQgPT0gbV9mb3JtYXQg
JiYgbV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSkKLSAgICAgICAgbV90ZXh0
dXJlTWFuYWdlci0+cHJvdGVjdFRleHR1cmUobV90b2tlbik7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IG1fdGV4dHVyZUlkID0gMDsKLSAgICAgICAgcmVzZXJ2ZWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5y
ZXF1ZXN0VGV4dHVyZShtX3Rva2VuLCBzaXplLCBmb3JtYXQpOwotICAgICAgICBpZiAocmVzZXJ2
ZWQpIHsKLSAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7Ci0gICAgICAgICAgICBtX2Zvcm1hdCA9
IGZvcm1hdDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXNlcnZlZDsKLX0KLQot
dm9pZCBNYW5hZ2VkVGV4dHVyZTo6dW5yZXNlcnZlKCkKLXsKLSAgICBpZiAoIW1fdG9rZW4gfHwg
IW1fdGV4dHVyZU1hbmFnZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdGV4dHVyZU1hbmFn
ZXItPnVucHJvdGVjdFRleHR1cmUobV90b2tlbik7Ci19Ci0KLXZvaWQgTWFuYWdlZFRleHR1cmU6
OmFsbG9jYXRlKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKLXsKLSAgICBBU1NFUlQobV90
ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7Ci0gICAgaWYgKCFtX3RleHR1cmVJ
ZCkKLSAgICAgICAgbV90ZXh0dXJlSWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5hbGxvY2F0ZVRleHR1
cmUoYWxsb2NhdG9yLCBtX3Rva2VuKTsKLX0KLQotdm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRl
eHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvcikKLXsKLSAgICBhbGxvY2F0ZShhbGxvY2F0b3IpOwotICAgIFdlYkdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQz
ZCkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUg
Y29tcG9zaXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29udGV4dDNkLT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpOwotfQot
Ci1QYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBNYW5hZ2VkVGV4dHVyZTo6c3RlYWwoKQotewot
ICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSA9IGFkb3B0UHRyKG5ldyBNYW5hZ2Vk
VGV4dHVyZShtX3RleHR1cmVNYW5hZ2VyLCBtX3Rva2VuLCBtX3NpemUsIG1fZm9ybWF0LCBtX3Rl
eHR1cmVJZCkpOwotICAgIGNsZWFyKCk7Ci0gICAgcmV0dXJuIHRleHR1cmUucmVsZWFzZSgpOwot
fQotCi12b2lkIE1hbmFnZWRUZXh0dXJlOjpjbGVhcigpCi17Ci0gICAgbV90b2tlbiA9IDA7Ci0g
ICAgbV9zaXplID0gSW50U2l6ZSgpOwotICAgIG1fZm9ybWF0ID0gMDsKLSAgICBtX3RleHR1cmVJ
ZCA9IDA7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01h
bmFnZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9NYW5hZ2VkVGV4dHVyZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTY3ZWJm
NjhlYTVlZWJhYzQ5Y2JjNTg2MDg0NWY3ZjdiYjU4NDk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNYW5hZ2VkVGV4dHVyZV9oCi0jZGVmaW5lIE1hbmFn
ZWRUZXh0dXJlX2gKLQotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFu
YWdlci5oIgotCi0jaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KLSNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ0dyYXBoaWNzQ29u
dGV4dDsKLQotY2xhc3MgTWFuYWdlZFRleHR1cmUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE1hbmFnZWRUZXh0dXJlKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNYW5hZ2Vk
VGV4dHVyZT4gY3JlYXRlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBNYW5hZ2VkVGV4dHVyZShtYW5hZ2VyKSk7Ci0gICAgfQotICAg
IH5NYW5hZ2VkVGV4dHVyZSgpOwotCi0gICAgdm9pZCBzZXRUZXh0dXJlTWFuYWdlcihUZXh0dXJl
TWFuYWdlciopOwotICAgIHZvaWQgY2xlYXJNYW5hZ2VyKCkgeyBtX3RleHR1cmVNYW5hZ2VyID0g
MDsgfQotCi0gICAgYm9vbCBpc1ZhbGlkKGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmb3JtYXQp
OwotICAgIGJvb2wgcmVzZXJ2ZShjb25zdCBJbnRTaXplJiwgdW5zaWduZWQgZm9ybWF0KTsKLSAg
ICB2b2lkIHVucmVzZXJ2ZSgpOwotICAgIGJvb2wgaXNSZXNlcnZlZCgpCi0gICAgewotICAgICAg
ICByZXR1cm4gbV90ZXh0dXJlTWFuYWdlciAmJiBtX3RleHR1cmVNYW5hZ2VyLT5pc1Byb3RlY3Rl
ZChtX3Rva2VuKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFsbG9jYXRlKFRleHR1cmVBbGxvY2F0b3Iq
KTsKLSAgICB2b2lkIGJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9j
YXRvciopOwotCi0gICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0g
ICAgdW5zaWduZWQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KLSAgICB1bnNp
Z25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQotCi0gICAgLy8g
U3RlYWwgdG9rZW4gYW5kIHRleHR1cmVJZCBieSBpbnN0YW50aWF0ZXMgYSBuZXcgdGV4dHVyZSB1
c2luZyBleGlzdGluZwotICAgIC8vIG1lbWJlciB2YXJpYWJsZXMuCi0gICAgUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gc3RlYWwoKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNYW5hZ2Vk
VGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwotICAgIE1hbmFnZWRUZXh0dXJlKFRleHR1cmVNYW5h
Z2VyKiwgVGV4dHVyZVRva2VuLCBJbnRTaXplLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHRl
eHR1cmVJZCk7Ci0KLSAgICB2b2lkIGNsZWFyKCk7Ci0KLSAgICBUZXh0dXJlTWFuYWdlciogbV90
ZXh0dXJlTWFuYWdlcjsKLSAgICBUZXh0dXJlVG9rZW4gbV90b2tlbjsKLSAgICBJbnRTaXplIG1f
c2l6ZTsKLSAgICB1bnNpZ25lZCBtX2Zvcm1hdDsKLSAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsK
LX07Ci0KLX0KLQotI2VuZGlmIC8vIE1hbmFnZWRUZXh0dXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3Vy
ZmFjZUNocm9taXVtLmgKaW5kZXggMGU3ZDRlMzhjNTZjMWVjY2Q5NmY1Y2JhZmQ3NGY5ZGU1ZjNk
ODdkOS4uMmI2MDhmNGU3MjcyN2UzYTEwOGQxZTY5NjRkZTYzOTQwOTZkMjk3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIExheWVyQ2hyb21pdW07CiBj
bGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07Ci1jbGFzcyBNYW5hZ2VkVGV4dHVyZTsKIAogY2xh
c3MgUmVuZGVyU3VyZmFjZUNocm9taXVtIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW5k
ZXJTdXJmYWNlQ2hyb21pdW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUFsbG9jYXRvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4
ZGUxMTUyMmI0YWFkYWUxNmJjYjI3ZTA1NGZmNzM3Yjg4NmI4M2QKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2Nh
dG9yLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBUZXh0dXJl
QWxsb2NhdG9yX2gKKyNkZWZpbmUgVGV4dHVyZUFsbG9jYXRvcl9oCisKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJJbnRTaXpl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUm
LCBHQzNEZW51bSBmb3JtYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1
bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIH5UZXh0dXJlQWxsb2NhdG9yKCkgeyB9Cit9OworCit9CisKKyNlbmRpZgorCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rl
eHR1cmVNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg1YzcyMjI4
ZWMwMzdmY2NlNWYzZmVjNDAwOTI0ODUyMzdjMDZiYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLQotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCi0KLSNpbmNs
dWRlICJNYW5hZ2VkVGV4dHVyZS5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKLQotdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0KLW5hbWVzcGFjZSB7Ci1z
aXplX3QgbWVtb3J5TGltaXRCeXRlcyhzaXplX3Qgdmlld3BvcnRNdWx0aXBsaWVyLCBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsIHNpemVfdCBtaW5NZWdhYnl0ZXMsIHNpemVfdCBtYXhNZWdh
Ynl0ZXMpCi17Ci0gICAgaWYgKCF2aWV3cG9ydE11bHRpcGxpZXIpCi0gICAgICAgIHJldHVybiBt
YXhNZWdhYnl0ZXMgKiAxMDI0ICogMTAyNDsKLSAgICBpZiAodmlld3BvcnRTaXplLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIG1pbk1lZ2FieXRlcyAqIDEwMjQgKiAxMDI0OwotICAgIHJldHVy
biBtYXgobWluTWVnYWJ5dGVzICogMTAyNCAqIDEwMjQsIG1pbihtYXhNZWdhYnl0ZXMgKiAxMDI0
ICogMTAyNCwgdmlld3BvcnRNdWx0aXBsaWVyICogVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5
dGVzKHZpZXdwb3J0U2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKSk7Ci19Ci19Ci0KLXNp
emVfdCBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3Bv
cnRTaXplKQotewotICAgIHNpemVfdCB2aWV3cG9ydE11bHRpcGxpZXIsIG1pbk1lZ2FieXRlcywg
bWF4TWVnYWJ5dGVzOwotI2lmIE9TKEFORFJPSUQpCi0gICAgdmlld3BvcnRNdWx0aXBsaWVyID0g
MTY7Ci0gICAgbWluTWVnYWJ5dGVzID0gMzI7Ci0gICAgbWF4TWVnYWJ5dGVzID0gNjQ7Ci0jZWxz
ZQotICAgIHZpZXdwb3J0TXVsdGlwbGllciA9IDA7Ci0gICAgbWluTWVnYWJ5dGVzID0gMDsKLSAg
ICBtYXhNZWdhYnl0ZXMgPSAxMjg7Ci0jZW5kaWYKLSAgICByZXR1cm4gbWVtb3J5TGltaXRCeXRl
cyh2aWV3cG9ydE11bHRpcGxpZXIsIHZpZXdwb3J0U2l6ZSwgbWluTWVnYWJ5dGVzLCBtYXhNZWdh
Ynl0ZXMpOwotfQotCi1zaXplX3QgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKGNv
bnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKLXsKLSAgICBzaXplX3Qgdmlld3BvcnRNdWx0aXBs
aWVyLCBtaW5NZWdhYnl0ZXMsIG1heE1lZ2FieXRlczsKLSNpZiBPUyhBTkRST0lEKQotICAgIHZp
ZXdwb3J0TXVsdGlwbGllciA9IDg7Ci0gICAgbWluTWVnYWJ5dGVzID0gMTY7Ci0gICAgbWF4TWVn
YWJ5dGVzID0gMzI7Ci0jZWxzZQotICAgIHZpZXdwb3J0TXVsdGlwbGllciA9IDA7Ci0gICAgbWlu
TWVnYWJ5dGVzID0gMDsKLSAgICBtYXhNZWdhYnl0ZXMgPSA2NDsKLSNlbmRpZgotICAgIHJldHVy
biBtZW1vcnlMaW1pdEJ5dGVzKHZpZXdwb3J0TXVsdGlwbGllciwgdmlld3BvcnRTaXplLCBtaW5N
ZWdhYnl0ZXMsIG1heE1lZ2FieXRlcyk7Ci19Ci0KLXNpemVfdCBUZXh0dXJlTWFuYWdlcjo6bWVt
b3J5VXNlQnl0ZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkK
LXsKLSAgICAvLyBGSVhNRTogVGhpcyBhc3N1bWVzIGFsbCB0ZXh0dXJlcyBhcmUgMSBieXRlL2Nv
bXBvbmVudC4KLSAgICBjb25zdCBHQzNEZW51bSB0eXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX0JZVEU7Ci0gICAgdW5zaWduZWQgaW50IGNvbXBvbmVudHNQZXJQaXhlbCA9IDQ7Ci0g
ICAgdW5zaWduZWQgaW50IGJ5dGVzUGVyQ29tcG9uZW50ID0gMTsKLSAgICBpZiAoIUdyYXBoaWNz
Q29udGV4dDNEOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnModGV4dHVyZUZvcm1hdCwg
dHlwZSwgJmNvbXBvbmVudHNQZXJQaXhlbCwgJmJ5dGVzUGVyQ29tcG9uZW50KSkKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICByZXR1cm4gc2l6ZS53aWR0aCgpICogc2l6ZS5o
ZWlnaHQoKSAqIGNvbXBvbmVudHNQZXJQaXhlbCAqIGJ5dGVzUGVyQ29tcG9uZW50OwotfQotCi0K
LVRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRl
cywgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSkK
LSAgICA6IG1fbWF4TWVtb3J5TGltaXRCeXRlcyhtYXhNZW1vcnlMaW1pdEJ5dGVzKQotICAgICwg
bV9wcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMpCi0g
ICAgLCBtX21lbW9yeVVzZUJ5dGVzKDApCi0gICAgLCBtX21heFRleHR1cmVTaXplKG1heFRleHR1
cmVTaXplKQotICAgICwgbV9uZXh0VG9rZW4oMSkKLXsKLX0KLQotVGV4dHVyZU1hbmFnZXI6On5U
ZXh0dXJlTWFuYWdlcigpCi17Ci0gICAgZm9yIChIYXNoU2V0PE1hbmFnZWRUZXh0dXJlKj46Oml0
ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkVGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0gbV9yZWdpc3Rl
cmVkVGV4dHVyZXMuZW5kKCk7ICsraXQpCi0gICAgICAgICgqaXQpLT5jbGVhck1hbmFnZXIoKTsK
LX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMo
c2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMpCi17Ci0gICAgc2V0TWF4TWVtb3J5TGltaXRCeXRlcyht
ZW1vcnlMaW1pdEJ5dGVzKTsKLSNpZiBkZWZpbmVkKE9TX0FORFJPSUQpCi0gICAgLy8gT24gYW5k
cm9pZCwgd2UgYXJlIHNldHRpbmcgdGhlIHByZWZlcnJlZCBtZW1vcnkgbGltaXQgdG8gaGFsZiBv
ZiBvdXIKLSAgICAvLyBtYXhpbXVtIGFsbG9jYXRpb24sIGJlY2F1c2Ugd2Ugd291bGQgbGlrZSB0
byBzdGF5IHNpZ25pZmljYW50bHkgYmVsb3cKLSAgICAvLyB0aGUgYWJzb2x1dGUgbWVtb3J5IGxp
bWl0IHdoZW5ldmVyIHdlIGNhbi4gU3BlY2lmaWNhbGx5LCBieSBsaW1pdHRpbmcKLSAgICAvLyBw
cmVwYWludGluZyBvbmx5IHRvIHRoZSBoYWxmd2F5IG1lbW9yeSBtYXJrLgotICAgIHNldFByZWZl
cnJlZE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXRCeXRlcyAvIDIpOwotI2Vsc2UKLSAgICBz
ZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0Qnl0ZXMpOwotI2VuZGlmCi19
Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IG1l
bW9yeUxpbWl0Qnl0ZXMpCi17Ci0gICAgcmVkdWNlTWVtb3J5VG9MaW1pdChtZW1vcnlMaW1pdEJ5
dGVzKTsKLSAgICBBU1NFUlQoY3VycmVudE1lbW9yeVVzZUJ5dGVzKCkgPD0gbWVtb3J5TGltaXRC
eXRlcyk7Ci0gICAgbV9tYXhNZW1vcnlMaW1pdEJ5dGVzID0gbWVtb3J5TGltaXRCeXRlczsKLX0K
LQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhzaXpl
X3QgbWVtb3J5TGltaXRCeXRlcykKLXsKLSAgICBtX3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMg
PSBtZW1vcnlMaW1pdEJ5dGVzOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpyZWdpc3RlclRl
eHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUpCi17Ci0gICAgQVNTRVJUKHRleHR1cmUpOwot
ICAgIEFTU0VSVCghbV9yZWdpc3RlcmVkVGV4dHVyZXMuY29udGFpbnModGV4dHVyZSkpOwotCi0g
ICAgbV9yZWdpc3RlcmVkVGV4dHVyZXMuYWRkKHRleHR1cmUpOwotfQotCi12b2lkIFRleHR1cmVN
YW5hZ2VyOjp1bnJlZ2lzdGVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSkKLXsKLSAg
ICBBU1NFUlQodGV4dHVyZSk7Ci0gICAgQVNTRVJUKG1fcmVnaXN0ZXJlZFRleHR1cmVzLmNvbnRh
aW5zKHRleHR1cmUpKTsKLQotICAgIG1fcmVnaXN0ZXJlZFRleHR1cmVzLnJlbW92ZSh0ZXh0dXJl
KTsKLX0KLQotVGV4dHVyZVRva2VuIFRleHR1cmVNYW5hZ2VyOjpnZXRUb2tlbigpCi17Ci0gICAg
cmV0dXJuIG1fbmV4dFRva2VuKys7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnJlbGVhc2VU
b2tlbihUZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0gICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQg
PSBtX3RleHR1cmVzLmZpbmQodG9rZW4pOwotICAgIGlmIChpdCAhPSBtX3RleHR1cmVzLmVuZCgp
KQotICAgICAgICByZW1vdmVUZXh0dXJlKHRva2VuLCBpdC0+c2Vjb25kKTsKLX0KLQotYm9vbCBU
ZXh0dXJlTWFuYWdlcjo6aGFzVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0gICAgcmV0
dXJuIG1fdGV4dHVyZXMuY29udGFpbnModG9rZW4pOwotfQotCi1ib29sIFRleHR1cmVNYW5hZ2Vy
Ojppc1Byb3RlY3RlZChUZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0gICAgcmV0dXJuIHRva2VuICYm
IGhhc1RleHR1cmUodG9rZW4pICYmIG1fdGV4dHVyZXMuZ2V0KHRva2VuKS5pc1Byb3RlY3RlZDsK
LX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6cHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuIHRv
a2VuKQotewotICAgIEFTU0VSVChoYXNUZXh0dXJlKHRva2VuKSk7Ci0gICAgVGV4dHVyZUluZm8g
aW5mbyA9IG1fdGV4dHVyZXMudGFrZSh0b2tlbik7Ci0gICAgaW5mby5pc1Byb3RlY3RlZCA9IHRy
dWU7Ci0gICAgbV90ZXh0dXJlcy5hZGQodG9rZW4sIGluZm8pOwotICAgIC8vIElmIHNvbWVvbmUg
cHJvdGVjdHMgYSB0ZXh0dXJlLCBwdXQgaXQgYXQgdGhlIGVuZCBvZiB0aGUgTFJVIGxpc3QuCi0g
ICAgbV90ZXh0dXJlTFJVU2V0LnJlbW92ZSh0b2tlbik7Ci0gICAgbV90ZXh0dXJlTFJVU2V0LmFk
ZCh0b2tlbik7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnVucHJvdGVjdFRleHR1cmUoVGV4
dHVyZVRva2VuIHRva2VuKQotewotICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0
dXJlcy5maW5kKHRva2VuKTsKLSAgICBpZiAoaXQgIT0gbV90ZXh0dXJlcy5lbmQoKSkKLSAgICAg
ICAgaXQtPnNlY29uZC5pc1Byb3RlY3RlZCA9IGZhbHNlOwotfQotCi12b2lkIFRleHR1cmVNYW5h
Z2VyOjp1bnByb3RlY3RBbGxUZXh0dXJlcygpCi17Ci0gICAgZm9yIChUZXh0dXJlTWFwOjppdGVy
YXRvciBpdCA9IG1fdGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0gbV90ZXh0dXJlcy5lbmQoKTsgKytp
dCkKLSAgICAgICAgaXQtPnNlY29uZC5pc1Byb3RlY3RlZCA9IGZhbHNlOwotfQotCi12b2lkIFRl
eHR1cmVNYW5hZ2VyOjpldmljdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBUZXh0dXJlSW5m
byBpbmZvKQotewotICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiVGV4dHVyZU1hbmFnZXI6OmV2aWN0
VGV4dHVyZSIpOwotICAgIHJlbW92ZVRleHR1cmUodG9rZW4sIGluZm8pOwotfQotCi12b2lkIFRl
eHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCBsaW1pdCkKLXsKLSAgICB3
aGlsZSAobV9tZW1vcnlVc2VCeXRlcyA+IGxpbWl0KSB7Ci0gICAgICAgIEFTU0VSVCghbV90ZXh0
dXJlTFJVU2V0LmlzRW1wdHkoKSk7Ci0gICAgICAgIGJvb2wgZm91bmRDYW5kaWRhdGUgPSBmYWxz
ZTsKLSAgICAgICAgZm9yIChMaXN0SGFzaFNldDxUZXh0dXJlVG9rZW4+OjppdGVyYXRvciBscnVJ
dCA9IG1fdGV4dHVyZUxSVVNldC5iZWdpbigpOyBscnVJdCAhPSBtX3RleHR1cmVMUlVTZXQuZW5k
KCk7ICsrbHJ1SXQpIHsKLSAgICAgICAgICAgIFRleHR1cmVUb2tlbiB0b2tlbiA9ICpscnVJdDsK
LSAgICAgICAgICAgIFRleHR1cmVJbmZvIGluZm8gPSBtX3RleHR1cmVzLmdldCh0b2tlbik7Ci0g
ICAgICAgICAgICBpZiAoaW5mby5pc1Byb3RlY3RlZCkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIGV2aWN0VGV4dHVyZSh0b2tlbiwgaW5mbyk7Ci0gICAgICAgICAgICBm
b3VuZENhbmRpZGF0ZSA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoIWZvdW5kQ2FuZGlkYXRlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLX0K
LQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRl
eHR1cmVJbmZvIGluZm8pCi17Ci0gICAgQVNTRVJUKCFtX3RleHR1cmVMUlVTZXQuY29udGFpbnMo
dG9rZW4pKTsKLSAgICBBU1NFUlQoIW1fdGV4dHVyZXMuY29udGFpbnModG9rZW4pKTsKLSAgICBt
X21lbW9yeVVzZUJ5dGVzICs9IG1lbW9yeVVzZUJ5dGVzKGluZm8uc2l6ZSwgaW5mby5mb3JtYXQp
OwotICAgIG1fdGV4dHVyZXMuc2V0KHRva2VuLCBpbmZvKTsKLSAgICBtX3RleHR1cmVMUlVTZXQu
YWRkKHRva2VuKTsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlRXZpY3RlZFRleHR1
cmVzKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKLXsKLSAgICBpZiAoYWxsb2NhdG9yKSB7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ldmljdGVkVGV4dHVyZXMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChtX2V2aWN0ZWRUZXh0dXJlc1tpXS50ZXh0dXJlSWQp
IHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICAgICAgQVNTRVJUKG1fZXZpY3RlZFRleHR1
cmVzW2ldLmFsbG9jYXRvciA9PSBhbGxvY2F0b3IpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAg
YWxsb2NhdG9yLT5kZWxldGVUZXh0dXJlKG1fZXZpY3RlZFRleHR1cmVzW2ldLnRleHR1cmVJZCwg
bV9ldmljdGVkVGV4dHVyZXNbaV0uc2l6ZSwgbV9ldmljdGVkVGV4dHVyZXNbaV0uZm9ybWF0KTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBtX2V2aWN0ZWRUZXh0dXJlcy5j
bGVhcigpOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpldmljdEFuZFJlbW92ZUFsbERlbGV0
ZWRUZXh0dXJlcygpCi17Ci0gICAgdW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKLSAgICByZWR1Y2VN
ZW1vcnlUb0xpbWl0KDApOwotICAgIG1fZXZpY3RlZFRleHR1cmVzLmNsZWFyKCk7Ci19Ci0KLXZv
aWQgVGV4dHVyZU1hbmFnZXI6OmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yKQotewotICAgIHVucHJvdGVjdEFsbFRleHR1cmVzKCk7Ci0gICAgcmVk
dWNlTWVtb3J5VG9MaW1pdCgwKTsKLSAgICBkZWxldGVFdmljdGVkVGV4dHVyZXMoYWxsb2NhdG9y
KTsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVGV4dHVyZShUZXh0dXJlVG9rZW4g
dG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCi17Ci0gICAgQVNTRVJUKG1fdGV4dHVyZUxSVVNldC5j
b250YWlucyh0b2tlbikpOwotICAgIEFTU0VSVChtX3RleHR1cmVzLmNvbnRhaW5zKHRva2VuKSk7
Ci0gICAgbV9tZW1vcnlVc2VCeXRlcyAtPSBtZW1vcnlVc2VCeXRlcyhpbmZvLnNpemUsIGluZm8u
Zm9ybWF0KTsKLSAgICBtX3RleHR1cmVzLnJlbW92ZSh0b2tlbik7Ci0gICAgQVNTRVJUKG1fdGV4
dHVyZUxSVVNldC5jb250YWlucyh0b2tlbikpOwotICAgIG1fdGV4dHVyZUxSVVNldC5yZW1vdmUo
dG9rZW4pOwotICAgIEV2aWN0aW9uRW50cnkgZW50cnk7Ci0gICAgZW50cnkudGV4dHVyZUlkID0g
aW5mby50ZXh0dXJlSWQ7Ci0gICAgZW50cnkuc2l6ZSA9IGluZm8uc2l6ZTsKLSAgICBlbnRyeS5m
b3JtYXQgPSBpbmZvLmZvcm1hdDsKLSNpZm5kZWYgTkRFQlVHCi0gICAgZW50cnkuYWxsb2NhdG9y
ID0gaW5mby5hbGxvY2F0b3I7Ci0jZW5kaWYKLSAgICBtX2V2aWN0ZWRUZXh0dXJlcy5hcHBlbmQo
ZW50cnkpOwotfQotCi11bnNpZ25lZCBUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdGVUZXh0dXJlKFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZVRva2VuIHRva2VuKQotewotICAgIFRl
eHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5maW5kKHRva2VuKTsKLSAgICBBU1NF
UlQoaXQgIT0gbV90ZXh0dXJlcy5lbmQoKSk7Ci0gICAgVGV4dHVyZUluZm8qIGluZm8gPSAmaXQu
Z2V0KCktPnNlY29uZDsKLSAgICBBU1NFUlQoaW5mby0+aXNQcm90ZWN0ZWQpOwotCi0gICAgdW5z
aWduZWQgdGV4dHVyZUlkID0gYWxsb2NhdG9yLT5jcmVhdGVUZXh0dXJlKGluZm8tPnNpemUsIGlu
Zm8tPmZvcm1hdCk7Ci0gICAgaW5mby0+dGV4dHVyZUlkID0gdGV4dHVyZUlkOwotI2lmbmRlZiBO
REVCVUcKLSAgICBpbmZvLT5hbGxvY2F0b3IgPSBhbGxvY2F0b3I7Ci0jZW5kaWYKLSAgICByZXR1
cm4gdGV4dHVyZUlkOwotfQotCi1ib29sIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShU
ZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQotewotICAg
IGlmIChzaXplLndpZHRoKCkgPiBtX21heFRleHR1cmVTaXplIHx8IHNpemUuaGVpZ2h0KCkgPiBt
X21heFRleHR1cmVTaXplKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBUZXh0dXJlTWFw
OjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuZmluZCh0b2tlbik7Ci0gICAgaWYgKGl0ICE9IG1f
dGV4dHVyZXMuZW5kKCkpIHsKLSAgICAgICAgQVNTRVJUKGl0LT5zZWNvbmQuc2l6ZSAhPSBzaXpl
IHx8IGl0LT5zZWNvbmQuZm9ybWF0ICE9IGZvcm1hdCk7Ci0gICAgICAgIHJlbW92ZVRleHR1cmUo
dG9rZW4sIGl0LT5zZWNvbmQpOwotICAgIH0KLQotICAgIHNpemVfdCBtZW1vcnlSZXF1aXJlZEJ5
dGVzID0gbWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKLSAgICBpZiAobWVtb3J5UmVxdWly
ZWRCeXRlcyA+IG1fbWF4TWVtb3J5TGltaXRCeXRlcykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmVkdWNlTWVtb3J5VG9MaW1pdChtX21heE1lbW9yeUxpbWl0Qnl0ZXMgLSBtZW1vcnlS
ZXF1aXJlZEJ5dGVzKTsKLSAgICBpZiAobV9tZW1vcnlVc2VCeXRlcyArIG1lbW9yeVJlcXVpcmVk
Qnl0ZXMgPiBtX21heE1lbW9yeUxpbWl0Qnl0ZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIFRleHR1cmVJbmZvIGluZm87Ci0gICAgaW5mby5zaXplID0gc2l6ZTsKLSAgICBpbmZvLmZv
cm1hdCA9IGZvcm1hdDsKLSAgICBpbmZvLnRleHR1cmVJZCA9IDA7Ci0gICAgaW5mby5pc1Byb3Rl
Y3RlZCA9IHRydWU7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGluZm8uYWxsb2NhdG9yID0gMDsKLSNl
bmRpZgotICAgIGFkZFRleHR1cmUodG9rZW4sIGluZm8pOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci19Ci0KLSNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1h
bmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdhMTg5YmNjZDM0MGUzZWM5
YjQ3M2VhOGU4ZmUyYjk1MThiYWE1Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlTWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIFRleHR1cmVNYW5hZ2VyX2gKLSNkZWZpbmUgVGV4dHVyZU1hbmFnZXJf
aAotCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJJbnRSZWN0Lmgi
Ci0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+Ci0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBNYW5hZ2VkVGV4dHVyZTsKLXR5cGVkZWYgaW50IFRleHR1
cmVUb2tlbjsKLQotY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBj
b25zdCBJbnRTaXplJiwgR0MzRGVudW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxs
VGV4dHVyZXMoKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5UZXh0dXJlQWxsb2Nh
dG9yKCkgeyB9Ci19OwotCi1jbGFzcyBUZXh0dXJlTWFuYWdlciB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoVGV4dHVyZU1hbmFnZXIpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiBjcmVhdGUoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVf
dCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVNYW5hZ2VyKG1heE1lbW9yeUxpbWl0
Qnl0ZXMsIHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIG1heFRleHR1cmVTaXplKSk7Ci0gICAg
fQotICAgIH5UZXh0dXJlTWFuYWdlcigpOwotCi0gICAgLy8gQWJzb2x1dGUgbWF4aW11bSBsaW1p
dCBmb3IgdGV4dHVyZSBhbGxvY2F0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS4KLSAgICBzdGF0aWMg
c2l6ZV90IGhpZ2hMaW1pdEJ5dGVzKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSk7Ci0gICAg
Ly8gUHJlZmVycmVkIHRleHR1cmUgc2l6ZSBsaW1pdCBnaXZlbiB0aGUgdmlld3BvcnQgc2l6ZS4K
LSAgICBzdGF0aWMgc2l6ZV90IHJlY2xhaW1MaW1pdEJ5dGVzKGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSk7Ci0KLSAgICBzdGF0aWMgc2l6ZV90IG1lbW9yeVVzZUJ5dGVzKGNvbnN0IEludFNp
emUmLCBHQzNEZW51bSBmb3JtYXQpOwotCi0gICAgdm9pZCBzZXRNZW1vcnlBbGxvY2F0aW9uTGlt
aXRCeXRlcyhzaXplX3QpOwotICAgIHZvaWQgc2V0TWF4TWVtb3J5TGltaXRCeXRlcyhzaXplX3Qp
OwotICAgIHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzKCkgeyByZXR1cm4gbV9tYXhNZW1vcnlM
aW1pdEJ5dGVzOyB9Ci0gICAgdm9pZCBzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHNpemVf
dCk7Ci0gICAgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoKSB7IHJldHVybiBtX3By
ZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXM7IH0KLQotICAgIHZvaWQgcmVnaXN0ZXJUZXh0dXJlKE1h
bmFnZWRUZXh0dXJlKik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyVGV4dHVyZShNYW5hZ2VkVGV4dHVy
ZSopOwotCi0gICAgVGV4dHVyZVRva2VuIGdldFRva2VuKCk7Ci0gICAgdm9pZCByZWxlYXNlVG9r
ZW4oVGV4dHVyZVRva2VuKTsKLSAgICBib29sIGhhc1RleHR1cmUoVGV4dHVyZVRva2VuKTsKLQot
ICAgIGJvb2wgcmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuLCBJbnRTaXplLCBHQzNEZW51bSB0
ZXh0dXJlRm9ybWF0KTsKLQotICAgIHZvaWQgcHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuKTsK
LSAgICB2b2lkIHVucHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuKTsKLSAgICB2b2lkIHVucHJv
dGVjdEFsbFRleHR1cmVzKCk7Ci0gICAgYm9vbCBpc1Byb3RlY3RlZChUZXh0dXJlVG9rZW4pOwot
Ci0gICAgdW5zaWduZWQgYWxsb2NhdGVUZXh0dXJlKFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJl
VG9rZW4pOwotICAgIHZvaWQgZGVsZXRlRXZpY3RlZFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3Iq
KTsKLQotICAgIHZvaWQgZXZpY3RBbmRSZW1vdmVBbGxEZWxldGVkVGV4dHVyZXMoKTsKLSAgICB2
b2lkIGV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciopOwotCi0gICAg
dm9pZCByZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCk7Ci0gICAgc2l6ZV90IGN1cnJlbnRNZW1v
cnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNlQnl0ZXM7IH0KLQotcHJpdmF0
ZToKLSAgICBUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90
IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBz
dHJ1Y3QgVGV4dHVyZUluZm8gewotICAgICAgICBJbnRTaXplIHNpemU7Ci0gICAgICAgIEdDM0Rl
bnVtIGZvcm1hdDsKLSAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkOwotICAgICAgICBib29sIGlz
UHJvdGVjdGVkOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yOwotI2VuZGlmCi0gICAgfTsKLQotICAgIHZvaWQgYWRkVGV4dHVyZShUZXh0dXJlVG9r
ZW4sIFRleHR1cmVJbmZvKTsKLSAgICB2b2lkIHJlbW92ZVRleHR1cmUoVGV4dHVyZVRva2VuLCBU
ZXh0dXJlSW5mbyk7Ci0gICAgdm9pZCBldmljdFRleHR1cmUoVGV4dHVyZVRva2VuLCBUZXh0dXJl
SW5mbyk7Ci0KLSAgICBIYXNoU2V0PE1hbmFnZWRUZXh0dXJlKj4gbV9yZWdpc3RlcmVkVGV4dHVy
ZXM7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8VGV4dHVyZVRva2VuLCBUZXh0dXJlSW5mbz4gVGV4
dHVyZU1hcDsKLSAgICBUZXh0dXJlTWFwIG1fdGV4dHVyZXM7Ci0gICAgTGlzdEhhc2hTZXQ8VGV4
dHVyZVRva2VuPiBtX3RleHR1cmVMUlVTZXQ7Ci0KLSAgICBzaXplX3QgbV9tYXhNZW1vcnlMaW1p
dEJ5dGVzOwotICAgIHNpemVfdCBtX3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXM7Ci0gICAgc2l6
ZV90IG1fbWVtb3J5VXNlQnl0ZXM7Ci0gICAgaW50IG1fbWF4VGV4dHVyZVNpemU7Ci0gICAgVGV4
dHVyZVRva2VuIG1fbmV4dFRva2VuOwotCi0gICAgc3RydWN0IEV2aWN0aW9uRW50cnkgewotICAg
ICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7Ci0gICAgICAgIEludFNpemUgc2l6ZTsKLSAgICAgICAg
R0MzRGVudW0gZm9ybWF0OwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yOwotI2VuZGlmCi0gICAgfTsKLQotICAgIFZlY3RvcjxFdmljdGlvbkVudHJ5
PiBtX2V2aWN0ZWRUZXh0dXJlczsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcAppbmRleCA1YzRiYzA1Y2VlOTg3ZTYzZWZhODI3MzAxMDUxY2M2YWEwZGQ5
MTY5Li5jMzY2M2YzZGQ4MjMyYmFiMWU3ZjMwNTFiMTk0MWYyOTEzMjY2ZDdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJUaWxl
ZExheWVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5j
bHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJU
ZXh0U3RyZWFtLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuY3Bw
CmluZGV4IGM1ODlhM2M2ZWQzZDAwYWZmMWZiYTBkN2Q0MzU5NGYzYWFjOTFlODMuLjdhZTI5Zjkx
MmI4OGUzMzhiOGRiMGYwMzhhNGI1YTgyNTA1YzUzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yLmNwcApAQCAtNzUsNyArNzUsNyBAQCB1bnNpZ25lZCBUcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0Mz
RGVudW0gZgogICAgIGlmIChzaXplLndpZHRoKCkgPiBtX21heFRleHR1cmVTaXplIHx8IHNpemUu
aGVpZ2h0KCkgPiBtX21heFRleHR1cmVTaXplKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIG1f
Y3VycmVudE1lbW9yeVVzZUJ5dGVzICs9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhz
aXplLCBmb3JtYXQpOworICAgIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzICs9IENDVGV4dHVyZTo6
bWVtb3J5U2l6ZUJ5dGVzKHNpemUsIGZvcm1hdCk7CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQg
PSAwOwogICAgIEdMQyhtX2NvbnRleHQsIHRleHR1cmVJZCA9IG1fY29udGV4dC0+Y3JlYXRlVGV4
dHVyZSgpKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB1bnNpZ25lZCBUcmFja2luZ1RleHR1cmVBbGxv
Y2F0b3I6OmNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZgogCiB2
b2lkIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0
dXJlSWQsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKIHsKLSAgICBtX2N1
cnJlbnRNZW1vcnlVc2VCeXRlcyAtPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6
ZSwgZm9ybWF0KTsKKyAgICBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlcyAtPSBDQ1RleHR1cmU6Om1l
bW9yeVNpemVCeXRlcyhzaXplLCBmb3JtYXQpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSWQpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkKSk7CiAgICAgQVNTRVJUKG1fYWxsb2NhdGVkVGV4
dHVyZUlkcy5jb250YWlucyh0ZXh0dXJlSWQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJl
QWxsb2NhdG9yLmgKaW5kZXggNzhlZjQwZDFiNDNlN2IzNDI0NTRhNTJhMTQwMDI0YzU5MTgxOWZl
Mi4uMzhmN2NhMDQzYjRmZDk3MDViNTliZDMzZjNhOWJiNzAxNTYwZDEyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJl
QWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpZm5kZWYg
VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yX2gKICNkZWZpbmUgVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yX2gKIAotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCisjaW5jbHVkZSAiVGV4dHVyZUFs
bG9jYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAppbmRleCA3MzFmNzcw
YzA5NjYzMTg1OGEwYWMzYzRiYzhmM2Q3MTNmNjcxMjY4Li5iZTE5OTgzZWZiNjI2MzZjMDU2YjY5
MDY3OWY1ZmQwMWU5NmY0OGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DYW52YXMuaCIK
LSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdSZWN0SGlz
dG9yeS5oIgogI2luY2x1ZGUgImNjL0NDRnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmlu
ZGV4IDQxNGIyMDUyNjFiMzc5MjJmYjYwMTc0ZjlkYzBlMjdmN2FhMDM0NGUuLmI4YjIzZWE0NTlh
ZmFhOTk5NzIxYWE2YzQ3M2E2YjhlN2Y1MmI1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5o
IgogCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJl
LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1
ZGUgIlRyZWVTeW5jaHJvbml6ZXIuaCIKQEAgLTUyOSw3ICs1MjgsNyBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCkK
ICAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gdXBkYXRlTGlzdFtp
XS5nZXQoKTsKICAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0g
cmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAKLSAgICAgICAgc2l6ZV90IGJ5
dGVzID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHJlbmRlclN1cmZhY2UtPmNvbnRl
bnRSZWN0KCkuc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgIHNpemVf
dCBieXRlcyA9IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5dGVzKHJlbmRlclN1cmZhY2UtPmNvbnRl
bnRSZWN0KCkuc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAgICAgIGNvbnRl
bnRzVGV4dHVyZUJ5dGVzICs9IGJ5dGVzOwogCiAgICAgICAgIGlmIChyZW5kZXJTdXJmYWNlLT5i
YWNrZ3JvdW5kRmlsdGVycygpLmlzRW1wdHkoKSkKQEAgLTUzOCw3ICs1MzcsNyBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRl
TGlzdCkKICAgICAgICAgaWYgKGJ5dGVzID4gbWF4QmFja2dyb3VuZFRleHR1cmVCeXRlcykKICAg
ICAgICAgICAgIG1heEJhY2tncm91bmRUZXh0dXJlQnl0ZXMgPSBieXRlczsKICAgICAgICAgaWYg
KCFyZWFkYmFja0J5dGVzKQotICAgICAgICAgICAgcmVhZGJhY2tCeXRlcyA9IFRleHR1cmVNYW5h
Z2VyOjptZW1vcnlVc2VCeXRlcyhtX2RldmljZVZpZXdwb3J0U2l6ZSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEpOworICAgICAgICAgICAgcmVhZGJhY2tCeXRlcyA9IENDVGV4dHVyZTo6bWVtb3J5
U2l6ZUJ5dGVzKG1fZGV2aWNlVmlld3BvcnRTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7
CiAgICAgfQogICAgIHNpemVfdCByZW5kZXJTdXJmYWNlc0J5dGVzID0gcmVhZGJhY2tCeXRlcyAr
IG1heEJhY2tncm91bmRUZXh0dXJlQnl0ZXMgKyBjb250ZW50c1RleHR1cmVCeXRlczsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBjMjE0M2VhZTVkMzUxZmIwODE4Njk3OGNkOWU4
NTQwMGVhMzMxMWY2Li5iMzRmMDRmYTliNjk5YjgxNjk4NTY0YTY2NDc2ODFiZjY0ODBlODZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNTEsNyArNTEsNiBAQCBjbGFzcyBDQ0xh
eWVyQ2hyb21pdW07CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwogY2xhc3MgQ0NMYXllclRy
ZWVIb3N0SW1wbENsaWVudDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7Ci1jbGFzcyBNYW5hZ2Vk
VGV4dHVyZTsKIGNsYXNzIFJlZ2lvbjsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwCmluZGV4IDI2YTA5ZTcwZmUyMGQ5NzllYmZhMDg1NDgwMWM5M2EzZDc1ODUxZDUu
LjliZTdiZWIzYmE0MDJiZmY2NGVjZThmZGRlY2ZkOGQ4MmJmYzQyNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdz
JiBzZXR0aW5ncywgQ0MKICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fdmlz
aWJsZSh0cnVlKQogICAgICwgbV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENv
bW1pdChmYWxzZSkKLSAgICAsIG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoVGV4dHVyZU1h
bmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSkKKyAgICAsIG1fbWVtb3J5QWxs
b2NhdGlvbkxpbWl0Qnl0ZXMoNjQgKiAxMDI0ICogMTAyNCkKICAgICAsIG1faGVhZHNVcERpc3Bs
YXkoQ0NIZWFkc1VwRGlzcGxheTo6Y3JlYXRlKCkpCiAgICAgLCBtX3BhZ2VTY2FsZSgxKQogICAg
ICwgbV9wYWdlU2NhbGVEZWx0YSgxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1
cmUuY3BwCmluZGV4IGQ4Y2MxNzQ4NWE5MGY5MjAyZDE3YTZmMTg1MjIwYWE2MmU3Njc0M2YuLmE2
YTMwODEyYmExYTYwM2Q3ZjZhMzY5YzM1YTMyMzMxODU4MGQ2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0
dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJDQ1ByaW9yaXR5Q2FsY3Vs
YXRvci5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlRl
eHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CkBAIC0zOCwxNiArMzksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ0NQcmlvcml0
aXplZFRleHR1cmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlciogbWFuYWdlciwgSW50U2l6ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQpCiAgICAgOiBtX3Np
emUoc2l6ZSkKICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKLSAgICAsIG1fbWVtb3J5U2l6ZUJ5dGVz
KDApCisgICAgLCBtX2J5dGVzKDApCiAgICAgLCBtX3ByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxh
dG9yOjpsb3dlc3RQcmlvcml0eSgpKQogICAgICwgbV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoZmFs
c2UpCi0gICAgLCBtX2N1cnJlbnRCYWNraW5nKDApCisgICAgLCBtX2JhY2tpbmcoMCkKICAgICAs
IG1fbWFuYWdlcigwKQogewogICAgIC8vIG1fbWFuYWdlciBpcyBzZXQgaW4gcmVnaXN0ZXJUZXh0
dXJlKCkgc28gdmFsaWRpdHkgY2FuIGJlIGNoZWNrZWQuCiAgICAgQVNTRVJUKGZvcm1hdCB8fCBz
aXplLmlzRW1wdHkoKSk7CiAgICAgaWYgKGZvcm1hdCkKLSAgICAgICAgbV9tZW1vcnlTaXplQnl0
ZXMgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKKyAgICAg
ICAgbV9ieXRlcyA9IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5dGVzKHNpemUsIGZvcm1hdCk7CiAg
ICAgaWYgKG1hbmFnZXIpCiAgICAgICAgIG1hbmFnZXItPnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsK
IH0KQEAgLTc0LDggKzc1LDggQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0RGltZW5z
aW9ucyhJbnRTaXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKICAgICAgICAgbV9pc0Fib3ZlUHJp
b3JpdHlDdXRvZmYgPSBmYWxzZTsKICAgICAgICAgbV9mb3JtYXQgPSBmb3JtYXQ7CiAgICAgICAg
IG1fc2l6ZSA9IHNpemU7Ci0gICAgICAgIG1fbWVtb3J5U2l6ZUJ5dGVzID0gVGV4dHVyZU1hbmFn
ZXI6Om1lbW9yeVVzZUJ5dGVzKHNpemUsIGZvcm1hdCk7Ci0gICAgICAgIEFTU0VSVChtX21hbmFn
ZXIgfHwgIW1fY3VycmVudEJhY2tpbmcpOworICAgICAgICBtX2J5dGVzID0gQ0NUZXh0dXJlOjpt
ZW1vcnlTaXplQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKKyAgICAgICAgQVNTRVJUKG1fbWFuYWdlciB8
fCAhbV9iYWNraW5nKTsKICAgICAgICAgaWYgKG1fbWFuYWdlcikKICAgICAgICAgICAgIG1fbWFu
YWdlci0+cmV0dXJuQmFja2luZ1RleHR1cmUodGhpcyk7CiAgICAgfQpAQCAtOTcsOCArOTgsOCBA
QCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjphY3F1aXJlQmFja2luZ1RleHR1cmUoVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKQogCiB1bnNpZ25lZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6
dGV4dHVyZUlkKCkKIHsKLSAgICBpZiAobV9jdXJyZW50QmFja2luZykKLSAgICAgICAgcmV0dXJu
IG1fY3VycmVudEJhY2tpbmctPnRleHR1cmVJZCgpOworICAgIGlmIChtX2JhY2tpbmcpCisgICAg
ICAgIHJldHVybiBtX2JhY2tpbmctPmlkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwNyw3
ICsxMDgsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShDQ0dyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYQogICAgIEFTU0VSVChtX2lzQWJvdmVQ
cmlvcml0eUN1dG9mZik7CiAgICAgaWYgKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKQogICAgICAg
ICBhY3F1aXJlQmFja2luZ1RleHR1cmUoYWxsb2NhdG9yKTsKLSAgICBBU1NFUlQobV9jdXJyZW50
QmFja2luZyk7CisgICAgQVNTRVJUKG1fYmFja2luZyk7CiAgICAgV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CiAgICAgaWYgKCFj
b250ZXh0M2QpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNv
ZnR3YXJlIGNvbXBvc2l0aW5nLgpAQCAtMTIxLDcgKzEyMiw3IEBAIHZvaWQgQ0NQcmlvcml0aXpl
ZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBUZXh0CiAgICAgQVNTRVJUKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKICAgICBpZiAobV9p
c0Fib3ZlUHJpb3JpdHlDdXRvZmYpCiAgICAgICAgIGFjcXVpcmVCYWNraW5nVGV4dHVyZShhbGxv
Y2F0b3IpOwotICAgIEFTU0VSVChtX2N1cnJlbnRCYWNraW5nKTsKKyAgICBBU1NFUlQobV9iYWNr
aW5nKTsKICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250
ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCkBAIC0xMzAs
MTIgKzEzMSwyNiBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1
cmUyRChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dAogICAgIGNvbnRleHQzZC0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCB0ZXh0dXJlSWQoKSwgMCk7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OnNl
dEN1cnJlbnRCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nKQor
dm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6bGluayhCYWNraW5nKiBiYWNraW5nKQogewotICAg
IGlmIChtX2N1cnJlbnRCYWNraW5nID09IGJhY2tpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBt
X2N1cnJlbnRCYWNraW5nID0gYmFja2luZzsKKyAgICBBU1NFUlQoYmFja2luZyk7CisgICAgQVNT
RVJUKCFiYWNraW5nLT5tX293bmVyKTsKKyAgICBBU1NFUlQoIW1fYmFja2luZyk7CisKKyAgICBt
X2JhY2tpbmcgPSBiYWNraW5nOworICAgIG1fYmFja2luZy0+bV9vd25lciA9IHRoaXM7Cit9CisK
K3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OnVubGluaygpCit7CisgICAgQVNTRVJUKG1fYmFj
a2luZyk7CisgICAgQVNTRVJUKG1fYmFja2luZy0+bV9vd25lciA9PSB0aGlzKTsKKworICAgIG1f
YmFja2luZy0+bV9vd25lciA9IDA7CisgICAgbV9iYWNraW5nID0gMDsKIH0KIAorCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgK
aW5kZXggOWVhMmZiMWU0MTU3OWY2NDUwNGY2YTNjOWJiMGQ3YmUwYjMyZTFmMi4uZGM4NTc5MzI0
MTgzOTZmZGEzNzg5MDEwNTM1NWM5MjRhMmZmMjBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZS5oCkBAIC0yNiwxNiArMjYsMTcgQEAKICNkZWZpbmUgQ0NQcmlvcml0aXpl
ZFRleHR1cmVfaAogCiAjaW5jbHVkZSAiQ0NQcmlvcml0eUNhbGN1bGF0b3IuaCIKKyNpbmNsdWRl
ICJDQ1RleHR1cmUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUg
IkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFn
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI7CiBjbGFzcyBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjsKIGNsYXNzIENDR3JhcGhpY3ND
b250ZXh0OworY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIAogY2xhc3MgQ0NQcmlvcml0aXplZFRl
eHR1cmUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUHJpb3JpdGl6ZWRUZXh0dXJlKTsK
QEAgLTU3LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGltZW5zaW9ucyhJbnRTaXpl
LCBHQzNEZW51bSBmb3JtYXQpOwogICAgIEdDM0RlbnVtIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZm9ybWF0OyB9CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
Ci0gICAgc2l6ZV90IG1lbW9yeVNpemVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5U2l6
ZUJ5dGVzOyB9CisgICAgc2l6ZV90IGJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlczsgfQog
CiAgICAgLy8gU2V0IHByaW9yaXR5IGZvciB0aGUgcmVxdWVzdGVkIHRleHR1cmUuIAogICAgIHZv
aWQgc2V0UmVxdWVzdFByaW9yaXR5KGludCBwcmlvcml0eSkgeyBtX3ByaW9yaXR5ID0gcHJpb3Jp
dHk7IH0KQEAgLTY4LDEyICs2OSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5BY3F1aXJlQmFj
a2luZ1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZjsgfQog
CiAgICAgLy8gVGhpcyByZXR1cm5zIHdoZXRoZXIgd2Ugc3RpbGwgaGF2ZSBhIGJhY2tpbmcgdGV4
dHVyZS4gVGhpcyBjYW4gY29udGludWUKLSAgICAvLyB0byBiZSB0cnVlIGV2ZW4gYWZ0ZXIgY2Fu
QXF1aXJlQmFja2luZ1RleHR1cmUoKSBiZWNvbWVzIGZhbHNlLiBJbiB0aGlzCisgICAgLy8gdG8g
YmUgdHJ1ZSBldmVuIGFmdGVyIGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIGJlY29tZXMgZmFs
c2UuIEluIHRoaXMKICAgICAvLyBjYXNlIHRoZSB0ZXh0dXJlIGNhbiBiZSB1c2VkIGJ1dCBzaG91
bGRuJ3QgYmUgdXBkYXRlZCBzaW5jZSBpdCB3aWxsIGdldAogICAgIC8vIHRha2VuIGF3YXkgInNv
b24iLgotICAgIGJvb2wgaGF2ZUJhY2tpbmdUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gISFjdXJy
ZW50QmFja2luZygpOyB9CisgICAgYm9vbCBoYXZlQmFja2luZ1RleHR1cmUoKSBjb25zdCB7IHJl
dHVybiAhIWJhY2tpbmcoKTsgfQogCi0gICAgLy8gSWYgY2FuQXF1aXJlQmFja2luZ1RleHR1cmUo
KSBpcyB0cnVlIGFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIHdpbGwgYWNxdWlyZQorICAgIC8vIElm
IGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIGlzIHRydWUgYWNxdWlyZUJhY2tpbmdUZXh0dXJl
KCkgd2lsbCBhY3F1aXJlCiAgICAgLy8gYSBiYWNraW5nIHRleHR1cmUgZm9yIHVzZS4gQ2FsbCB0
aGlzIHdoZW5ldmVyIHRoZSB0ZXh0dXJlIGlzIGFjdHVhbGx5IG5lZWRlZC4KICAgICB2b2lkIGFj
cXVpcmVCYWNraW5nVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKik7CiAKQEAgLTgxLDEzICs4Miwx
MyBAQCBwdWJsaWM6CiAgICAgLy8gICAgICAgIChhbGwgdGV4dHVyZXMgYXJlIHZpc2libGUpIGJ1
dCB3ZSBjYW4gc3RpbGwgc3F1ZWV6ZSBpbnRvIHRoZSBsaW1pdAogICAgIC8vICAgICAgICBieSBu
b3QgcGFpbnRpbmcgb2NjbHVkZWQgdGV4dHVyZXMuIEluIHRoaXMgY2FzZSB0aGUgbWFuYWdlcgog
ICAgIC8vICAgICAgICByZWZ1c2VzIGFsbCB2aXNpYmxlIHRleHR1cmVzIGFuZCByZXF1ZXN0TGF0
ZSgpIHdpbGwgZW5hYmxlCi0gICAgLy8gICAgICAgIGNhbkFxdWlyZUJhY2tpbmdUZXh0dXJlKCkg
b24gYSBjYWxsLW9yZGVyIGJhc2lzLiBXZSBtaWdodCB3YW50IHRvCisgICAgLy8gICAgICAgIGNh
bkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIG9uIGEgY2FsbC1vcmRlciBiYXNpcy4gV2UgbWlnaHQg
d2FudCB0bwogICAgIC8vICAgICAgICBqdXN0IHJlbW92ZSB0aGlzIGluIHRoZSBmdXR1cmUgKGNh
cmVmdWxseSkgYW5kIGp1c3QgbWFrZSBzdXJlIHdlIGRvbid0CiAgICAgLy8gICAgICAgIHJlZ3Jl
c3MgT09NcyBzaXR1YXRpb25zLgogICAgIGJvb2wgcmVxdWVzdExhdGUoKTsKIAotICAgIC8vIFRo
ZXNlIGZ1bmN0aW9ucyB3aWxsIGFxdWlyZSB0aGUgdGV4dHVyZSBpZiBwb3NzaWJsZS4gSWYgbmVp
dGhlciBoYXZlQmFja2luZ1RleHR1cmUoKQotICAgIC8vIG5vciBjYW5BcXVpcmVCYWNraW5nVGV4
dHVyZSgpIGlzIHRydWUsIGFuIElEIG9mIHplcm8gd2lsbCBiZSB1c2VkL3JldHVybmVkLgorICAg
IC8vIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFjcXVpcmUgdGhlIHRleHR1cmUgaWYgcG9zc2libGUu
IElmIG5laXRoZXIgaGF2ZUJhY2tpbmdUZXh0dXJlKCkKKyAgICAvLyBub3IgY2FuQWNxdWlyZUJh
Y2tpbmdUZXh0dXJlKCkgaXMgdHJ1ZSwgYW4gSUQgb2YgemVybyB3aWxsIGJlIHVzZWQvcmV0dXJu
ZWQuCiAgICAgdm9pZCBiaW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxv
Y2F0b3IqKTsKICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKENDR3JhcGhpY3NDb250ZXh0
KiwgVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpOwpAQCAtOTUs
MzQgKzk2LDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjsKIAotICAgIGNsYXNzIEJhY2tpbmcgeworICAgIGNsYXNzIEJh
Y2tpbmcgOiBwdWJsaWMgQ0NUZXh0dXJlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QmFja2luZyk7CiAgICAgcHVibGljOgotICAgICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3NpemU7IH0KLSAgICAgICAgR0MzRGVudW0gZm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXQ7IH0KLSAgICAgICAgc2l6ZV90IG1lbW9yeVNpemVCeXRlcygpIGNvbnN0IHsgcmV0
dXJuIG1fbWVtb3J5U2l6ZUJ5dGVzOyB9Ci0gICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9Ci0gICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJl
KiBjdXJyZW50VGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFRleHR1cmU7IH0KLSAg
ICAgICAgdm9pZCBzZXRDdXJyZW50VGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogY3VycmVu
dCkgeyBtX2N1cnJlbnRUZXh0dXJlID0gY3VycmVudDsgfQorICAgICAgICBCYWNraW5nKHVuc2ln
bmVkIGlkLCBJbnRTaXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKKyAgICAgICAgICAgIDogQ0NU
ZXh0dXJlKGlkLCBzaXplLCBmb3JtYXQpLCBtX293bmVyKDApIHsgfQorICAgICAgICB+QmFja2lu
ZygpIHsgQVNTRVJUKCFtX293bmVyKTsgfQogCisgICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJl
KiBvd25lcigpIHsgcmV0dXJuIG1fb3duZXI7IH0KICAgICBwcml2YXRlOgotICAgICAgICBmcmll
bmQgY2xhc3MgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOwotCi0gICAgICAgIEJhY2tpbmco
SW50U2l6ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQsIHVuc2lnbmVkIHRleHR1cmVJZCkKLSAgICAg
ICAgICAgIDogbV9zaXplKHNpemUpCi0gICAgICAgICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKLSAg
ICAgICAgICAgICwgbV9tZW1vcnlTaXplQnl0ZXMoVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5
dGVzKHNpemUsIGZvcm1hdCkpCi0gICAgICAgICAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkK
LSAgICAgICAgICAgICwgbV9wcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJp
b3JpdHkoKSkKLSAgICAgICAgICAgICwgbV9jdXJyZW50VGV4dHVyZSgwKSB7IH0KLSAgICAgICAg
fkJhY2tpbmcoKSB7IEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZSk7IH0KLQotICAgICAgICBJbnRT
aXplIG1fc2l6ZTsKLSAgICAgICAgR0MzRGVudW0gbV9mb3JtYXQ7Ci0gICAgICAgIHNpemVfdCBt
X21lbW9yeVNpemVCeXRlczsKLSAgICAgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgICAg
IGludCBtX3ByaW9yaXR5OwotICAgICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZSogbV9jdXJyZW50
VGV4dHVyZTsKKyAgICAgICAgZnJpZW5kIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlOworICAg
ICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZSogbV9vd25lcjsKICAgICB9OwogCiAgICAgQ0NQcmlv
cml0aXplZFRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiwgSW50U2l6ZSwgR0Mz
RGVudW0gZm9ybWF0KTsKQEAgLTEzMSwxNyArMTE1LDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRBYm92ZVByaW9yaXR5Q3V0b2ZmKGJvb2wgaXNBYm92ZVByaW9yaXR5Q3V0b2ZmKSB7IG1faXNB
Ym92ZVByaW9yaXR5Q3V0b2ZmID0gaXNBYm92ZVByaW9yaXR5Q3V0b2ZmOyB9CiAgICAgdm9pZCBz
ZXRNYW5hZ2VySW50ZXJuYWwoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7
IG1fbWFuYWdlciA9IG1hbmFnZXI7IH0KIAotICAgIEJhY2tpbmcqIGN1cnJlbnRCYWNraW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50QmFja2luZzsgfQotICAgIHZvaWQgc2V0Q3VycmVudEJh
Y2tpbmcoQmFja2luZyopOworICAgIEJhY2tpbmcqIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tpbmc7IH0KKyAgICB2b2lkIGxpbmsoQmFja2luZyopOworICAgIHZvaWQgdW5saW5rKCk7
CiAKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBHQzNEZW51bSBtX2Zvcm1hdDsKLSAgICBzaXpl
X3QgbV9tZW1vcnlTaXplQnl0ZXM7CisgICAgc2l6ZV90IG1fYnl0ZXM7CiAKICAgICBzaXplX3Qg
bV9wcmlvcml0eTsKICAgICBib29sIG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmOwogCi0gICAgQmFj
a2luZyogbV9jdXJyZW50QmFja2luZzsKKyAgICBCYWNraW5nKiBtX2JhY2tpbmc7CiAgICAgQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBtX21hbmFnZXI7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcAppbmRleCA1YWY1M2RmMDRi
ZGViNjdlMmEwZWNjMWEzNGE5ZWE2YmNlOTlmMzI1Li4wMTk1YjZmMWNkZWFiNTA2ZjAzMzI3ODU2
ODM5OGRiNjg0MTc3ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1v
cnkKICAgICAgICAgICAgIHJlc2VydmVkUmVuZGVyU3VyZmFjZXMgPSB0cnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0KS0+
bWVtb3J5U2l6ZUJ5dGVzKCk7CisgICAgICAgIHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9IG1lbW9y
eUJ5dGVzICsgKCppdCktPmJ5dGVzKCk7CiAgICAgICAgIGlmIChuZXdNZW1vcnlCeXRlcyA+IG1f
bWVtb3J5QXZhaWxhYmxlQnl0ZXMpIHsKICAgICAgICAgICAgIG1fcHJpb3JpdHlDdXRvZmYgPSAo
Kml0KS0+cmVxdWVzdFByaW9yaXR5KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNCw3ICsx
MTQsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cHJpb3JpdGl6ZVRleHR1
cmVzKHNpemVfdCByZW5kZXJTdXJmYWNlc01lbW9yeQogICAgICAgICBib29sIGlzQWJvdmVQcmlv
cml0eUN1dG9mZiA9IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpwcmlvcml0eUlzSGlnaGVyKCgqaXQp
LT5yZXF1ZXN0UHJpb3JpdHkoKSwgbV9wcmlvcml0eUN1dG9mZik7CiAgICAgICAgICgqaXQpLT5z
ZXRBYm92ZVByaW9yaXR5Q3V0b2ZmKGlzQWJvdmVQcmlvcml0eUN1dG9mZik7CiAgICAgICAgIGlm
IChpc0Fib3ZlUHJpb3JpdHlDdXRvZmYpCi0gICAgICAgICAgICBtX21lbW9yeUFib3ZlQ3V0b2Zm
Qnl0ZXMgKz0gKCppdCktPm1lbW9yeVNpemVCeXRlcygpOworICAgICAgICAgICAgbV9tZW1vcnlB
Ym92ZUN1dG9mZkJ5dGVzICs9ICgqaXQpLT5ieXRlcygpOwogICAgIH0KICAgICBBU1NFUlQobV9t
ZW1vcnlBYm92ZUN1dG9mZkJ5dGVzIDw9IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMpOwogCkBAIC0x
NTcsMTUgKzE1NywxNSBAQCBib29sIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVxdWVz
dExhdGUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUpCiAgICAgaWYgKENDUHJpb3JpdHlD
YWxjdWxhdG9yOjpwcmlvcml0eUlzTG93ZXIodGV4dHVyZS0+cmVxdWVzdFByaW9yaXR5KCksIG1f
cHJpb3JpdHlDdXRvZmYpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzaXplX3QgbmV3
TWVtb3J5Qnl0ZXMgPSBtX21lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMgKyB0ZXh0dXJlLT5tZW1vcnlT
aXplQnl0ZXMoKTsKKyAgICBzaXplX3QgbmV3TWVtb3J5Qnl0ZXMgPSBtX21lbW9yeUFib3ZlQ3V0
b2ZmQnl0ZXMgKyB0ZXh0dXJlLT5ieXRlcygpOwogICAgIGlmIChuZXdNZW1vcnlCeXRlcyA+IG1f
bWVtb3J5QXZhaWxhYmxlQnl0ZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fbWVt
b3J5QWJvdmVDdXRvZmZCeXRlcyA9IG5ld01lbW9yeUJ5dGVzOwogICAgIHRleHR1cmUtPnNldEFi
b3ZlUHJpb3JpdHlDdXRvZmYodHJ1ZSk7Ci0gICAgaWYgKHRleHR1cmUtPmN1cnJlbnRCYWNraW5n
KCkpIHsKLSAgICAgICAgbV9iYWNraW5ncy5yZW1vdmUodGV4dHVyZS0+Y3VycmVudEJhY2tpbmco
KSk7Ci0gICAgICAgIG1fYmFja2luZ3MuYWRkKHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpOwor
ICAgIGlmICh0ZXh0dXJlLT5iYWNraW5nKCkpIHsKKyAgICAgICAgbV9iYWNraW5ncy5yZW1vdmUo
dGV4dHVyZS0+YmFja2luZygpKTsKKyAgICAgICAgbV9iYWNraW5ncy5hZGQodGV4dHVyZS0+YmFj
a2luZygpKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNzMsNyArMTczLDcgQEAg
Ym9vbCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RMYXRlKENDUHJpb3JpdGl6
ZWRUZXh0dXJlKiB0ZXh0dXJlKQogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFj
cXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJl
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAgQVNTRVJUKHRleHR1cmUtPmlz
QWJvdmVQcmlvcml0eUN1dG9mZigpKTsKLSAgICBpZiAodGV4dHVyZS0+Y3VycmVudEJhY2tpbmco
KSB8fCAhdGV4dHVyZS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCisgICAgaWYgKHRleHR1cmUt
PmJhY2tpbmcoKSB8fCAhdGV4dHVyZS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIEZpbmQgYSBiYWNraW5nIGJlbG93LCBieSBlaXRoZXIgcmVjeWNs
aW5nIG9yIGFsbG9jYXRpbmcuCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6
ZWRUZXgKIAogICAgIC8vIEZpcnN0IHRyeSB0byByZWN5Y2xlCiAgICAgZm9yIChCYWNraW5nU2V0
OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQo
KTsgKytpdCkgewotICAgICAgICBpZiAoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkgJiYgKCppdCkt
PmN1cnJlbnRUZXh0dXJlKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQorICAgICAgICBpZiAo
KCppdCktPm93bmVyKCkgJiYgKCppdCktPm93bmVyKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICgoKml0KS0+c2l6ZSgpID09IHRleHR1
cmUtPnNpemUoKSAmJiAoKml0KS0+Zm9ybWF0KCkgPT0gdGV4dHVyZS0+Zm9ybWF0KCkpIHsKICAg
ICAgICAgICAgIGJhY2tpbmcgPSAoKml0KTsKQEAgLTE5MSwxNCArMTkxLDE0IEBAIHZvaWQgQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChD
Q1ByaW9yaXRpemVkVGV4CiAKICAgICAvLyBPdGhlcndpc2UgcmVkdWNlIG1lbW9yeSBhbmQganVz
dCBhbGxvY2F0ZSBhIG5ldyBiYWNraW5nIHRleHVyZXMuCiAgICAgaWYgKCFiYWNraW5nKSB7Ci0g
ICAgICAgIHJlZHVjZU1lbW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+bWVt
b3J5U2l6ZUJ5dGVzKCksIGFsbG9jYXRvcik7CisgICAgICAgIHJlZHVjZU1lbW9yeShtX21lbW9y
eUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+Ynl0ZXMoKSwgYWxsb2NhdG9yKTsKICAgICAgICAg
YmFja2luZyA9IGNyZWF0ZUJhY2tpbmcodGV4dHVyZS0+c2l6ZSgpLCB0ZXh0dXJlLT5mb3JtYXQo
KSwgYWxsb2NhdG9yKTsKICAgICB9CiAKICAgICAvLyBNb3ZlIHRoZSB1c2VkIGJhY2tpbmcgdGV4
dHVyZSB0byB0aGUgZW5kIG9mIHRoZSBldmljdGlvbiBsaXN0LgotICAgIGlmIChiYWNraW5nLT5j
dXJyZW50VGV4dHVyZSgpKQotICAgICAgICB1bmxpbmsoYmFja2luZy0+Y3VycmVudFRleHR1cmUo
KSwgYmFja2luZyk7Ci0gICAgbGluayh0ZXh0dXJlLCBiYWNraW5nKTsKKyAgICBpZiAoYmFja2lu
Zy0+b3duZXIoKSkKKyAgICAgICAgYmFja2luZy0+b3duZXIoKS0+dW5saW5rKCk7CisgICAgdGV4
dHVyZS0+bGluayhiYWNraW5nKTsKICAgICBtX2JhY2tpbmdzLnJlbW92ZShiYWNraW5nKTsKICAg
ICBtX2JhY2tpbmdzLmFkZChiYWNraW5nKTsKIH0KQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdEJ5dGVz
LCBUZXh0dXJlQWxsb2NhdAogICAgIC8vIG9yIHVudGlsIGFsbCBiYWNraW5ncyByZW1haW5pbmcg
YXJlIGFib3ZlIHRoZSBjdXRvZmYuCiAgICAgd2hpbGUgKG1lbW9yeVVzZUJ5dGVzKCkgPiBsaW1p
dEJ5dGVzICYmIG1fYmFja2luZ3Muc2l6ZSgpID4gMCkgewogICAgICAgICBCYWNraW5nU2V0Ojpp
dGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsKLSAgICAgICAgaWYgKCgqaXQpLT5jdXJy
ZW50VGV4dHVyZSgpICYmICgqaXQpLT5jdXJyZW50VGV4dHVyZSgpLT5pc0Fib3ZlUHJpb3JpdHlD
dXRvZmYoKSkKKyAgICAgICAgaWYgKCgqaXQpLT5vd25lcigpICYmICgqaXQpLT5vd25lcigpLT5p
c0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZXN0
cm95QmFja2luZygoKml0KSwgYWxsb2NhdG9yKTsKICAgICB9CkBAIC0yMjksOSArMjI5LDkgQEAg
dm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeShUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IpCiAgICAgLy8gYmFja2luZyB0ZXh0dXJlcyAoYW55IG1vcmUgdGhh
biAxMCUpLgogICAgIHNpemVfdCB3YXN0ZWRNZW1vcnkgPSAwOwogICAgIGZvciAoQmFja2luZ1Nl
dDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7IGl0ICE9IG1fYmFja2luZ3MuZW5k
KCk7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpKQorICAgICAg
ICBpZiAoKCppdCktPm93bmVyKCkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgd2FzdGVk
TWVtb3J5ICs9ICgqaXQpLT5tZW1vcnlTaXplQnl0ZXMoKTsKKyAgICAgICAgd2FzdGVkTWVtb3J5
ICs9ICgqaXQpLT5ieXRlcygpOwogICAgIH0KICAgICBzaXplX3QgdGVuUGVyY2VudE9mTWVtb3J5
ID0gbV9tZW1vcnlBdmFpbGFibGVCeXRlcyAvIDEwOwogICAgIGlmICh3YXN0ZWRNZW1vcnkgPD0g
dGVuUGVyY2VudE9mTWVtb3J5KQpAQCAtMjQ0LDggKzI0NCw4IEBAIHZvaWQgQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IpCiAgICAgLy8gVW5saW5rIGFuZCBkZXN0cm95IGFsbCBiYWNraW5nIHRleHR1cmVzLgogICAg
IHdoaWxlIChtX2JhY2tpbmdzLnNpemUoKSA+IDApIHsKICAgICAgICAgQmFja2luZ1NldDo6aXRl
cmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7Ci0gICAgICAgIGlmICgoKml0KS0+Y3VycmVu
dFRleHR1cmUoKSkKLSAgICAgICAgICAgIHVubGluaygoKml0KS0+Y3VycmVudFRleHR1cmUoKSwg
KCppdCkpOworICAgICAgICBpZiAoKCppdCktPm93bmVyKCkpCisgICAgICAgICAgICAoKml0KS0+
b3duZXIoKS0+dW5saW5rKCk7CiAgICAgICAgIGRlc3Ryb3lCYWNraW5nKCgqaXQpLCBhbGxvY2F0
b3IpOwogICAgIH0KIH0KQEAgLTI1OCwzMiArMjU4LDExIEBAIHZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjphbGxCYWNraW5nVGV4dHVyZXNXZXJlRGVsZXRlZCgpCiAgICAgY2xlYXJB
bGxNZW1vcnkoMCk7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjp1bmxp
bmsoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpC
YWNraW5nKiBiYWNraW5nKQotewotICAgIEFTU0VSVCh0ZXh0dXJlICYmIGJhY2tpbmcpOwotICAg
IEFTU0VSVCh0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpID09IGJhY2tpbmcpOwotICAgIEFTU0VS
VChiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpID09IHRleHR1cmUpOwotCi0gICAgdGV4dHVyZS0+
c2V0Q3VycmVudEJhY2tpbmcoMCk7Ci0gICAgYmFja2luZy0+c2V0Q3VycmVudFRleHR1cmUoMCk7
Ci19Ci0KLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpsaW5rKENDUHJpb3JpdGl6
ZWRUZXh0dXJlKiB0ZXh0dXJlLCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2lu
ZykKLXsKLSAgICBBU1NFUlQodGV4dHVyZSAmJiBiYWNraW5nKTsKLSAgICBBU1NFUlQoIXRleHR1
cmUtPmN1cnJlbnRCYWNraW5nKCkpOwotICAgIEFTU0VSVCghYmFja2luZy0+Y3VycmVudFRleHR1
cmUoKSk7Ci0KLSAgICB0ZXh0dXJlLT5zZXRDdXJyZW50QmFja2luZyhiYWNraW5nKTsKLSAgICBi
YWNraW5nLT5zZXRDdXJyZW50VGV4dHVyZSh0ZXh0dXJlKTsKLX0KLQotCiB2b2lkIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVnaXN0ZXJUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJl
KiB0ZXh0dXJlKQogewogICAgIEFTU0VSVCh0ZXh0dXJlKTsKICAgICBBU1NFUlQoIXRleHR1cmUt
PnRleHR1cmVNYW5hZ2VyKCkpOwotICAgIEFTU0VSVCghdGV4dHVyZS0+Y3VycmVudEJhY2tpbmco
KSk7CisgICAgQVNTRVJUKCF0ZXh0dXJlLT5iYWNraW5nKCkpOwogICAgIEFTU0VSVChtX3RleHR1
cmVzLmZpbmQodGV4dHVyZSkgPT0gbV90ZXh0dXJlcy5lbmQoKSk7CiAKICAgICB0ZXh0dXJlLT5z
ZXRNYW5hZ2VySW50ZXJuYWwodGhpcyk7CkBAIC0zMDUsMTEgKzI4NCwxMSBAQCB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6dW5yZWdpc3RlclRleHR1cmUoQ0NQcmlvcml0aXplZFRl
eHR1cmUqIHRleHR1cgogCiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmV0dXJu
QmFja2luZ1RleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUpCiB7Ci0gICAgaWYg
KHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpIHsKKyAgICBpZiAodGV4dHVyZS0+YmFja2luZygp
KSB7CiAgICAgICAgIC8vIE1vdmUgdGhlIGJhY2tpbmcgdGV4dHVyZSB0byB0aGUgZnJvbnQgZm9y
IGV2aWN0aW9uL3JlY3ljbGluZyBhbmQgdW5saW5rIGl0LgotICAgICAgICBtX2JhY2tpbmdzLnJl
bW92ZSh0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKTsKLSAgICAgICAgbV9iYWNraW5ncy5pbnNl
cnRCZWZvcmUobV9iYWNraW5ncy5iZWdpbigpLCB0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKTsK
LSAgICAgICAgdW5saW5rKHRleHR1cmUsIHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpOworICAg
ICAgICBtX2JhY2tpbmdzLnJlbW92ZSh0ZXh0dXJlLT5iYWNraW5nKCkpOworICAgICAgICBtX2Jh
Y2tpbmdzLmluc2VydEJlZm9yZShtX2JhY2tpbmdzLmJlZ2luKCksIHRleHR1cmUtPmJhY2tpbmco
KSk7CisgICAgICAgIHRleHR1cmUtPnVubGluaygpOwogICAgIH0KIH0KIApAQCAtMzE3LDkgKzI5
Niw4IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmcoSW50U2l6CiB7CiAgICAgQVNTRVJUKGFsbG9jYXRvcik7
CiAKLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSBhbGxvY2F0b3ItPmNyZWF0ZVRleHR1cmUoc2l6
ZSwgZm9ybWF0KTsKLSAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZyA9
IG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyhzaXplLCBmb3JtYXQsIHRleHR1cmVJ
ZCk7Ci0gICAgbV9tZW1vcnlVc2VCeXRlcyArPSBiYWNraW5nLT5tZW1vcnlTaXplQnl0ZXMoKTsK
KyAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZyA9IG5ldyBDQ1ByaW9y
aXRpemVkVGV4dHVyZTo6QmFja2luZyhhbGxvY2F0b3ItPmNyZWF0ZVRleHR1cmUoc2l6ZSwgZm9y
bWF0KSwgc2l6ZSwgZm9ybWF0KTsKKyAgICBtX21lbW9yeVVzZUJ5dGVzICs9IGJhY2tpbmctPmJ5
dGVzKCk7CiAgICAgLy8gUHV0IGJhY2tpbmcgdGV4dHVyZSBhdCB0aGUgZnJvbnQgZm9yIGV2aWN0
aW9uLCBzaW5jZSBpdCBpc24ndCBpbiB1c2UgeWV0LgogICAgIG1fYmFja2luZ3MuaW5zZXJ0QmVm
b3JlKG1fYmFja2luZ3MuYmVnaW4oKSwgYmFja2luZyk7CiAgICAgcmV0dXJuIGJhY2tpbmc7CkBA
IC0zMjgsMTQgKzMwNiwxNCBAQCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVCYWNraW5nKEludFNpegogdm9pZCBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ryb3lCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJl
OjpCYWNraW5nKiBiYWNraW5nLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAg
QVNTRVJUKGJhY2tpbmcpOwotICAgIEFTU0VSVCghYmFja2luZy0+Y3VycmVudFRleHR1cmUoKSB8
fCAhYmFja2luZy0+Y3VycmVudFRleHR1cmUoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpOwor
ICAgIEFTU0VSVCghYmFja2luZy0+b3duZXIoKSB8fCAhYmFja2luZy0+b3duZXIoKS0+aXNBYm92
ZVByaW9yaXR5Q3V0b2ZmKCkpOwogICAgIEFTU0VSVChtX2JhY2tpbmdzLmZpbmQoYmFja2luZykg
IT0gbV9iYWNraW5ncy5lbmQoKSk7CiAKICAgICBpZiAoYWxsb2NhdG9yKQotICAgICAgICBhbGxv
Y2F0b3ItPmRlbGV0ZVRleHR1cmUoYmFja2luZy0+dGV4dHVyZUlkKCksIGJhY2tpbmctPnNpemUo
KSwgYmFja2luZy0+Zm9ybWF0KCkpOwotICAgIGlmIChiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgp
KQotICAgICAgICB1bmxpbmsoYmFja2luZy0+Y3VycmVudFRleHR1cmUoKSwgYmFja2luZyk7Ci0g
ICAgbV9tZW1vcnlVc2VCeXRlcyAtPSBiYWNraW5nLT5tZW1vcnlTaXplQnl0ZXMoKTsKKyAgICAg
ICAgYWxsb2NhdG9yLT5kZWxldGVUZXh0dXJlKGJhY2tpbmctPmlkKCksIGJhY2tpbmctPnNpemUo
KSwgYmFja2luZy0+Zm9ybWF0KCkpOworICAgIGlmIChiYWNraW5nLT5vd25lcigpKQorICAgICAg
ICBiYWNraW5nLT5vd25lcigpLT51bmxpbmsoKTsKKyAgICBtX21lbW9yeVVzZUJ5dGVzIC09IGJh
Y2tpbmctPmJ5dGVzKCk7CiAgICAgbV9iYWNraW5ncy5yZW1vdmUoYmFja2luZyk7CiAKICAgICBk
ZWxldGUgYmFja2luZzsKQEAgLTM1MSwxNSArMzI5LDE1IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjphc3NlcnRJbnZhcmlhbnRzKCkKIAogICAgIC8vIEJhY2tpbmdzL3RleHR1
cmVzIG11c3QgYmUgZG91Ymx5LWxpbmtlZCBhbmQgb25seSB0byBvdGhlciBiYWNraW5ncy90ZXh0
dXJlcyBpbiB0aGlzIG1hbmFnZXIuCiAgICAgZm9yIChCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9
IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQoKTsgKytpdCkgewotICAg
ICAgICBpZiAoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCht
X3RleHR1cmVzLmZpbmQoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkpICE9IG1fdGV4dHVyZXMuZW5k
KCkpOwotICAgICAgICAgICAgQVNTRVJUKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpLT5jdXJyZW50
QmFja2luZygpID09ICgqaXQpKTsKKyAgICAgICAgaWYgKCgqaXQpLT5vd25lcigpKSB7CisgICAg
ICAgICAgICBBU1NFUlQobV90ZXh0dXJlcy5maW5kKCgqaXQpLT5vd25lcigpKSAhPSBtX3RleHR1
cmVzLmVuZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCgoKml0KS0+b3duZXIoKS0+YmFja2luZygp
ID09ICgqaXQpKTsKICAgICAgICAgfQogICAgIH0KICAgICBmb3IgKFRleHR1cmVTZXQ6Oml0ZXJh
dG9yIGl0ID0gbV90ZXh0dXJlcy5iZWdpbigpOyBpdCAhPSBtX3RleHR1cmVzLmVuZCgpOyArK2l0
KSB7Ci0gICAgICAgIGlmICgoKml0KS0+Y3VycmVudEJhY2tpbmcoKSkgewotICAgICAgICAgICAg
QVNTRVJUKG1fYmFja2luZ3MuZmluZCgoKml0KS0+Y3VycmVudEJhY2tpbmcoKSkgIT0gbV9iYWNr
aW5ncy5lbmQoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoKCppdCktPmN1cnJlbnRCYWNraW5nKCkt
PmN1cnJlbnRUZXh0dXJlKCkgPT0gKCppdCkpOworICAgICAgICBpZiAoKCppdCktPmJhY2tpbmco
KSkgeworICAgICAgICAgICAgQVNTRVJUKG1fYmFja2luZ3MuZmluZCgoKml0KS0+YmFja2luZygp
KSAhPSBtX2JhY2tpbmdzLmVuZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCgoKml0KS0+YmFja2lu
ZygpLT5vd25lcigpID09ICgqaXQpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzY4LDEwICsz
NDYsMTAgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFzc2VydEludmFyaWFu
dHMoKQogICAgIC8vIHJlZHVjZU1lbW9yeSB3aWxsIG5vdCBmaW5kIGFsbCB0ZXh0dXJlcyBhdmFp
bGFibGUgZm9yIGV2aWN0aW9uL3JlY3ljbGluZykuCiAgICAgYm9vbCByZWFjaGVkUHJvdGVjdGVk
ID0gZmFsc2U7CiAgICAgZm9yIChCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3Mu
YmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoKCpp
dCktPmN1cnJlbnRUZXh0dXJlKCkgJiYgKCppdCktPmN1cnJlbnRUZXh0dXJlKCktPmlzQWJvdmVQ
cmlvcml0eUN1dG9mZigpKQorICAgICAgICBpZiAoKCppdCktPm93bmVyKCkgJiYgKCppdCktPm93
bmVyKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQogICAgICAgICAgICAgcmVhY2hlZFByb3Rl
Y3RlZCA9IHRydWU7CiAgICAgICAgIGlmIChyZWFjaGVkUHJvdGVjdGVkKQotICAgICAgICAgICAg
QVNTRVJUKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpICYmICgqaXQpLT5jdXJyZW50VGV4dHVyZSgp
LT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSk7CisgICAgICAgICAgICBBU1NFUlQoKCppdCktPm93
bmVyKCkgJiYgKCppdCktPm93bmVyKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKTsKICAgICB9
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyLmgKaW5kZXggM2M3MGIyYjJhMDIzMDljYTE2NGQ2ZGNhOTFjZDkwYmM0MmFmZTZlZC4uNGJh
ZDhkMGFjNDdmODI5ZTFmNjFjYmU0OGQwMjM0NTE1MDQ5NzE1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKQEAgLTI3LDEwICsyNywxMCBAQAog
CiAjaW5jbHVkZSAiQ0NQcmlvcml0aXplZFRleHR1cmUuaCIKICNpbmNsdWRlICJDQ1ByaW9yaXR5
Q2FsY3VsYXRvci5oIgorI2luY2x1ZGUgIkNDVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIK
LSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTkxLDggKzkxLDggQEAgcHJpdmF0ZToKICAgICAvLyBDb21wYXJlIGJhY2tpbmdzLiBMb3dlc3Qg
cHJpb3JpdHkgZmlyc3QuCiAgICAgc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVCYWNraW5ncyhD
Q1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYSwgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJh
Y2tpbmcqIGIpCiAgICAgewotICAgICAgICBpbnQgcHJpb3JpdHlBID0gYS0+Y3VycmVudFRleHR1
cmUoKSA/IGEtPmN1cnJlbnRUZXh0dXJlKCktPnJlcXVlc3RQcmlvcml0eSgpIDogQ0NQcmlvcml0
eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCk7Ci0gICAgICAgIGludCBwcmlvcml0eUIgPSBi
LT5jdXJyZW50VGV4dHVyZSgpID8gYi0+Y3VycmVudFRleHR1cmUoKS0+cmVxdWVzdFByaW9yaXR5
KCkgOiBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKTsKKyAgICAgICAgaW50
IHByaW9yaXR5QSA9IGEtPm93bmVyKCkgPyBhLT5vd25lcigpLT5yZXF1ZXN0UHJpb3JpdHkoKSA6
IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpOworICAgICAgICBpbnQgcHJp
b3JpdHlCID0gYi0+b3duZXIoKSA/IGItPm93bmVyKCktPnJlcXVlc3RQcmlvcml0eSgpIDogQ0NQ
cmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCk7CiAgICAgICAgIGlmIChwcmlvcml0
eUEgPT0gcHJpb3JpdHlCKQogICAgICAgICAgICAgcmV0dXJuIGEgPCBiOwogICAgICAgICByZXR1
cm4gQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnByaW9yaXR5SXNMb3dlcihwcmlvcml0eUEsIHByaW9y
aXR5Qik7CkBAIC0xMDIsOSArMTAyLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVkdWNlTWVt
b3J5KHNpemVfdCBsaW1pdCwgVGV4dHVyZUFsbG9jYXRvciopOwogCi0gICAgdm9pZCBsaW5rKEND
UHJpb3JpdGl6ZWRUZXh0dXJlKiwgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqKTsKLSAg
ICB2b2lkIHVubGluayhDQ1ByaW9yaXRpemVkVGV4dHVyZSosIENDUHJpb3JpdGl6ZWRUZXh0dXJl
OjpCYWNraW5nKik7Ci0KICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogY3JlYXRl
QmFja2luZyhJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVBbGxvY2F0b3IqKTsKICAg
ICB2b2lkIGRlc3Ryb3lCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiwgVGV4
dHVyZUFsbG9jYXRvciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXR5Q2FsY3VsYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0eUNhbGN1bGF0b3IuaApp
bmRleCA2OGEyMjViZTBiOWVmMzI2NWYwZjg5OGE2MmZkYzU4ZGNjZWZiN2E2Li5hOTBhMDczOTAy
YjJjNzY4YmJjYTc5MjdkYzAyMjhhMTkzNmE4ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXR5Q2FsY3VsYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3Jp
dHlDYWxjdWxhdG9yLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5j
bHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3Bl
ZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY29wZWRUZXh0dXJlLmNwcAppbmRleCA4MGY4MzE1NDExYmU1NTFlYTZkY2E0MDM2ZWNi
OWJlYjdkNjU2N2YwLi5iOWY3NWQxODRjM2E2ODAxZmJiZThmZGZiYTQxZTQzMzY4ZmEzMzkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njb3BlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHAKQEAgLTI0LDEwICsyNCw5IEBACiAgKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUZXh0dXJlLmgi
CiAKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIiAvLyBGb3IgVGV4dHVyZUFsbG9jYXRvcgor
I2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njb3BlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCmluZGV4IDVhM2M0ZTk2NGRkMmM2Y2VlNWE3NDFkZjMx
ZjNjZmU2YmQxZTI0YzAuLjlmNzI0MWY1MTdmNGE0MGVkYjJhYzhjNDE4YWY4YjcxMWZlNGQwMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NvcGVkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVm
IENDU2NvcGVkVGV4dHVyZV9oCiAjZGVmaW5lIENDU2NvcGVkVGV4dHVyZV9oCiAKKyNpbmNsdWRl
ICJUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlLmgiCiAKICNpZiAh
QVNTRVJUX0RJU0FCTEVECkBAIC0zNCw3ICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIAogY2xhc3MgQ0NTY29wZWRUZXh0dXJlIDogcHJv
dGVjdGVkIENDVGV4dHVyZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY29wZWRUZXh0
dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlLmgKaW5kZXggYTI5NjEwNDY5M2RkNDUyZjJiOTg1NzgyMDQ1ZWYw
Y2E3NmMxMmU4Mi4uMGQ1ZDlmNzY4M2U1NjllYzZkYjQ3ODJkNjg3MTlhYWU4YTNkOTcyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlLmgKQEAgLTM1LDYgKzM1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENDVGV4dHVyZSB7CiBwdWJsaWM6CiAgICAgQ0NUZXh0dXJlKCkgOiBtX2lkKDApIHsgfQor
ICAgIENDVGV4dHVyZSh1bnNpZ25lZCBpZCwgSW50U2l6ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQp
CisgICAgICAgIDogbV9pZChpZCkKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAgICAgLCBt
X2Zvcm1hdChmb3JtYXQpIHsgfQogCiAgICAgdW5zaWduZWQgaWQoKSBjb25zdCB7IHJldHVybiBt
X2lkOyB9CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCA1NjRlMzY5NmJlMTU1MmVm
NGY0YjQ1ZDA1NGFlYWQzZmFhNTY0NDUzLi4yYzNiNzU4NGNlNjVmZmQ0MWM1NDBjYjIwMjlkNjI0
NjJhNDEyZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtNTQsOCAr
NTQsNiBAQCBzdGF0aWMgY29uc3QgaW50IGRlYnVnVGlsZUJvcmRlck1pc3NpbmdUaWxlQ29sb3JS
ZWQgPSAyNTU7CiBzdGF0aWMgY29uc3QgaW50IGRlYnVnVGlsZUJvcmRlck1pc3NpbmdUaWxlQ29s
b3JHcmVlbiA9IDA7CiBzdGF0aWMgY29uc3QgaW50IGRlYnVnVGlsZUJvcmRlck1pc3NpbmdUaWxl
Q29sb3JCbHVlID0gMDsKIAotY2xhc3MgTWFuYWdlZFRleHR1cmU7Ci0KIGNsYXNzIERyYXdhYmxl
VGlsZSA6IHB1YmxpYyBDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZSB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRHJhd2FibGVUaWxlKTsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5jcHAKaW5kZXggM2UxZjU4MTM1M2YwMmNhYjNhMTU2MDQzZTAyOWYxOGYzZGU0MDJlNi4u
Y2MzNDljOGU1ZDE3ZTFkZGJjYWU5NjU5MGU5YmFhOWM3M2YxMzJkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NWaWRlb0xheWVySW1wbC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJMYXllclRl
eHR1cmVTdWJJbWFnZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
VGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiIC8vIEZvciBUZXh0dXJl
QWxsb2NhdG9yCisjaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgImNjL0ND
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgog
I2luY2x1ZGUgImNjL0NDUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4
IGJlZGUyYjFlMzFkYzBjYmVjOThhZDI5MjI5ZjRiZGViMDc3NzAxOWMuLjNmOTA1YTdhYjQyM2U5
MTFhYTdjMGM3OTYwMDFmODY1YTA1OTAxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
aQpAQCAtMTM4LDcgKzEzOCw2IEBACiAgICAgICAgICAgICAndGVzdHMvU2Nyb2xsYmFyTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RleHR1cmVMYXllckNocm9taXVtVGVzdC5jcHAnLAot
ICAgICAgICAgICAgJ3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5jcHAnLAogICAgICAgICAgICAg
J3Rlc3RzL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvVGls
aW5nRGF0YVRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggZmJlZGU2Y2VkMTg1Y2M1ZThj
ZDUxYWU1OWRiYmEzNGYwMzZmZjM5NS4uNmQyNGMxZGU3MDAzZjA5MzE1OWQyMGNkN2Q0NGJmYWMx
NTU0ZTFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJD
Q1Rlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNp
bmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVy
ZS5oIgogI2luY2x1ZGUgImNjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVGlsaW5nRGF0YS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVy
ZVRlc3QuY3BwCmluZGV4IDQ2OGFmMzZiYmE1MGUzZWU4MTY1ZjNhY2FjNzRlMWU0OWY2Zjk1NTku
LmE4Yjk2Mjc4N2Q4ZjIzZmViNjhmZDcyYmM1ZjY3OTUyYTVhNjYwZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVz
dC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21t
b24uaCIKICNpbmNsdWRlICJjYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaCIKKyNpbmNs
dWRlICJjYy9DQ1RleHR1cmUuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUwLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc2l6ZV90
IHRleHR1cmVzTWVtb3J5U2l6ZShzaXplX3QgdGV4dHVyZUNvdW50KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhtX3RleHR1cmVTaXplLCBtX3Rl
eHR1cmVGb3JtYXQpICogdGV4dHVyZUNvdW50OworICAgICAgICByZXR1cm4gQ0NUZXh0dXJlOjpt
ZW1vcnlTaXplQnl0ZXMobV90ZXh0dXJlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSAqIHRleHR1cmVD
b3VudDsKICAgICB9CiAKICAgICBQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cj4gY3JlYXRlTWFuYWdlcihzaXplX3QgbWF4VGV4dHVyZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCmluZGV4IDQwZDNjZTVlNmZmOTQzYmNk
MGU5NGU3NWFiMzBiZTZjODA2ZWRkMTkuLjJlMmMxYTA2ZjRiMGZmNWMwY2VmMWQzZDUyNzllZDgy
NmU5YzllOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJl
YWRlZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRl
ZFRlc3QuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiV2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgImNjL0ND
QWN0aXZlQW5pbWF0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IDUzZTU4YjNhN2E2ZDE2MTFiNWEwNTFl
M2U4OTMzYjQzN2Q0MDQxNzUuLjJiNDM3M2UwM2IzYTM2OTgzOGQ1ZjBlMWM1N2FhMGMxM2Q1YzU0
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVy
VGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExh
eWVyVGVzdENvbW1vbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW50U2l6ZS5oIgog
I2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKKyNp
bmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dHVyZUNvcGllci5oIgog
I2luY2x1ZGUgIlRleHR1cmVVcGxvYWRlci5oIgogI2luY2x1ZGUgIlRpbGVkTGF5ZXJDaHJvbWl1
bS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExh
eWVyQnJpZGdlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJE
TGF5ZXJCcmlkZ2VUZXN0LmNwcAppbmRleCA0MzU5MDdjOTQzNzhhYmJjZGNiOTA5NDMwZWQ3YzAy
ZGM3OTE4ODljLi5jMjA2ZGRhNWU3NWExMjU5NWI1MWZjOGVkNGYwNTE3Y2ZlNzI2ZDA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJC
cmlkZ2VUZXN0LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTGF5ZXJD
aHJvbWl1bS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29t
cG9zaXRvci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3ND
b250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1
cmVNYW5hZ2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVN
YW5hZ2VyVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MzEzZjVkYzIz
NTBhMWU4ODg5NjRlMTJkZWViNTU4MzJmMmY4NzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJl
TWFuYWdlclRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RD
b21tb24uaCIKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgotI2luY2x1ZGUgIlRleHR1cmVN
YW5hZ2VyLmgiCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0czsKLXVzaW5nIG5hbWVzcGFjZSBX
VEY7Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIFRleHR1cmVNYW5hZ2VyVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0IHsKLXB1YmxpYzoKLSAgICBUZXh0dXJlTWFuYWdlclRlc3QoKQotICAgICAg
ICA6IG1fdGV4dHVyZVNpemUoMjU2LCAyNTYpCi0gICAgICAgICwgbV90ZXh0dXJlRm9ybWF0KEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5UZXh0
dXJlTWFuYWdlclRlc3QoKQotICAgIHsKLSAgICB9Ci0KLSAgICBzaXplX3QgdGV4dHVyZXNNZW1v
cnlTaXplKHNpemVfdCB0ZXh0dXJlQ291bnQpCi0gICAgewotICAgICAgICByZXR1cm4gVGV4dHVy
ZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKG1fdGV4dHVyZVNpemUsIG1fdGV4dHVyZUZvcm1hdCkg
KiB0ZXh0dXJlQ291bnQ7Ci0gICAgfQotCi0gICAgUGFzc093blB0cjxUZXh0dXJlTWFuYWdlcj4g
Y3JlYXRlVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heFRleHR1cmVzLCBzaXplX3QgcHJlZmVycmVk
VGV4dHVyZXMpCi0gICAgewotICAgICAgICByZXR1cm4gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSh0
ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVy
cmVkVGV4dHVyZXMpLCAxMDI0KTsKLSAgICB9Ci0KLSAgICBib29sIHJlcXVlc3RUZXh0dXJlKFRl
eHR1cmVNYW5hZ2VyKiBtYW5hZ2VyLCBUZXh0dXJlVG9rZW4gdG9rZW4pCi0gICAgewotICAgICAg
ICBib29sIHJlc3VsdCA9IG1hbmFnZXItPnJlcXVlc3RUZXh0dXJlKHRva2VuLCBtX3RleHR1cmVT
aXplLCBtX3RleHR1cmVGb3JtYXQpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAg
bWFuYWdlci0+YWxsb2NhdGVUZXh0dXJlKCZtX2Zha2VUZXh0dXJlQWxsb2NhdG9yLCB0b2tlbik7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZha2VUZXh0
dXJlQWxsb2NhdG9yIG1fZmFrZVRleHR1cmVBbGxvY2F0b3I7Ci0gICAgY29uc3QgSW50U2l6ZSBt
X3RleHR1cmVTaXplOwotICAgIGNvbnN0IEdDM0RlbnVtIG1fdGV4dHVyZUZvcm1hdDsKLX07Ci0K
LVRFU1RfRihUZXh0dXJlTWFuYWdlclRlc3QsIHJlcXVlc3RUZXh0dXJlSW5QcmVmZXJyZWRMaW1p
dCkKLXsKLSAgICBjb25zdCBzaXplX3QgcHJlZmVycmVkVGV4dHVyZXMgPSA4OwotICAgIE93blB0
cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBjcmVhdGVUZXh0dXJlTWFuYWdlcihw
cmVmZXJyZWRUZXh0dXJlcyAqIDIsIHByZWZlcnJlZFRleHR1cmVzKTsKLSAgICBUZXh0dXJlVG9r
ZW4gdG9rZW5zW3ByZWZlcnJlZFRleHR1cmVzXTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHByZWZlcnJlZFRleHR1cmVzOyArK2kpIHsKLSAgICAgICAgdG9rZW5zW2ldID0gdGV4dHVyZU1h
bmFnZXItPmdldFRva2VuKCk7Ci0gICAgICAgIGlmIChpKQotICAgICAgICAgICAgRVhQRUNUX0dU
KHRva2Vuc1tpXSwgdG9rZW5zW2kgLSAxXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RU
ZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tlbnNbaV0pKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5zW2ldKSk7Ci0gICAgICAgIEVY
UEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5pc1Byb3RlY3RlZCh0b2tlbnNbaV0pKTsKLSAgICB9
Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWZlcnJlZFRleHR1cmVzOyArK2kpCi0g
ICAgICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1tpXSkp
OwotCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyks
IHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci19Ci0KLVRFU1RfRihU
ZXh0dXJlTWFuYWdlclRlc3QsIHJlcXVlc3RUZXh0dXJlRXhjZWVkaW5nUHJlZmVycmVkTGltaXQp
Ci17Ci0gICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVzID0gODsKLSAgICBjb25zdCBzaXplX3Qg
cHJlZmVycmVkVGV4dHVyZXMgPSA0OwotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVy
ZU1hbmFnZXIgPSBjcmVhdGVUZXh0dXJlTWFuYWdlcihtYXhUZXh0dXJlcywgcHJlZmVycmVkVGV4
dHVyZXMpOwotICAgIFRleHR1cmVUb2tlbiB0b2tlbnNbbWF4VGV4dHVyZXNdOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkVGV4dHVyZXM7ICsraSkgewotICAgICAgICB0b2tl
bnNbaV0gPSB0ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
cmVxdWVzdFRleHR1cmUodGV4dHVyZU1hbmFnZXIuZ2V0KCksIHRva2Vuc1tpXSkpOwotICAgICAg
ICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbaV0pKTsKLSAg
ICB9Ci0KLSAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZSh0b2tlbnNbMF0pOwot
ICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKHRva2Vuc1syXSk7Ci0KLSAgICBm
b3IgKHNpemVfdCBpID0gcHJlZmVycmVkVGV4dHVyZXM7IGkgPCBtYXhUZXh0dXJlczsgKytpKSB7
Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotICAgICAg
ICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdG9rZW5z
W2ldKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRv
a2Vuc1tpXSkpOwotICAgIH0KLQotICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJl
KHRva2Vuc1s0XSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUodG9rZW5z
WzVdKTsKLQotICAgIC8vIFRoZXNlIHRleHR1cmVzIHNob3VsZCBiZSB2YWxpZCBiZWZvcmUgdGhl
IHJlZHVjZU1lbW9yeVRvTGltaXQgY2FsbC4KLSAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdl
ci0+aGFzVGV4dHVyZSh0b2tlbnNbMF0pKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdl
ci0+aGFzVGV4dHVyZSh0b2tlbnNbMl0pKTsKLQotICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VN
ZW1vcnlUb0xpbWl0KHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcykpOwotCi0g
ICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1swXSkpOwot
ICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1sxXSkpOwot
ICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5pc1Byb3RlY3RlZCh0b2tlbnNbMV0pKTsK
LSAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5zWzJdKSk7
Ci0gICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5zWzNdKSk7
Ci0gICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKHRva2Vuc1szXSkp
OwotCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyks
IHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci19Ci0KLVRFU1RfRihU
ZXh0dXJlTWFuYWdlclRlc3QsIHJlcXVlc3RUZXh0dXJlRXhjZWVkaW5nTWF4TGltaXQpCi17Ci0g
ICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVzID0gODsKLSAgICBjb25zdCBzaXplX3QgcHJlZmVy
cmVkVGV4dHVyZXMgPSA0OwotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXIgPSBjcmVhdGVUZXh0dXJlTWFuYWdlcihtYXhUZXh0dXJlcywgcHJlZmVycmVkVGV4dHVyZXMp
OwotICAgIFRleHR1cmVUb2tlbiB0b2tlbnNbbWF4VGV4dHVyZXNdOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkgewotICAgICAgICB0b2tlbnNbaV0gPSB0ZXh0
dXJlTWFuYWdlci0+Z2V0VG9rZW4oKTsKLSAgICAgICAgRVhQRUNUX1RSVUUocmVxdWVzdFRleHR1
cmUodGV4dHVyZU1hbmFnZXIuZ2V0KCksIHRva2Vuc1tpXSkpOwotICAgICAgICBFWFBFQ1RfVFJV
RSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbaV0pKTsKLSAgICB9Ci0KLSAgICBF
WFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXIt
PmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bWF4VGV4dHVyZXM7ICsraSkgewotICAgICAgICBUZXh0dXJlVG9rZW4gdG9rZW4gPSB0ZXh0dXJl
TWFuYWdlci0+Z2V0VG9rZW4oKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHJlcXVlc3RUZXh0dXJl
KHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tlbikpOwotICAgICAgICBFWFBFQ1RfRkFMU0UodGV4
dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW4pKTsKLSAgICB9Ci0KLSAgICBFWFBFQ1RfRVEo
dGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlc01lbW9yeVNp
emUobWF4VGV4dHVyZXMpKTsKLQotICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJl
KHRva2Vuc1sxXSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUodG9rZW5z
WzNdKTsKLSAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSwgdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0
VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCkp
KTsKLSAgICBFWFBFQ1RfRkFMU0UocmVxdWVzdFRleHR1cmUodGV4dHVyZU1hbmFnZXIuZ2V0KCks
IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVt
b3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0
ZXMoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vu
c1sxXSkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tl
bnNbM10pKTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgcmVkdWNlTWVtb3J5VG9M
aW1pdCkKLXsKLSAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwotICAgIGNvbnN0IHNp
emVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDQ7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRleHR1cmVzLCBwcmVmZXJy
ZWRUZXh0dXJlcyk7Ci0gICAgVGV4dHVyZVRva2VuIHRva2Vuc1ttYXhUZXh0dXJlc107Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKSB7Ci0gICAgICAgIHRva2Vu
c1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfVFJVRShy
ZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7Ci0gICAgfQot
Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVN
YW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJl
ZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSk7Ci0gICAg
RVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2Vy
LT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1l
bW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSk7Ci0gICAg
RVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2Vy
LT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0KLSAgICBjb25zdCBzaXplX3QgdW5wcm90ZWN0
ZWRUZXh0dXJlcyA9IHByZWZlcnJlZFRleHR1cmVzICsgMTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHByZWZlcnJlZFRleHR1cmVzICsgMTsgKytpKQotICAgICAgICB0ZXh0dXJlTWFuYWdl
ci0+dW5wcm90ZWN0VGV4dHVyZSh0b2tlbnNbaV0pOwotCi0gICAgdGV4dHVyZU1hbmFnZXItPnJl
ZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSk7Ci0gICAg
RVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2Vy
LT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1l
bW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSk7Ci0gICAg
RVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIHRleHR1cmVN
YW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJl
ZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKDEpKTsKLSAgICBFWFBFQ1RfRVEo
dGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzIC0gdW5wcm90ZWN0ZWRUZXh0dXJlcyksIHRl
eHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0KLSAgICAvLyByZWR1Y2VN
ZW1vcnlUb0xpbWl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBjdXJyZW50IG1lbW9yeSBsaW1pdHMuCi0g
ICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5h
Z2VyLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9y
eVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+cHJlZmVycmVkTWVtb3J5
TGltaXRCeXRlcygpKTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgc2V0TWF4TWVt
b3J5TGltaXRCeXRlcykKLXsKLSAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwotICAg
IGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDQ7Ci0gICAgT3duUHRyPFRleHR1cmVN
YW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRleHR1cmVz
LCBwcmVmZXJyZWRUZXh0dXJlcyk7Ci0gICAgVGV4dHVyZVRva2VuIHRva2Vuc1ttYXhUZXh0dXJl
c107Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKSB7Ci0gICAg
ICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotICAgICAgICBFWFBF
Q1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7
Ci0gICAgfQotCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyks
IHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0KLSAgICBjb25zdCBz
aXplX3QgdW5wcm90ZWN0ZWRUZXh0dXJlcyA9IHByZWZlcnJlZFRleHR1cmVzICsgMTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHVucHJvdGVjdGVkVGV4dHVyZXM7ICsraSkKLSAgICAgICAg
dGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUodG9rZW5zW2ldKTsKLQotICAgIHRleHR1
cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhU
ZXh0dXJlcykpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMp
LCB0ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkpOwotICAgIHRleHR1cmVN
YW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJy
ZWRUZXh0dXJlcykpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVk
VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkpOwotICAg
IEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCB0ZXh0dXJl
TWFuYWdlci0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5h
Z2VyVGVzdCwgc2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcykKLXsKLSAgICBjb25zdCBzaXpl
X3QgbWF4VGV4dHVyZXMgPSA4OwotICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9
IDQ7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRl
eHR1cmVNYW5hZ2VyKG1heFRleHR1cmVzLCBwcmVmZXJyZWRUZXh0dXJlcyk7Ci0gICAgVGV4dHVy
ZVRva2VuIHRva2Vuc1ttYXhUZXh0dXJlc107Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
YXhUZXh0dXJlczsgKytpKSB7Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5n
ZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFu
YWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7Ci0gICAgfQotCi0gICAgY29uc3Qgc2l6ZV90IHVucHJv
dGVjdGVkVGV4dHVyZXMgPSBwcmVmZXJyZWRUZXh0dXJlcyArIDE7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB1bnByb3RlY3RlZFRleHR1cmVzOyArK2kpCi0gICAgICAgIHRleHR1cmVNYW5h
Z2VyLT51bnByb3RlY3RUZXh0dXJlKHRva2Vuc1tpXSk7Ci0KLSAgICBFWFBFQ1RfRVEodGV4dHVy
ZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlV
c2VCeXRlcygpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVz
KSwgdGV4dHVyZU1hbmFnZXItPm1heE1lbW9yeUxpbWl0Qnl0ZXMoKSk7Ci0KLSAgICAvLyBTZXR0
aW5nIHByZWZlcnJlZCBtZW1vcnkgbGltaXQgb25seSB3b24ndCBmb3JjZSByZWR1Y2VNZW1vcnlU
b0xpbWl0LgotICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVz
KHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcykpOwotICAgIEVYUEVDVF9FUSh0
ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1l
bW9yeVVzZUJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4
dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsKLSAgICBFWFBF
Q1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSwgdGV4dHVyZU1hbmFn
ZXItPnByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoKSk7Ci19Ci0KLVRFU1RfRihUZXh0dXJlTWFu
YWdlclRlc3QsIHRleHR1cmVNYW5hZ2VyRGVzdHJveWVkQmVmb3JlTWFuYWdlZFRleHR1cmUpCi17
Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1
cmVNYW5hZ2VyKDEsIDEpOwotICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbWFuYWdlZFRleHR1
cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyLmdldCgpKTsKLQotICAg
IEludFNpemUgc2l6ZSg1MCwgNTApOwotICAgIHVuc2lnbmVkIGZvcm1hdCA9IEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBOwotCi0gICAgLy8gVGV4dHVyZSBpcyBpbml0aWFsbHkgaW52YWxpZCwgYnV0
IHdlIHNob3VsZCBiZSBhYmxlIHRvIHJlc2VydmUuCi0gICAgRVhQRUNUX0ZBTFNFKG1hbmFnZWRU
ZXh0dXJlLT5pc1ZhbGlkKHNpemUsIGZvcm1hdCkpOwotICAgIEVYUEVDVF9UUlVFKG1hbmFnZWRU
ZXh0dXJlLT5yZXNlcnZlKHNpemUsIGZvcm1hdCkpOwotICAgIEVYUEVDVF9UUlVFKG1hbmFnZWRU
ZXh0dXJlLT5pc1ZhbGlkKHNpemUsIGZvcm1hdCkpOwotCi0gICAgdGV4dHVyZU1hbmFnZXIuY2xl
YXIoKTsKLQotICAgIC8vIERlbGV0aW5nIHRoZSBtYW5hZ2VyIHNob3VsZCBpbnZhbGlkYXRlIHRo
ZSB0ZXh0dXJlIGFuZCByZXNlcnZhdGlvbiBhdHRlbXB0cyBzaG91bGQgZmFpbC4KLSAgICBFWFBF
Q1RfRkFMU0UobWFuYWdlZFRleHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG1hbmFnZWRUZXh0dXJlLT5yZXNlcnZlKHNpemUsIGZvcm1hdCkpOwotfQotCi1U
RVNUX0YoVGV4dHVyZU1hbmFnZXJUZXN0LCB0ZXh0dXJlTW92ZWRUb05ld01hbmFnZXIpCi17Ci0g
ICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlck9uZSA9IGNyZWF0ZVRleHR1
cmVNYW5hZ2VyKDEsIDEpOwotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXJUd28gPSBjcmVhdGVUZXh0dXJlTWFuYWdlcigxLCAxKTsKLSAgICBPd25QdHI8TWFuYWdlZFRl
eHR1cmU+IG1hbmFnZWRUZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZSh0ZXh0dXJlTWFu
YWdlck9uZS5nZXQoKSk7Ci0KLSAgICBJbnRTaXplIHNpemUoNTAsIDUwKTsKLSAgICB1bnNpZ25l
ZCBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKLQotICAgIC8vIFRleHR1cmUgaXMg
aW5pdGlhbGx5IGludmFsaWQsIGJ1dCB3ZSBzaG91bGQgYmUgYWJsZSB0byByZXNlcnZlLgotICAg
IEVYUEVDVF9GQUxTRShtYW5hZ2VkVGV4dHVyZS0+aXNWYWxpZChzaXplLCBmb3JtYXQpKTsKLSAg
ICBFWFBFQ1RfVFJVRShtYW5hZ2VkVGV4dHVyZS0+cmVzZXJ2ZShzaXplLCBmb3JtYXQpKTsKLSAg
ICBFWFBFQ1RfVFJVRShtYW5hZ2VkVGV4dHVyZS0+aXNWYWxpZChzaXplLCBmb3JtYXQpKTsKLQot
ICAgIC8vIFNldHRpbmcgdG8gdGhlIHNhbWUgbWFuYWdlciBzaG91bGQgYmUgYSBuby1vcC4KLSAg
ICBtYW5hZ2VkVGV4dHVyZS0+c2V0VGV4dHVyZU1hbmFnZXIodGV4dHVyZU1hbmFnZXJPbmUuZ2V0
KCkpOwotICAgIEVYUEVDVF9UUlVFKG1hbmFnZWRUZXh0dXJlLT5pc1ZhbGlkKHNpemUsIGZvcm1h
dCkpOwotCi0gICAgLy8gU2V0dGluZyB0byBhIGRpZmZlcmVudCBtYW5hZ2VyIHNob3VsZCBpbnZh
bGlkYXRlIHRoZSB0ZXh0dXJlLgotICAgIG1hbmFnZWRUZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdl
cih0ZXh0dXJlTWFuYWdlclR3by5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRkFMU0UobWFuYWdlZFRl
eHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0gICAgRVhQRUNUX1RSVUUobWFuYWdlZFRl
eHR1cmUtPnJlc2VydmUoc2l6ZSwgZm9ybWF0KSk7Ci0gICAgRVhQRUNUX1RSVUUobWFuYWdlZFRl
eHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151837</attachid>
            <date>2012-07-11 18:23:45 -0700</date>
            <delta_ts>2012-07-11 19:00:55 -0700</delta_ts>
            <desc>add_fixme_remove_whitespace</desc>
            <filename>bug-91001-20120711182345.patch</filename>
            <type>text/plain</type>
            <size>88962</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg0ZDhiODYyMzliZjQy
NTUwY2RhY2E2OTMzOWNiNDZmYjAzZDY2YS4uMTY5ZTY4NmI4YmI4MzM3ZTNkOGZjNzI0OWRlN2Q0
MGRiMzcwZDAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTA3LTExICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSBD
Q1RleHR1cmUgaW4gQ0NQcmlvcml0aXplZFRleHR1cmUsIHJlbW92ZSBUZXh0dXJlTWFuYWdlci5o
LCBhbmQgbWlub3IgcmVmYWN0b3JpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBDQ1RleHR1cmUgdG8gY2xlYW4gdXAgQ0NQcmlvcml0aXplZFRl
eHR1cmU6OkJhY2tpbmcuCisgICAgICAgIEFkZCBUZXh0dXJlQWxsb2NhdG9yLmggYW5kIHJlbW92
ZSByZW1haW5kZXIgb2YgVGV4dHVyZU1hbmFnZXIuaC9jcHAuCisgICAgICAgIE1pbm9yIG1vdmUv
cmVmYWN0b3Jpbmcgb2YgbGluay91bmxpbmsgaW4gQ0NQcmlvcml0aXplZFRleHR1cmUuCisKKyAg
ICAgICAgUmVmYWN0b3JpbmcgLSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmguCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVBbGxvY2F0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZUFsbG9jYXRvcjo6flRleHR1cmVBbGxvY2F0b3IpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0RGltZW5zaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmxpbmspOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dW5saW5rKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4
dHVyZTo6Ynl0ZXMpOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmhhdmVCYWNraW5nVGV4dHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZzo6QmFja2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZzo6fkJhY2tpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmc6Om93bmVy
KToKKyAgICAgICAgKEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRl
eHR1cmU6OmJhY2tpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RMYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdU
ZXh0dXJlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjpyZWR1Y2VNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZ2lzdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJldHVybkJhY2tpbmdUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlQmFja2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ry
b3lCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6YXNzZXJ0SW52YXJpYW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNvbXBhcmVCYWNraW5ncyk6CisgICAgICAgIChD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGV4dHVyZTo6Q0NUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3Bw
OgorCiAyMDEyLTA3LTExICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUaWxlQ2FjaGUgbGF5ZXJzIGhhdmUgd3JvbmcgYm9yZGVyIGRlYnVnIGNvbG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDU2MDNkNDFjN2FlYjA4OGM3MTRjOGMxNDkwMjU2NTM5NTgw
MjBlYjIuLjA3YmUxMWYxZDY1NWE4NTg1ZmVmNWFhNTRjYjkyMDg1MmFkODU4ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDctMTEgIEVyaWMgUGVu
bmVyICA8ZXBlbm5lckBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIENDVGV4
dHVyZSBpbiBDQ1ByaW9yaXRpemVkVGV4dHVyZSwgcmVtb3ZlIFRleHR1cmVNYW5hZ2VyLmgsIGFu
ZCBtaW5vciByZWZhY3RvcmluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxMDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZpbmcgVGV4dHVyZU1hbmFnZXJUZXN0cyBhbG9uZyB3aXRoIFRleHR1
cmVNYW5hZ2VyCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NQcmlvcml0aXplZFRl
eHR1cmVUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0Ojp0
ZXh0dXJlc01lbW9yeVNpemUpOgorICAgICAgICAqIHRlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcDoK
KyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmg6CisgICAgICAgICogdGVz
dHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RleHR1cmVN
YW5hZ2VyVGVzdC5jcHA6IFJlbW92ZWQuCisKIDIwMTItMDctMTEgIFNoYXduIFNpbmdoICA8c2hh
d25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXgsIGZv
cmdvdCB0byBhZGQgVVJMVGVzdEhlbHBlcnMuKiB3aGVuIGxhbmRpbmcgcjEyMjM0NApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDcyZjc0ZTI0NmE4NzNlODI2OTExOTM1YjY4MGY1MmMzMGY5MWYzYWYuLmM2
MmJkNDQwMDk0MjBjYzQwMTg0MmE4ZTBiOTI5NzBiMzI4NzU5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTgyNDAsOCArODI0MCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgnLAotICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1DYW52YXMu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNh
bnZhcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9y
bUNvbG9yLmgnLApAQCAtODI2Myw4ICs4MjYxLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uaCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3Bw
JywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdl
ci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxs
b2NhdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVVcGxvYWRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGY4NjljNThh
MmNjYzBiMDlmMjNmNTJjNDcxYzMyYTkwNDhlZGNlNDQuLmQ3NWNmMDU0ZGM1MmU5YjI3Zjg1NTRh
YTVlNWFkN2JmNTllODIyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTGF5ZXJQ
YWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1Db250ZXh0U2tpYS5oIgorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKICNp
bmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRm
b3JtX2NhbnZhcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKaW5kZXggZDk3OTY4YzAzNTU2MjQzMDU1MmNmZDhiZjc5NzYwNDBmZjkzOGQy
Ni4uMjc2ZTJiMzkxNzkyNjczYzRhNGYyYjQ0MjlmZGFkODg2YjRlZGVhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzgsNiArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwog
Y2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiAvLyBU
aGlzIGNsYXNzIHJhc3Rlcml6ZXMgdGhlIGNvbnRlbnRSZWN0IGludG8gYSBza2lhIGJpdG1hcCBj
YW52YXMuIEl0IHRoZW4gdXBkYXRlcwogLy8gdGV4dHVyZXMgYnkgY29weWluZyBmcm9tIHRoZSBj
YW52YXMgaW50byB0aGUgdGV4dHVyZSwgdXNpbmcgTWFwU3ViSW1hZ2UgaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKaW5kZXggMjNjZmZlYTk0MjBjMWI2MDY0NTdiZmUxZWZmMjcyZWU4Y2FmMzU0My4uODZm
YjJjOGMzYjQxMzg4NWZlYjlmZGU4MjNmOTUyMDgyODllYjE2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVk
ZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0RldmljZS5oIgorI2luY2x1ZGUgIlRleHR1cmVB
bGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNzg3YjM5OTM3Yzk5ZTE3YTY0YWViNGQw
ODhhNWNlODk4YmVlZGI2Yy4uOWYxMzg4ODI3YjM2ZDc3Y2E4OTNmMzNmM2I3MTMwZjU2MzE2ZGZm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFRleHR1cmVBbGxvY2F0b3I7CisKIC8vIFRoaXMgY2xhc3MgcmVjb3JkcyB0
aGUgY29udGVudFJlY3QgaW50byBhbiBTa1BpY3R1cmUsIHRoZW4gc29mdHdhcmUgcmFzdGVyaXpl
cwogLy8gdGhlIFNrUGljdHVyZSBpbnRvIGJpdG1hcHMgZm9yIGVhY2ggdGlsZS4gVGhpcyBpbXBs
ZW1lbnRzIENDU2V0dGluZ3M6OnBlclRpbGVQYWludGluZy4KIGNsYXNzIEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCAxNDE2
NDEzM2QxNmI4MjFiNWQyMGM1ZDk0NTYyMjBiYTg2YTJiYjZjLi43ZGNkNzNhOGEwNDkxMjlkMmUy
OTgwM2IxYjRlYjU0ZjBlOGU1Yzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTM2LDcgKzM2LDYgQEAKIAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCiAj
aW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJl
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA1NWI1
OTI5YTM0NjkxN2E1ZTZjNDExYTUwYTAxYTkyZGZmZGVkNzg0Li5mZjJiZWE5MGU0YWViODRjMDUz
N2RhM2VjMTEzN2FlOTU3ZTljMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0NvbnRleHQz
RC5oIgogI2luY2x1ZGUgIlNrQml0bWFwLmgiCiAjaW5jbHVkZSAiU2tDb2xvci5oIgotI2luY2x1
ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
LmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvci5oIgpAQCAtMjE5LDcgKzIxOCw3IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojppbml0aWFsaXplKCkKICAgICBpZiAobV9jYXBhYmlsaXRpZXMudXNpbmdHcHVNZW1vcnlNYW5h
Z2VyKQogICAgICAgICBtX2NvbnRleHQtPnNldE1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJh
Y2tDSFJPTUlVTSh0aGlzKTsKICAgICBlbHNlCi0gICAgICAgIG1fY2xpZW50LT5zZXRNZW1vcnlB
bGxvY2F0aW9uTGltaXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3Bv
cnRTaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQtPnNldE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5
dGVzKDY0ICogMTAyNCAqIDEwMjQpOwogCiAgICAgbV9jYXBhYmlsaXRpZXMudXNpbmdEaXNjYXJk
RnJhbWVidWZmZXIgPSBleHRlbnNpb25zLmNvbnRhaW5zKCJHTF9DSFJPTUlVTV9kaXNjYXJkX2Zy
YW1lYnVmZmVyIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNGRhYmYxYmViZGVhNTY2YzgwZDhiMWNiNWEyYWVlNGJmN2JjMWQ5MC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2luY2x1ZGUgIk1hbmFn
ZWRUZXh0dXJlLmgiCi0KLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUg
ImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmg+Ci0KLXVzaW5nIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotTWFuYWdlZFRleHR1cmU6Ok1hbmFnZWRUZXh0dXJlKFRleHR1cmVN
YW5hZ2VyKiBtYW5hZ2VyKQotICAgIDogbV90ZXh0dXJlTWFuYWdlcihtYW5hZ2VyKQotICAgICwg
bV90b2tlbigwKQotICAgICwgbV9mb3JtYXQoMCkKLSAgICAsIG1fdGV4dHVyZUlkKDApCi17Ci0g
ICAgbV90ZXh0dXJlTWFuYWdlci0+cmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwotfQotCi1NYW5hZ2Vk
VGV4dHVyZTo6TWFuYWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIsIFRleHR1cmVU
b2tlbiB0b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHRleHR1
cmVJZCkKLSAgICA6IG1fdGV4dHVyZU1hbmFnZXIobWFuYWdlcikKLSAgICAsIG1fdG9rZW4odG9r
ZW4pCi0gICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZm9ybWF0KGZvcm1hdCkKLSAgICAsIG1f
dGV4dHVyZUlkKHRleHR1cmVJZCkKLXsKLSAgICBtX3RleHR1cmVNYW5hZ2VyLT5yZWdpc3RlclRl
eHR1cmUodGhpcyk7Ci19Ci0KLU1hbmFnZWRUZXh0dXJlOjp+TWFuYWdlZFRleHR1cmUoKQotewot
ICAgIGlmICghbV90ZXh0dXJlTWFuYWdlcikKLSAgICAgICAgcmV0dXJuOwotICAgIG1fdGV4dHVy
ZU1hbmFnZXItPnVucmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwotICAgIGlmIChtX3Rva2VuKQotICAg
ICAgICBtX3RleHR1cmVNYW5hZ2VyLT5yZWxlYXNlVG9rZW4obV90b2tlbik7Ci19Ci0KLXZvaWQg
TWFuYWdlZFRleHR1cmU6OnNldFRleHR1cmVNYW5hZ2VyKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2Vy
KQotewotICAgIGlmIChtYW5hZ2VyID09IG1fdGV4dHVyZU1hbmFnZXIpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChtX3RleHR1cmVNYW5hZ2VyKQotICAgICAgICBtX3RleHR1cmVNYW5hZ2Vy
LT51bnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsKLSAgICBtX3RleHR1cmVNYW5hZ2VyID0gbWFuYWdl
cjsKLSAgICBjbGVhcigpOwotICAgIGlmIChtX3RleHR1cmVNYW5hZ2VyKQotICAgICAgICBtX3Rl
eHR1cmVNYW5hZ2VyLT5yZWdpc3RlclRleHR1cmUodGhpcyk7Ci19Ci0KLWJvb2wgTWFuYWdlZFRl
eHR1cmU6OmlzVmFsaWQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQotewot
ICAgIHJldHVybiBtX3Rva2VuICYmIHNpemUgPT0gbV9zaXplICYmIGZvcm1hdCA9PSBtX2Zvcm1h
dCAmJiBtX3RleHR1cmVNYW5hZ2VyICYmIG1fdGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90
b2tlbik7Ci19Ci0KLWJvb2wgTWFuYWdlZFRleHR1cmU6OnJlc2VydmUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgdW5zaWduZWQgZm9ybWF0KQotewotICAgIGlmICghbV90ZXh0dXJlTWFuYWdlcikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFtX3Rva2VuKQotICAgICAgICBtX3Rva2Vu
ID0gbV90ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKTsKLQotICAgIGJvb2wgcmVzZXJ2ZWQgPSB0
cnVlOwotICAgIGlmIChzaXplID09IG1fc2l6ZSAmJiBmb3JtYXQgPT0gbV9mb3JtYXQgJiYgbV90
ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSkKLSAgICAgICAgbV90ZXh0dXJlTWFu
YWdlci0+cHJvdGVjdFRleHR1cmUobV90b2tlbik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fdGV4
dHVyZUlkID0gMDsKLSAgICAgICAgcmVzZXJ2ZWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5yZXF1ZXN0
VGV4dHVyZShtX3Rva2VuLCBzaXplLCBmb3JtYXQpOwotICAgICAgICBpZiAocmVzZXJ2ZWQpIHsK
LSAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7Ci0gICAgICAgICAgICBtX2Zvcm1hdCA9IGZvcm1h
dDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXNlcnZlZDsKLX0KLQotdm9pZCBN
YW5hZ2VkVGV4dHVyZTo6dW5yZXNlcnZlKCkKLXsKLSAgICBpZiAoIW1fdG9rZW4gfHwgIW1fdGV4
dHVyZU1hbmFnZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdGV4dHVyZU1hbmFnZXItPnVu
cHJvdGVjdFRleHR1cmUobV90b2tlbik7Ci19Ci0KLXZvaWQgTWFuYWdlZFRleHR1cmU6OmFsbG9j
YXRlKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKLXsKLSAgICBBU1NFUlQobV90ZXh0dXJl
TWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7Ci0gICAgaWYgKCFtX3RleHR1cmVJZCkKLSAg
ICAgICAgbV90ZXh0dXJlSWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUoYWxs
b2NhdG9yLCBtX3Rva2VuKTsKLX0KLQotdm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUo
Q0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikK
LXsKLSAgICBhbGxvY2F0ZShhbGxvY2F0b3IpOwotICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewot
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9z
aXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29udGV4dDNkLT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpOwotfQotCi1QYXNz
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiBNYW5hZ2VkVGV4dHVyZTo6c3RlYWwoKQotewotICAgIE93
blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSA9IGFkb3B0UHRyKG5ldyBNYW5hZ2VkVGV4dHVy
ZShtX3RleHR1cmVNYW5hZ2VyLCBtX3Rva2VuLCBtX3NpemUsIG1fZm9ybWF0LCBtX3RleHR1cmVJ
ZCkpOwotICAgIGNsZWFyKCk7Ci0gICAgcmV0dXJuIHRleHR1cmUucmVsZWFzZSgpOwotfQotCi12
b2lkIE1hbmFnZWRUZXh0dXJlOjpjbGVhcigpCi17Ci0gICAgbV90b2tlbiA9IDA7Ci0gICAgbV9z
aXplID0gSW50U2l6ZSgpOwotICAgIG1fZm9ybWF0ID0gMDsKLSAgICBtX3RleHR1cmVJZCA9IDA7
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRU
ZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5h
Z2VkVGV4dHVyZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTY3ZWJmNjhlYTVl
ZWJhYzQ5Y2JjNTg2MDg0NWY3ZjdiYjU4NDk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL01hbmFnZWRUZXh0dXJlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBNYW5hZ2VkVGV4dHVyZV9oCi0jZGVmaW5lIE1hbmFnZWRUZXh0
dXJlX2gKLQotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5o
IgotCi0jaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsK
LQotY2xhc3MgTWFuYWdlZFRleHR1cmUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hbmFn
ZWRUZXh0dXJlKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVy
ZT4gY3JlYXRlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBNYW5hZ2VkVGV4dHVyZShtYW5hZ2VyKSk7Ci0gICAgfQotICAgIH5NYW5h
Z2VkVGV4dHVyZSgpOwotCi0gICAgdm9pZCBzZXRUZXh0dXJlTWFuYWdlcihUZXh0dXJlTWFuYWdl
ciopOwotICAgIHZvaWQgY2xlYXJNYW5hZ2VyKCkgeyBtX3RleHR1cmVNYW5hZ2VyID0gMDsgfQot
Ci0gICAgYm9vbCBpc1ZhbGlkKGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmb3JtYXQpOwotICAg
IGJvb2wgcmVzZXJ2ZShjb25zdCBJbnRTaXplJiwgdW5zaWduZWQgZm9ybWF0KTsKLSAgICB2b2lk
IHVucmVzZXJ2ZSgpOwotICAgIGJvb2wgaXNSZXNlcnZlZCgpCi0gICAgewotICAgICAgICByZXR1
cm4gbV90ZXh0dXJlTWFuYWdlciAmJiBtX3RleHR1cmVNYW5hZ2VyLT5pc1Byb3RlY3RlZChtX3Rv
a2VuKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFsbG9jYXRlKFRleHR1cmVBbGxvY2F0b3IqKTsKLSAg
ICB2b2lkIGJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciop
OwotCi0gICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgdW5z
aWduZWQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KLSAgICB1bnNpZ25lZCB0
ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQotCi0gICAgLy8gU3RlYWwg
dG9rZW4gYW5kIHRleHR1cmVJZCBieSBpbnN0YW50aWF0ZXMgYSBuZXcgdGV4dHVyZSB1c2luZyBl
eGlzdGluZwotICAgIC8vIG1lbWJlciB2YXJpYWJsZXMuCi0gICAgUGFzc093blB0cjxNYW5hZ2Vk
VGV4dHVyZT4gc3RlYWwoKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNYW5hZ2VkVGV4dHVy
ZShUZXh0dXJlTWFuYWdlciopOwotICAgIE1hbmFnZWRUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiwg
VGV4dHVyZVRva2VuLCBJbnRTaXplLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHRleHR1cmVJ
ZCk7Ci0KLSAgICB2b2lkIGNsZWFyKCk7Ci0KLSAgICBUZXh0dXJlTWFuYWdlciogbV90ZXh0dXJl
TWFuYWdlcjsKLSAgICBUZXh0dXJlVG9rZW4gbV90b2tlbjsKLSAgICBJbnRTaXplIG1fc2l6ZTsK
LSAgICB1bnNpZ25lZCBtX2Zvcm1hdDsKLSAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKLX07Ci0K
LX0KLQotI2VuZGlmIC8vIE1hbmFnZWRUZXh0dXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNo
cm9taXVtLmgKaW5kZXggMGU3ZDRlMzhjNTZjMWVjY2Q5NmY1Y2JhZmQ3NGY5ZGU1ZjNkODdkOS4u
MmI2MDhmNGU3MjcyN2UzYTEwOGQxZTY5NjRkZTYzOTQwOTZkMjk3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVu
ZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIExheWVyQ2hyb21pdW07CiBjbGFzcyBM
YXllclJlbmRlcmVyQ2hyb21pdW07Ci1jbGFzcyBNYW5hZ2VkVGV4dHVyZTsKIAogY2xhc3MgUmVu
ZGVyU3VyZmFjZUNocm9taXVtIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW5kZXJTdXJm
YWNlQ2hyb21pdW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUFsbG9jYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ZGUxMTUy
MmI0YWFkYWUxNmJjYjI3ZTA1NGZmNzM3Yjg4NmI4M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmgK
QEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBUZXh0dXJlQWxsb2Nh
dG9yX2gKKyNkZWZpbmUgVGV4dHVyZUFsbG9jYXRvcl9oCisKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNE
ZW51bSBmb3JtYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25l
ZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQWxsVGV4dHVyZXMoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5U
ZXh0dXJlQWxsb2NhdG9yKCkgeyB9Cit9OworCit9CisKKyNlbmRpZgorCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVN
YW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg1YzcyMjI4ZWMwMzdm
Y2NlNWYzZmVjNDAwOTI0ODUyMzdjMDZiYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKLQotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJN
YW5hZ2VkVGV4dHVyZS5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKLQotdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0KLW5hbWVzcGFjZSB7Ci1zaXplX3Qg
bWVtb3J5TGltaXRCeXRlcyhzaXplX3Qgdmlld3BvcnRNdWx0aXBsaWVyLCBjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpemUsIHNpemVfdCBtaW5NZWdhYnl0ZXMsIHNpemVfdCBtYXhNZWdhYnl0ZXMp
Ci17Ci0gICAgaWYgKCF2aWV3cG9ydE11bHRpcGxpZXIpCi0gICAgICAgIHJldHVybiBtYXhNZWdh
Ynl0ZXMgKiAxMDI0ICogMTAyNDsKLSAgICBpZiAodmlld3BvcnRTaXplLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIG1pbk1lZ2FieXRlcyAqIDEwMjQgKiAxMDI0OwotICAgIHJldHVybiBtYXgo
bWluTWVnYWJ5dGVzICogMTAyNCAqIDEwMjQsIG1pbihtYXhNZWdhYnl0ZXMgKiAxMDI0ICogMTAy
NCwgdmlld3BvcnRNdWx0aXBsaWVyICogVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHZp
ZXdwb3J0U2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKSk7Ci19Ci19Ci0KLXNpemVfdCBU
ZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXpl
KQotewotICAgIHNpemVfdCB2aWV3cG9ydE11bHRpcGxpZXIsIG1pbk1lZ2FieXRlcywgbWF4TWVn
YWJ5dGVzOwotI2lmIE9TKEFORFJPSUQpCi0gICAgdmlld3BvcnRNdWx0aXBsaWVyID0gMTY7Ci0g
ICAgbWluTWVnYWJ5dGVzID0gMzI7Ci0gICAgbWF4TWVnYWJ5dGVzID0gNjQ7Ci0jZWxzZQotICAg
IHZpZXdwb3J0TXVsdGlwbGllciA9IDA7Ci0gICAgbWluTWVnYWJ5dGVzID0gMDsKLSAgICBtYXhN
ZWdhYnl0ZXMgPSAxMjg7Ci0jZW5kaWYKLSAgICByZXR1cm4gbWVtb3J5TGltaXRCeXRlcyh2aWV3
cG9ydE11bHRpcGxpZXIsIHZpZXdwb3J0U2l6ZSwgbWluTWVnYWJ5dGVzLCBtYXhNZWdhYnl0ZXMp
OwotfQotCi1zaXplX3QgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSkKLXsKLSAgICBzaXplX3Qgdmlld3BvcnRNdWx0aXBsaWVyLCBt
aW5NZWdhYnl0ZXMsIG1heE1lZ2FieXRlczsKLSNpZiBPUyhBTkRST0lEKQotICAgIHZpZXdwb3J0
TXVsdGlwbGllciA9IDg7Ci0gICAgbWluTWVnYWJ5dGVzID0gMTY7Ci0gICAgbWF4TWVnYWJ5dGVz
ID0gMzI7Ci0jZWxzZQotICAgIHZpZXdwb3J0TXVsdGlwbGllciA9IDA7Ci0gICAgbWluTWVnYWJ5
dGVzID0gMDsKLSAgICBtYXhNZWdhYnl0ZXMgPSA2NDsKLSNlbmRpZgotICAgIHJldHVybiBtZW1v
cnlMaW1pdEJ5dGVzKHZpZXdwb3J0TXVsdGlwbGllciwgdmlld3BvcnRTaXplLCBtaW5NZWdhYnl0
ZXMsIG1heE1lZ2FieXRlcyk7Ci19Ci0KLXNpemVfdCBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNl
Qnl0ZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKLXsKLSAg
ICAvLyBGSVhNRTogVGhpcyBhc3N1bWVzIGFsbCB0ZXh0dXJlcyBhcmUgMSBieXRlL2NvbXBvbmVu
dC4KLSAgICBjb25zdCBHQzNEZW51bSB0eXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEU7Ci0gICAgdW5zaWduZWQgaW50IGNvbXBvbmVudHNQZXJQaXhlbCA9IDQ7Ci0gICAgdW5z
aWduZWQgaW50IGJ5dGVzUGVyQ29tcG9uZW50ID0gMTsKLSAgICBpZiAoIUdyYXBoaWNzQ29udGV4
dDNEOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnModGV4dHVyZUZvcm1hdCwgdHlwZSwg
JmNvbXBvbmVudHNQZXJQaXhlbCwgJmJ5dGVzUGVyQ29tcG9uZW50KSkKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0KLSAgICByZXR1cm4gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQo
KSAqIGNvbXBvbmVudHNQZXJQaXhlbCAqIGJ5dGVzUGVyQ29tcG9uZW50OwotfQotCi0KLVRleHR1
cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6
ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSkKLSAgICA6
IG1fbWF4TWVtb3J5TGltaXRCeXRlcyhtYXhNZW1vcnlMaW1pdEJ5dGVzKQotICAgICwgbV9wcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMpCi0gICAgLCBt
X21lbW9yeVVzZUJ5dGVzKDApCi0gICAgLCBtX21heFRleHR1cmVTaXplKG1heFRleHR1cmVTaXpl
KQotICAgICwgbV9uZXh0VG9rZW4oMSkKLXsKLX0KLQotVGV4dHVyZU1hbmFnZXI6On5UZXh0dXJl
TWFuYWdlcigpCi17Ci0gICAgZm9yIChIYXNoU2V0PE1hbmFnZWRUZXh0dXJlKj46Oml0ZXJhdG9y
IGl0ID0gbV9yZWdpc3RlcmVkVGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0gbV9yZWdpc3RlcmVkVGV4
dHVyZXMuZW5kKCk7ICsraXQpCi0gICAgICAgICgqaXQpLT5jbGVhck1hbmFnZXIoKTsKLX0KLQot
dm9pZCBUZXh0dXJlTWFuYWdlcjo6c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90
IG1lbW9yeUxpbWl0Qnl0ZXMpCi17Ci0gICAgc2V0TWF4TWVtb3J5TGltaXRCeXRlcyhtZW1vcnlM
aW1pdEJ5dGVzKTsKLSNpZiBkZWZpbmVkKE9TX0FORFJPSUQpCi0gICAgLy8gT24gYW5kcm9pZCwg
d2UgYXJlIHNldHRpbmcgdGhlIHByZWZlcnJlZCBtZW1vcnkgbGltaXQgdG8gaGFsZiBvZiBvdXIK
LSAgICAvLyBtYXhpbXVtIGFsbG9jYXRpb24sIGJlY2F1c2Ugd2Ugd291bGQgbGlrZSB0byBzdGF5
IHNpZ25pZmljYW50bHkgYmVsb3cKLSAgICAvLyB0aGUgYWJzb2x1dGUgbWVtb3J5IGxpbWl0IHdo
ZW5ldmVyIHdlIGNhbi4gU3BlY2lmaWNhbGx5LCBieSBsaW1pdHRpbmcKLSAgICAvLyBwcmVwYWlu
dGluZyBvbmx5IHRvIHRoZSBoYWxmd2F5IG1lbW9yeSBtYXJrLgotICAgIHNldFByZWZlcnJlZE1l
bW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXRCeXRlcyAvIDIpOwotI2Vsc2UKLSAgICBzZXRQcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0Qnl0ZXMpOwotI2VuZGlmCi19Ci0KLXZv
aWQgVGV4dHVyZU1hbmFnZXI6OnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxp
bWl0Qnl0ZXMpCi17Ci0gICAgcmVkdWNlTWVtb3J5VG9MaW1pdChtZW1vcnlMaW1pdEJ5dGVzKTsK
LSAgICBBU1NFUlQoY3VycmVudE1lbW9yeVVzZUJ5dGVzKCkgPD0gbWVtb3J5TGltaXRCeXRlcyk7
Ci0gICAgbV9tYXhNZW1vcnlMaW1pdEJ5dGVzID0gbWVtb3J5TGltaXRCeXRlczsKLX0KLQotdm9p
ZCBUZXh0dXJlTWFuYWdlcjo6c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhzaXplX3QgbWVt
b3J5TGltaXRCeXRlcykKLXsKLSAgICBtX3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMgPSBtZW1v
cnlMaW1pdEJ5dGVzOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpyZWdpc3RlclRleHR1cmUo
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUpCi17Ci0gICAgQVNTRVJUKHRleHR1cmUpOwotICAgIEFT
U0VSVCghbV9yZWdpc3RlcmVkVGV4dHVyZXMuY29udGFpbnModGV4dHVyZSkpOwotCi0gICAgbV9y
ZWdpc3RlcmVkVGV4dHVyZXMuYWRkKHRleHR1cmUpOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2Vy
Ojp1bnJlZ2lzdGVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSkKLXsKLSAgICBBU1NF
UlQodGV4dHVyZSk7Ci0gICAgQVNTRVJUKG1fcmVnaXN0ZXJlZFRleHR1cmVzLmNvbnRhaW5zKHRl
eHR1cmUpKTsKLQotICAgIG1fcmVnaXN0ZXJlZFRleHR1cmVzLnJlbW92ZSh0ZXh0dXJlKTsKLX0K
LQotVGV4dHVyZVRva2VuIFRleHR1cmVNYW5hZ2VyOjpnZXRUb2tlbigpCi17Ci0gICAgcmV0dXJu
IG1fbmV4dFRva2VuKys7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnJlbGVhc2VUb2tlbihU
ZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0gICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Rl
eHR1cmVzLmZpbmQodG9rZW4pOwotICAgIGlmIChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKQotICAg
ICAgICByZW1vdmVUZXh0dXJlKHRva2VuLCBpdC0+c2Vjb25kKTsKLX0KLQotYm9vbCBUZXh0dXJl
TWFuYWdlcjo6aGFzVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0gICAgcmV0dXJuIG1f
dGV4dHVyZXMuY29udGFpbnModG9rZW4pOwotfQotCi1ib29sIFRleHR1cmVNYW5hZ2VyOjppc1By
b3RlY3RlZChUZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0gICAgcmV0dXJuIHRva2VuICYmIGhhc1Rl
eHR1cmUodG9rZW4pICYmIG1fdGV4dHVyZXMuZ2V0KHRva2VuKS5pc1Byb3RlY3RlZDsKLX0KLQot
dm9pZCBUZXh0dXJlTWFuYWdlcjo6cHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuKQot
ewotICAgIEFTU0VSVChoYXNUZXh0dXJlKHRva2VuKSk7Ci0gICAgVGV4dHVyZUluZm8gaW5mbyA9
IG1fdGV4dHVyZXMudGFrZSh0b2tlbik7Ci0gICAgaW5mby5pc1Byb3RlY3RlZCA9IHRydWU7Ci0g
ICAgbV90ZXh0dXJlcy5hZGQodG9rZW4sIGluZm8pOwotICAgIC8vIElmIHNvbWVvbmUgcHJvdGVj
dHMgYSB0ZXh0dXJlLCBwdXQgaXQgYXQgdGhlIGVuZCBvZiB0aGUgTFJVIGxpc3QuCi0gICAgbV90
ZXh0dXJlTFJVU2V0LnJlbW92ZSh0b2tlbik7Ci0gICAgbV90ZXh0dXJlTFJVU2V0LmFkZCh0b2tl
bik7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnVucHJvdGVjdFRleHR1cmUoVGV4dHVyZVRv
a2VuIHRva2VuKQotewotICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5m
aW5kKHRva2VuKTsKLSAgICBpZiAoaXQgIT0gbV90ZXh0dXJlcy5lbmQoKSkKLSAgICAgICAgaXQt
PnNlY29uZC5pc1Byb3RlY3RlZCA9IGZhbHNlOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjp1
bnByb3RlY3RBbGxUZXh0dXJlcygpCi17Ci0gICAgZm9yIChUZXh0dXJlTWFwOjppdGVyYXRvciBp
dCA9IG1fdGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0gbV90ZXh0dXJlcy5lbmQoKTsgKytpdCkKLSAg
ICAgICAgaXQtPnNlY29uZC5pc1Byb3RlY3RlZCA9IGZhbHNlOwotfQotCi12b2lkIFRleHR1cmVN
YW5hZ2VyOjpldmljdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBUZXh0dXJlSW5mbyBpbmZv
KQotewotICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiVGV4dHVyZU1hbmFnZXI6OmV2aWN0VGV4dHVy
ZSIpOwotICAgIHJlbW92ZVRleHR1cmUodG9rZW4sIGluZm8pOwotfQotCi12b2lkIFRleHR1cmVN
YW5hZ2VyOjpyZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCBsaW1pdCkKLXsKLSAgICB3aGlsZSAo
bV9tZW1vcnlVc2VCeXRlcyA+IGxpbWl0KSB7Ci0gICAgICAgIEFTU0VSVCghbV90ZXh0dXJlTFJV
U2V0LmlzRW1wdHkoKSk7Ci0gICAgICAgIGJvb2wgZm91bmRDYW5kaWRhdGUgPSBmYWxzZTsKLSAg
ICAgICAgZm9yIChMaXN0SGFzaFNldDxUZXh0dXJlVG9rZW4+OjppdGVyYXRvciBscnVJdCA9IG1f
dGV4dHVyZUxSVVNldC5iZWdpbigpOyBscnVJdCAhPSBtX3RleHR1cmVMUlVTZXQuZW5kKCk7ICsr
bHJ1SXQpIHsKLSAgICAgICAgICAgIFRleHR1cmVUb2tlbiB0b2tlbiA9ICpscnVJdDsKLSAgICAg
ICAgICAgIFRleHR1cmVJbmZvIGluZm8gPSBtX3RleHR1cmVzLmdldCh0b2tlbik7Ci0gICAgICAg
ICAgICBpZiAoaW5mby5pc1Byb3RlY3RlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIGV2aWN0VGV4dHVyZSh0b2tlbiwgaW5mbyk7Ci0gICAgICAgICAgICBmb3VuZENh
bmRpZGF0ZSA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoIWZvdW5kQ2FuZGlkYXRlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9p
ZCBUZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJ
bmZvIGluZm8pCi17Ci0gICAgQVNTRVJUKCFtX3RleHR1cmVMUlVTZXQuY29udGFpbnModG9rZW4p
KTsKLSAgICBBU1NFUlQoIW1fdGV4dHVyZXMuY29udGFpbnModG9rZW4pKTsKLSAgICBtX21lbW9y
eVVzZUJ5dGVzICs9IG1lbW9yeVVzZUJ5dGVzKGluZm8uc2l6ZSwgaW5mby5mb3JtYXQpOwotICAg
IG1fdGV4dHVyZXMuc2V0KHRva2VuLCBpbmZvKTsKLSAgICBtX3RleHR1cmVMUlVTZXQuYWRkKHRv
a2VuKTsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlRXZpY3RlZFRleHR1cmVzKFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKLXsKLSAgICBpZiAoYWxsb2NhdG9yKSB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ldmljdGVkVGV4dHVyZXMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgIGlmIChtX2V2aWN0ZWRUZXh0dXJlc1tpXS50ZXh0dXJlSWQpIHsKLSNp
Zm5kZWYgTkRFQlVHCi0gICAgICAgICAgICAgICAgQVNTRVJUKG1fZXZpY3RlZFRleHR1cmVzW2ld
LmFsbG9jYXRvciA9PSBhbGxvY2F0b3IpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgYWxsb2Nh
dG9yLT5kZWxldGVUZXh0dXJlKG1fZXZpY3RlZFRleHR1cmVzW2ldLnRleHR1cmVJZCwgbV9ldmlj
dGVkVGV4dHVyZXNbaV0uc2l6ZSwgbV9ldmljdGVkVGV4dHVyZXNbaV0uZm9ybWF0KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBtX2V2aWN0ZWRUZXh0dXJlcy5jbGVhcigp
OwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpldmljdEFuZFJlbW92ZUFsbERlbGV0ZWRUZXh0
dXJlcygpCi17Ci0gICAgdW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKLSAgICByZWR1Y2VNZW1vcnlU
b0xpbWl0KDApOwotICAgIG1fZXZpY3RlZFRleHR1cmVzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgVGV4
dHVyZU1hbmFnZXI6OmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yKQotewotICAgIHVucHJvdGVjdEFsbFRleHR1cmVzKCk7Ci0gICAgcmVkdWNlTWVt
b3J5VG9MaW1pdCgwKTsKLSAgICBkZWxldGVFdmljdGVkVGV4dHVyZXMoYWxsb2NhdG9yKTsKLX0K
LQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4s
IFRleHR1cmVJbmZvIGluZm8pCi17Ci0gICAgQVNTRVJUKG1fdGV4dHVyZUxSVVNldC5jb250YWlu
cyh0b2tlbikpOwotICAgIEFTU0VSVChtX3RleHR1cmVzLmNvbnRhaW5zKHRva2VuKSk7Ci0gICAg
bV9tZW1vcnlVc2VCeXRlcyAtPSBtZW1vcnlVc2VCeXRlcyhpbmZvLnNpemUsIGluZm8uZm9ybWF0
KTsKLSAgICBtX3RleHR1cmVzLnJlbW92ZSh0b2tlbik7Ci0gICAgQVNTRVJUKG1fdGV4dHVyZUxS
VVNldC5jb250YWlucyh0b2tlbikpOwotICAgIG1fdGV4dHVyZUxSVVNldC5yZW1vdmUodG9rZW4p
OwotICAgIEV2aWN0aW9uRW50cnkgZW50cnk7Ci0gICAgZW50cnkudGV4dHVyZUlkID0gaW5mby50
ZXh0dXJlSWQ7Ci0gICAgZW50cnkuc2l6ZSA9IGluZm8uc2l6ZTsKLSAgICBlbnRyeS5mb3JtYXQg
PSBpbmZvLmZvcm1hdDsKLSNpZm5kZWYgTkRFQlVHCi0gICAgZW50cnkuYWxsb2NhdG9yID0gaW5m
by5hbGxvY2F0b3I7Ci0jZW5kaWYKLSAgICBtX2V2aWN0ZWRUZXh0dXJlcy5hcHBlbmQoZW50cnkp
OwotfQotCi11bnNpZ25lZCBUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdGVUZXh0dXJlKFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZVRva2VuIHRva2VuKQotewotICAgIFRleHR1cmVN
YXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5maW5kKHRva2VuKTsKLSAgICBBU1NFUlQoaXQg
IT0gbV90ZXh0dXJlcy5lbmQoKSk7Ci0gICAgVGV4dHVyZUluZm8qIGluZm8gPSAmaXQuZ2V0KCkt
PnNlY29uZDsKLSAgICBBU1NFUlQoaW5mby0+aXNQcm90ZWN0ZWQpOwotCi0gICAgdW5zaWduZWQg
dGV4dHVyZUlkID0gYWxsb2NhdG9yLT5jcmVhdGVUZXh0dXJlKGluZm8tPnNpemUsIGluZm8tPmZv
cm1hdCk7Ci0gICAgaW5mby0+dGV4dHVyZUlkID0gdGV4dHVyZUlkOwotI2lmbmRlZiBOREVCVUcK
LSAgICBpbmZvLT5hbGxvY2F0b3IgPSBhbGxvY2F0b3I7Ci0jZW5kaWYKLSAgICByZXR1cm4gdGV4
dHVyZUlkOwotfQotCi1ib29sIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShUZXh0dXJl
VG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQotewotICAgIGlmIChz
aXplLndpZHRoKCkgPiBtX21heFRleHR1cmVTaXplIHx8IHNpemUuaGVpZ2h0KCkgPiBtX21heFRl
eHR1cmVTaXplKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBUZXh0dXJlTWFwOjppdGVy
YXRvciBpdCA9IG1fdGV4dHVyZXMuZmluZCh0b2tlbik7Ci0gICAgaWYgKGl0ICE9IG1fdGV4dHVy
ZXMuZW5kKCkpIHsKLSAgICAgICAgQVNTRVJUKGl0LT5zZWNvbmQuc2l6ZSAhPSBzaXplIHx8IGl0
LT5zZWNvbmQuZm9ybWF0ICE9IGZvcm1hdCk7Ci0gICAgICAgIHJlbW92ZVRleHR1cmUodG9rZW4s
IGl0LT5zZWNvbmQpOwotICAgIH0KLQotICAgIHNpemVfdCBtZW1vcnlSZXF1aXJlZEJ5dGVzID0g
bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKLSAgICBpZiAobWVtb3J5UmVxdWlyZWRCeXRl
cyA+IG1fbWF4TWVtb3J5TGltaXRCeXRlcykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmVkdWNlTWVtb3J5VG9MaW1pdChtX21heE1lbW9yeUxpbWl0Qnl0ZXMgLSBtZW1vcnlSZXF1aXJl
ZEJ5dGVzKTsKLSAgICBpZiAobV9tZW1vcnlVc2VCeXRlcyArIG1lbW9yeVJlcXVpcmVkQnl0ZXMg
PiBtX21heE1lbW9yeUxpbWl0Qnl0ZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFRl
eHR1cmVJbmZvIGluZm87Ci0gICAgaW5mby5zaXplID0gc2l6ZTsKLSAgICBpbmZvLmZvcm1hdCA9
IGZvcm1hdDsKLSAgICBpbmZvLnRleHR1cmVJZCA9IDA7Ci0gICAgaW5mby5pc1Byb3RlY3RlZCA9
IHRydWU7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGluZm8uYWxsb2NhdG9yID0gMDsKLSNlbmRpZgot
ICAgIGFkZFRleHR1cmUodG9rZW4sIGluZm8pOwotICAgIHJldHVybiB0cnVlOwotfQotCi19Ci0K
LSNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdhMTg5YmNjZDM0MGUzZWM5YjQ3M2Vh
OGU4ZmUyYjk1MThiYWE1Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgot
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFRleHR1cmVNYW5hZ2VyX2gKLSNkZWZpbmUgVGV4dHVyZU1hbmFnZXJfaAotCi0j
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBNYW5hZ2VkVGV4dHVyZTsKLXR5cGVkZWYgaW50IFRleHR1cmVUb2tl
bjsKLQotY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB1bnNp
Z25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJ
bnRTaXplJiwgR0MzRGVudW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVy
ZXMoKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5UZXh0dXJlQWxsb2NhdG9yKCkg
eyB9Ci19OwotCi1jbGFzcyBUZXh0dXJlTWFuYWdlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVGV4dHVyZU1hbmFnZXIpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHR1
cmVNYW5hZ2VyPiBjcmVhdGUoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVfdCBwcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVNYW5hZ2VyKG1heE1lbW9yeUxpbWl0Qnl0ZXMs
IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIG1heFRleHR1cmVTaXplKSk7Ci0gICAgfQotICAg
IH5UZXh0dXJlTWFuYWdlcigpOwotCi0gICAgLy8gQWJzb2x1dGUgbWF4aW11bSBsaW1pdCBmb3Ig
dGV4dHVyZSBhbGxvY2F0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS4KLSAgICBzdGF0aWMgc2l6ZV90
IGhpZ2hMaW1pdEJ5dGVzKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSk7Ci0gICAgLy8gUHJl
ZmVycmVkIHRleHR1cmUgc2l6ZSBsaW1pdCBnaXZlbiB0aGUgdmlld3BvcnQgc2l6ZS4KLSAgICBz
dGF0aWMgc2l6ZV90IHJlY2xhaW1MaW1pdEJ5dGVzKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6
ZSk7Ci0KLSAgICBzdGF0aWMgc2l6ZV90IG1lbW9yeVVzZUJ5dGVzKGNvbnN0IEludFNpemUmLCBH
QzNEZW51bSBmb3JtYXQpOwotCi0gICAgdm9pZCBzZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRl
cyhzaXplX3QpOwotICAgIHZvaWQgc2V0TWF4TWVtb3J5TGltaXRCeXRlcyhzaXplX3QpOwotICAg
IHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzKCkgeyByZXR1cm4gbV9tYXhNZW1vcnlMaW1pdEJ5
dGVzOyB9Ci0gICAgdm9pZCBzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCk7Ci0g
ICAgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoKSB7IHJldHVybiBtX3ByZWZlcnJl
ZE1lbW9yeUxpbWl0Qnl0ZXM7IH0KLQotICAgIHZvaWQgcmVnaXN0ZXJUZXh0dXJlKE1hbmFnZWRU
ZXh0dXJlKik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSopOwot
Ci0gICAgVGV4dHVyZVRva2VuIGdldFRva2VuKCk7Ci0gICAgdm9pZCByZWxlYXNlVG9rZW4oVGV4
dHVyZVRva2VuKTsKLSAgICBib29sIGhhc1RleHR1cmUoVGV4dHVyZVRva2VuKTsKLQotICAgIGJv
b2wgcmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuLCBJbnRTaXplLCBHQzNEZW51bSB0ZXh0dXJl
Rm9ybWF0KTsKLQotICAgIHZvaWQgcHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuKTsKLSAgICB2
b2lkIHVucHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuKTsKLSAgICB2b2lkIHVucHJvdGVjdEFs
bFRleHR1cmVzKCk7Ci0gICAgYm9vbCBpc1Byb3RlY3RlZChUZXh0dXJlVG9rZW4pOwotCi0gICAg
dW5zaWduZWQgYWxsb2NhdGVUZXh0dXJlKFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJlVG9rZW4p
OwotICAgIHZvaWQgZGVsZXRlRXZpY3RlZFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3IqKTsKLQot
ICAgIHZvaWQgZXZpY3RBbmRSZW1vdmVBbGxEZWxldGVkVGV4dHVyZXMoKTsKLSAgICB2b2lkIGV2
aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciopOwotCi0gICAgdm9pZCBy
ZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCk7Ci0gICAgc2l6ZV90IGN1cnJlbnRNZW1vcnlVc2VC
eXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNlQnl0ZXM7IH0KLQotcHJpdmF0ZToKLSAg
ICBUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90IHByZWZl
cnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBzdHJ1Y3Qg
VGV4dHVyZUluZm8gewotICAgICAgICBJbnRTaXplIHNpemU7Ci0gICAgICAgIEdDM0RlbnVtIGZv
cm1hdDsKLSAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkOwotICAgICAgICBib29sIGlzUHJvdGVj
dGVkOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
OwotI2VuZGlmCi0gICAgfTsKLQotICAgIHZvaWQgYWRkVGV4dHVyZShUZXh0dXJlVG9rZW4sIFRl
eHR1cmVJbmZvKTsKLSAgICB2b2lkIHJlbW92ZVRleHR1cmUoVGV4dHVyZVRva2VuLCBUZXh0dXJl
SW5mbyk7Ci0gICAgdm9pZCBldmljdFRleHR1cmUoVGV4dHVyZVRva2VuLCBUZXh0dXJlSW5mbyk7
Ci0KLSAgICBIYXNoU2V0PE1hbmFnZWRUZXh0dXJlKj4gbV9yZWdpc3RlcmVkVGV4dHVyZXM7Ci0K
LSAgICB0eXBlZGVmIEhhc2hNYXA8VGV4dHVyZVRva2VuLCBUZXh0dXJlSW5mbz4gVGV4dHVyZU1h
cDsKLSAgICBUZXh0dXJlTWFwIG1fdGV4dHVyZXM7Ci0gICAgTGlzdEhhc2hTZXQ8VGV4dHVyZVRv
a2VuPiBtX3RleHR1cmVMUlVTZXQ7Ci0KLSAgICBzaXplX3QgbV9tYXhNZW1vcnlMaW1pdEJ5dGVz
OwotICAgIHNpemVfdCBtX3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXM7Ci0gICAgc2l6ZV90IG1f
bWVtb3J5VXNlQnl0ZXM7Ci0gICAgaW50IG1fbWF4VGV4dHVyZVNpemU7Ci0gICAgVGV4dHVyZVRv
a2VuIG1fbmV4dFRva2VuOwotCi0gICAgc3RydWN0IEV2aWN0aW9uRW50cnkgewotICAgICAgICB1
bnNpZ25lZCB0ZXh0dXJlSWQ7Ci0gICAgICAgIEludFNpemUgc2l6ZTsKLSAgICAgICAgR0MzRGVu
dW0gZm9ybWF0OwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yOwotI2VuZGlmCi0gICAgfTsKLQotICAgIFZlY3RvcjxFdmljdGlvbkVudHJ5PiBtX2V2
aWN0ZWRUZXh0dXJlczsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcAppbmRleCA1YzRiYzA1Y2VlOTg3ZTYzZWZhODI3MzAxMDUxY2M2YWEwZGQ5MTY5Li5j
MzY2M2YzZGQ4MjMyYmFiMWU3ZjMwNTFiMTk0MWYyOTEzMjY2ZDdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJUaWxlZExheWVy
Q2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAi
TWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0U3Ry
ZWFtLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuY3BwCmluZGV4
IGM1ODlhM2M2ZWQzZDAwYWZmMWZiYTBkN2Q0MzU5NGYzYWFjOTFlODMuLjdhZTI5ZjkxMmI4OGUz
MzhiOGRiMGYwMzhhNGI1YTgyNTA1YzUzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yLmNwcApAQCAtNzUsNyArNzUsNyBAQCB1bnNpZ25lZCBUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6OmNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0g
ZgogICAgIGlmIChzaXplLndpZHRoKCkgPiBtX21heFRleHR1cmVTaXplIHx8IHNpemUuaGVpZ2h0
KCkgPiBtX21heFRleHR1cmVTaXplKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIG1fY3VycmVu
dE1lbW9yeVVzZUJ5dGVzICs9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhzaXplLCBm
b3JtYXQpOworICAgIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzICs9IENDVGV4dHVyZTo6bWVtb3J5
U2l6ZUJ5dGVzKHNpemUsIGZvcm1hdCk7CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSAwOwog
ICAgIEdMQyhtX2NvbnRleHQsIHRleHR1cmVJZCA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgp
KTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB1bnNpZ25lZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6
OmNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZgogCiB2b2lkIFRy
YWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlSWQs
IGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKIHsKLSAgICBtX2N1cnJlbnRN
ZW1vcnlVc2VCeXRlcyAtPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9y
bWF0KTsKKyAgICBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlcyAtPSBDQ1RleHR1cmU6Om1lbW9yeVNp
emVCeXRlcyhzaXplLCBmb3JtYXQpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVs
ZXRlVGV4dHVyZSh0ZXh0dXJlSWQpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRl
bGV0ZVRleHR1cmUodGV4dHVyZUlkKSk7CiAgICAgQVNTRVJUKG1fYWxsb2NhdGVkVGV4dHVyZUlk
cy5jb250YWlucyh0ZXh0dXJlSWQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmgKaW5kZXggNzhlZjQwZDFiNDNlN2IzNDI0NTRhNTJhMTQwMDI0YzU5MTgxOWZlMi4uMzhm
N2NhMDQzYjRmZDk3MDViNTliZDMzZjNhOWJiNzAxNTYwZDEyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpZm5kZWYgVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yX2gKICNkZWZpbmUgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yX2gK
IAotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCisjaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRv
ci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAppbmRleCA3MzFmNzcwYzA5NjYz
MTg1OGEwYWMzYzRiYzhmM2Q3MTNmNjcxMjY4Li5iZTE5OTgzZWZiNjI2MzZjMDU2YjY5MDY3OWY1
ZmQwMWU5NmY0OGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtMzEs
NyArMzEsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DYW52YXMuaCIKLSNpbmNs
dWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5o
IgogI2luY2x1ZGUgImNjL0NDRnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDQx
NGIyMDUyNjFiMzc5MjJmYjYwMTc0ZjlkYzBlMjdmN2FhMDM0NGUuLmI4YjIzZWE0NTlhZmFhOTk5
NzIxYWE2YzQ3M2E2YjhlN2Y1MmI1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogCiAj
aW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAj
aW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlRy
ZWVTeW5jaHJvbml6ZXIuaCIKQEAgLTUyOSw3ICs1MjgsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCkKICAgICAg
ICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gdXBkYXRlTGlzdFtpXS5nZXQo
KTsKICAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVy
U3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAKLSAgICAgICAgc2l6ZV90IGJ5dGVzID0g
VGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0
KCkuc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgIHNpemVfdCBieXRl
cyA9IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5dGVzKHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0
KCkuc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAgICAgIGNvbnRlbnRzVGV4
dHVyZUJ5dGVzICs9IGJ5dGVzOwogCiAgICAgICAgIGlmIChyZW5kZXJTdXJmYWNlLT5iYWNrZ3Jv
dW5kRmlsdGVycygpLmlzRW1wdHkoKSkKQEAgLTUzOCw3ICs1MzcsNyBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCkK
ICAgICAgICAgaWYgKGJ5dGVzID4gbWF4QmFja2dyb3VuZFRleHR1cmVCeXRlcykKICAgICAgICAg
ICAgIG1heEJhY2tncm91bmRUZXh0dXJlQnl0ZXMgPSBieXRlczsKICAgICAgICAgaWYgKCFyZWFk
YmFja0J5dGVzKQotICAgICAgICAgICAgcmVhZGJhY2tCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjpt
ZW1vcnlVc2VCeXRlcyhtX2RldmljZVZpZXdwb3J0U2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEpOworICAgICAgICAgICAgcmVhZGJhY2tCeXRlcyA9IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5
dGVzKG1fZGV2aWNlVmlld3BvcnRTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAg
fQogICAgIHNpemVfdCByZW5kZXJTdXJmYWNlc0J5dGVzID0gcmVhZGJhY2tCeXRlcyArIG1heEJh
Y2tncm91bmRUZXh0dXJlQnl0ZXMgKyBjb250ZW50c1RleHR1cmVCeXRlczsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaAppbmRleCBjMjE0M2VhZTVkMzUxZmIwODE4Njk3OGNkOWU4NTQwMGVh
MzMxMWY2Li5iMzRmMDRmYTliNjk5YjgxNjk4NTY0YTY2NDc2ODFiZjY0ODBlODZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNTEsNyArNTEsNiBAQCBjbGFzcyBDQ0xheWVyQ2hy
b21pdW07CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0
SW1wbENsaWVudDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7Ci1jbGFzcyBNYW5hZ2VkVGV4dHVy
ZTsKIGNsYXNzIFJlZ2lvbjsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCmluZGV4IDI2YTA5ZTcwZmUyMGQ5NzllYmZhMDg1NDgwMWM5M2EzZDc1ODUxZDUuLjZjYTJm
NjEzYWUyNTYxMDNiYjIxNDQ3Y2I5ODYwOThmMzRiYjQwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgQ0NMYXllclRyZWVIb3N0
SW1wbDo6Q0NMYXllclRyZWVIb3N0SW1wbChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0
aW5ncywgQ0MKICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fdmlzaWJsZSh0
cnVlKQogICAgICwgbV9jb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdChm
YWxzZSkKLSAgICAsIG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6
OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSkKKyAgICAsIG1fbWVtb3J5QWxsb2NhdGlv
bkxpbWl0Qnl0ZXMoMCkKICAgICAsIG1faGVhZHNVcERpc3BsYXkoQ0NIZWFkc1VwRGlzcGxheTo6
Y3JlYXRlKCkpCiAgICAgLCBtX3BhZ2VTY2FsZSgxKQogICAgICwgbV9wYWdlU2NhbGVEZWx0YSgx
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwCmluZGV4IGQ4Y2MxNzQ4
NWE5MGY5MjAyZDE3YTZmMTg1MjIwYWE2MmU3Njc0M2YuLmE2YTMwODEyYmExYTYwM2Q3ZjZhMzY5
YzM1YTMyMzMxODU4MGQ2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVy
ZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXIuaCIKICNpbmNsdWRlICJDQ1ByaW9yaXR5Q2FsY3VsYXRvci5oIgogI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKICNp
bmNsdWRlIDxhbGdvcml0aG0+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0zOCwxNiArMzks
MTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ0NQcmlvcml0aXplZFRleHR1cmU6OkNDUHJpb3Jp
dGl6ZWRUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciogbWFuYWdlciwgSW50U2l6
ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQpCiAgICAgOiBtX3NpemUoc2l6ZSkKICAgICAsIG1fZm9y
bWF0KGZvcm1hdCkKLSAgICAsIG1fbWVtb3J5U2l6ZUJ5dGVzKDApCisgICAgLCBtX2J5dGVzKDAp
CiAgICAgLCBtX3ByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgp
KQogICAgICwgbV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoZmFsc2UpCi0gICAgLCBtX2N1cnJlbnRC
YWNraW5nKDApCisgICAgLCBtX2JhY2tpbmcoMCkKICAgICAsIG1fbWFuYWdlcigwKQogewogICAg
IC8vIG1fbWFuYWdlciBpcyBzZXQgaW4gcmVnaXN0ZXJUZXh0dXJlKCkgc28gdmFsaWRpdHkgY2Fu
IGJlIGNoZWNrZWQuCiAgICAgQVNTRVJUKGZvcm1hdCB8fCBzaXplLmlzRW1wdHkoKSk7CiAgICAg
aWYgKGZvcm1hdCkKLSAgICAgICAgbV9tZW1vcnlTaXplQnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6
bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKKyAgICAgICAgbV9ieXRlcyA9IENDVGV4dHVy
ZTo6bWVtb3J5U2l6ZUJ5dGVzKHNpemUsIGZvcm1hdCk7CiAgICAgaWYgKG1hbmFnZXIpCiAgICAg
ICAgIG1hbmFnZXItPnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsKIH0KQEAgLTc0LDggKzc1LDggQEAg
dm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0RGltZW5zaW9ucyhJbnRTaXplIHNpemUsIEdD
M0RlbnVtIGZvcm1hdCkKICAgICAgICAgbV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYgPSBmYWxzZTsK
ICAgICAgICAgbV9mb3JtYXQgPSBmb3JtYXQ7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7Ci0gICAg
ICAgIG1fbWVtb3J5U2l6ZUJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNp
emUsIGZvcm1hdCk7Ci0gICAgICAgIEFTU0VSVChtX21hbmFnZXIgfHwgIW1fY3VycmVudEJhY2tp
bmcpOworICAgICAgICBtX2J5dGVzID0gQ0NUZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMoc2l6ZSwg
Zm9ybWF0KTsKKyAgICAgICAgQVNTRVJUKG1fbWFuYWdlciB8fCAhbV9iYWNraW5nKTsKICAgICAg
ICAgaWYgKG1fbWFuYWdlcikKICAgICAgICAgICAgIG1fbWFuYWdlci0+cmV0dXJuQmFja2luZ1Rl
eHR1cmUodGhpcyk7CiAgICAgfQpAQCAtOTcsOCArOTgsOCBAQCB2b2lkIENDUHJpb3JpdGl6ZWRU
ZXh0dXJlOjphY3F1aXJlQmFja2luZ1RleHR1cmUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
KQogCiB1bnNpZ25lZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dGV4dHVyZUlkKCkKIHsKLSAgICBp
ZiAobV9jdXJyZW50QmFja2luZykKLSAgICAgICAgcmV0dXJuIG1fY3VycmVudEJhY2tpbmctPnRl
eHR1cmVJZCgpOworICAgIGlmIChtX2JhY2tpbmcpCisgICAgICAgIHJldHVybiBtX2JhY2tpbmct
PmlkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwNyw3ICsxMDgsNyBAQCB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYQogICAgIEFTU0VSVChtX2lzQWJvdmVQcmlvcml0eUN1dG9mZik7CiAgICAg
aWYgKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKQogICAgICAgICBhY3F1aXJlQmFja2luZ1RleHR1
cmUoYWxsb2NhdG9yKTsKLSAgICBBU1NFUlQobV9jdXJyZW50QmFja2luZyk7CisgICAgQVNTRVJU
KG1fYmFja2luZyk7CiAgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNk
ID0gY29udGV4dC0+Y29udGV4dDNEKCk7CiAgICAgaWYgKCFjb250ZXh0M2QpIHsKICAgICAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgpA
QCAtMTIxLDcgKzEyMiw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OmZyYW1lYnVmZmVy
VGV4dHVyZTJEKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0CiAgICAgQVNTRVJUKG1f
aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKICAgICBpZiAobV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYp
CiAgICAgICAgIGFjcXVpcmVCYWNraW5nVGV4dHVyZShhbGxvY2F0b3IpOwotICAgIEFTU0VSVCht
X2N1cnJlbnRCYWNraW5nKTsKKyAgICBBU1NFUlQobV9iYWNraW5nKTsKICAgICBXZWJLaXQ6Oldl
YkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAg
ICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0
aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCkBAIC0xMzAsMTIgKzEzMSwyNiBAQCB2b2lkIEND
UHJpb3JpdGl6ZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgVGV4dAogICAgIGNvbnRleHQzZC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRU
QUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQoKSwgMCk7
CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OnNldEN1cnJlbnRCYWNraW5nKENDUHJp
b3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4
dHVyZTo6bGluayhCYWNraW5nKiBiYWNraW5nKQogewotICAgIGlmIChtX2N1cnJlbnRCYWNraW5n
ID09IGJhY2tpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2N1cnJlbnRCYWNraW5nID0gYmFj
a2luZzsKKyAgICBBU1NFUlQoYmFja2luZyk7CisgICAgQVNTRVJUKCFiYWNraW5nLT5tX293bmVy
KTsKKyAgICBBU1NFUlQoIW1fYmFja2luZyk7CisKKyAgICBtX2JhY2tpbmcgPSBiYWNraW5nOwor
ICAgIG1fYmFja2luZy0+bV9vd25lciA9IHRoaXM7Cit9CisKK3ZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmU6OnVubGluaygpCit7CisgICAgQVNTRVJUKG1fYmFja2luZyk7CisgICAgQVNTRVJUKG1f
YmFja2luZy0+bV9vd25lciA9PSB0aGlzKTsKKworICAgIG1fYmFja2luZy0+bV9vd25lciA9IDA7
CisgICAgbV9iYWNraW5nID0gMDsKIH0KIAorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcmlvcml0aXplZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKaW5kZXggOWVhMmZiMWU0MTU3OWY2
NDUwNGY2YTNjOWJiMGQ3YmUwYjMyZTFmMi4uMzE2OWU4Y2UxYzA4ZTMwNTljMzAzMTIxYmQ3ZGU0
MjQ1MDExODQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCkBAIC0y
NiwxNiArMjYsMTcgQEAKICNkZWZpbmUgQ0NQcmlvcml0aXplZFRleHR1cmVfaAogCiAjaW5jbHVk
ZSAiQ0NQcmlvcml0eUNhbGN1bGF0b3IuaCIKKyNpbmNsdWRlICJDQ1RleHR1cmUuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI7CiBjbGFzcyBDQ1By
aW9yaXR5Q2FsY3VsYXRvcjsKIGNsYXNzIENDR3JhcGhpY3NDb250ZXh0OworY2xhc3MgVGV4dHVy
ZUFsbG9jYXRvcjsKIAogY2xhc3MgQ0NQcmlvcml0aXplZFRleHR1cmUgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENDUHJpb3JpdGl6ZWRUZXh0dXJlKTsKQEAgLTU3LDcgKzU4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0RGltZW5zaW9ucyhJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQpOwog
ICAgIEdDM0RlbnVtIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAgICAgSW50
U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgc2l6ZV90IG1lbW9yeVNp
emVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5U2l6ZUJ5dGVzOyB9CisgICAgc2l6ZV90
IGJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlczsgfQogCiAgICAgLy8gU2V0IHByaW9yaXR5
IGZvciB0aGUgcmVxdWVzdGVkIHRleHR1cmUuIAogICAgIHZvaWQgc2V0UmVxdWVzdFByaW9yaXR5
KGludCBwcmlvcml0eSkgeyBtX3ByaW9yaXR5ID0gcHJpb3JpdHk7IH0KQEAgLTY4LDEyICs2OSwx
MiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSBjb25zdCB7
IHJldHVybiBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZjsgfQogCiAgICAgLy8gVGhpcyByZXR1cm5z
IHdoZXRoZXIgd2Ugc3RpbGwgaGF2ZSBhIGJhY2tpbmcgdGV4dHVyZS4gVGhpcyBjYW4gY29udGlu
dWUKLSAgICAvLyB0byBiZSB0cnVlIGV2ZW4gYWZ0ZXIgY2FuQXF1aXJlQmFja2luZ1RleHR1cmUo
KSBiZWNvbWVzIGZhbHNlLiBJbiB0aGlzCisgICAgLy8gdG8gYmUgdHJ1ZSBldmVuIGFmdGVyIGNh
bkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIGJlY29tZXMgZmFsc2UuIEluIHRoaXMKICAgICAvLyBj
YXNlIHRoZSB0ZXh0dXJlIGNhbiBiZSB1c2VkIGJ1dCBzaG91bGRuJ3QgYmUgdXBkYXRlZCBzaW5j
ZSBpdCB3aWxsIGdldAogICAgIC8vIHRha2VuIGF3YXkgInNvb24iLgotICAgIGJvb2wgaGF2ZUJh
Y2tpbmdUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gISFjdXJyZW50QmFja2luZygpOyB9CisgICAg
Ym9vbCBoYXZlQmFja2luZ1RleHR1cmUoKSBjb25zdCB7IHJldHVybiAhIWJhY2tpbmcoKTsgfQog
Ci0gICAgLy8gSWYgY2FuQXF1aXJlQmFja2luZ1RleHR1cmUoKSBpcyB0cnVlIGFjcXVpcmVCYWNr
aW5nVGV4dHVyZSgpIHdpbGwgYWNxdWlyZQorICAgIC8vIElmIGNhbkFjcXVpcmVCYWNraW5nVGV4
dHVyZSgpIGlzIHRydWUgYWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkgd2lsbCBhY3F1aXJlCiAgICAg
Ly8gYSBiYWNraW5nIHRleHR1cmUgZm9yIHVzZS4gQ2FsbCB0aGlzIHdoZW5ldmVyIHRoZSB0ZXh0
dXJlIGlzIGFjdHVhbGx5IG5lZWRlZC4KICAgICB2b2lkIGFjcXVpcmVCYWNraW5nVGV4dHVyZShU
ZXh0dXJlQWxsb2NhdG9yKik7CiAKQEAgLTgxLDQ4ICs4MiwzOCBAQCBwdWJsaWM6CiAgICAgLy8g
ICAgICAgIChhbGwgdGV4dHVyZXMgYXJlIHZpc2libGUpIGJ1dCB3ZSBjYW4gc3RpbGwgc3F1ZWV6
ZSBpbnRvIHRoZSBsaW1pdAogICAgIC8vICAgICAgICBieSBub3QgcGFpbnRpbmcgb2NjbHVkZWQg
dGV4dHVyZXMuIEluIHRoaXMgY2FzZSB0aGUgbWFuYWdlcgogICAgIC8vICAgICAgICByZWZ1c2Vz
IGFsbCB2aXNpYmxlIHRleHR1cmVzIGFuZCByZXF1ZXN0TGF0ZSgpIHdpbGwgZW5hYmxlCi0gICAg
Ly8gICAgICAgIGNhbkFxdWlyZUJhY2tpbmdUZXh0dXJlKCkgb24gYSBjYWxsLW9yZGVyIGJhc2lz
LiBXZSBtaWdodCB3YW50IHRvCisgICAgLy8gICAgICAgIGNhbkFjcXVpcmVCYWNraW5nVGV4dHVy
ZSgpIG9uIGEgY2FsbC1vcmRlciBiYXNpcy4gV2UgbWlnaHQgd2FudCB0bwogICAgIC8vICAgICAg
ICBqdXN0IHJlbW92ZSB0aGlzIGluIHRoZSBmdXR1cmUgKGNhcmVmdWxseSkgYW5kIGp1c3QgbWFr
ZSBzdXJlIHdlIGRvbid0CiAgICAgLy8gICAgICAgIHJlZ3Jlc3MgT09NcyBzaXR1YXRpb25zLgog
ICAgIGJvb2wgcmVxdWVzdExhdGUoKTsKIAotICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFx
dWlyZSB0aGUgdGV4dHVyZSBpZiBwb3NzaWJsZS4gSWYgbmVpdGhlciBoYXZlQmFja2luZ1RleHR1
cmUoKQotICAgIC8vIG5vciBjYW5BcXVpcmVCYWNraW5nVGV4dHVyZSgpIGlzIHRydWUsIGFuIElE
IG9mIHplcm8gd2lsbCBiZSB1c2VkL3JldHVybmVkLgorICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyB3
aWxsIGFjcXVpcmUgdGhlIHRleHR1cmUgaWYgcG9zc2libGUuIElmIG5laXRoZXIgaGF2ZUJhY2tp
bmdUZXh0dXJlKCkKKyAgICAvLyBub3IgY2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkgaXMgdHJ1
ZSwgYW4gSUQgb2YgemVybyB3aWxsIGJlIHVzZWQvcmV0dXJuZWQuCiAgICAgdm9pZCBiaW5kVGV4
dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGZy
YW1lYnVmZmVyVGV4dHVyZTJEKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciop
OwogICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpOwogCisgICAgLy8gV2hlbiBzZWxmIG1hbmFnZWQs
IHRoZSByZXF1ZXN0IGlzIHByaW9yaXRpemVkIGFzIHVzdWFsIGJ1dCB0aGUgYWxsb2NhdGlvbgor
ICAgIC8vIGFuZCBkZWxldGlvbiBvZiB0aGUgdGV4dHVyZSBpcyBub3QgaGFuZGxlZCBieSB0aGUg
bWFuYWdlci4gVG8gc3RheSB3aXRoaW4KKyAgICAvLyB0aGUgbWVtb3J5IGxpbWl0LCBjYW5BcXVp
cmVCYWNraW5nVGV4dHVyZSBzaG91bGQgYmUgdXNlZCB0byBkZWNpZGUgd2hlbgorICAgIC8vIHRv
IGFsbG9jYXRlL2RlbGV0ZSB0aGUgc2VsZi1tYW5hZ2VkIG1lbW9yeS4KKyAgICB2b2lkIHNldElz
U2VsZk1hbmFnZWQoYm9vbCBpc1NlbGZNYW5hZ2VkKSB7IG1faXNTZWxmTWFuYWdlZCA9IGlzU2Vs
Zk1hbmFnZWQ7IH0KKyAgICBib29sIGlzU2VsZk1hbmFnZWQoKSB7IHJldHVybiBtX2lzU2VsZk1h
bmFnZWQ7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOwogCi0gICAgY2xhc3MgQmFja2luZyB7CisgICAgY2xhc3MgQmFja2luZyA6IHB1
YmxpYyBDQ1RleHR1cmUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNraW5nKTsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQotICAgICAgICBHQzNEZW51bSBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsg
fQotICAgICAgICBzaXplX3QgbWVtb3J5U2l6ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1v
cnlTaXplQnl0ZXM7IH0KLSAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0dXJlSWQ7IH0KLSAgICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUqIGN1cnJlbnRU
ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VGV4dHVyZTsgfQotICAgICAgICB2b2lk
IHNldEN1cnJlbnRUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiBjdXJyZW50KSB7IG1fY3Vy
cmVudFRleHR1cmUgPSBjdXJyZW50OyB9CisgICAgICAgIEJhY2tpbmcodW5zaWduZWQgaWQsIElu
dFNpemUgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQorICAgICAgICAgICAgOiBDQ1RleHR1cmUoaWQs
IHNpemUsIGZvcm1hdCksIG1fb3duZXIoMCkgeyB9CisgICAgICAgIH5CYWNraW5nKCkgeyBBU1NF
UlQoIW1fb3duZXIpOyB9CiAKKyAgICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUqIG93bmVyKCkg
eyByZXR1cm4gbV9vd25lcjsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI7Ci0KLSAgICAgICAgQmFja2luZyhJbnRTaXplIHNp
emUsIEdDM0RlbnVtIGZvcm1hdCwgdW5zaWduZWQgdGV4dHVyZUlkKQotICAgICAgICAgICAgOiBt
X3NpemUoc2l6ZSkKLSAgICAgICAgICAgICwgbV9mb3JtYXQoZm9ybWF0KQotICAgICAgICAgICAg
LCBtX21lbW9yeVNpemVCeXRlcyhUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwg
Zm9ybWF0KSkKLSAgICAgICAgICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQotICAgICAgICAg
ICAgLCBtX3ByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpKQot
ICAgICAgICAgICAgLCBtX2N1cnJlbnRUZXh0dXJlKDApIHsgfQotICAgICAgICB+QmFja2luZygp
IHsgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlKTsgfQotCi0gICAgICAgIEludFNpemUgbV9zaXpl
OwotICAgICAgICBHQzNEZW51bSBtX2Zvcm1hdDsKLSAgICAgICAgc2l6ZV90IG1fbWVtb3J5U2l6
ZUJ5dGVzOwotICAgICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKLSAgICAgICAgaW50IG1fcHJp
b3JpdHk7Ci0gICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiBtX2N1cnJlbnRUZXh0dXJlOwor
ICAgICAgICBmcmllbmQgY2xhc3MgQ0NQcmlvcml0aXplZFRleHR1cmU7CisgICAgICAgIENDUHJp
b3JpdGl6ZWRUZXh0dXJlKiBtX293bmVyOwogICAgIH07CiAKICAgICBDQ1ByaW9yaXRpemVkVGV4
dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIqLCBJbnRTaXplLCBHQzNEZW51bSBmb3Jt
YXQpOwpAQCAtMTMxLDE3ICsxMjIsMTggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEFib3ZlUHJp
b3JpdHlDdXRvZmYoYm9vbCBpc0Fib3ZlUHJpb3JpdHlDdXRvZmYpIHsgbV9pc0Fib3ZlUHJpb3Jp
dHlDdXRvZmYgPSBpc0Fib3ZlUHJpb3JpdHlDdXRvZmY7IH0KICAgICB2b2lkIHNldE1hbmFnZXJJ
bnRlcm5hbChDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgbV9tYW5hZ2Vy
ID0gbWFuYWdlcjsgfQogCi0gICAgQmFja2luZyogY3VycmVudEJhY2tpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRCYWNraW5nOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50QmFja2luZyhCYWNr
aW5nKik7CisgICAgQmFja2luZyogYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsg
fQorICAgIHZvaWQgbGluayhCYWNraW5nKik7CisgICAgdm9pZCB1bmxpbmsoKTsKIAogICAgIElu
dFNpemUgbV9zaXplOwogICAgIEdDM0RlbnVtIG1fZm9ybWF0OwotICAgIHNpemVfdCBtX21lbW9y
eVNpemVCeXRlczsKKyAgICBzaXplX3QgbV9ieXRlczsKIAogICAgIHNpemVfdCBtX3ByaW9yaXR5
OwogICAgIGJvb2wgbV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmY7CiAKLSAgICBCYWNraW5nKiBtX2N1
cnJlbnRCYWNraW5nOworICAgIEJhY2tpbmcqIG1fYmFja2luZzsKICAgICBDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXIqIG1fbWFuYWdlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4IDVhZjUzZGYwNGJkZWI2N2UyYTBl
Y2MxYTM0YTllYTZiY2U5OWYzMjUuLjAxOTViNmYxY2RlYWI1MDZmMDMzMjc4NTY4Mzk4ZGI2ODQx
NzdkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6cHJpb3JpdGl6ZVRleHR1cmVzKHNpemVfdCByZW5kZXJTdXJmYWNlc01lbW9yeQogICAgICAg
ICAgICAgcmVzZXJ2ZWRSZW5kZXJTdXJmYWNlcyA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAg
ICBzaXplX3QgbmV3TWVtb3J5Qnl0ZXMgPSBtZW1vcnlCeXRlcyArICgqaXQpLT5tZW1vcnlTaXpl
Qnl0ZXMoKTsKKyAgICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAo
Kml0KS0+Ynl0ZXMoKTsKICAgICAgICAgaWYgKG5ld01lbW9yeUJ5dGVzID4gbV9tZW1vcnlBdmFp
bGFibGVCeXRlcykgewogICAgICAgICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQpLT5yZXF1
ZXN0UHJpb3JpdHkoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE0LDcgKzExNCw3IEBAIHZv
aWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMoc2l6ZV90
IHJlbmRlclN1cmZhY2VzTWVtb3J5CiAgICAgICAgIGJvb2wgaXNBYm92ZVByaW9yaXR5Q3V0b2Zm
ID0gQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnByaW9yaXR5SXNIaWdoZXIoKCppdCktPnJlcXVlc3RQ
cmlvcml0eSgpLCBtX3ByaW9yaXR5Q3V0b2ZmKTsKICAgICAgICAgKCppdCktPnNldEFib3ZlUHJp
b3JpdHlDdXRvZmYoaXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKICAgICAgICAgaWYgKGlzQWJvdmVQ
cmlvcml0eUN1dG9mZikKLSAgICAgICAgICAgIG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyArPSAo
Kml0KS0+bWVtb3J5U2l6ZUJ5dGVzKCk7CisgICAgICAgICAgICBtX21lbW9yeUFib3ZlQ3V0b2Zm
Qnl0ZXMgKz0gKCppdCktPmJ5dGVzKCk7CiAgICAgfQogICAgIEFTU0VSVChtX21lbW9yeUFib3Zl
Q3V0b2ZmQnl0ZXMgPD0gbV9tZW1vcnlBdmFpbGFibGVCeXRlcyk7CiAKQEAgLTE1NywxNSArMTU3
LDE1IEBAIGJvb2wgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0TGF0ZShDQ1By
aW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSkKICAgICBpZiAoQ0NQcmlvcml0eUNhbGN1bGF0b3I6
OnByaW9yaXR5SXNMb3dlcih0ZXh0dXJlLT5yZXF1ZXN0UHJpb3JpdHkoKSwgbV9wcmlvcml0eUN1
dG9mZikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNpemVfdCBuZXdNZW1vcnlCeXRl
cyA9IG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyArIHRleHR1cmUtPm1lbW9yeVNpemVCeXRlcygp
OworICAgIHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9IG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyAr
IHRleHR1cmUtPmJ5dGVzKCk7CiAgICAgaWYgKG5ld01lbW9yeUJ5dGVzID4gbV9tZW1vcnlBdmFp
bGFibGVCeXRlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9tZW1vcnlBYm92ZUN1
dG9mZkJ5dGVzID0gbmV3TWVtb3J5Qnl0ZXM7CiAgICAgdGV4dHVyZS0+c2V0QWJvdmVQcmlvcml0
eUN1dG9mZih0cnVlKTsKLSAgICBpZiAodGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSkgewotICAg
ICAgICBtX2JhY2tpbmdzLnJlbW92ZSh0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKTsKLSAgICAg
ICAgbV9iYWNraW5ncy5hZGQodGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSk7CisgICAgaWYgKHRl
eHR1cmUtPmJhY2tpbmcoKSkgeworICAgICAgICBtX2JhY2tpbmdzLnJlbW92ZSh0ZXh0dXJlLT5i
YWNraW5nKCkpOworICAgICAgICBtX2JhY2tpbmdzLmFkZCh0ZXh0dXJlLT5iYWNraW5nKCkpOwog
ICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBib29sIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdExhdGUoQ0NQcmlvcml0aXplZFRleHR1cmUq
IHRleHR1cmUpCiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tp
bmdUZXh0dXJlSWZOZWVkZWQoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBBU1NFUlQodGV4dHVyZS0+aXNBYm92ZVByaW9y
aXR5Q3V0b2ZmKCkpOwotICAgIGlmICh0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpIHx8ICF0ZXh0
dXJlLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKKyAgICBpZiAodGV4dHVyZS0+YmFja2luZygp
IHx8ICF0ZXh0dXJlLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gRmluZCBhIGJhY2tpbmcgYmVsb3csIGJ5IGVpdGhlciByZWN5Y2xpbmcgb3IgYWxs
b2NhdGluZy4KQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQoQ0NQcmlvcml0aXplZFRleAogCiAg
ICAgLy8gRmlyc3QgdHJ5IHRvIHJlY3ljbGUKICAgICBmb3IgKEJhY2tpbmdTZXQ6Oml0ZXJhdG9y
IGl0ID0gbV9iYWNraW5ncy5iZWdpbigpOyBpdCAhPSBtX2JhY2tpbmdzLmVuZCgpOyArK2l0KSB7
Ci0gICAgICAgIGlmICgoKml0KS0+Y3VycmVudFRleHR1cmUoKSAmJiAoKml0KS0+Y3VycmVudFRl
eHR1cmUoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCisgICAgICAgIGlmICgoKml0KS0+b3du
ZXIoKSAmJiAoKml0KS0+b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgaWYgKCgqaXQpLT5zaXplKCkgPT0gdGV4dHVyZS0+c2l6ZSgp
ICYmICgqaXQpLT5mb3JtYXQoKSA9PSB0ZXh0dXJlLT5mb3JtYXQoKSkgewogICAgICAgICAgICAg
YmFja2luZyA9ICgqaXQpOwpAQCAtMTkxLDE0ICsxOTEsMTQgQEAgdm9pZCBDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6
ZWRUZXgKIAogICAgIC8vIE90aGVyd2lzZSByZWR1Y2UgbWVtb3J5IGFuZCBqdXN0IGFsbG9jYXRl
IGEgbmV3IGJhY2tpbmcgdGV4dXJlcy4KICAgICBpZiAoIWJhY2tpbmcpIHsKLSAgICAgICAgcmVk
dWNlTWVtb3J5KG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLSB0ZXh0dXJlLT5tZW1vcnlTaXplQnl0
ZXMoKSwgYWxsb2NhdG9yKTsKKyAgICAgICAgcmVkdWNlTWVtb3J5KG1fbWVtb3J5QXZhaWxhYmxl
Qnl0ZXMgLSB0ZXh0dXJlLT5ieXRlcygpLCBhbGxvY2F0b3IpOwogICAgICAgICBiYWNraW5nID0g
Y3JlYXRlQmFja2luZyh0ZXh0dXJlLT5zaXplKCksIHRleHR1cmUtPmZvcm1hdCgpLCBhbGxvY2F0
b3IpOwogICAgIH0KIAogICAgIC8vIE1vdmUgdGhlIHVzZWQgYmFja2luZyB0ZXh0dXJlIHRvIHRo
ZSBlbmQgb2YgdGhlIGV2aWN0aW9uIGxpc3QuCi0gICAgaWYgKGJhY2tpbmctPmN1cnJlbnRUZXh0
dXJlKCkpCi0gICAgICAgIHVubGluayhiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpLCBiYWNraW5n
KTsKLSAgICBsaW5rKHRleHR1cmUsIGJhY2tpbmcpOworICAgIGlmIChiYWNraW5nLT5vd25lcigp
KQorICAgICAgICBiYWNraW5nLT5vd25lcigpLT51bmxpbmsoKTsKKyAgICB0ZXh0dXJlLT5saW5r
KGJhY2tpbmcpOwogICAgIG1fYmFja2luZ3MucmVtb3ZlKGJhY2tpbmcpOwogICAgIG1fYmFja2lu
Z3MuYWRkKGJhY2tpbmcpOwogfQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoc2l6ZV90IGxpbWl0Qnl0ZXMsIFRleHR1cmVB
bGxvY2F0CiAgICAgLy8gb3IgdW50aWwgYWxsIGJhY2tpbmdzIHJlbWFpbmluZyBhcmUgYWJvdmUg
dGhlIGN1dG9mZi4KICAgICB3aGlsZSAobWVtb3J5VXNlQnl0ZXMoKSA+IGxpbWl0Qnl0ZXMgJiYg
bV9iYWNraW5ncy5zaXplKCkgPiAwKSB7CiAgICAgICAgIEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0
ID0gbV9iYWNraW5ncy5iZWdpbigpOwotICAgICAgICBpZiAoKCppdCktPmN1cnJlbnRUZXh0dXJl
KCkgJiYgKCppdCktPmN1cnJlbnRUZXh0dXJlKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQor
ICAgICAgICBpZiAoKCppdCktPm93bmVyKCkgJiYgKCppdCktPm93bmVyKCktPmlzQWJvdmVQcmlv
cml0eUN1dG9mZigpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlc3Ryb3lCYWNraW5n
KCgqaXQpLCBhbGxvY2F0b3IpOwogICAgIH0KQEAgLTIyOSw5ICsyMjksOSBAQCB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvcikKICAgICAvLyBiYWNraW5nIHRleHR1cmVzIChhbnkgbW9yZSB0aGFuIDEwJSkuCiAg
ICAgc2l6ZV90IHdhc3RlZE1lbW9yeSA9IDA7CiAgICAgZm9yIChCYWNraW5nU2V0OjppdGVyYXRv
ciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQoKTsgKytpdCkg
ewotICAgICAgICBpZiAoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkpCisgICAgICAgIGlmICgoKml0
KS0+b3duZXIoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB3YXN0ZWRNZW1vcnkgKz0g
KCppdCktPm1lbW9yeVNpemVCeXRlcygpOworICAgICAgICB3YXN0ZWRNZW1vcnkgKz0gKCppdCkt
PmJ5dGVzKCk7CiAgICAgfQogICAgIHNpemVfdCB0ZW5QZXJjZW50T2ZNZW1vcnkgPSBtX21lbW9y
eUF2YWlsYWJsZUJ5dGVzIC8gMTA7CiAgICAgaWYgKHdhc3RlZE1lbW9yeSA8PSB0ZW5QZXJjZW50
T2ZNZW1vcnkpCkBAIC0yNDQsOCArMjQ0LDggQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OmNsZWFyQWxsTWVtb3J5KFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKICAgICAv
LyBVbmxpbmsgYW5kIGRlc3Ryb3kgYWxsIGJhY2tpbmcgdGV4dHVyZXMuCiAgICAgd2hpbGUgKG1f
YmFja2luZ3Muc2l6ZSgpID4gMCkgewogICAgICAgICBCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9
IG1fYmFja2luZ3MuYmVnaW4oKTsKLSAgICAgICAgaWYgKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgp
KQotICAgICAgICAgICAgdW5saW5rKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpLCAoKml0KSk7Cisg
ICAgICAgIGlmICgoKml0KS0+b3duZXIoKSkKKyAgICAgICAgICAgICgqaXQpLT5vd25lcigpLT51
bmxpbmsoKTsKICAgICAgICAgZGVzdHJveUJhY2tpbmcoKCppdCksIGFsbG9jYXRvcik7CiAgICAg
fQogfQpAQCAtMjU4LDMyICsyNTgsMTEgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmFsbEJhY2tpbmdUZXh0dXJlc1dlcmVEZWxldGVkKCkKICAgICBjbGVhckFsbE1lbW9yeSgw
KTsKIH0KIAotdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnVubGluayhDQ1ByaW9y
aXRpemVkVGV4dHVyZSogdGV4dHVyZSwgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJh
Y2tpbmcpCi17Ci0gICAgQVNTRVJUKHRleHR1cmUgJiYgYmFja2luZyk7Ci0gICAgQVNTRVJUKHRl
eHR1cmUtPmN1cnJlbnRCYWNraW5nKCkgPT0gYmFja2luZyk7Ci0gICAgQVNTRVJUKGJhY2tpbmct
PmN1cnJlbnRUZXh0dXJlKCkgPT0gdGV4dHVyZSk7Ci0KLSAgICB0ZXh0dXJlLT5zZXRDdXJyZW50
QmFja2luZygwKTsKLSAgICBiYWNraW5nLT5zZXRDdXJyZW50VGV4dHVyZSgwKTsKLX0KLQotdm9p
ZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmxpbmsoQ0NQcmlvcml0aXplZFRleHR1cmUq
IHRleHR1cmUsIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nKQotewotICAg
IEFTU0VSVCh0ZXh0dXJlICYmIGJhY2tpbmcpOwotICAgIEFTU0VSVCghdGV4dHVyZS0+Y3VycmVu
dEJhY2tpbmcoKSk7Ci0gICAgQVNTRVJUKCFiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpKTsKLQot
ICAgIHRleHR1cmUtPnNldEN1cnJlbnRCYWNraW5nKGJhY2tpbmcpOwotICAgIGJhY2tpbmctPnNl
dEN1cnJlbnRUZXh0dXJlKHRleHR1cmUpOwotfQotCi0KIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpyZWdpc3RlclRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUp
CiB7CiAgICAgQVNTRVJUKHRleHR1cmUpOwogICAgIEFTU0VSVCghdGV4dHVyZS0+dGV4dHVyZU1h
bmFnZXIoKSk7Ci0gICAgQVNTRVJUKCF0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKTsKKyAgICBB
U1NFUlQoIXRleHR1cmUtPmJhY2tpbmcoKSk7CiAgICAgQVNTRVJUKG1fdGV4dHVyZXMuZmluZCh0
ZXh0dXJlKSA9PSBtX3RleHR1cmVzLmVuZCgpKTsKIAogICAgIHRleHR1cmUtPnNldE1hbmFnZXJJ
bnRlcm5hbCh0aGlzKTsKQEAgLTMwNSwxMSArMjg0LDExIEBAIHZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjp1bnJlZ2lzdGVyVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4
dHVyCiAKIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZXR1cm5CYWNraW5nVGV4
dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSkKIHsKLSAgICBpZiAodGV4dHVyZS0+
Y3VycmVudEJhY2tpbmcoKSkgeworICAgIGlmICh0ZXh0dXJlLT5iYWNraW5nKCkpIHsKICAgICAg
ICAgLy8gTW92ZSB0aGUgYmFja2luZyB0ZXh0dXJlIHRvIHRoZSBmcm9udCBmb3IgZXZpY3Rpb24v
cmVjeWNsaW5nIGFuZCB1bmxpbmsgaXQuCi0gICAgICAgIG1fYmFja2luZ3MucmVtb3ZlKHRleHR1
cmUtPmN1cnJlbnRCYWNraW5nKCkpOwotICAgICAgICBtX2JhY2tpbmdzLmluc2VydEJlZm9yZSht
X2JhY2tpbmdzLmJlZ2luKCksIHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpOwotICAgICAgICB1
bmxpbmsodGV4dHVyZSwgdGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSk7CisgICAgICAgIG1fYmFj
a2luZ3MucmVtb3ZlKHRleHR1cmUtPmJhY2tpbmcoKSk7CisgICAgICAgIG1fYmFja2luZ3MuaW5z
ZXJ0QmVmb3JlKG1fYmFja2luZ3MuYmVnaW4oKSwgdGV4dHVyZS0+YmFja2luZygpKTsKKyAgICAg
ICAgdGV4dHVyZS0+dW5saW5rKCk7CiAgICAgfQogfQogCkBAIC0zMTcsOSArMjk2LDggQEAgQ0NQ
cmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlQmFja2luZyhJbnRTaXoKIHsKICAgICBBU1NFUlQoYWxsb2NhdG9yKTsKIAotICAgIHVu
c2lnbmVkIHRleHR1cmVJZCA9IGFsbG9jYXRvci0+Y3JlYXRlVGV4dHVyZShzaXplLCBmb3JtYXQp
OwotICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nID0gbmV3IENDUHJp
b3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKHNpemUsIGZvcm1hdCwgdGV4dHVyZUlkKTsKLSAgICBt
X21lbW9yeVVzZUJ5dGVzICs9IGJhY2tpbmctPm1lbW9yeVNpemVCeXRlcygpOworICAgIENDUHJp
b3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nID0gbmV3IENDUHJpb3JpdGl6ZWRUZXh0
dXJlOjpCYWNraW5nKGFsbG9jYXRvci0+Y3JlYXRlVGV4dHVyZShzaXplLCBmb3JtYXQpLCBzaXpl
LCBmb3JtYXQpOworICAgIG1fbWVtb3J5VXNlQnl0ZXMgKz0gYmFja2luZy0+Ynl0ZXMoKTsKICAg
ICAvLyBQdXQgYmFja2luZyB0ZXh0dXJlIGF0IHRoZSBmcm9udCBmb3IgZXZpY3Rpb24sIHNpbmNl
IGl0IGlzbid0IGluIHVzZSB5ZXQuCiAgICAgbV9iYWNraW5ncy5pbnNlcnRCZWZvcmUobV9iYWNr
aW5ncy5iZWdpbigpLCBiYWNraW5nKTsKICAgICByZXR1cm4gYmFja2luZzsKQEAgLTMyOCwxNCAr
MzA2LDE0IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmcoSW50U2l6CiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6ZGVzdHJveUJhY2tpbmcoQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcq
IGJhY2tpbmcsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBBU1NFUlQoYmFj
a2luZyk7Ci0gICAgQVNTRVJUKCFiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpIHx8ICFiYWNraW5n
LT5jdXJyZW50VGV4dHVyZSgpLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSk7CisgICAgQVNTRVJU
KCFiYWNraW5nLT5vd25lcigpIHx8ICFiYWNraW5nLT5vd25lcigpLT5pc0Fib3ZlUHJpb3JpdHlD
dXRvZmYoKSk7CiAgICAgQVNTRVJUKG1fYmFja2luZ3MuZmluZChiYWNraW5nKSAhPSBtX2JhY2tp
bmdzLmVuZCgpKTsKIAogICAgIGlmIChhbGxvY2F0b3IpCi0gICAgICAgIGFsbG9jYXRvci0+ZGVs
ZXRlVGV4dHVyZShiYWNraW5nLT50ZXh0dXJlSWQoKSwgYmFja2luZy0+c2l6ZSgpLCBiYWNraW5n
LT5mb3JtYXQoKSk7Ci0gICAgaWYgKGJhY2tpbmctPmN1cnJlbnRUZXh0dXJlKCkpCi0gICAgICAg
IHVubGluayhiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpLCBiYWNraW5nKTsKLSAgICBtX21lbW9y
eVVzZUJ5dGVzIC09IGJhY2tpbmctPm1lbW9yeVNpemVCeXRlcygpOworICAgICAgICBhbGxvY2F0
b3ItPmRlbGV0ZVRleHR1cmUoYmFja2luZy0+aWQoKSwgYmFja2luZy0+c2l6ZSgpLCBiYWNraW5n
LT5mb3JtYXQoKSk7CisgICAgaWYgKGJhY2tpbmctPm93bmVyKCkpCisgICAgICAgIGJhY2tpbmct
Pm93bmVyKCktPnVubGluaygpOworICAgIG1fbWVtb3J5VXNlQnl0ZXMgLT0gYmFja2luZy0+Ynl0
ZXMoKTsKICAgICBtX2JhY2tpbmdzLnJlbW92ZShiYWNraW5nKTsKIAogICAgIGRlbGV0ZSBiYWNr
aW5nOwpAQCAtMzUxLDE1ICszMjksMTUgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmFzc2VydEludmFyaWFudHMoKQogCiAgICAgLy8gQmFja2luZ3MvdGV4dHVyZXMgbXVzdCBi
ZSBkb3VibHktbGlua2VkIGFuZCBvbmx5IHRvIG90aGVyIGJhY2tpbmdzL3RleHR1cmVzIGluIHRo
aXMgbWFuYWdlci4KICAgICBmb3IgKEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5n
cy5iZWdpbigpOyBpdCAhPSBtX2JhY2tpbmdzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICgo
Kml0KS0+Y3VycmVudFRleHR1cmUoKSkgewotICAgICAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXMu
ZmluZCgoKml0KS0+Y3VycmVudFRleHR1cmUoKSkgIT0gbV90ZXh0dXJlcy5lbmQoKSk7Ci0gICAg
ICAgICAgICBBU1NFUlQoKCppdCktPmN1cnJlbnRUZXh0dXJlKCktPmN1cnJlbnRCYWNraW5nKCkg
PT0gKCppdCkpOworICAgICAgICBpZiAoKCppdCktPm93bmVyKCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVChtX3RleHR1cmVzLmZpbmQoKCppdCktPm93bmVyKCkpICE9IG1fdGV4dHVyZXMuZW5kKCkp
OworICAgICAgICAgICAgQVNTRVJUKCgqaXQpLT5vd25lcigpLT5iYWNraW5nKCkgPT0gKCppdCkp
OwogICAgICAgICB9CiAgICAgfQogICAgIGZvciAoVGV4dHVyZVNldDo6aXRlcmF0b3IgaXQgPSBt
X3RleHR1cmVzLmJlZ2luKCk7IGl0ICE9IG1fdGV4dHVyZXMuZW5kKCk7ICsraXQpIHsKLSAgICAg
ICAgaWYgKCgqaXQpLT5jdXJyZW50QmFja2luZygpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9i
YWNraW5ncy5maW5kKCgqaXQpLT5jdXJyZW50QmFja2luZygpKSAhPSBtX2JhY2tpbmdzLmVuZCgp
KTsKLSAgICAgICAgICAgIEFTU0VSVCgoKml0KS0+Y3VycmVudEJhY2tpbmcoKS0+Y3VycmVudFRl
eHR1cmUoKSA9PSAoKml0KSk7CisgICAgICAgIGlmICgoKml0KS0+YmFja2luZygpKSB7CisgICAg
ICAgICAgICBBU1NFUlQobV9iYWNraW5ncy5maW5kKCgqaXQpLT5iYWNraW5nKCkpICE9IG1fYmFj
a2luZ3MuZW5kKCkpOworICAgICAgICAgICAgQVNTRVJUKCgqaXQpLT5iYWNraW5nKCktPm93bmVy
KCkgPT0gKCppdCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zNjgsMTAgKzM0NiwxMCBAQCB2
b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YXNzZXJ0SW52YXJpYW50cygpCiAgICAg
Ly8gcmVkdWNlTWVtb3J5IHdpbGwgbm90IGZpbmQgYWxsIHRleHR1cmVzIGF2YWlsYWJsZSBmb3Ig
ZXZpY3Rpb24vcmVjeWNsaW5nKS4KICAgICBib29sIHJlYWNoZWRQcm90ZWN0ZWQgPSBmYWxzZTsK
ICAgICBmb3IgKEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigpOyBp
dCAhPSBtX2JhY2tpbmdzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+Y3VycmVu
dFRleHR1cmUoKSAmJiAoKml0KS0+Y3VycmVudFRleHR1cmUoKS0+aXNBYm92ZVByaW9yaXR5Q3V0
b2ZmKCkpCisgICAgICAgIGlmICgoKml0KS0+b3duZXIoKSAmJiAoKml0KS0+b3duZXIoKS0+aXNB
Ym92ZVByaW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAgICAgICByZWFjaGVkUHJvdGVjdGVkID0gdHJ1
ZTsKICAgICAgICAgaWYgKHJlYWNoZWRQcm90ZWN0ZWQpCi0gICAgICAgICAgICBBU1NFUlQoKCpp
dCktPmN1cnJlbnRUZXh0dXJlKCkgJiYgKCppdCktPmN1cnJlbnRUZXh0dXJlKCktPmlzQWJvdmVQ
cmlvcml0eUN1dG9mZigpKTsKKyAgICAgICAgICAgIEFTU0VSVCgoKml0KS0+b3duZXIoKSAmJiAo
Kml0KS0+b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpOwogICAgIH0KIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAppbmRl
eCAzYzcwYjJiMmEwMjMwOWNhMTY0ZDZkY2E5MWNkOTBiYzQyYWZlNmVkLi40YmFkOGQwYWM0N2Y4
MjllMWY2MWNiZTQ4ZDAyMzQ1MTUwNDk3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaApAQCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRl
ICJDQ1ByaW9yaXRpemVkVGV4dHVyZS5oIgogI2luY2x1ZGUgIkNDUHJpb3JpdHlDYWxjdWxhdG9y
LmgiCisjaW5jbHVkZSAiQ0NUZXh0dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUg
IlRleHR1cmVNYW5hZ2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTEsOCArOTEs
OCBAQCBwcml2YXRlOgogICAgIC8vIENvbXBhcmUgYmFja2luZ3MuIExvd2VzdCBwcmlvcml0eSBm
aXJzdC4KICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUJhY2tpbmdzKENDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpCYWNraW5nKiBhLCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYikK
ICAgICB7Ci0gICAgICAgIGludCBwcmlvcml0eUEgPSBhLT5jdXJyZW50VGV4dHVyZSgpID8gYS0+
Y3VycmVudFRleHR1cmUoKS0+cmVxdWVzdFByaW9yaXR5KCkgOiBDQ1ByaW9yaXR5Q2FsY3VsYXRv
cjo6bG93ZXN0UHJpb3JpdHkoKTsKLSAgICAgICAgaW50IHByaW9yaXR5QiA9IGItPmN1cnJlbnRU
ZXh0dXJlKCkgPyBiLT5jdXJyZW50VGV4dHVyZSgpLT5yZXF1ZXN0UHJpb3JpdHkoKSA6IENDUHJp
b3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpOworICAgICAgICBpbnQgcHJpb3JpdHlB
ID0gYS0+b3duZXIoKSA/IGEtPm93bmVyKCktPnJlcXVlc3RQcmlvcml0eSgpIDogQ0NQcmlvcml0
eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCk7CisgICAgICAgIGludCBwcmlvcml0eUIgPSBi
LT5vd25lcigpID8gYi0+b3duZXIoKS0+cmVxdWVzdFByaW9yaXR5KCkgOiBDQ1ByaW9yaXR5Q2Fs
Y3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKTsKICAgICAgICAgaWYgKHByaW9yaXR5QSA9PSBwcmlv
cml0eUIpCiAgICAgICAgICAgICByZXR1cm4gYSA8IGI7CiAgICAgICAgIHJldHVybiBDQ1ByaW9y
aXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0xvd2VyKHByaW9yaXR5QSwgcHJpb3JpdHlCKTsKQEAg
LTEwMiw5ICsxMDIsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWR1Y2VNZW1vcnkoc2l6ZV90
IGxpbWl0LCBUZXh0dXJlQWxsb2NhdG9yKik7CiAKLSAgICB2b2lkIGxpbmsoQ0NQcmlvcml0aXpl
ZFRleHR1cmUqLCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyopOwotICAgIHZvaWQgdW5s
aW5rKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiwgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcq
KTsKLQogICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBjcmVhdGVCYWNraW5nKElu
dFNpemUsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZvaWQgZGVz
dHJveUJhY2tpbmcoQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqLCBUZXh0dXJlQWxsb2Nh
dG9yKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXR5Q2FsY3VsYXRvci5oCmluZGV4IDY4YTIy
NWJlMGI5ZWYzMjY1ZjBmODk4YTYyZmRjNThkY2NlZmI3YTYuLmE5MGEwNzM5MDJiMmM3NjhiYmNh
NzkyN2RjMDIyOGExOTM2YThlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0eUNhbGN1bGF0
b3IuaApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJUZXh0
dXJlTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3Bl
ZFRleHR1cmUuY3BwCmluZGV4IDgwZjgzMTU0MTFiZTU1MWVhNmRjYTQwMzZlY2I5YmViN2Q2NTY3
ZjAuLmI5Zjc1ZDE4NGMzYTY4MDFmYmJlOGZkZmJhNDFlNDMzNjhmYTMzOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4
dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY29wZWRUZXh0dXJlLmNwcApAQCAtMjQsMTAgKzI0LDkgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRleHR1cmUuaCIKIAotI2luY2x1
ZGUgIlRleHR1cmVNYW5hZ2VyLmgiIC8vIEZvciBUZXh0dXJlQWxsb2NhdG9yCisjaW5jbHVkZSAi
VGV4dHVyZUFsbG9jYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4
dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y29wZWRUZXh0dXJlLmgKaW5kZXggNWEzYzRlOTY0ZGQyYzZjZWU1YTc0MWRmMzFmM2NmZTZiZDFl
MjRjMC4uOWY3MjQxZjUxN2Y0YTQwZWRiMmFjOGM0MThhZjhiNzExZmU0ZDAwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRU
ZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY29wZWRUZXh0dXJlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ0NTY29wZWRU
ZXh0dXJlX2gKICNkZWZpbmUgQ0NTY29wZWRUZXh0dXJlX2gKIAorI2luY2x1ZGUgIlRleHR1cmVB
bGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmUuaCIKIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKQEAgLTM0LDcgKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBU
ZXh0dXJlQWxsb2NhdG9yOwogCiBjbGFzcyBDQ1Njb3BlZFRleHR1cmUgOiBwcm90ZWN0ZWQgQ0NU
ZXh0dXJlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Njb3BlZFRleHR1cmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmUuaAppbmRleCBhMjk2MTA0NjkzZGQ0NTJmMmI5ODU3ODIwNDVlZjBjYTc2YzEyZTgy
Li4wZDVkOWY3NjgzZTU2OWVjNmRiNDc4MmQ2ODcxOWFhZThhM2Q5NzJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmUuaApAQCAtMzUsNiArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NUZXh0
dXJlIHsKIHB1YmxpYzoKICAgICBDQ1RleHR1cmUoKSA6IG1faWQoMCkgeyB9CisgICAgQ0NUZXh0
dXJlKHVuc2lnbmVkIGlkLCBJbnRTaXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKKyAgICAgICAg
OiBtX2lkKGlkKQorICAgICAgICAsIG1fc2l6ZShzaXplKQorICAgICAgICAsIG1fZm9ybWF0KGZv
cm1hdCkgeyB9CiAKICAgICB1bnNpZ25lZCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAg
ICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDU2NGUzNjk2YmUxNTUyZWY0ZjRiNDVkMDU0
YWVhZDNmYWE1NjQ0NTMuLjJjM2I3NTg0Y2U2NWZmZDQxYzU0MGNiMjAyOWQ2MjQ2MmE0MTJlZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC01NCw4ICs1NCw2IEBAIHN0
YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvclJlZCA9IDI1NTsK
IHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvckdyZWVuID0g
MDsKIHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvckJsdWUg
PSAwOwogCi1jbGFzcyBNYW5hZ2VkVGV4dHVyZTsKLQogY2xhc3MgRHJhd2FibGVUaWxlIDogcHVi
bGljIENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
cmF3YWJsZVRpbGUpOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApp
bmRleCAzZTFmNTgxMzUzZjAyY2FiM2ExNTYwNDNlMDI5ZjE4ZjNkZTQwMmU2Li5jYzM0OWM4ZTVk
MTdlMWRkYmNhZTk2NTkwZTliYWE5YzczZjEzMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5
ZXJJbXBsLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1Yklt
YWdlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIgLy8gRm9yIFRleHR1cmVBbGxvY2F0b3IK
KyNpbmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggYmVkZTJiMWUz
MWRjMGNiZWM5OGFkMjkyMjlmNGJkZWIwNzc3MDE5Yy4uM2Y5MDVhN2FiNDIzZTkxMWFhN2MwYzc5
NjAwMWY4NjVhMDU5MDFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xMzgs
NyArMTM4LDYgQEAKICAgICAgICAgICAgICd0ZXN0cy9TY3JvbGxiYXJMYXllckNocm9taXVtVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcCcsCiAgICAg
ICAgICAgICAndGVzdHMvVGV4dHVyZUxheWVyQ2hyb21pdW1UZXN0LmNwcCcsCi0gICAgICAgICAg
ICAndGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvVGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UaWxpbmdEYXRhVGVz
dC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBmYmVkZTZjZWQxODVjYzVlOGNkNTFhZTU5ZGJi
YTM0ZjAzNmZmMzk1Li42ZDI0YzFkZTcwMDNmMDkzMTU5ZDIwY2Q3ZDQ0YmZhYzE1NTRlMWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNDVGVzdENvbW1v
bi5oIgogI2luY2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5j
bHVkZSAiY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUaWxpbmdEYXRhLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAK
aW5kZXggNDY4YWYzNmJiYTUwZTNlZTgxNjVmM2FjYWM3NGUxZTQ5ZjZmOTU1OS4uYThiOTYyNzg3
ZDhmMjNmZWI2OGZkNzJiYzVmNjc5NTJhNWE2NjBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgogI2lu
Y2x1ZGUgImNjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIgorI2luY2x1ZGUgImNjL0ND
VGV4dHVyZS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpAQCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICBzaXplX3QgdGV4dHVyZXNN
ZW1vcnlTaXplKHNpemVfdCB0ZXh0dXJlQ291bnQpCiAgICAgewotICAgICAgICByZXR1cm4gVGV4
dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKG1fdGV4dHVyZVNpemUsIG1fdGV4dHVyZUZvcm1h
dCkgKiB0ZXh0dXJlQ291bnQ7CisgICAgICAgIHJldHVybiBDQ1RleHR1cmU6Om1lbW9yeVNpemVC
eXRlcyhtX3RleHR1cmVTaXplLCBtX3RleHR1cmVGb3JtYXQpICogdGV4dHVyZUNvdW50OwogICAg
IH0KIAogICAgIFBhc3NPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiBjcmVhdGVN
YW5hZ2VyKHNpemVfdCBtYXhUZXh0dXJlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKaW5kZXggNDBkM2NlNWU2ZmY5NDNiY2QwZTk0ZTc1YWIz
MGJlNmM4MDZlZGQxOS4uMmUyYzFhMDZmNGIwZmY1YzBjZWYxZDNkNTI3OWVkODI2ZTljOWU4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAK
QEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJMYXllckNo
cm9taXVtLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb21w
b3NpdG9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiY2MvQ0NBY3RpdmVBbmlt
YXRpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVyVGVzdENvbW1vbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVk
TGF5ZXJUZXN0Q29tbW9uLmgKaW5kZXggNTNlNThiM2E3YTZkMTYxMWI1YTA1MWUzZTg5MzNiNDM3
ZDQwNDE3NS4uMmI0MzczZTAzYjNhMzY5ODM4ZDVmMGUxYzU3YWEwYzEzZDVjNTQ4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29t
bW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAi
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlRl
eHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVkZSAiVGlsZWRMYXllckNocm9taXVtLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckJyaWRn
ZVRlc3QuY3BwCmluZGV4IDQzNTkwN2M5NDM3OGFiYmNkY2I5MDk0MzBlZDdjMDJkYzc5MTg4OWMu
LmMyMDZkZGE1ZTc1YTEyNTk1YjUxZmM4ZWQ0ZjA1MTdjZmU3MjZkMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3Qu
Y3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgi
Ci0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgi
CiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZU1hbmFnZXJU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUzMTNmNWRjMjM1MGExZTg4ODk2
NGUxMmRlZWI1NTgzMmYyZjg3MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVz
dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgot
I2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIK
LQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
dXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotbmFt
ZXNwYWNlIHsKLQotY2xhc3MgVGV4dHVyZU1hbmFnZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewotcHVibGljOgotICAgIFRleHR1cmVNYW5hZ2VyVGVzdCgpCi0gICAgICAgIDogbV90ZXh0
dXJlU2l6ZSgyNTYsIDI1NikKLSAgICAgICAgLCBtX3RleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgflRleHR1cmVNYW5hZ2Vy
VGVzdCgpCi0gICAgewotICAgIH0KLQotICAgIHNpemVfdCB0ZXh0dXJlc01lbW9yeVNpemUoc2l6
ZV90IHRleHR1cmVDb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFuYWdlcjo6
bWVtb3J5VXNlQnl0ZXMobV90ZXh0dXJlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSAqIHRleHR1cmVD
b3VudDsKLSAgICB9Ci0KLSAgICBQYXNzT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBjcmVhdGVUZXh0
dXJlTWFuYWdlcihzaXplX3QgbWF4VGV4dHVyZXMsIHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcykK
LSAgICB7Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKHRleHR1cmVzTWVt
b3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJl
cyksIDEwMjQpOwotICAgIH0KLQotICAgIGJvb2wgcmVxdWVzdFRleHR1cmUoVGV4dHVyZU1hbmFn
ZXIqIG1hbmFnZXIsIFRleHR1cmVUb2tlbiB0b2tlbikKLSAgICB7Ci0gICAgICAgIGJvb2wgcmVz
dWx0ID0gbWFuYWdlci0+cmVxdWVzdFRleHR1cmUodG9rZW4sIG1fdGV4dHVyZVNpemUsIG1fdGV4
dHVyZUZvcm1hdCk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICBtYW5hZ2VyLT5h
bGxvY2F0ZVRleHR1cmUoJm1fZmFrZVRleHR1cmVBbGxvY2F0b3IsIHRva2VuKTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRmFrZVRleHR1cmVBbGxvY2F0
b3IgbV9mYWtlVGV4dHVyZUFsbG9jYXRvcjsKLSAgICBjb25zdCBJbnRTaXplIG1fdGV4dHVyZVNp
emU7Ci0gICAgY29uc3QgR0MzRGVudW0gbV90ZXh0dXJlRm9ybWF0OwotfTsKLQotVEVTVF9GKFRl
eHR1cmVNYW5hZ2VyVGVzdCwgcmVxdWVzdFRleHR1cmVJblByZWZlcnJlZExpbWl0KQotewotICAg
IGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDg7Ci0gICAgT3duUHRyPFRleHR1cmVN
YW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKHByZWZlcnJlZFRl
eHR1cmVzICogMiwgcHJlZmVycmVkVGV4dHVyZXMpOwotICAgIFRleHR1cmVUb2tlbiB0b2tlbnNb
cHJlZmVycmVkVGV4dHVyZXNdOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVk
VGV4dHVyZXM7ICsraSkgewotICAgICAgICB0b2tlbnNbaV0gPSB0ZXh0dXJlTWFuYWdlci0+Z2V0
VG9rZW4oKTsKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBFWFBFQ1RfR1QodG9rZW5zW2ld
LCB0b2tlbnNbaSAtIDFdKTsKLSAgICAgICAgRVhQRUNUX1RSVUUocmVxdWVzdFRleHR1cmUodGV4
dHVyZU1hbmFnZXIuZ2V0KCksIHRva2Vuc1tpXSkpOwotICAgICAgICBFWFBFQ1RfVFJVRSh0ZXh0
dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbaV0pKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
dGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKHRva2Vuc1tpXSkpOwotICAgIH0KLQotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkVGV4dHVyZXM7ICsraSkKLSAgICAgICAgRVhQ
RUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5zW2ldKSk7Ci0KLSAgICBF
WFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSwgdGV4dHVyZU1h
bmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5h
Z2VyVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRpbmdQcmVmZXJyZWRMaW1pdCkKLXsKLSAgICBj
b25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwotICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRU
ZXh0dXJlcyA9IDQ7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9
IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRleHR1cmVzLCBwcmVmZXJyZWRUZXh0dXJlcyk7Ci0g
ICAgVGV4dHVyZVRva2VuIHRva2Vuc1ttYXhUZXh0dXJlc107Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwcmVmZXJyZWRUZXh0dXJlczsgKytpKSB7Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRl
eHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4
dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1tpXSkpOwotICAgIH0KLQotICAg
IHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKHRva2Vuc1swXSk7Ci0gICAgdGV4dHVy
ZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUodG9rZW5zWzJdKTsKLQotICAgIGZvciAoc2l6ZV90
IGkgPSBwcmVmZXJyZWRUZXh0dXJlczsgaSA8IG1heFRleHR1cmVzOyArK2kpIHsKLSAgICAgICAg
dG9rZW5zW2ldID0gdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCk7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tlbnNbaV0pKTsKLSAg
ICAgICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5zW2ldKSk7
Ci0gICAgfQotCi0gICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUodG9rZW5zWzRd
KTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZSh0b2tlbnNbNV0pOwotCi0g
ICAgLy8gVGhlc2UgdGV4dHVyZXMgc2hvdWxkIGJlIHZhbGlkIGJlZm9yZSB0aGUgcmVkdWNlTWVt
b3J5VG9MaW1pdCBjYWxsLgotICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0
dXJlKHRva2Vuc1swXSkpOwotICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0
dXJlKHRva2Vuc1syXSkpOwotCi0gICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGlt
aXQodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSk7Ci0KLSAgICBFWFBFQ1Rf
RkFMU0UodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5zWzBdKSk7Ci0gICAgRVhQRUNU
X1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5zWzFdKSk7Ci0gICAgRVhQRUNU
X1RSVUUodGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKHRva2Vuc1sxXSkpOwotICAgIEVYUEVD
VF9GQUxTRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbMl0pKTsKLSAgICBFWFBF
Q1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbM10pKTsKLSAgICBFWFBF
Q1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aXNQcm90ZWN0ZWQodG9rZW5zWzNdKSk7Ci0KLSAgICBF
WFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSwgdGV4dHVyZU1h
bmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5h
Z2VyVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRpbmdNYXhMaW1pdCkKLXsKLSAgICBjb25zdCBz
aXplX3QgbWF4VGV4dHVyZXMgPSA4OwotICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJl
cyA9IDQ7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0
ZVRleHR1cmVNYW5hZ2VyKG1heFRleHR1cmVzLCBwcmVmZXJyZWRUZXh0dXJlcyk7Ci0gICAgVGV4
dHVyZVRva2VuIHRva2Vuc1ttYXhUZXh0dXJlc107Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtYXhUZXh0dXJlczsgKytpKSB7Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2Vy
LT5nZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJl
TWFuYWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHRleHR1cmVN
YW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1tpXSkpOwotICAgIH0KLQotICAgIEVYUEVDVF9FUSh0
ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1l
bW9yeVVzZUJ5dGVzKCkpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJl
czsgKytpKSB7Ci0gICAgICAgIFRleHR1cmVUb2tlbiB0b2tlbiA9IHRleHR1cmVNYW5hZ2VyLT5n
ZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfRkFMU0UocmVxdWVzdFRleHR1cmUodGV4dHVyZU1h
bmFnZXIuZ2V0KCksIHRva2VuKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlTWFuYWdl
ci0+aGFzVGV4dHVyZSh0b2tlbikpOwotICAgIH0KLQotICAgIEVYUEVDVF9FUSh0ZXh0dXJlTWFu
YWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0
dXJlcykpOwotCi0gICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUodG9rZW5zWzFd
KTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZSh0b2tlbnNbM10pOwotICAg
IEVYUEVDVF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0ZXh0dXJl
TWFuYWdlci0+Z2V0VG9rZW4oKSkpOwotICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRl
eHR1cmVNYW5hZ2VyLmdldCgpLCB0ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKSkpOwotICAgIEVY
UEVDVF9GQUxTRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdGV4dHVyZU1h
bmFnZXItPmdldFRva2VuKCkpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1h
eFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5zWzFdKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1szXSkpOwot
fQotCi1URVNUX0YoVGV4dHVyZU1hbmFnZXJUZXN0LCByZWR1Y2VNZW1vcnlUb0xpbWl0KQotewot
ICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlcyA9IDg7Ci0gICAgY29uc3Qgc2l6ZV90IHByZWZl
cnJlZFRleHR1cmVzID0gNDsKLSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIobWF4VGV4dHVyZXMsIHByZWZlcnJlZFRleHR1cmVz
KTsKLSAgICBUZXh0dXJlVG9rZW4gdG9rZW5zW21heFRleHR1cmVzXTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpIHsKLSAgICAgICAgdG9rZW5zW2ldID0gdGV4
dHVyZU1hbmFnZXItPmdldFRva2VuKCk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RUZXh0
dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tlbnNbaV0pKTsKLSAgICB9Ci0KLSAgICBFWFBF
Q1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1
cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5
VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpKTsKLSAgICBFWFBFQ1RfRVEo
dGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRN
ZW1vcnlVc2VCeXRlcygpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1p
dCh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpKTsKLSAgICBFWFBFQ1RfRVEo
dGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRN
ZW1vcnlVc2VCeXRlcygpKTsKLQotICAgIGNvbnN0IHNpemVfdCB1bnByb3RlY3RlZFRleHR1cmVz
ID0gcHJlZmVycmVkVGV4dHVyZXMgKyAxOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJl
ZmVycmVkVGV4dHVyZXMgKyAxOyArK2kpCi0gICAgICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3Rl
Y3RUZXh0dXJlKHRva2Vuc1tpXSk7Ci0KLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5
VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpKTsKLSAgICBFWFBFQ1RfRVEo
dGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRN
ZW1vcnlVc2VCeXRlcygpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1p
dCh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpKTsKLSAgICBFWFBFQ1RfRVEo
dGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1
cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5
VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUoMSkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01l
bW9yeVNpemUobWF4VGV4dHVyZXMgLSB1bnByb3RlY3RlZFRleHR1cmVzKSwgdGV4dHVyZU1hbmFn
ZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLQotICAgIC8vIHJlZHVjZU1lbW9yeVRvTGlt
aXQgZG9lc24ndCBjaGFuZ2UgdGhlIGN1cnJlbnQgbWVtb3J5IGxpbWl0cy4KLSAgICBFWFBFQ1Rf
RVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPm1heE1l
bW9yeUxpbWl0Qnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVm
ZXJyZWRUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5wcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVz
KCkpOwotfQotCi1URVNUX0YoVGV4dHVyZU1hbmFnZXJUZXN0LCBzZXRNYXhNZW1vcnlMaW1pdEJ5
dGVzKQotewotICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlcyA9IDg7Ci0gICAgY29uc3Qgc2l6
ZV90IHByZWZlcnJlZFRleHR1cmVzID0gNDsKLSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIobWF4VGV4dHVyZXMsIHByZWZlcnJl
ZFRleHR1cmVzKTsKLSAgICBUZXh0dXJlVG9rZW4gdG9rZW5zW21heFRleHR1cmVzXTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpIHsKLSAgICAgICAgdG9rZW5z
W2ldID0gdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHJl
cXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tlbnNbaV0pKTsKLSAgICB9Ci0K
LSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1h
bmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLQotICAgIGNvbnN0IHNpemVfdCB1bnBy
b3RlY3RlZFRleHR1cmVzID0gcHJlZmVycmVkVGV4dHVyZXMgKyAxOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdW5wcm90ZWN0ZWRUZXh0dXJlczsgKytpKQotICAgICAgICB0ZXh0dXJlTWFu
YWdlci0+dW5wcm90ZWN0VGV4dHVyZSh0b2tlbnNbaV0pOwotCi0gICAgdGV4dHVyZU1hbmFnZXIt
PnNldE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSk7
Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVN
YW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnNl
dE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVz
KSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyks
IHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0VR
KHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5t
YXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwotfQotCi1URVNUX0YoVGV4dHVyZU1hbmFnZXJUZXN0LCBz
ZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKQotewotICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0
dXJlcyA9IDg7Ci0gICAgY29uc3Qgc2l6ZV90IHByZWZlcnJlZFRleHR1cmVzID0gNDsKLSAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlVGV4dHVyZU1hbmFn
ZXIobWF4VGV4dHVyZXMsIHByZWZlcnJlZFRleHR1cmVzKTsKLSAgICBUZXh0dXJlVG9rZW4gdG9r
ZW5zW21heFRleHR1cmVzXTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVz
OyArK2kpIHsKLSAgICAgICAgdG9rZW5zW2ldID0gdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgp
LCB0b2tlbnNbaV0pKTsKLSAgICB9Ci0KLSAgICBjb25zdCBzaXplX3QgdW5wcm90ZWN0ZWRUZXh0
dXJlcyA9IHByZWZlcnJlZFRleHR1cmVzICsgMTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHVucHJvdGVjdGVkVGV4dHVyZXM7ICsraSkKLSAgICAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJv
dGVjdFRleHR1cmUodG9rZW5zW2ldKTsKLQotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNp
emUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkp
OwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJl
TWFuYWdlci0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsKLQotICAgIC8vIFNldHRpbmcgcHJlZmVy
cmVkIG1lbW9yeSBsaW1pdCBvbmx5IHdvbid0IGZvcmNlIHJlZHVjZU1lbW9yeVRvTGltaXQuCi0g
ICAgdGV4dHVyZU1hbmFnZXItPnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNN
ZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVt
b3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0
ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRl
eHR1cmVNYW5hZ2VyLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0
dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+cHJlZmVy
cmVkTWVtb3J5TGltaXRCeXRlcygpKTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwg
dGV4dHVyZU1hbmFnZXJEZXN0cm95ZWRCZWZvcmVNYW5hZ2VkVGV4dHVyZSkKLXsKLSAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIo
MSwgMSk7Ci0gICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtYW5hZ2VkVGV4dHVyZSA9IE1hbmFn
ZWRUZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIuZ2V0KCkpOwotCi0gICAgSW50U2l6ZSBz
aXplKDUwLCA1MCk7Ci0gICAgdW5zaWduZWQgZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkE7Ci0KLSAgICAvLyBUZXh0dXJlIGlzIGluaXRpYWxseSBpbnZhbGlkLCBidXQgd2Ugc2hvdWxk
IGJlIGFibGUgdG8gcmVzZXJ2ZS4KLSAgICBFWFBFQ1RfRkFMU0UobWFuYWdlZFRleHR1cmUtPmlz
VmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0gICAgRVhQRUNUX1RSVUUobWFuYWdlZFRleHR1cmUtPnJl
c2VydmUoc2l6ZSwgZm9ybWF0KSk7Ci0gICAgRVhQRUNUX1RSVUUobWFuYWdlZFRleHR1cmUtPmlz
VmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0KLSAgICB0ZXh0dXJlTWFuYWdlci5jbGVhcigpOwotCi0g
ICAgLy8gRGVsZXRpbmcgdGhlIG1hbmFnZXIgc2hvdWxkIGludmFsaWRhdGUgdGhlIHRleHR1cmUg
YW5kIHJlc2VydmF0aW9uIGF0dGVtcHRzIHNob3VsZCBmYWlsLgotICAgIEVYUEVDVF9GQUxTRSht
YW5hZ2VkVGV4dHVyZS0+aXNWYWxpZChzaXplLCBmb3JtYXQpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
bWFuYWdlZFRleHR1cmUtPnJlc2VydmUoc2l6ZSwgZm9ybWF0KSk7Ci19Ci0KLVRFU1RfRihUZXh0
dXJlTWFuYWdlclRlc3QsIHRleHR1cmVNb3ZlZFRvTmV3TWFuYWdlcikKLXsKLSAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyT25lID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIo
MSwgMSk7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlclR3byA9IGNy
ZWF0ZVRleHR1cmVNYW5hZ2VyKDEsIDEpOwotICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbWFu
YWdlZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyT25lLmdl
dCgpKTsKLQotICAgIEludFNpemUgc2l6ZSg1MCwgNTApOwotICAgIHVuc2lnbmVkIGZvcm1hdCA9
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwotCi0gICAgLy8gVGV4dHVyZSBpcyBpbml0aWFsbHkg
aW52YWxpZCwgYnV0IHdlIHNob3VsZCBiZSBhYmxlIHRvIHJlc2VydmUuCi0gICAgRVhQRUNUX0ZB
TFNFKG1hbmFnZWRUZXh0dXJlLT5pc1ZhbGlkKHNpemUsIGZvcm1hdCkpOwotICAgIEVYUEVDVF9U
UlVFKG1hbmFnZWRUZXh0dXJlLT5yZXNlcnZlKHNpemUsIGZvcm1hdCkpOwotICAgIEVYUEVDVF9U
UlVFKG1hbmFnZWRUZXh0dXJlLT5pc1ZhbGlkKHNpemUsIGZvcm1hdCkpOwotCi0gICAgLy8gU2V0
dGluZyB0byB0aGUgc2FtZSBtYW5hZ2VyIHNob3VsZCBiZSBhIG5vLW9wLgotICAgIG1hbmFnZWRU
ZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdlcih0ZXh0dXJlTWFuYWdlck9uZS5nZXQoKSk7Ci0gICAg
RVhQRUNUX1RSVUUobWFuYWdlZFRleHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0KLSAg
ICAvLyBTZXR0aW5nIHRvIGEgZGlmZmVyZW50IG1hbmFnZXIgc2hvdWxkIGludmFsaWRhdGUgdGhl
IHRleHR1cmUuCi0gICAgbWFuYWdlZFRleHR1cmUtPnNldFRleHR1cmVNYW5hZ2VyKHRleHR1cmVN
YW5hZ2VyVHdvLmdldCgpKTsKLQotICAgIEVYUEVDVF9GQUxTRShtYW5hZ2VkVGV4dHVyZS0+aXNW
YWxpZChzaXplLCBmb3JtYXQpKTsKLSAgICBFWFBFQ1RfVFJVRShtYW5hZ2VkVGV4dHVyZS0+cmVz
ZXJ2ZShzaXplLCBmb3JtYXQpKTsKLSAgICBFWFBFQ1RfVFJVRShtYW5hZ2VkVGV4dHVyZS0+aXNW
YWxpZChzaXplLCBmb3JtYXQpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151843</attachid>
            <date>2012-07-11 19:00:59 -0700</date>
            <delta_ts>2012-07-11 19:03:46 -0700</delta_ts>
            <desc>add_fixme_remove_whitespace</desc>
            <filename>bug-91001-20120711190058.patch</filename>
            <type>text/plain</type>
            <size>90061</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg0ZDhiODYyMzliZjQy
NTUwY2RhY2E2OTMzOWNiNDZmYjAzZDY2YS4uMTY5ZTY4NmI4YmI4MzM3ZTNkOGZjNzI0OWRlN2Q0
MGRiMzcwZDAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTA3LTExICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSBD
Q1RleHR1cmUgaW4gQ0NQcmlvcml0aXplZFRleHR1cmUsIHJlbW92ZSBUZXh0dXJlTWFuYWdlci5o
LCBhbmQgbWlub3IgcmVmYWN0b3JpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBDQ1RleHR1cmUgdG8gY2xlYW4gdXAgQ0NQcmlvcml0aXplZFRl
eHR1cmU6OkJhY2tpbmcuCisgICAgICAgIEFkZCBUZXh0dXJlQWxsb2NhdG9yLmggYW5kIHJlbW92
ZSByZW1haW5kZXIgb2YgVGV4dHVyZU1hbmFnZXIuaC9jcHAuCisgICAgICAgIE1pbm9yIG1vdmUv
cmVmYWN0b3Jpbmcgb2YgbGluay91bmxpbmsgaW4gQ0NQcmlvcml0aXplZFRleHR1cmUuCisKKyAg
ICAgICAgUmVmYWN0b3JpbmcgLSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmguCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVBbGxvY2F0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZUFsbG9jYXRvcjo6flRleHR1cmVBbGxvY2F0b3IpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0RGltZW5zaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmxpbmspOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dW5saW5rKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4
dHVyZTo6Ynl0ZXMpOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmhhdmVCYWNraW5nVGV4dHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZzo6QmFja2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZzo6fkJhY2tpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmc6Om93bmVy
KToKKyAgICAgICAgKEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRl
eHR1cmU6OmJhY2tpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RMYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdU
ZXh0dXJlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjpyZWR1Y2VNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZ2lzdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJldHVybkJhY2tpbmdUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlQmFja2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ry
b3lCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6YXNzZXJ0SW52YXJpYW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNvbXBhcmVCYWNraW5ncyk6CisgICAgICAgIChD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGV4dHVyZTo6Q0NUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3Bw
OgorCiAyMDEyLTA3LTExICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUaWxlQ2FjaGUgbGF5ZXJzIGhhdmUgd3JvbmcgYm9yZGVyIGRlYnVnIGNvbG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDU2MDNkNDFjN2FlYjA4OGM3MTRjOGMxNDkwMjU2NTM5NTgw
MjBlYjIuLjA3YmUxMWYxZDY1NWE4NTg1ZmVmNWFhNTRjYjkyMDg1MmFkODU4ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDctMTEgIEVyaWMgUGVu
bmVyICA8ZXBlbm5lckBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIENDVGV4
dHVyZSBpbiBDQ1ByaW9yaXRpemVkVGV4dHVyZSwgcmVtb3ZlIFRleHR1cmVNYW5hZ2VyLmgsIGFu
ZCBtaW5vciByZWZhY3RvcmluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxMDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZpbmcgVGV4dHVyZU1hbmFnZXJUZXN0cyBhbG9uZyB3aXRoIFRleHR1
cmVNYW5hZ2VyCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NQcmlvcml0aXplZFRl
eHR1cmVUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0Ojp0
ZXh0dXJlc01lbW9yeVNpemUpOgorICAgICAgICAqIHRlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcDoK
KyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmg6CisgICAgICAgICogdGVz
dHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RleHR1cmVN
YW5hZ2VyVGVzdC5jcHA6IFJlbW92ZWQuCisKIDIwMTItMDctMTEgIFNoYXduIFNpbmdoICA8c2hh
d25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXgsIGZv
cmdvdCB0byBhZGQgVVJMVGVzdEhlbHBlcnMuKiB3aGVuIGxhbmRpbmcgcjEyMjM0NApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDcyZjc0ZTI0NmE4NzNlODI2OTExOTM1YjY4MGY1MmMzMGY5MWYzYWYuLmM2
MmJkNDQwMDk0MjBjYzQwMTg0MmE4ZTBiOTI5NzBiMzI4NzU5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTgyNDAsOCArODI0MCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgnLAotICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1DYW52YXMu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNh
bnZhcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9y
bUNvbG9yLmgnLApAQCAtODI2Myw4ICs4MjYxLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uaCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3Bw
JywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdl
ci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxs
b2NhdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVVcGxvYWRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGY4NjljNThh
MmNjYzBiMDlmMjNmNTJjNDcxYzMyYTkwNDhlZGNlNDQuLmQ3NWNmMDU0ZGM1MmU5YjI3Zjg1NTRh
YTVlNWFkN2JmNTllODIyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTGF5ZXJQ
YWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1Db250ZXh0U2tpYS5oIgorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKICNp
bmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRm
b3JtX2NhbnZhcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKaW5kZXggZDk3OTY4YzAzNTU2MjQzMDU1MmNmZDhiZjc5NzYwNDBmZjkzOGQy
Ni4uMjc2ZTJiMzkxNzkyNjczYzRhNGYyYjQ0MjlmZGFkODg2YjRlZGVhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzgsNiArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwog
Y2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiAvLyBU
aGlzIGNsYXNzIHJhc3Rlcml6ZXMgdGhlIGNvbnRlbnRSZWN0IGludG8gYSBza2lhIGJpdG1hcCBj
YW52YXMuIEl0IHRoZW4gdXBkYXRlcwogLy8gdGV4dHVyZXMgYnkgY29weWluZyBmcm9tIHRoZSBj
YW52YXMgaW50byB0aGUgdGV4dHVyZSwgdXNpbmcgTWFwU3ViSW1hZ2UgaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKaW5kZXggMjNjZmZlYTk0MjBjMWI2MDY0NTdiZmUxZWZmMjcyZWU4Y2FmMzU0My4uODZm
YjJjOGMzYjQxMzg4NWZlYjlmZGU4MjNmOTUyMDgyODllYjE2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVk
ZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0RldmljZS5oIgorI2luY2x1ZGUgIlRleHR1cmVB
bGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNzg3YjM5OTM3Yzk5ZTE3YTY0YWViNGQw
ODhhNWNlODk4YmVlZGI2Yy4uOWYxMzg4ODI3YjM2ZDc3Y2E4OTNmMzNmM2I3MTMwZjU2MzE2ZGZm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFRleHR1cmVBbGxvY2F0b3I7CisKIC8vIFRoaXMgY2xhc3MgcmVjb3JkcyB0
aGUgY29udGVudFJlY3QgaW50byBhbiBTa1BpY3R1cmUsIHRoZW4gc29mdHdhcmUgcmFzdGVyaXpl
cwogLy8gdGhlIFNrUGljdHVyZSBpbnRvIGJpdG1hcHMgZm9yIGVhY2ggdGlsZS4gVGhpcyBpbXBs
ZW1lbnRzIENDU2V0dGluZ3M6OnBlclRpbGVQYWludGluZy4KIGNsYXNzIEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCAxNDE2
NDEzM2QxNmI4MjFiNWQyMGM1ZDk0NTYyMjBiYTg2YTJiYjZjLi43ZGNkNzNhOGEwNDkxMjlkMmUy
OTgwM2IxYjRlYjU0ZjBlOGU1Yzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTM2LDcgKzM2LDYgQEAKIAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCiAj
aW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJl
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA1NWI1
OTI5YTM0NjkxN2E1ZTZjNDExYTUwYTAxYTkyZGZmZGVkNzg0Li5iNWY4NTMxNTc2MTQ5Yzc2MGQ2
Yjc3YmQyYjMxNWI0MDYwYWZlMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0NvbnRleHQz
RC5oIgogI2luY2x1ZGUgIlNrQml0bWFwLmgiCiAjaW5jbHVkZSAiU2tDb2xvci5oIgotI2luY2x1
ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
LmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvci5oIgpAQCAtMjE0LDEyICsyMTMsMTEgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmluaXRpYWxpemUoKQogICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVVzYWdlSGlu
dCA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FOR0xFX3RleHR1cmVfdXNhZ2UiKTsKIAogICAg
IG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVN0b3JhZ2VFeHRlbnNpb24gPSBleHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIik7Ci0KKyAgIAorICAgIG1fY2xpZW50
LT5zZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmRlZmF1bHRNZW1vcnlBbGxvY2F0aW9uTGltaXQoKSk7CiAgICAgbV9jYXBhYmlsaXRpZXMu
dXNpbmdHcHVNZW1vcnlNYW5hZ2VyID0gZXh0ZW5zaW9ucy5jb250YWlucygiR0xfQ0hST01JVU1f
Z3B1X21lbW9yeV9tYW5hZ2VyIik7CiAgICAgaWYgKG1fY2FwYWJpbGl0aWVzLnVzaW5nR3B1TWVt
b3J5TWFuYWdlcikKICAgICAgICAgbV9jb250ZXh0LT5zZXRNZW1vcnlBbGxvY2F0aW9uQ2hhbmdl
ZENhbGxiYWNrQ0hST01JVU0odGhpcyk7Ci0gICAgZWxzZQotICAgICAgICBtX2NsaWVudC0+c2V0
TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVz
KHZpZXdwb3J0U2l6ZSgpKSk7CiAKICAgICBtX2NhcGFiaWxpdGllcy51c2luZ0Rpc2NhcmRGcmFt
ZWJ1ZmZlciA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0NIUk9NSVVNX2Rpc2NhcmRfZnJhbWVi
dWZmZXIiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0ZGFiZjFiZWJkZWE1NjZjODBkOGIxY2I1YTJhZWU0YmY3YmMxZDkwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jaW5jbHVkZSAiTWFuYWdlZFRl
eHR1cmUuaCIKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiY2Mv
Q0NHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0
M0QuaD4KLQotdXNpbmcgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDsKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1NYW5hZ2VkVGV4dHVyZTo6TWFuYWdlZFRleHR1cmUoVGV4dHVyZU1hbmFn
ZXIqIG1hbmFnZXIpCi0gICAgOiBtX3RleHR1cmVNYW5hZ2VyKG1hbmFnZXIpCi0gICAgLCBtX3Rv
a2VuKDApCi0gICAgLCBtX2Zvcm1hdCgwKQotICAgICwgbV90ZXh0dXJlSWQoMCkKLXsKLSAgICBt
X3RleHR1cmVNYW5hZ2VyLT5yZWdpc3RlclRleHR1cmUodGhpcyk7Ci19Ci0KLU1hbmFnZWRUZXh0
dXJlOjpNYW5hZ2VkVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlciwgVGV4dHVyZVRva2Vu
IHRva2VuLCBJbnRTaXplIHNpemUsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdGV4dHVyZUlk
KQotICAgIDogbV90ZXh0dXJlTWFuYWdlcihtYW5hZ2VyKQotICAgICwgbV90b2tlbih0b2tlbikK
LSAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9mb3JtYXQoZm9ybWF0KQotICAgICwgbV90ZXh0
dXJlSWQodGV4dHVyZUlkKQotewotICAgIG1fdGV4dHVyZU1hbmFnZXItPnJlZ2lzdGVyVGV4dHVy
ZSh0aGlzKTsKLX0KLQotTWFuYWdlZFRleHR1cmU6On5NYW5hZ2VkVGV4dHVyZSgpCi17Ci0gICAg
aWYgKCFtX3RleHR1cmVNYW5hZ2VyKQotICAgICAgICByZXR1cm47Ci0gICAgbV90ZXh0dXJlTWFu
YWdlci0+dW5yZWdpc3RlclRleHR1cmUodGhpcyk7Ci0gICAgaWYgKG1fdG9rZW4pCi0gICAgICAg
IG1fdGV4dHVyZU1hbmFnZXItPnJlbGVhc2VUb2tlbihtX3Rva2VuKTsKLX0KLQotdm9pZCBNYW5h
Z2VkVGV4dHVyZTo6c2V0VGV4dHVyZU1hbmFnZXIoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCi17
Ci0gICAgaWYgKG1hbmFnZXIgPT0gbV90ZXh0dXJlTWFuYWdlcikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKG1fdGV4dHVyZU1hbmFnZXIpCi0gICAgICAgIG1fdGV4dHVyZU1hbmFnZXItPnVu
cmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwotICAgIG1fdGV4dHVyZU1hbmFnZXIgPSBtYW5hZ2VyOwot
ICAgIGNsZWFyKCk7Ci0gICAgaWYgKG1fdGV4dHVyZU1hbmFnZXIpCi0gICAgICAgIG1fdGV4dHVy
ZU1hbmFnZXItPnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsKLX0KLQotYm9vbCBNYW5hZ2VkVGV4dHVy
ZTo6aXNWYWxpZChjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBmb3JtYXQpCi17Ci0gICAg
cmV0dXJuIG1fdG9rZW4gJiYgc2l6ZSA9PSBtX3NpemUgJiYgZm9ybWF0ID09IG1fZm9ybWF0ICYm
IG1fdGV4dHVyZU1hbmFnZXIgJiYgbV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2Vu
KTsKLX0KLQotYm9vbCBNYW5hZ2VkVGV4dHVyZTo6cmVzZXJ2ZShjb25zdCBJbnRTaXplJiBzaXpl
LCB1bnNpZ25lZCBmb3JtYXQpCi17Ci0gICAgaWYgKCFtX3RleHR1cmVNYW5hZ2VyKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1fdG9rZW4pCi0gICAgICAgIG1fdG9rZW4gPSBt
X3RleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotCi0gICAgYm9vbCByZXNlcnZlZCA9IHRydWU7
Ci0gICAgaWYgKHNpemUgPT0gbV9zaXplICYmIGZvcm1hdCA9PSBtX2Zvcm1hdCAmJiBtX3RleHR1
cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKQotICAgICAgICBtX3RleHR1cmVNYW5hZ2Vy
LT5wcm90ZWN0VGV4dHVyZShtX3Rva2VuKTsKLSAgICBlbHNlIHsKLSAgICAgICAgbV90ZXh0dXJl
SWQgPSAwOwotICAgICAgICByZXNlcnZlZCA9IG1fdGV4dHVyZU1hbmFnZXItPnJlcXVlc3RUZXh0
dXJlKG1fdG9rZW4sIHNpemUsIGZvcm1hdCk7Ci0gICAgICAgIGlmIChyZXNlcnZlZCkgewotICAg
ICAgICAgICAgbV9zaXplID0gc2l6ZTsKLSAgICAgICAgICAgIG1fZm9ybWF0ID0gZm9ybWF0Owot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc2VydmVkOwotfQotCi12b2lkIE1hbmFn
ZWRUZXh0dXJlOjp1bnJlc2VydmUoKQotewotICAgIGlmICghbV90b2tlbiB8fCAhbV90ZXh0dXJl
TWFuYWdlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV90ZXh0dXJlTWFuYWdlci0+dW5wcm90
ZWN0VGV4dHVyZShtX3Rva2VuKTsKLX0KLQotdm9pZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGUo
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotewotICAgIEFTU0VSVChtX3RleHR1cmVNYW5h
Z2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKLSAgICBpZiAoIW1fdGV4dHVyZUlkKQotICAgICAg
ICBtX3RleHR1cmVJZCA9IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9jYXRlVGV4dHVyZShhbGxvY2F0
b3IsIG1fdG9rZW4pOwotfQotCi12b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShDQ0dy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotewot
ICAgIGFsbG9jYXRlKGFsbG9jYXRvcik7Ci0gICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICghY29udGV4dDNkKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGlu
Zy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb250ZXh0M2QtPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCk7Ci19Ci0KLVBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IE1hbmFnZWRUZXh0dXJlOjpzdGVhbCgpCi17Ci0gICAgT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlID0gYWRvcHRQdHIobmV3IE1hbmFnZWRUZXh0dXJlKG1f
dGV4dHVyZU1hbmFnZXIsIG1fdG9rZW4sIG1fc2l6ZSwgbV9mb3JtYXQsIG1fdGV4dHVyZUlkKSk7
Ci0gICAgY2xlYXIoKTsKLSAgICByZXR1cm4gdGV4dHVyZS5yZWxlYXNlKCk7Ci19Ci0KLXZvaWQg
TWFuYWdlZFRleHR1cmU6OmNsZWFyKCkKLXsKLSAgICBtX3Rva2VuID0gMDsKLSAgICBtX3NpemUg
PSBJbnRTaXplKCk7Ci0gICAgbV9mb3JtYXQgPSAwOwotICAgIG1fdGV4dHVyZUlkID0gMDsKLX0K
LQotfQotCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRU
ZXh0dXJlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNjdlYmY2OGVhNWVlYmFj
NDljYmM1ODYwODQ1ZjdmN2JiNTg0OTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TWFuYWdlZFRleHR1cmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIE1hbmFnZWRUZXh0dXJlX2gKLSNkZWZpbmUgTWFuYWdlZFRleHR1cmVf
aAotCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCi0K
LSNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDR3JhcGhpY3NDb250ZXh0OwotCi1j
bGFzcyBNYW5hZ2VkVGV4dHVyZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFuYWdlZFRl
eHR1cmUpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBj
cmVhdGUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IE1hbmFnZWRUZXh0dXJlKG1hbmFnZXIpKTsKLSAgICB9Ci0gICAgfk1hbmFnZWRU
ZXh0dXJlKCk7Ci0KLSAgICB2b2lkIHNldFRleHR1cmVNYW5hZ2VyKFRleHR1cmVNYW5hZ2VyKik7
Ci0gICAgdm9pZCBjbGVhck1hbmFnZXIoKSB7IG1fdGV4dHVyZU1hbmFnZXIgPSAwOyB9Ci0KLSAg
ICBib29sIGlzVmFsaWQoY29uc3QgSW50U2l6ZSYsIHVuc2lnbmVkIGZvcm1hdCk7Ci0gICAgYm9v
bCByZXNlcnZlKGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmb3JtYXQpOwotICAgIHZvaWQgdW5y
ZXNlcnZlKCk7Ci0gICAgYm9vbCBpc1Jlc2VydmVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X3RleHR1cmVNYW5hZ2VyICYmIG1fdGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKG1fdG9rZW4p
OwotICAgIH0KLQotICAgIHZvaWQgYWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciopOwotICAgIHZv
aWQgYmluZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKik7Ci0K
LSAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICB1bnNpZ25l
ZCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQotICAgIHVuc2lnbmVkIHRleHR1
cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9Ci0KLSAgICAvLyBTdGVhbCB0b2tl
biBhbmQgdGV4dHVyZUlkIGJ5IGluc3RhbnRpYXRlcyBhIG5ldyB0ZXh0dXJlIHVzaW5nIGV4aXN0
aW5nCi0gICAgLy8gbWVtYmVyIHZhcmlhYmxlcy4KLSAgICBQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiBzdGVhbCgpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IE1hbmFnZWRUZXh0dXJlKFRl
eHR1cmVNYW5hZ2VyKik7Ci0gICAgTWFuYWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqLCBUZXh0
dXJlVG9rZW4sIEludFNpemUsIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdGV4dHVyZUlkKTsK
LQotICAgIHZvaWQgY2xlYXIoKTsKLQotICAgIFRleHR1cmVNYW5hZ2VyKiBtX3RleHR1cmVNYW5h
Z2VyOwotICAgIFRleHR1cmVUb2tlbiBtX3Rva2VuOwotICAgIEludFNpemUgbV9zaXplOwotICAg
IHVuc2lnbmVkIG1fZm9ybWF0OwotICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotfTsKLQotfQot
Ci0jZW5kaWYgLy8gTWFuYWdlZFRleHR1cmVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21p
dW0uaAppbmRleCAwZTdkNGUzOGM1NmMxZWNjZDk2ZjVjYmFmZDc0ZjlkZTVmM2Q4N2Q5Li4yYjYw
OGY0ZTcyNzI3ZTNhMTA4ZDFlNjk2NGRlNjM5NDA5NmQyOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJT
dXJmYWNlQ2hyb21pdW0uaApAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIGNsYXNzIExheWVy
UmVuZGVyZXJDaHJvbWl1bTsKLWNsYXNzIE1hbmFnZWRUZXh0dXJlOwogCiBjbGFzcyBSZW5kZXJT
dXJmYWNlQ2hyb21pdW0gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlclN1cmZhY2VD
aHJvbWl1bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThkZTExNTIyYjRh
YWRhZTE2YmNiMjdlMDU0ZmY3MzdiODg2YjgzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVBbGxvY2F0b3IuaApAQCAt
MCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFRleHR1cmVBbGxvY2F0b3Jf
aAorI2RlZmluZSBUZXh0dXJlQWxsb2NhdG9yX2gKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlQWxsb2NhdG9yIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVt
IGZvcm1hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRl
eHR1cmUsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVBbGxUZXh0dXJlcygpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflRleHR1
cmVBbGxvY2F0b3IoKSB7IH0KK307CisKK30KKworI2VuZGlmCisKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFn
ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODVjNzIyMjhlYzAzN2ZjY2U1
ZjNmZWM0MDA5MjQ4NTIzN2MwNmJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rl
eHR1cmVNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyNSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQotCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKLQotI2luY2x1ZGUgIk1hbmFn
ZWRUZXh0dXJlLmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgotCi11c2luZyBuYW1lc3BhY2Ug
c3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLQotbmFtZXNwYWNlIHsKLXNpemVfdCBtZW1v
cnlMaW1pdEJ5dGVzKHNpemVfdCB2aWV3cG9ydE11bHRpcGxpZXIsIGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSwgc2l6ZV90IG1pbk1lZ2FieXRlcywgc2l6ZV90IG1heE1lZ2FieXRlcykKLXsK
LSAgICBpZiAoIXZpZXdwb3J0TXVsdGlwbGllcikKLSAgICAgICAgcmV0dXJuIG1heE1lZ2FieXRl
cyAqIDEwMjQgKiAxMDI0OwotICAgIGlmICh2aWV3cG9ydFNpemUuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gbWluTWVnYWJ5dGVzICogMTAyNCAqIDEwMjQ7Ci0gICAgcmV0dXJuIG1heChtaW5N
ZWdhYnl0ZXMgKiAxMDI0ICogMTAyNCwgbWluKG1heE1lZ2FieXRlcyAqIDEwMjQgKiAxMDI0LCB2
aWV3cG9ydE11bHRpcGxpZXIgKiBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXModmlld3Bv
cnRTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpKTsKLX0KLX0KLQotc2l6ZV90IFRleHR1
cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCi17
Ci0gICAgc2l6ZV90IHZpZXdwb3J0TXVsdGlwbGllciwgbWluTWVnYWJ5dGVzLCBtYXhNZWdhYnl0
ZXM7Ci0jaWYgT1MoQU5EUk9JRCkKLSAgICB2aWV3cG9ydE11bHRpcGxpZXIgPSAxNjsKLSAgICBt
aW5NZWdhYnl0ZXMgPSAzMjsKLSAgICBtYXhNZWdhYnl0ZXMgPSA2NDsKLSNlbHNlCi0gICAgdmll
d3BvcnRNdWx0aXBsaWVyID0gMDsKLSAgICBtaW5NZWdhYnl0ZXMgPSAwOwotICAgIG1heE1lZ2Fi
eXRlcyA9IDEyODsKLSNlbmRpZgotICAgIHJldHVybiBtZW1vcnlMaW1pdEJ5dGVzKHZpZXdwb3J0
TXVsdGlwbGllciwgdmlld3BvcnRTaXplLCBtaW5NZWdhYnl0ZXMsIG1heE1lZ2FieXRlcyk7Ci19
Ci0KLXNpemVfdCBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXMoY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplKQotewotICAgIHNpemVfdCB2aWV3cG9ydE11bHRpcGxpZXIsIG1pbk1l
Z2FieXRlcywgbWF4TWVnYWJ5dGVzOwotI2lmIE9TKEFORFJPSUQpCi0gICAgdmlld3BvcnRNdWx0
aXBsaWVyID0gODsKLSAgICBtaW5NZWdhYnl0ZXMgPSAxNjsKLSAgICBtYXhNZWdhYnl0ZXMgPSAz
MjsKLSNlbHNlCi0gICAgdmlld3BvcnRNdWx0aXBsaWVyID0gMDsKLSAgICBtaW5NZWdhYnl0ZXMg
PSAwOwotICAgIG1heE1lZ2FieXRlcyA9IDY0OwotI2VuZGlmCi0gICAgcmV0dXJuIG1lbW9yeUxp
bWl0Qnl0ZXModmlld3BvcnRNdWx0aXBsaWVyLCB2aWV3cG9ydFNpemUsIG1pbk1lZ2FieXRlcywg
bWF4TWVnYWJ5dGVzKTsKLX0KLQotc2l6ZV90IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRl
cyhjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KQotewotICAgIC8v
IEZJWE1FOiBUaGlzIGFzc3VtZXMgYWxsIHRleHR1cmVzIGFyZSAxIGJ5dGUvY29tcG9uZW50Lgot
ICAgIGNvbnN0IEdDM0RlbnVtIHR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllU
RTsKLSAgICB1bnNpZ25lZCBpbnQgY29tcG9uZW50c1BlclBpeGVsID0gNDsKLSAgICB1bnNpZ25l
ZCBpbnQgYnl0ZXNQZXJDb21wb25lbnQgPSAxOwotICAgIGlmICghR3JhcGhpY3NDb250ZXh0M0Q6
OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyh0ZXh0dXJlRm9ybWF0LCB0eXBlLCAmY29t
cG9uZW50c1BlclBpeGVsLCAmYnl0ZXNQZXJDb21wb25lbnQpKQotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLQotICAgIHJldHVybiBzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpICog
Y29tcG9uZW50c1BlclBpeGVsICogYnl0ZXNQZXJDb21wb25lbnQ7Ci19Ci0KLQotVGV4dHVyZU1h
bmFnZXI6OlRleHR1cmVNYW5hZ2VyKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBzaXplX3Qg
cHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKQotICAgIDogbV9t
YXhNZW1vcnlMaW1pdEJ5dGVzKG1heE1lbW9yeUxpbWl0Qnl0ZXMpCi0gICAgLCBtX3ByZWZlcnJl
ZE1lbW9yeUxpbWl0Qnl0ZXMocHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcykKLSAgICAsIG1fbWVt
b3J5VXNlQnl0ZXMoMCkKLSAgICAsIG1fbWF4VGV4dHVyZVNpemUobWF4VGV4dHVyZVNpemUpCi0g
ICAgLCBtX25leHRUb2tlbigxKQotewotfQotCi1UZXh0dXJlTWFuYWdlcjo6flRleHR1cmVNYW5h
Z2VyKCkKLXsKLSAgICBmb3IgKEhhc2hTZXQ8TWFuYWdlZFRleHR1cmUqPjo6aXRlcmF0b3IgaXQg
PSBtX3JlZ2lzdGVyZWRUZXh0dXJlcy5iZWdpbigpOyBpdCAhPSBtX3JlZ2lzdGVyZWRUZXh0dXJl
cy5lbmQoKTsgKytpdCkKLSAgICAgICAgKCppdCktPmNsZWFyTWFuYWdlcigpOwotfQotCi12b2lk
IFRleHR1cmVNYW5hZ2VyOjpzZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QgbWVt
b3J5TGltaXRCeXRlcykKLXsKLSAgICBzZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0
Qnl0ZXMpOwotI2lmIGRlZmluZWQoT1NfQU5EUk9JRCkKLSAgICAvLyBPbiBhbmRyb2lkLCB3ZSBh
cmUgc2V0dGluZyB0aGUgcHJlZmVycmVkIG1lbW9yeSBsaW1pdCB0byBoYWxmIG9mIG91cgotICAg
IC8vIG1heGltdW0gYWxsb2NhdGlvbiwgYmVjYXVzZSB3ZSB3b3VsZCBsaWtlIHRvIHN0YXkgc2ln
bmlmaWNhbnRseSBiZWxvdwotICAgIC8vIHRoZSBhYnNvbHV0ZSBtZW1vcnkgbGltaXQgd2hlbmV2
ZXIgd2UgY2FuLiBTcGVjaWZpY2FsbHksIGJ5IGxpbWl0dGluZwotICAgIC8vIHByZXBhaW50aW5n
IG9ubHkgdG8gdGhlIGhhbGZ3YXkgbWVtb3J5IG1hcmsuCi0gICAgc2V0UHJlZmVycmVkTWVtb3J5
TGltaXRCeXRlcyhtZW1vcnlMaW1pdEJ5dGVzIC8gMik7Ci0jZWxzZQotICAgIHNldFByZWZlcnJl
ZE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXRCeXRlcyk7Ci0jZW5kaWYKLX0KLQotdm9pZCBU
ZXh0dXJlTWFuYWdlcjo6c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhzaXplX3QgbWVtb3J5TGltaXRC
eXRlcykKLXsKLSAgICByZWR1Y2VNZW1vcnlUb0xpbWl0KG1lbW9yeUxpbWl0Qnl0ZXMpOwotICAg
IEFTU0VSVChjdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSA8PSBtZW1vcnlMaW1pdEJ5dGVzKTsKLSAg
ICBtX21heE1lbW9yeUxpbWl0Qnl0ZXMgPSBtZW1vcnlMaW1pdEJ5dGVzOwotfQotCi12b2lkIFRl
eHR1cmVNYW5hZ2VyOjpzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCBtZW1vcnlM
aW1pdEJ5dGVzKQotewotICAgIG1fcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyA9IG1lbW9yeUxp
bWl0Qnl0ZXM7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnJlZ2lzdGVyVGV4dHVyZShNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSkKLXsKLSAgICBBU1NFUlQodGV4dHVyZSk7Ci0gICAgQVNTRVJU
KCFtX3JlZ2lzdGVyZWRUZXh0dXJlcy5jb250YWlucyh0ZXh0dXJlKSk7Ci0KLSAgICBtX3JlZ2lz
dGVyZWRUZXh0dXJlcy5hZGQodGV4dHVyZSk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnVu
cmVnaXN0ZXJUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQotewotICAgIEFTU0VSVCh0
ZXh0dXJlKTsKLSAgICBBU1NFUlQobV9yZWdpc3RlcmVkVGV4dHVyZXMuY29udGFpbnModGV4dHVy
ZSkpOwotCi0gICAgbV9yZWdpc3RlcmVkVGV4dHVyZXMucmVtb3ZlKHRleHR1cmUpOwotfQotCi1U
ZXh0dXJlVG9rZW4gVGV4dHVyZU1hbmFnZXI6OmdldFRva2VuKCkKLXsKLSAgICByZXR1cm4gbV9u
ZXh0VG9rZW4rKzsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVsZWFzZVRva2VuKFRleHR1
cmVUb2tlbiB0b2tlbikKLXsKLSAgICBUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4dHVy
ZXMuZmluZCh0b2tlbik7Ci0gICAgaWYgKGl0ICE9IG1fdGV4dHVyZXMuZW5kKCkpCi0gICAgICAg
IHJlbW92ZVRleHR1cmUodG9rZW4sIGl0LT5zZWNvbmQpOwotfQotCi1ib29sIFRleHR1cmVNYW5h
Z2VyOjpoYXNUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbikKLXsKLSAgICByZXR1cm4gbV90ZXh0
dXJlcy5jb250YWlucyh0b2tlbik7Ci19Ci0KLWJvb2wgVGV4dHVyZU1hbmFnZXI6OmlzUHJvdGVj
dGVkKFRleHR1cmVUb2tlbiB0b2tlbikKLXsKLSAgICByZXR1cm4gdG9rZW4gJiYgaGFzVGV4dHVy
ZSh0b2tlbikgJiYgbV90ZXh0dXJlcy5nZXQodG9rZW4pLmlzUHJvdGVjdGVkOwotfQotCi12b2lk
IFRleHR1cmVNYW5hZ2VyOjpwcm90ZWN0VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0g
ICAgQVNTRVJUKGhhc1RleHR1cmUodG9rZW4pKTsKLSAgICBUZXh0dXJlSW5mbyBpbmZvID0gbV90
ZXh0dXJlcy50YWtlKHRva2VuKTsKLSAgICBpbmZvLmlzUHJvdGVjdGVkID0gdHJ1ZTsKLSAgICBt
X3RleHR1cmVzLmFkZCh0b2tlbiwgaW5mbyk7Ci0gICAgLy8gSWYgc29tZW9uZSBwcm90ZWN0cyBh
IHRleHR1cmUsIHB1dCBpdCBhdCB0aGUgZW5kIG9mIHRoZSBMUlUgbGlzdC4KLSAgICBtX3RleHR1
cmVMUlVTZXQucmVtb3ZlKHRva2VuKTsKLSAgICBtX3RleHR1cmVMUlVTZXQuYWRkKHRva2VuKTsK
LX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6dW5wcm90ZWN0VGV4dHVyZShUZXh0dXJlVG9rZW4g
dG9rZW4pCi17Ci0gICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQo
dG9rZW4pOwotICAgIGlmIChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKQotICAgICAgICBpdC0+c2Vj
b25kLmlzUHJvdGVjdGVkID0gZmFsc2U7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnVucHJv
dGVjdEFsbFRleHR1cmVzKCkKLXsKLSAgICBmb3IgKFRleHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0g
bV90ZXh0dXJlcy5iZWdpbigpOyBpdCAhPSBtX3RleHR1cmVzLmVuZCgpOyArK2l0KQotICAgICAg
ICBpdC0+c2Vjb25kLmlzUHJvdGVjdGVkID0gZmFsc2U7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFn
ZXI6OmV2aWN0VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCi17
Ci0gICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJUZXh0dXJlTWFuYWdlcjo6ZXZpY3RUZXh0dXJlIik7
Ci0gICAgcmVtb3ZlVGV4dHVyZSh0b2tlbiwgaW5mbyk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFn
ZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQoc2l6ZV90IGxpbWl0KQotewotICAgIHdoaWxlIChtX21l
bW9yeVVzZUJ5dGVzID4gbGltaXQpIHsKLSAgICAgICAgQVNTRVJUKCFtX3RleHR1cmVMUlVTZXQu
aXNFbXB0eSgpKTsKLSAgICAgICAgYm9vbCBmb3VuZENhbmRpZGF0ZSA9IGZhbHNlOwotICAgICAg
ICBmb3IgKExpc3RIYXNoU2V0PFRleHR1cmVUb2tlbj46Oml0ZXJhdG9yIGxydUl0ID0gbV90ZXh0
dXJlTFJVU2V0LmJlZ2luKCk7IGxydUl0ICE9IG1fdGV4dHVyZUxSVVNldC5lbmQoKTsgKytscnVJ
dCkgewotICAgICAgICAgICAgVGV4dHVyZVRva2VuIHRva2VuID0gKmxydUl0OwotICAgICAgICAg
ICAgVGV4dHVyZUluZm8gaW5mbyA9IG1fdGV4dHVyZXMuZ2V0KHRva2VuKTsKLSAgICAgICAgICAg
IGlmIChpbmZvLmlzUHJvdGVjdGVkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgZXZpY3RUZXh0dXJlKHRva2VuLCBpbmZvKTsKLSAgICAgICAgICAgIGZvdW5kQ2FuZGlk
YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmICgh
Zm91bmRDYW5kaWRhdGUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIFRl
eHR1cmVNYW5hZ2VyOjphZGRUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4dHVyZUluZm8g
aW5mbykKLXsKLSAgICBBU1NFUlQoIW1fdGV4dHVyZUxSVVNldC5jb250YWlucyh0b2tlbikpOwot
ICAgIEFTU0VSVCghbV90ZXh0dXJlcy5jb250YWlucyh0b2tlbikpOwotICAgIG1fbWVtb3J5VXNl
Qnl0ZXMgKz0gbWVtb3J5VXNlQnl0ZXMoaW5mby5zaXplLCBpbmZvLmZvcm1hdCk7Ci0gICAgbV90
ZXh0dXJlcy5zZXQodG9rZW4sIGluZm8pOwotICAgIG1fdGV4dHVyZUxSVVNldC5hZGQodG9rZW4p
OwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpkZWxldGVFdmljdGVkVGV4dHVyZXMoVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKQotewotICAgIGlmIChhbGxvY2F0b3IpIHsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V2aWN0ZWRUZXh0dXJlcy5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgaWYgKG1fZXZpY3RlZFRleHR1cmVzW2ldLnRleHR1cmVJZCkgewotI2lmbmRl
ZiBOREVCVUcKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9ldmljdGVkVGV4dHVyZXNbaV0uYWxs
b2NhdG9yID09IGFsbG9jYXRvcik7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBhbGxvY2F0b3It
PmRlbGV0ZVRleHR1cmUobV9ldmljdGVkVGV4dHVyZXNbaV0udGV4dHVyZUlkLCBtX2V2aWN0ZWRU
ZXh0dXJlc1tpXS5zaXplLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5mb3JtYXQpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIG1fZXZpY3RlZFRleHR1cmVzLmNsZWFyKCk7Ci19
Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OmV2aWN0QW5kUmVtb3ZlQWxsRGVsZXRlZFRleHR1cmVz
KCkKLXsKLSAgICB1bnByb3RlY3RBbGxUZXh0dXJlcygpOwotICAgIHJlZHVjZU1lbW9yeVRvTGlt
aXQoMCk7Ci0gICAgbV9ldmljdGVkVGV4dHVyZXMuY2xlYXIoKTsKLX0KLQotdm9pZCBUZXh0dXJl
TWFuYWdlcjo6ZXZpY3RBbmREZWxldGVBbGxUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCi17Ci0gICAgdW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKLSAgICByZWR1Y2VNZW1vcnlU
b0xpbWl0KDApOwotICAgIGRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhhbGxvY2F0b3IpOwotfQotCi12
b2lkIFRleHR1cmVNYW5hZ2VyOjpyZW1vdmVUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgVGV4
dHVyZUluZm8gaW5mbykKLXsKLSAgICBBU1NFUlQobV90ZXh0dXJlTFJVU2V0LmNvbnRhaW5zKHRv
a2VuKSk7Ci0gICAgQVNTRVJUKG1fdGV4dHVyZXMuY29udGFpbnModG9rZW4pKTsKLSAgICBtX21l
bW9yeVVzZUJ5dGVzIC09IG1lbW9yeVVzZUJ5dGVzKGluZm8uc2l6ZSwgaW5mby5mb3JtYXQpOwot
ICAgIG1fdGV4dHVyZXMucmVtb3ZlKHRva2VuKTsKLSAgICBBU1NFUlQobV90ZXh0dXJlTFJVU2V0
LmNvbnRhaW5zKHRva2VuKSk7Ci0gICAgbV90ZXh0dXJlTFJVU2V0LnJlbW92ZSh0b2tlbik7Ci0g
ICAgRXZpY3Rpb25FbnRyeSBlbnRyeTsKLSAgICBlbnRyeS50ZXh0dXJlSWQgPSBpbmZvLnRleHR1
cmVJZDsKLSAgICBlbnRyeS5zaXplID0gaW5mby5zaXplOwotICAgIGVudHJ5LmZvcm1hdCA9IGlu
Zm8uZm9ybWF0OwotI2lmbmRlZiBOREVCVUcKLSAgICBlbnRyeS5hbGxvY2F0b3IgPSBpbmZvLmFs
bG9jYXRvcjsKLSNlbmRpZgotICAgIG1fZXZpY3RlZFRleHR1cmVzLmFwcGVuZChlbnRyeSk7Ci19
Ci0KLXVuc2lnbmVkIFRleHR1cmVNYW5hZ2VyOjphbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBUZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0gICAgVGV4dHVyZU1hcDo6
aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQodG9rZW4pOwotICAgIEFTU0VSVChpdCAhPSBt
X3RleHR1cmVzLmVuZCgpKTsKLSAgICBUZXh0dXJlSW5mbyogaW5mbyA9ICZpdC5nZXQoKS0+c2Vj
b25kOwotICAgIEFTU0VSVChpbmZvLT5pc1Byb3RlY3RlZCk7Ci0KLSAgICB1bnNpZ25lZCB0ZXh0
dXJlSWQgPSBhbGxvY2F0b3ItPmNyZWF0ZVRleHR1cmUoaW5mby0+c2l6ZSwgaW5mby0+Zm9ybWF0
KTsKLSAgICBpbmZvLT50ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7Ci0jaWZuZGVmIE5ERUJVRwotICAg
IGluZm8tPmFsbG9jYXRvciA9IGFsbG9jYXRvcjsKLSNlbmRpZgotICAgIHJldHVybiB0ZXh0dXJl
SWQ7Ci19Ci0KLWJvb2wgVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RUZXh0dXJlKFRleHR1cmVUb2tl
biB0b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNpZ25lZCBmb3JtYXQpCi17Ci0gICAgaWYgKHNpemUu
d2lkdGgoKSA+IG1fbWF4VGV4dHVyZVNpemUgfHwgc2l6ZS5oZWlnaHQoKSA+IG1fbWF4VGV4dHVy
ZVNpemUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9y
IGl0ID0gbV90ZXh0dXJlcy5maW5kKHRva2VuKTsKLSAgICBpZiAoaXQgIT0gbV90ZXh0dXJlcy5l
bmQoKSkgewotICAgICAgICBBU1NFUlQoaXQtPnNlY29uZC5zaXplICE9IHNpemUgfHwgaXQtPnNl
Y29uZC5mb3JtYXQgIT0gZm9ybWF0KTsKLSAgICAgICAgcmVtb3ZlVGV4dHVyZSh0b2tlbiwgaXQt
PnNlY29uZCk7Ci0gICAgfQotCi0gICAgc2l6ZV90IG1lbW9yeVJlcXVpcmVkQnl0ZXMgPSBtZW1v
cnlVc2VCeXRlcyhzaXplLCBmb3JtYXQpOwotICAgIGlmIChtZW1vcnlSZXF1aXJlZEJ5dGVzID4g
bV9tYXhNZW1vcnlMaW1pdEJ5dGVzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZWR1
Y2VNZW1vcnlUb0xpbWl0KG1fbWF4TWVtb3J5TGltaXRCeXRlcyAtIG1lbW9yeVJlcXVpcmVkQnl0
ZXMpOwotICAgIGlmIChtX21lbW9yeVVzZUJ5dGVzICsgbWVtb3J5UmVxdWlyZWRCeXRlcyA+IG1f
bWF4TWVtb3J5TGltaXRCeXRlcykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgVGV4dHVy
ZUluZm8gaW5mbzsKLSAgICBpbmZvLnNpemUgPSBzaXplOwotICAgIGluZm8uZm9ybWF0ID0gZm9y
bWF0OwotICAgIGluZm8udGV4dHVyZUlkID0gMDsKLSAgICBpbmZvLmlzUHJvdGVjdGVkID0gdHJ1
ZTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgaW5mby5hbGxvY2F0b3IgPSAwOwotI2VuZGlmCi0gICAg
YWRkVGV4dHVyZSh0b2tlbiwgaW5mbyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2ExODliY2NkMzQwZTNlYzliNDczZWE4ZThm
ZTJiOTUxOGJhYTU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5h
Z2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgVGV4dHVyZU1hbmFnZXJfaAotI2RlZmluZSBUZXh0dXJlTWFuYWdlcl9oCi0KLSNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRl
ICJJbnRTaXplLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xp
c3RIYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIE1hbmFnZWRUZXh0dXJlOwotdHlwZWRlZiBpbnQgVGV4dHVyZVRva2VuOwot
Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHVuc2lnbmVk
IGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmUsIGNvbnN0IEludFNp
emUmLCBHQzNEZW51bSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxUZXh0dXJlcygp
ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgflRleHR1cmVBbGxvY2F0b3IoKSB7IH0K
LX07Ci0KLWNsYXNzIFRleHR1cmVNYW5hZ2VyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShU
ZXh0dXJlTWFuYWdlcik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8VGV4dHVyZU1h
bmFnZXI+IGNyZWF0ZShzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90IHByZWZlcnJl
ZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZU1hbmFnZXIobWF4TWVtb3J5TGltaXRCeXRlcywgcHJl
ZmVycmVkTWVtb3J5TGltaXRCeXRlcywgbWF4VGV4dHVyZVNpemUpKTsKLSAgICB9Ci0gICAgflRl
eHR1cmVNYW5hZ2VyKCk7Ci0KLSAgICAvLyBBYnNvbHV0ZSBtYXhpbXVtIGxpbWl0IGZvciB0ZXh0
dXJlIGFsbG9jYXRpb25zIGZvciB0aGlzIGluc3RhbmNlLgotICAgIHN0YXRpYyBzaXplX3QgaGln
aExpbWl0Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKTsKLSAgICAvLyBQcmVmZXJy
ZWQgdGV4dHVyZSBzaXplIGxpbWl0IGdpdmVuIHRoZSB2aWV3cG9ydCBzaXplLgotICAgIHN0YXRp
YyBzaXplX3QgcmVjbGFpbUxpbWl0Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKTsK
LQotICAgIHN0YXRpYyBzaXplX3QgbWVtb3J5VXNlQnl0ZXMoY29uc3QgSW50U2l6ZSYsIEdDM0Rl
bnVtIGZvcm1hdCk7Ci0KLSAgICB2b2lkIHNldE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKHNp
emVfdCk7Ci0gICAgdm9pZCBzZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCk7Ci0gICAgc2l6
ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMoKSB7IHJldHVybiBtX21heE1lbW9yeUxpbWl0Qnl0ZXM7
IH0KLSAgICB2b2lkIHNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90KTsKLSAgICBz
aXplX3QgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcygpIHsgcmV0dXJuIG1fcHJlZmVycmVkTWVt
b3J5TGltaXRCeXRlczsgfQotCi0gICAgdm9pZCByZWdpc3RlclRleHR1cmUoTWFuYWdlZFRleHR1
cmUqKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKik7Ci0KLSAg
ICBUZXh0dXJlVG9rZW4gZ2V0VG9rZW4oKTsKLSAgICB2b2lkIHJlbGVhc2VUb2tlbihUZXh0dXJl
VG9rZW4pOwotICAgIGJvb2wgaGFzVGV4dHVyZShUZXh0dXJlVG9rZW4pOwotCi0gICAgYm9vbCBy
ZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9rZW4sIEludFNpemUsIEdDM0RlbnVtIHRleHR1cmVGb3Jt
YXQpOwotCi0gICAgdm9pZCBwcm90ZWN0VGV4dHVyZShUZXh0dXJlVG9rZW4pOwotICAgIHZvaWQg
dW5wcm90ZWN0VGV4dHVyZShUZXh0dXJlVG9rZW4pOwotICAgIHZvaWQgdW5wcm90ZWN0QWxsVGV4
dHVyZXMoKTsKLSAgICBib29sIGlzUHJvdGVjdGVkKFRleHR1cmVUb2tlbik7Ci0KLSAgICB1bnNp
Z25lZCBhbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVUb2tlbik7Ci0g
ICAgdm9pZCBkZWxldGVFdmljdGVkVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciopOwotCi0gICAg
dm9pZCBldmljdEFuZFJlbW92ZUFsbERlbGV0ZWRUZXh0dXJlcygpOwotICAgIHZvaWQgZXZpY3RB
bmREZWxldGVBbGxUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKik7Ci0KLSAgICB2b2lkIHJlZHVj
ZU1lbW9yeVRvTGltaXQoc2l6ZV90KTsKLSAgICBzaXplX3QgY3VycmVudE1lbW9yeVVzZUJ5dGVz
KCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2VCeXRlczsgfQotCi1wcml2YXRlOgotICAgIFRl
eHR1cmVNYW5hZ2VyKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzLCBzaXplX3QgcHJlZmVycmVk
TWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKTsKLQotICAgIHN0cnVjdCBUZXh0
dXJlSW5mbyB7Ci0gICAgICAgIEludFNpemUgc2l6ZTsKLSAgICAgICAgR0MzRGVudW0gZm9ybWF0
OwotICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7Ci0gICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7
Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3I7Ci0j
ZW5kaWYKLSAgICB9OwotCi0gICAgdm9pZCBhZGRUZXh0dXJlKFRleHR1cmVUb2tlbiwgVGV4dHVy
ZUluZm8pOwotICAgIHZvaWQgcmVtb3ZlVGV4dHVyZShUZXh0dXJlVG9rZW4sIFRleHR1cmVJbmZv
KTsKLSAgICB2b2lkIGV2aWN0VGV4dHVyZShUZXh0dXJlVG9rZW4sIFRleHR1cmVJbmZvKTsKLQot
ICAgIEhhc2hTZXQ8TWFuYWdlZFRleHR1cmUqPiBtX3JlZ2lzdGVyZWRUZXh0dXJlczsKLQotICAg
IHR5cGVkZWYgSGFzaE1hcDxUZXh0dXJlVG9rZW4sIFRleHR1cmVJbmZvPiBUZXh0dXJlTWFwOwot
ICAgIFRleHR1cmVNYXAgbV90ZXh0dXJlczsKLSAgICBMaXN0SGFzaFNldDxUZXh0dXJlVG9rZW4+
IG1fdGV4dHVyZUxSVVNldDsKLQotICAgIHNpemVfdCBtX21heE1lbW9yeUxpbWl0Qnl0ZXM7Ci0g
ICAgc2l6ZV90IG1fcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlczsKLSAgICBzaXplX3QgbV9tZW1v
cnlVc2VCeXRlczsKLSAgICBpbnQgbV9tYXhUZXh0dXJlU2l6ZTsKLSAgICBUZXh0dXJlVG9rZW4g
bV9uZXh0VG9rZW47Ci0KLSAgICBzdHJ1Y3QgRXZpY3Rpb25FbnRyeSB7Ci0gICAgICAgIHVuc2ln
bmVkIHRleHR1cmVJZDsKLSAgICAgICAgSW50U2l6ZSBzaXplOwotICAgICAgICBHQzNEZW51bSBm
b3JtYXQ7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3I7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgVmVjdG9yPEV2aWN0aW9uRW50cnk+IG1fZXZpY3Rl
ZFRleHR1cmVzOwotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IDVjNGJjMDVjZWU5ODdlNjNlZmE4MjczMDEwNTFjYzZhYTBkZDkxNjkuLmMzNjYz
ZjNkZDgyMzJiYWIxZTdmMzA1MWIxOTQxZjI5MTMyNjZkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlRpbGVkTGF5ZXJDaHJv
bWl1bS5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJNYW5h
Z2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0u
aCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAKaW5kZXggYzU4
OWEzYzZlZDNkMDBhZmYxZmJhMGQ3ZDQzNTk0ZjNhYWM5MWU4My4uN2FlMjlmOTEyYjg4ZTMzOGI4
ZGIwZjAzOGE0YjVhODI1MDVjNTM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHVuc2lnbmVkIFRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6Y3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmCiAg
ICAgaWYgKHNpemUud2lkdGgoKSA+IG1fbWF4VGV4dHVyZVNpemUgfHwgc2l6ZS5oZWlnaHQoKSA+
IG1fbWF4VGV4dHVyZVNpemUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgbV9jdXJyZW50TWVt
b3J5VXNlQnl0ZXMgKz0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNpemUsIGZvcm1h
dCk7CisgICAgbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMgKz0gQ0NUZXh0dXJlOjptZW1vcnlTaXpl
Qnl0ZXMoc2l6ZSwgZm9ybWF0KTsKIAogICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IDA7CiAgICAg
R0xDKG1fY29udGV4dCwgdGV4dHVyZUlkID0gbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCkpOwpA
QCAtMTAwLDcgKzEwMCw3IEBAIHVuc2lnbmVkIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3Jl
YXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSBmCiAKIHZvaWQgVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yOjpkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmVJZCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQogewotICAgIG1fY3VycmVudE1lbW9y
eVVzZUJ5dGVzIC09IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhzaXplLCBmb3JtYXQp
OworICAgIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzIC09IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5
dGVzKHNpemUsIGZvcm1hdCk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVU
ZXh0dXJlKHRleHR1cmVJZCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRl
VGV4dHVyZSh0ZXh0dXJlSWQpKTsKICAgICBBU1NFUlQobV9hbGxvY2F0ZWRUZXh0dXJlSWRzLmNv
bnRhaW5zKHRleHR1cmVJZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3Iu
aAppbmRleCA3OGVmNDBkMWI0M2U3YjM0MjQ1NGE1MmExNDAwMjRjNTkxODE5ZmUyLi4zOGY3Y2Ew
NDNiNGZkOTcwNWI1OWJkMzNmM2E5YmI3MDE1NjBkMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3IuaApAQCAtMjUsNyArMjUsNyBAQAogI2lmbmRlZiBUcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3JfaAogI2RlZmluZSBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3JfaAogCi0j
aW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4IDczMWY3NzBjMDk2NjMxODU4
YTBhYzNjNGJjOGYzZDcxM2Y2NzEyNjguLmJlMTk5ODNlZmI2MjYzNmMwNTZiNjkwNjc5ZjVmZDAx
ZTk2ZjQ4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCkBAIC0zMSw3ICsz
MSw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJl
bmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNhbnZhcy5oIgotI2luY2x1ZGUg
IlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmgiCiAj
aW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb3VudGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNDE0YjIw
NTI2MWIzNzkyMmZiNjAxNzRmOWRjMGUyN2Y3YWEwMzQ0ZS4uYjhiMjNlYTQ1OWFmYWE5OTk3MjFh
YTZjNDczYTZiOGU3ZjUyYjU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBA
IC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAKICNpbmNs
dWRlICJMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNs
dWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHJlZVN5
bmNocm9uaXplci5oIgpAQCAtNTI5LDcgKzUyOCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpw
cmlvcml0aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogICAgICAgICBM
YXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSB1cGRhdGVMaXN0W2ldLmdldCgpOwog
ICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJm
YWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKIAotICAgICAgICBzaXplX3QgYnl0ZXMgPSBUZXh0
dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMocmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKS5z
aXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgc2l6ZV90IGJ5dGVzID0g
Q0NUZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMocmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKS5z
aXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICAgICAgY29udGVudHNUZXh0dXJl
Qnl0ZXMgKz0gYnl0ZXM7CiAKICAgICAgICAgaWYgKHJlbmRlclN1cmZhY2UtPmJhY2tncm91bmRG
aWx0ZXJzKCkuaXNFbXB0eSgpKQpAQCAtNTM4LDcgKzUzNyw3IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0Ojpwcmlvcml0aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogICAg
ICAgICBpZiAoYnl0ZXMgPiBtYXhCYWNrZ3JvdW5kVGV4dHVyZUJ5dGVzKQogICAgICAgICAgICAg
bWF4QmFja2dyb3VuZFRleHR1cmVCeXRlcyA9IGJ5dGVzOwogICAgICAgICBpZiAoIXJlYWRiYWNr
Qnl0ZXMpCi0gICAgICAgICAgICByZWFkYmFja0J5dGVzID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9y
eVVzZUJ5dGVzKG1fZGV2aWNlVmlld3BvcnRTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7
CisgICAgICAgICAgICByZWFkYmFja0J5dGVzID0gQ0NUZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMo
bV9kZXZpY2VWaWV3cG9ydFNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICB9CiAg
ICAgc2l6ZV90IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSByZWFkYmFja0J5dGVzICsgbWF4QmFja2dy
b3VuZFRleHR1cmVCeXRlcyArIGNvbnRlbnRzVGV4dHVyZUJ5dGVzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oCmluZGV4IGMyMTQzZWFlNWQzNTFmYjA4MTg2OTc4Y2Q5ZTg1NDAwZWEzMzEx
ZjYuLmIzNGYwNGZhOWI2OTliODE2OTg1NjRhNjY0NzY4MWJmNjQ4MGU4NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC01MSw3ICs1MSw2IEBAIGNsYXNzIENDTGF5ZXJDaHJvbWl1
bTsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50OwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKLWNsYXNzIE1hbmFnZWRUZXh0dXJlOwog
Y2xhc3MgUmVnaW9uOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIENDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
aW5kZXggMjZhMDllNzBmZTIwZDk3OWViZmEwODU0ODAxYzkzYTNkNzU4NTFkNS4uZDQ3NmE5N2Zj
ZTY2OGFlYTZmMDk2OGVkNGViMzk0YzY4ZTAxZTgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ092ZXJkcmF3TWV0cmljcy5oIgogI2lu
Y2x1ZGUgImNjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiY2MvQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQu
aCIKICNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oIgpAQCAtMTIyLDcgKzEyMyw3IEBAIENDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5
ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MsIENDCiAg
ICAgLCBtX2RldmljZVNjYWxlRmFjdG9yKDEpCiAgICAgLCBtX3Zpc2libGUodHJ1ZSkKICAgICAs
IG1fY29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQoZmFsc2UpCi0gICAg
LCBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRC
eXRlcyh2aWV3cG9ydFNpemUoKSkpCisgICAgLCBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVz
KENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdE1lbW9yeUFsbG9jYXRpb25MaW1p
dCgpKQogICAgICwgbV9oZWFkc1VwRGlzcGxheShDQ0hlYWRzVXBEaXNwbGF5OjpjcmVhdGUoKSkK
ICAgICAsIG1fcGFnZVNjYWxlKDEpCiAgICAgLCBtX3BhZ2VTY2FsZURlbHRhKDEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAKaW5kZXggZDhjYzE3NDg1YTkwZjkyMDJk
MTdhNmYxODUyMjBhYTYyZTc2NzQzZi4uYTZhMzA4MTJiYTFhNjAzZDdmNmEzNjljMzVhMzIzMzE4
NTgwZDYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIgog
I2luY2x1ZGUgIkNDUHJpb3JpdHlDYWxjdWxhdG9yLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgiCisjaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTM4LDE2ICszOSwxNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6Q0NQcmlvcml0aXplZFRleHR1
cmUoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyLCBJbnRTaXplIHNpemUsIEdD
M0RlbnVtIGZvcm1hdCkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9mb3JtYXQoZm9ybWF0
KQotICAgICwgbV9tZW1vcnlTaXplQnl0ZXMoMCkKKyAgICAsIG1fYnl0ZXMoMCkKICAgICAsIG1f
cHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCkpCiAgICAgLCBt
X2lzQWJvdmVQcmlvcml0eUN1dG9mZihmYWxzZSkKLSAgICAsIG1fY3VycmVudEJhY2tpbmcoMCkK
KyAgICAsIG1fYmFja2luZygwKQogICAgICwgbV9tYW5hZ2VyKDApCiB7CiAgICAgLy8gbV9tYW5h
Z2VyIGlzIHNldCBpbiByZWdpc3RlclRleHR1cmUoKSBzbyB2YWxpZGl0eSBjYW4gYmUgY2hlY2tl
ZC4KICAgICBBU1NFUlQoZm9ybWF0IHx8IHNpemUuaXNFbXB0eSgpKTsKICAgICBpZiAoZm9ybWF0
KQotICAgICAgICBtX21lbW9yeVNpemVCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VC
eXRlcyhzaXplLCBmb3JtYXQpOworICAgICAgICBtX2J5dGVzID0gQ0NUZXh0dXJlOjptZW1vcnlT
aXplQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKICAgICBpZiAobWFuYWdlcikKICAgICAgICAgbWFuYWdl
ci0+cmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwogfQpAQCAtNzQsOCArNzUsOCBAQCB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlOjpzZXREaW1lbnNpb25zKEludFNpemUgc2l6ZSwgR0MzRGVudW0gZm9y
bWF0KQogICAgICAgICBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZiA9IGZhbHNlOwogICAgICAgICBt
X2Zvcm1hdCA9IGZvcm1hdDsKICAgICAgICAgbV9zaXplID0gc2l6ZTsKLSAgICAgICAgbV9tZW1v
cnlTaXplQnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0
KTsKLSAgICAgICAgQVNTRVJUKG1fbWFuYWdlciB8fCAhbV9jdXJyZW50QmFja2luZyk7CisgICAg
ICAgIG1fYnl0ZXMgPSBDQ1RleHR1cmU6Om1lbW9yeVNpemVCeXRlcyhzaXplLCBmb3JtYXQpOwor
ICAgICAgICBBU1NFUlQobV9tYW5hZ2VyIHx8ICFtX2JhY2tpbmcpOwogICAgICAgICBpZiAobV9t
YW5hZ2VyKQogICAgICAgICAgICAgbV9tYW5hZ2VyLT5yZXR1cm5CYWNraW5nVGV4dHVyZSh0aGlz
KTsKICAgICB9CkBAIC05Nyw4ICs5OCw4IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OmFj
cXVpcmVCYWNraW5nVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiAKIHVuc2ln
bmVkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjp0ZXh0dXJlSWQoKQogewotICAgIGlmIChtX2N1cnJl
bnRCYWNraW5nKQotICAgICAgICByZXR1cm4gbV9jdXJyZW50QmFja2luZy0+dGV4dHVyZUlkKCk7
CisgICAgaWYgKG1fYmFja2luZykKKyAgICAgICAgcmV0dXJuIG1fYmFja2luZy0+aWQoKTsKICAg
ICByZXR1cm4gMDsKIH0KIApAQCAtMTA3LDcgKzEwOCw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmU6OmJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0dXJlQWxs
b2NhCiAgICAgQVNTRVJUKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKICAgICBpZiAobV9pc0Fi
b3ZlUHJpb3JpdHlDdXRvZmYpCiAgICAgICAgIGFjcXVpcmVCYWNraW5nVGV4dHVyZShhbGxvY2F0
b3IpOwotICAgIEFTU0VSVChtX2N1cnJlbnRCYWNraW5nKTsKKyAgICBBU1NFUlQobV9iYWNraW5n
KTsKICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0
LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCkBAIC0xMjEsNyAr
MTIyLDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQo
Q0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHQKICAgICBBU1NFUlQobV9pc0Fib3ZlUHJp
b3JpdHlDdXRvZmYpOwogICAgIGlmIChtX2lzQWJvdmVQcmlvcml0eUN1dG9mZikKICAgICAgICAg
YWNxdWlyZUJhY2tpbmdUZXh0dXJlKGFsbG9jYXRvcik7Ci0gICAgQVNTRVJUKG1fY3VycmVudEJh
Y2tpbmcpOworICAgIEFTU0VSVChtX2JhY2tpbmcpOwogICAgIFdlYktpdDo6V2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwogICAgIGlmICghY29u
dGV4dDNkKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBzb2Z0
d2FyZSBjb21wb3NpdGluZy4KQEAgLTEzMCwxMiArMTMxLDI2IEBAIHZvaWQgQ0NQcmlvcml0aXpl
ZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBUZXh0CiAgICAgY29udGV4dDNkLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCgpLCAwKTsKIH0KIAotdm9p
ZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0Q3VycmVudEJhY2tpbmcoQ0NQcmlvcml0aXplZFRl
eHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcpCit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpsaW5r
KEJhY2tpbmcqIGJhY2tpbmcpCiB7Ci0gICAgaWYgKG1fY3VycmVudEJhY2tpbmcgPT0gYmFja2lu
ZykKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY3VycmVudEJhY2tpbmcgPSBiYWNraW5nOworICAg
IEFTU0VSVChiYWNraW5nKTsKKyAgICBBU1NFUlQoIWJhY2tpbmctPm1fb3duZXIpOworICAgIEFT
U0VSVCghbV9iYWNraW5nKTsKKworICAgIG1fYmFja2luZyA9IGJhY2tpbmc7CisgICAgbV9iYWNr
aW5nLT5tX293bmVyID0gdGhpczsKK30KKwordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dW5s
aW5rKCkKK3sKKyAgICBBU1NFUlQobV9iYWNraW5nKTsKKyAgICBBU1NFUlQobV9iYWNraW5nLT5t
X293bmVyID09IHRoaXMpOworCisgICAgbV9iYWNraW5nLT5tX293bmVyID0gMDsKKyAgICBtX2Jh
Y2tpbmcgPSAwOwogfQogCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRp
emVkVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaAppbmRleCA5ZWEyZmIxZTQxNTc5ZjY0NTA0ZjZhM2M5
YmIwZDdiZTBiMzJlMWYyLi5kYzg1NzkzMjQxODM5NmZkYTM3ODkwMTA1MzU1YzkyNGEyZmYyMGUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKQEAgLTI2LDE2ICsyNiwx
NyBAQAogI2RlZmluZSBDQ1ByaW9yaXRpemVkVGV4dHVyZV9oCiAKICNpbmNsdWRlICJDQ1ByaW9y
aXR5Q2FsY3VsYXRvci5oIgorI2luY2x1ZGUgIkNDVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUu
aCIKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKIGNsYXNzIENDUHJpb3JpdHlDYWxj
dWxhdG9yOwogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBUZXh0dXJlQWxsb2NhdG9y
OwogCiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ0NQcmlvcml0aXplZFRleHR1cmUpOwpAQCAtNTcsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXREaW1lbnNpb25zKEludFNpemUsIEdDM0RlbnVtIGZvcm1hdCk7CiAgICAgR0MzRGVu
dW0gZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KICAgICBJbnRTaXplIHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBzaXplX3QgbWVtb3J5U2l6ZUJ5dGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9tZW1vcnlTaXplQnl0ZXM7IH0KKyAgICBzaXplX3QgYnl0ZXMoKSBj
b25zdCB7IHJldHVybiBtX2J5dGVzOyB9CiAKICAgICAvLyBTZXQgcHJpb3JpdHkgZm9yIHRoZSBy
ZXF1ZXN0ZWQgdGV4dHVyZS4gCiAgICAgdm9pZCBzZXRSZXF1ZXN0UHJpb3JpdHkoaW50IHByaW9y
aXR5KSB7IG1fcHJpb3JpdHkgPSBwcmlvcml0eTsgfQpAQCAtNjgsMTIgKzY5LDEyIEBAIHB1Ymxp
YzoKICAgICBib29sIGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBYm92ZVByaW9yaXR5Q3V0b2ZmOyB9CiAKICAgICAvLyBUaGlzIHJldHVybnMgd2hldGhlciB3
ZSBzdGlsbCBoYXZlIGEgYmFja2luZyB0ZXh0dXJlLiBUaGlzIGNhbiBjb250aW51ZQotICAgIC8v
IHRvIGJlIHRydWUgZXZlbiBhZnRlciBjYW5BcXVpcmVCYWNraW5nVGV4dHVyZSgpIGJlY29tZXMg
ZmFsc2UuIEluIHRoaXMKKyAgICAvLyB0byBiZSB0cnVlIGV2ZW4gYWZ0ZXIgY2FuQWNxdWlyZUJh
Y2tpbmdUZXh0dXJlKCkgYmVjb21lcyBmYWxzZS4gSW4gdGhpcwogICAgIC8vIGNhc2UgdGhlIHRl
eHR1cmUgY2FuIGJlIHVzZWQgYnV0IHNob3VsZG4ndCBiZSB1cGRhdGVkIHNpbmNlIGl0IHdpbGwg
Z2V0CiAgICAgLy8gdGFrZW4gYXdheSAic29vbiIuCi0gICAgYm9vbCBoYXZlQmFja2luZ1RleHR1
cmUoKSBjb25zdCB7IHJldHVybiAhIWN1cnJlbnRCYWNraW5nKCk7IH0KKyAgICBib29sIGhhdmVC
YWNraW5nVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuICEhYmFja2luZygpOyB9CiAKLSAgICAvLyBJ
ZiBjYW5BcXVpcmVCYWNraW5nVGV4dHVyZSgpIGlzIHRydWUgYWNxdWlyZUJhY2tpbmdUZXh0dXJl
KCkgd2lsbCBhY3F1aXJlCisgICAgLy8gSWYgY2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkgaXMg
dHJ1ZSBhY3F1aXJlQmFja2luZ1RleHR1cmUoKSB3aWxsIGFjcXVpcmUKICAgICAvLyBhIGJhY2tp
bmcgdGV4dHVyZSBmb3IgdXNlLiBDYWxsIHRoaXMgd2hlbmV2ZXIgdGhlIHRleHR1cmUgaXMgYWN0
dWFsbHkgbmVlZGVkLgogICAgIHZvaWQgYWNxdWlyZUJhY2tpbmdUZXh0dXJlKFRleHR1cmVBbGxv
Y2F0b3IqKTsKIApAQCAtODEsMTMgKzgyLDEzIEBAIHB1YmxpYzoKICAgICAvLyAgICAgICAgKGFs
bCB0ZXh0dXJlcyBhcmUgdmlzaWJsZSkgYnV0IHdlIGNhbiBzdGlsbCBzcXVlZXplIGludG8gdGhl
IGxpbWl0CiAgICAgLy8gICAgICAgIGJ5IG5vdCBwYWludGluZyBvY2NsdWRlZCB0ZXh0dXJlcy4g
SW4gdGhpcyBjYXNlIHRoZSBtYW5hZ2VyCiAgICAgLy8gICAgICAgIHJlZnVzZXMgYWxsIHZpc2li
bGUgdGV4dHVyZXMgYW5kIHJlcXVlc3RMYXRlKCkgd2lsbCBlbmFibGUKLSAgICAvLyAgICAgICAg
Y2FuQXF1aXJlQmFja2luZ1RleHR1cmUoKSBvbiBhIGNhbGwtb3JkZXIgYmFzaXMuIFdlIG1pZ2h0
IHdhbnQgdG8KKyAgICAvLyAgICAgICAgY2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkgb24gYSBj
YWxsLW9yZGVyIGJhc2lzLiBXZSBtaWdodCB3YW50IHRvCiAgICAgLy8gICAgICAgIGp1c3QgcmVt
b3ZlIHRoaXMgaW4gdGhlIGZ1dHVyZSAoY2FyZWZ1bGx5KSBhbmQganVzdCBtYWtlIHN1cmUgd2Ug
ZG9uJ3QKICAgICAvLyAgICAgICAgcmVncmVzcyBPT01zIHNpdHVhdGlvbnMuCiAgICAgYm9vbCBy
ZXF1ZXN0TGF0ZSgpOwogCi0gICAgLy8gVGhlc2UgZnVuY3Rpb25zIHdpbGwgYXF1aXJlIHRoZSB0
ZXh0dXJlIGlmIHBvc3NpYmxlLiBJZiBuZWl0aGVyIGhhdmVCYWNraW5nVGV4dHVyZSgpCi0gICAg
Ly8gbm9yIGNhbkFxdWlyZUJhY2tpbmdUZXh0dXJlKCkgaXMgdHJ1ZSwgYW4gSUQgb2YgemVybyB3
aWxsIGJlIHVzZWQvcmV0dXJuZWQuCisgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHdpbGwgYWNxdWly
ZSB0aGUgdGV4dHVyZSBpZiBwb3NzaWJsZS4gSWYgbmVpdGhlciBoYXZlQmFja2luZ1RleHR1cmUo
KQorICAgIC8vIG5vciBjYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSBpcyB0cnVlLCBhbiBJRCBv
ZiB6ZXJvIHdpbGwgYmUgdXNlZC9yZXR1cm5lZC4KICAgICB2b2lkIGJpbmRUZXh0dXJlKENDR3Jh
cGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZvaWQgZnJhbWVidWZmZXJU
ZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdW5z
aWduZWQgdGV4dHVyZUlkKCk7CkBAIC05NSwzNCArOTYsMTcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOwogCi0gICAgY2xh
c3MgQmFja2luZyB7CisgICAgY2xhc3MgQmFja2luZyA6IHB1YmxpYyBDQ1RleHR1cmUgewogICAg
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNraW5nKTsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgICAgICBHQzNEZW51
bSBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQotICAgICAgICBzaXplX3QgbWVt
b3J5U2l6ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlTaXplQnl0ZXM7IH0KLSAgICAg
ICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KLSAg
ICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUqIGN1cnJlbnRUZXh0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9jdXJyZW50VGV4dHVyZTsgfQotICAgICAgICB2b2lkIHNldEN1cnJlbnRUZXh0dXJlKEND
UHJpb3JpdGl6ZWRUZXh0dXJlKiBjdXJyZW50KSB7IG1fY3VycmVudFRleHR1cmUgPSBjdXJyZW50
OyB9CisgICAgICAgIEJhY2tpbmcodW5zaWduZWQgaWQsIEludFNpemUgc2l6ZSwgR0MzRGVudW0g
Zm9ybWF0KQorICAgICAgICAgICAgOiBDQ1RleHR1cmUoaWQsIHNpemUsIGZvcm1hdCksIG1fb3du
ZXIoMCkgeyB9CisgICAgICAgIH5CYWNraW5nKCkgeyBBU1NFUlQoIW1fb3duZXIpOyB9CiAKKyAg
ICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUqIG93bmVyKCkgeyByZXR1cm4gbV9vd25lcjsgfQog
ICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI7Ci0KLSAgICAgICAgQmFja2luZyhJbnRTaXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCwg
dW5zaWduZWQgdGV4dHVyZUlkKQotICAgICAgICAgICAgOiBtX3NpemUoc2l6ZSkKLSAgICAgICAg
ICAgICwgbV9mb3JtYXQoZm9ybWF0KQotICAgICAgICAgICAgLCBtX21lbW9yeVNpemVCeXRlcyhU
ZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KSkKLSAgICAgICAgICAg
ICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQotICAgICAgICAgICAgLCBtX3ByaW9yaXR5KENDUHJp
b3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpKQotICAgICAgICAgICAgLCBtX2N1cnJl
bnRUZXh0dXJlKDApIHsgfQotICAgICAgICB+QmFja2luZygpIHsgQVNTRVJUKCFtX2N1cnJlbnRU
ZXh0dXJlKTsgfQotCi0gICAgICAgIEludFNpemUgbV9zaXplOwotICAgICAgICBHQzNEZW51bSBt
X2Zvcm1hdDsKLSAgICAgICAgc2l6ZV90IG1fbWVtb3J5U2l6ZUJ5dGVzOwotICAgICAgICB1bnNp
Z25lZCBtX3RleHR1cmVJZDsKLSAgICAgICAgaW50IG1fcHJpb3JpdHk7Ci0gICAgICAgIENDUHJp
b3JpdGl6ZWRUZXh0dXJlKiBtX2N1cnJlbnRUZXh0dXJlOworICAgICAgICBmcmllbmQgY2xhc3Mg
Q0NQcmlvcml0aXplZFRleHR1cmU7CisgICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiBtX293
bmVyOwogICAgIH07CiAKICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXIqLCBJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQpOwpAQCAtMTMxLDE3ICsxMTUs
MTggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEFib3ZlUHJpb3JpdHlDdXRvZmYoYm9vbCBpc0Fi
b3ZlUHJpb3JpdHlDdXRvZmYpIHsgbV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYgPSBpc0Fib3ZlUHJp
b3JpdHlDdXRvZmY7IH0KICAgICB2b2lkIHNldE1hbmFnZXJJbnRlcm5hbChDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgbV9tYW5hZ2VyID0gbWFuYWdlcjsgfQogCi0gICAg
QmFja2luZyogY3VycmVudEJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRCYWNraW5n
OyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50QmFja2luZyhCYWNraW5nKik7CisgICAgQmFja2luZyog
YmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIHZvaWQgbGluayhCYWNr
aW5nKik7CisgICAgdm9pZCB1bmxpbmsoKTsKIAogICAgIEludFNpemUgbV9zaXplOwogICAgIEdD
M0RlbnVtIG1fZm9ybWF0OwotICAgIHNpemVfdCBtX21lbW9yeVNpemVCeXRlczsKKyAgICBzaXpl
X3QgbV9ieXRlczsKIAogICAgIHNpemVfdCBtX3ByaW9yaXR5OwogICAgIGJvb2wgbV9pc0Fib3Zl
UHJpb3JpdHlDdXRvZmY7CiAKLSAgICBCYWNraW5nKiBtX2N1cnJlbnRCYWNraW5nOworICAgIEJh
Y2tpbmcqIG1fYmFja2luZzsKICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIqIG1fbWFu
YWdlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXIuY3BwCmluZGV4IDVhZjUzZGYwNGJkZWI2N2UyYTBlY2MxYTM0YTllYTZiY2U5OWYzMjUu
LjAxOTViNmYxY2RlYWI1MDZmMDMzMjc4NTY4Mzk4ZGI2ODQxNzdkZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcApAQCAtOTcsNyArOTcs
NyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cHJpb3JpdGl6ZVRleHR1cmVz
KHNpemVfdCByZW5kZXJTdXJmYWNlc01lbW9yeQogICAgICAgICAgICAgcmVzZXJ2ZWRSZW5kZXJT
dXJmYWNlcyA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3QgbmV3TWVtb3J5Qnl0
ZXMgPSBtZW1vcnlCeXRlcyArICgqaXQpLT5tZW1vcnlTaXplQnl0ZXMoKTsKKyAgICAgICAgc2l6
ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0KS0+Ynl0ZXMoKTsKICAgICAg
ICAgaWYgKG5ld01lbW9yeUJ5dGVzID4gbV9tZW1vcnlBdmFpbGFibGVCeXRlcykgewogICAgICAg
ICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQpLT5yZXF1ZXN0UHJpb3JpdHkoKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMoc2l6ZV90IHJlbmRlclN1cmZhY2VzTWVtb3J5
CiAgICAgICAgIGJvb2wgaXNBYm92ZVByaW9yaXR5Q3V0b2ZmID0gQ0NQcmlvcml0eUNhbGN1bGF0
b3I6OnByaW9yaXR5SXNIaWdoZXIoKCppdCktPnJlcXVlc3RQcmlvcml0eSgpLCBtX3ByaW9yaXR5
Q3V0b2ZmKTsKICAgICAgICAgKCppdCktPnNldEFib3ZlUHJpb3JpdHlDdXRvZmYoaXNBYm92ZVBy
aW9yaXR5Q3V0b2ZmKTsKICAgICAgICAgaWYgKGlzQWJvdmVQcmlvcml0eUN1dG9mZikKLSAgICAg
ICAgICAgIG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyArPSAoKml0KS0+bWVtb3J5U2l6ZUJ5dGVz
KCk7CisgICAgICAgICAgICBtX21lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMgKz0gKCppdCktPmJ5dGVz
KCk7CiAgICAgfQogICAgIEFTU0VSVChtX21lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMgPD0gbV9tZW1v
cnlBdmFpbGFibGVCeXRlcyk7CiAKQEAgLTE1NywxNSArMTU3LDE1IEBAIGJvb2wgQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0TGF0ZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4
dHVyZSkKICAgICBpZiAoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnByaW9yaXR5SXNMb3dlcih0ZXh0
dXJlLT5yZXF1ZXN0UHJpb3JpdHkoKSwgbV9wcmlvcml0eUN1dG9mZikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9IG1fbWVtb3J5QWJvdmVDdXRv
ZmZCeXRlcyArIHRleHR1cmUtPm1lbW9yeVNpemVCeXRlcygpOworICAgIHNpemVfdCBuZXdNZW1v
cnlCeXRlcyA9IG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyArIHRleHR1cmUtPmJ5dGVzKCk7CiAg
ICAgaWYgKG5ld01lbW9yeUJ5dGVzID4gbV9tZW1vcnlBdmFpbGFibGVCeXRlcykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgbV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzID0gbmV3TWVtb3J5
Qnl0ZXM7CiAgICAgdGV4dHVyZS0+c2V0QWJvdmVQcmlvcml0eUN1dG9mZih0cnVlKTsKLSAgICBp
ZiAodGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSkgewotICAgICAgICBtX2JhY2tpbmdzLnJlbW92
ZSh0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKTsKLSAgICAgICAgbV9iYWNraW5ncy5hZGQodGV4
dHVyZS0+Y3VycmVudEJhY2tpbmcoKSk7CisgICAgaWYgKHRleHR1cmUtPmJhY2tpbmcoKSkgewor
ICAgICAgICBtX2JhY2tpbmdzLnJlbW92ZSh0ZXh0dXJlLT5iYWNraW5nKCkpOworICAgICAgICBt
X2JhY2tpbmdzLmFkZCh0ZXh0dXJlLT5iYWNraW5nKCkpOwogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBib29sIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6cmVxdWVzdExhdGUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUpCiB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQoQ0NQ
cmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikK
IHsKICAgICBBU1NFUlQodGV4dHVyZS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpOwotICAgIGlm
ICh0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpIHx8ICF0ZXh0dXJlLT5pc0Fib3ZlUHJpb3JpdHlD
dXRvZmYoKSkKKyAgICBpZiAodGV4dHVyZS0+YmFja2luZygpIHx8ICF0ZXh0dXJlLT5pc0Fib3Zl
UHJpb3JpdHlDdXRvZmYoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRmluZCBhIGJhY2tp
bmcgYmVsb3csIGJ5IGVpdGhlciByZWN5Y2xpbmcgb3IgYWxsb2NhdGluZy4KQEAgLTE4MSw3ICsx
ODEsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdU
ZXh0dXJlSWZOZWVkZWQoQ0NQcmlvcml0aXplZFRleAogCiAgICAgLy8gRmlyc3QgdHJ5IHRvIHJl
Y3ljbGUKICAgICBmb3IgKEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdp
bigpOyBpdCAhPSBtX2JhY2tpbmdzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+
Y3VycmVudFRleHR1cmUoKSAmJiAoKml0KS0+Y3VycmVudFRleHR1cmUoKS0+aXNBYm92ZVByaW9y
aXR5Q3V0b2ZmKCkpCisgICAgICAgIGlmICgoKml0KS0+b3duZXIoKSAmJiAoKml0KS0+b3duZXIo
KS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
aWYgKCgqaXQpLT5zaXplKCkgPT0gdGV4dHVyZS0+c2l6ZSgpICYmICgqaXQpLT5mb3JtYXQoKSA9
PSB0ZXh0dXJlLT5mb3JtYXQoKSkgewogICAgICAgICAgICAgYmFja2luZyA9ICgqaXQpOwpAQCAt
MTkxLDE0ICsxOTEsMTQgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFjcXVp
cmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXgKIAogICAgIC8vIE90aGVy
d2lzZSByZWR1Y2UgbWVtb3J5IGFuZCBqdXN0IGFsbG9jYXRlIGEgbmV3IGJhY2tpbmcgdGV4dXJl
cy4KICAgICBpZiAoIWJhY2tpbmcpIHsKLSAgICAgICAgcmVkdWNlTWVtb3J5KG1fbWVtb3J5QXZh
aWxhYmxlQnl0ZXMgLSB0ZXh0dXJlLT5tZW1vcnlTaXplQnl0ZXMoKSwgYWxsb2NhdG9yKTsKKyAg
ICAgICAgcmVkdWNlTWVtb3J5KG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLSB0ZXh0dXJlLT5ieXRl
cygpLCBhbGxvY2F0b3IpOwogICAgICAgICBiYWNraW5nID0gY3JlYXRlQmFja2luZyh0ZXh0dXJl
LT5zaXplKCksIHRleHR1cmUtPmZvcm1hdCgpLCBhbGxvY2F0b3IpOwogICAgIH0KIAogICAgIC8v
IE1vdmUgdGhlIHVzZWQgYmFja2luZyB0ZXh0dXJlIHRvIHRoZSBlbmQgb2YgdGhlIGV2aWN0aW9u
IGxpc3QuCi0gICAgaWYgKGJhY2tpbmctPmN1cnJlbnRUZXh0dXJlKCkpCi0gICAgICAgIHVubGlu
ayhiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpLCBiYWNraW5nKTsKLSAgICBsaW5rKHRleHR1cmUs
IGJhY2tpbmcpOworICAgIGlmIChiYWNraW5nLT5vd25lcigpKQorICAgICAgICBiYWNraW5nLT5v
d25lcigpLT51bmxpbmsoKTsKKyAgICB0ZXh0dXJlLT5saW5rKGJhY2tpbmcpOwogICAgIG1fYmFj
a2luZ3MucmVtb3ZlKGJhY2tpbmcpOwogICAgIG1fYmFja2luZ3MuYWRkKGJhY2tpbmcpOwogfQpA
QCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1
Y2VNZW1vcnkoc2l6ZV90IGxpbWl0Qnl0ZXMsIFRleHR1cmVBbGxvY2F0CiAgICAgLy8gb3IgdW50
aWwgYWxsIGJhY2tpbmdzIHJlbWFpbmluZyBhcmUgYWJvdmUgdGhlIGN1dG9mZi4KICAgICB3aGls
ZSAobWVtb3J5VXNlQnl0ZXMoKSA+IGxpbWl0Qnl0ZXMgJiYgbV9iYWNraW5ncy5zaXplKCkgPiAw
KSB7CiAgICAgICAgIEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigp
OwotICAgICAgICBpZiAoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkgJiYgKCppdCktPmN1cnJlbnRU
ZXh0dXJlKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQorICAgICAgICBpZiAoKCppdCktPm93
bmVyKCkgJiYgKCppdCktPm93bmVyKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRlc3Ryb3lCYWNraW5nKCgqaXQpLCBhbGxvY2F0b3IpOwog
ICAgIH0KQEAgLTIyOSw5ICsyMjksOSBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6cmVkdWNlTWVtb3J5KFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKICAgICAvLyBiYWNr
aW5nIHRleHR1cmVzIChhbnkgbW9yZSB0aGFuIDEwJSkuCiAgICAgc2l6ZV90IHdhc3RlZE1lbW9y
eSA9IDA7CiAgICAgZm9yIChCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVn
aW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoKCppdCkt
PmN1cnJlbnRUZXh0dXJlKCkpCisgICAgICAgIGlmICgoKml0KS0+b3duZXIoKSkKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB3YXN0ZWRNZW1vcnkgKz0gKCppdCktPm1lbW9yeVNpemVCeXRl
cygpOworICAgICAgICB3YXN0ZWRNZW1vcnkgKz0gKCppdCktPmJ5dGVzKCk7CiAgICAgfQogICAg
IHNpemVfdCB0ZW5QZXJjZW50T2ZNZW1vcnkgPSBtX21lbW9yeUF2YWlsYWJsZUJ5dGVzIC8gMTA7
CiAgICAgaWYgKHdhc3RlZE1lbW9yeSA8PSB0ZW5QZXJjZW50T2ZNZW1vcnkpCkBAIC0yNDQsOCAr
MjQ0LDggQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNsZWFyQWxsTWVtb3J5
KFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKICAgICAvLyBVbmxpbmsgYW5kIGRlc3Ryb3kg
YWxsIGJhY2tpbmcgdGV4dHVyZXMuCiAgICAgd2hpbGUgKG1fYmFja2luZ3Muc2l6ZSgpID4gMCkg
ewogICAgICAgICBCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsK
LSAgICAgICAgaWYgKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpKQotICAgICAgICAgICAgdW5saW5r
KCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpLCAoKml0KSk7CisgICAgICAgIGlmICgoKml0KS0+b3du
ZXIoKSkKKyAgICAgICAgICAgICgqaXQpLT5vd25lcigpLT51bmxpbmsoKTsKICAgICAgICAgZGVz
dHJveUJhY2tpbmcoKCppdCksIGFsbG9jYXRvcik7CiAgICAgfQogfQpAQCAtMjU4LDMyICsyNTgs
MTEgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFsbEJhY2tpbmdUZXh0dXJl
c1dlcmVEZWxldGVkKCkKICAgICBjbGVhckFsbE1lbW9yeSgwKTsKIH0KIAotdm9pZCBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OnVubGluayhDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVy
ZSwgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcpCi17Ci0gICAgQVNTRVJU
KHRleHR1cmUgJiYgYmFja2luZyk7Ci0gICAgQVNTRVJUKHRleHR1cmUtPmN1cnJlbnRCYWNraW5n
KCkgPT0gYmFja2luZyk7Ci0gICAgQVNTRVJUKGJhY2tpbmctPmN1cnJlbnRUZXh0dXJlKCkgPT0g
dGV4dHVyZSk7Ci0KLSAgICB0ZXh0dXJlLT5zZXRDdXJyZW50QmFja2luZygwKTsKLSAgICBiYWNr
aW5nLT5zZXRDdXJyZW50VGV4dHVyZSgwKTsKLX0KLQotdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OmxpbmsoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIENDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nKQotewotICAgIEFTU0VSVCh0ZXh0dXJlICYmIGJh
Y2tpbmcpOwotICAgIEFTU0VSVCghdGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSk7Ci0gICAgQVNT
RVJUKCFiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpKTsKLQotICAgIHRleHR1cmUtPnNldEN1cnJl
bnRCYWNraW5nKGJhY2tpbmcpOwotICAgIGJhY2tpbmctPnNldEN1cnJlbnRUZXh0dXJlKHRleHR1
cmUpOwotfQotCi0KIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWdpc3RlclRl
eHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUpCiB7CiAgICAgQVNTRVJUKHRleHR1
cmUpOwogICAgIEFTU0VSVCghdGV4dHVyZS0+dGV4dHVyZU1hbmFnZXIoKSk7Ci0gICAgQVNTRVJU
KCF0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKTsKKyAgICBBU1NFUlQoIXRleHR1cmUtPmJhY2tp
bmcoKSk7CiAgICAgQVNTRVJUKG1fdGV4dHVyZXMuZmluZCh0ZXh0dXJlKSA9PSBtX3RleHR1cmVz
LmVuZCgpKTsKIAogICAgIHRleHR1cmUtPnNldE1hbmFnZXJJbnRlcm5hbCh0aGlzKTsKQEAgLTMw
NSwxMSArMjg0LDExIEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjp1bnJlZ2lz
dGVyVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyCiAKIHZvaWQgQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyOjpyZXR1cm5CYWNraW5nVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4
dHVyZSogdGV4dHVyZSkKIHsKLSAgICBpZiAodGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSkgewor
ICAgIGlmICh0ZXh0dXJlLT5iYWNraW5nKCkpIHsKICAgICAgICAgLy8gTW92ZSB0aGUgYmFja2lu
ZyB0ZXh0dXJlIHRvIHRoZSBmcm9udCBmb3IgZXZpY3Rpb24vcmVjeWNsaW5nIGFuZCB1bmxpbmsg
aXQuCi0gICAgICAgIG1fYmFja2luZ3MucmVtb3ZlKHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkp
OwotICAgICAgICBtX2JhY2tpbmdzLmluc2VydEJlZm9yZShtX2JhY2tpbmdzLmJlZ2luKCksIHRl
eHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpOwotICAgICAgICB1bmxpbmsodGV4dHVyZSwgdGV4dHVy
ZS0+Y3VycmVudEJhY2tpbmcoKSk7CisgICAgICAgIG1fYmFja2luZ3MucmVtb3ZlKHRleHR1cmUt
PmJhY2tpbmcoKSk7CisgICAgICAgIG1fYmFja2luZ3MuaW5zZXJ0QmVmb3JlKG1fYmFja2luZ3Mu
YmVnaW4oKSwgdGV4dHVyZS0+YmFja2luZygpKTsKKyAgICAgICAgdGV4dHVyZS0+dW5saW5rKCk7
CiAgICAgfQogfQogCkBAIC0zMTcsOSArMjk2LDggQEAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJh
Y2tpbmcqIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlQmFja2luZyhJbnRTaXoK
IHsKICAgICBBU1NFUlQoYWxsb2NhdG9yKTsKIAotICAgIHVuc2lnbmVkIHRleHR1cmVJZCA9IGFs
bG9jYXRvci0+Y3JlYXRlVGV4dHVyZShzaXplLCBmb3JtYXQpOwotICAgIENDUHJpb3JpdGl6ZWRU
ZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nID0gbmV3IENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNr
aW5nKHNpemUsIGZvcm1hdCwgdGV4dHVyZUlkKTsKLSAgICBtX21lbW9yeVVzZUJ5dGVzICs9IGJh
Y2tpbmctPm1lbW9yeVNpemVCeXRlcygpOworICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNr
aW5nKiBiYWNraW5nID0gbmV3IENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKGFsbG9jYXRv
ci0+Y3JlYXRlVGV4dHVyZShzaXplLCBmb3JtYXQpLCBzaXplLCBmb3JtYXQpOworICAgIG1fbWVt
b3J5VXNlQnl0ZXMgKz0gYmFja2luZy0+Ynl0ZXMoKTsKICAgICAvLyBQdXQgYmFja2luZyB0ZXh0
dXJlIGF0IHRoZSBmcm9udCBmb3IgZXZpY3Rpb24sIHNpbmNlIGl0IGlzbid0IGluIHVzZSB5ZXQu
CiAgICAgbV9iYWNraW5ncy5pbnNlcnRCZWZvcmUobV9iYWNraW5ncy5iZWdpbigpLCBiYWNraW5n
KTsKICAgICByZXR1cm4gYmFja2luZzsKQEAgLTMyOCwxNCArMzA2LDE0IEBAIENDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpCYWNraW5nKiBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZUJh
Y2tpbmcoSW50U2l6CiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVzdHJveUJh
Y2tpbmcoQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBBU1NFUlQoYmFja2luZyk7Ci0gICAgQVNTRVJUKCFi
YWNraW5nLT5jdXJyZW50VGV4dHVyZSgpIHx8ICFiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpLT5p
c0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSk7CisgICAgQVNTRVJUKCFiYWNraW5nLT5vd25lcigpIHx8
ICFiYWNraW5nLT5vd25lcigpLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSk7CiAgICAgQVNTRVJU
KG1fYmFja2luZ3MuZmluZChiYWNraW5nKSAhPSBtX2JhY2tpbmdzLmVuZCgpKTsKIAogICAgIGlm
IChhbGxvY2F0b3IpCi0gICAgICAgIGFsbG9jYXRvci0+ZGVsZXRlVGV4dHVyZShiYWNraW5nLT50
ZXh0dXJlSWQoKSwgYmFja2luZy0+c2l6ZSgpLCBiYWNraW5nLT5mb3JtYXQoKSk7Ci0gICAgaWYg
KGJhY2tpbmctPmN1cnJlbnRUZXh0dXJlKCkpCi0gICAgICAgIHVubGluayhiYWNraW5nLT5jdXJy
ZW50VGV4dHVyZSgpLCBiYWNraW5nKTsKLSAgICBtX21lbW9yeVVzZUJ5dGVzIC09IGJhY2tpbmct
Pm1lbW9yeVNpemVCeXRlcygpOworICAgICAgICBhbGxvY2F0b3ItPmRlbGV0ZVRleHR1cmUoYmFj
a2luZy0+aWQoKSwgYmFja2luZy0+c2l6ZSgpLCBiYWNraW5nLT5mb3JtYXQoKSk7CisgICAgaWYg
KGJhY2tpbmctPm93bmVyKCkpCisgICAgICAgIGJhY2tpbmctPm93bmVyKCktPnVubGluaygpOwor
ICAgIG1fbWVtb3J5VXNlQnl0ZXMgLT0gYmFja2luZy0+Ynl0ZXMoKTsKICAgICBtX2JhY2tpbmdz
LnJlbW92ZShiYWNraW5nKTsKIAogICAgIGRlbGV0ZSBiYWNraW5nOwpAQCAtMzUxLDE1ICszMjks
MTUgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFzc2VydEludmFyaWFudHMo
KQogCiAgICAgLy8gQmFja2luZ3MvdGV4dHVyZXMgbXVzdCBiZSBkb3VibHktbGlua2VkIGFuZCBv
bmx5IHRvIG90aGVyIGJhY2tpbmdzL3RleHR1cmVzIGluIHRoaXMgbWFuYWdlci4KICAgICBmb3Ig
KEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigpOyBpdCAhPSBtX2Jh
Y2tpbmdzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+Y3VycmVudFRleHR1cmUo
KSkgewotICAgICAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXMuZmluZCgoKml0KS0+Y3VycmVudFRl
eHR1cmUoKSkgIT0gbV90ZXh0dXJlcy5lbmQoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoKCppdCkt
PmN1cnJlbnRUZXh0dXJlKCktPmN1cnJlbnRCYWNraW5nKCkgPT0gKCppdCkpOworICAgICAgICBp
ZiAoKCppdCktPm93bmVyKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3RleHR1cmVzLmZpbmQo
KCppdCktPm93bmVyKCkpICE9IG1fdGV4dHVyZXMuZW5kKCkpOworICAgICAgICAgICAgQVNTRVJU
KCgqaXQpLT5vd25lcigpLT5iYWNraW5nKCkgPT0gKCppdCkpOwogICAgICAgICB9CiAgICAgfQog
ICAgIGZvciAoVGV4dHVyZVNldDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmJlZ2luKCk7IGl0
ICE9IG1fdGV4dHVyZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5jdXJyZW50
QmFja2luZygpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9iYWNraW5ncy5maW5kKCgqaXQpLT5j
dXJyZW50QmFja2luZygpKSAhPSBtX2JhY2tpbmdzLmVuZCgpKTsKLSAgICAgICAgICAgIEFTU0VS
VCgoKml0KS0+Y3VycmVudEJhY2tpbmcoKS0+Y3VycmVudFRleHR1cmUoKSA9PSAoKml0KSk7Cisg
ICAgICAgIGlmICgoKml0KS0+YmFja2luZygpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9iYWNr
aW5ncy5maW5kKCgqaXQpLT5iYWNraW5nKCkpICE9IG1fYmFja2luZ3MuZW5kKCkpOworICAgICAg
ICAgICAgQVNTRVJUKCgqaXQpLT5iYWNraW5nKCktPm93bmVyKCkgPT0gKCppdCkpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0zNjgsMTAgKzM0NiwxMCBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6YXNzZXJ0SW52YXJpYW50cygpCiAgICAgLy8gcmVkdWNlTWVtb3J5IHdpbGwg
bm90IGZpbmQgYWxsIHRleHR1cmVzIGF2YWlsYWJsZSBmb3IgZXZpY3Rpb24vcmVjeWNsaW5nKS4K
ICAgICBib29sIHJlYWNoZWRQcm90ZWN0ZWQgPSBmYWxzZTsKICAgICBmb3IgKEJhY2tpbmdTZXQ6
Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigpOyBpdCAhPSBtX2JhY2tpbmdzLmVuZCgp
OyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+Y3VycmVudFRleHR1cmUoKSAmJiAoKml0KS0+
Y3VycmVudFRleHR1cmUoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCisgICAgICAgIGlmICgo
Kml0KS0+b3duZXIoKSAmJiAoKml0KS0+b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkp
CiAgICAgICAgICAgICByZWFjaGVkUHJvdGVjdGVkID0gdHJ1ZTsKICAgICAgICAgaWYgKHJlYWNo
ZWRQcm90ZWN0ZWQpCi0gICAgICAgICAgICBBU1NFUlQoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkg
JiYgKCppdCktPmN1cnJlbnRUZXh0dXJlKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCgoKml0KS0+b3duZXIoKSAmJiAoKml0KS0+b3duZXIoKS0+aXNBYm92
ZVByaW9yaXR5Q3V0b2ZmKCkpOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAppbmRleCAzYzcwYjJiMmEwMjMwOWNhMTY0
ZDZkY2E5MWNkOTBiYzQyYWZlNmVkLi4xMWQ0ZDc3MmY3ZGUwM2I4Mzg2YTg2ZmMzNTk5ZGU3NGMz
NTllZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXIuaApAQCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRlICJDQ1ByaW9yaXRpemVkVGV4dHVy
ZS5oIgogI2luY2x1ZGUgIkNDUHJpb3JpdHlDYWxjdWxhdG9yLmgiCisjaW5jbHVkZSAiQ0NUZXh0
dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTAsNiArNTAsMTQgQEAgcHVibGljOgogICAgIH0K
ICAgICB+Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKCk7CiAKKyAgICAvLyBGSVhNRTogVGhp
cyA5Nk1CIGRlZmF1bHQgaXMgYSBzdHJhZ2dsZXIgZnJvbSB0aGUgb2xkIHRleHR1cmUgbWFuYWdl
ciBhbmQKKyAgICAvLyBpcyBqdXN0IHRvIGdpdmUgdXMgYSBkZWZhdWx0IG1lbW9yeSBhbGxvY2F0
aW9uIGJlZm9yZSB3ZSBnZXQgYSBjYWxsYmFjaworICAgIC8vIGZyb20gdGhlIEdQVSBtZW1vcnkg
bWFuYWdlci4gV2Ugc2hvdWxkIHByb2JhYnkgZWl0aGVyOgorICAgIC8vIC0gd2FpdCBmb3IgdGhl
IGNhbGxiYWNrIGJlZm9yZSByZW5kZXJpbmcgYW55dGhpbmcgaW5zdGVhZAorICAgIC8vIC0gbWFr
ZSBhIHN5bmNocm9ub3VzIGNhbGwgdG8gR1BVIG1lbS1tYW5hZ2VyIHRvIGdldCB0aGUgZGVmYXVs
dCAoaXQgY2FuCisgICAgLy8gICBkZWNpZGUgd2hldGhlciB0byBibG9jayBvciBqdXN0IHJldHVy
biB0aGlzIGRlZmF1bHQgaXRzZWxmKS4KKyAgICBzdGF0aWMgc2l6ZV90IGRlZmF1bHRNZW1vcnlB
bGxvY2F0aW9uTGltaXQoKSB7IHJldHVybiA5NiAqIDEwMjQgKiAxMDI0OyB9CisKICAgICAvLyBt
ZW1vcnlVc2VCeXRlcygpIGRlc2NyaWJlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgYnkgZXhp
c3RpbmcgYWxsb2NhdGVkIHRleHR1cmVzLgogICAgIC8vIG1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMo
KSBkZXNjcmliZXMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdvdWxkIGJlIHVzZWQgaWYgYWxs
CiAgICAgLy8gdGV4dHVyZXMgdGhhdCBhcmUgYWJvdmUgdGhlIGN1dG9mZiB3ZXJlIGFsbG9jYXRl
ZC4KQEAgLTkxLDggKzk5LDggQEAgcHJpdmF0ZToKICAgICAvLyBDb21wYXJlIGJhY2tpbmdzLiBM
b3dlc3QgcHJpb3JpdHkgZmlyc3QuCiAgICAgc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVCYWNr
aW5ncyhDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYSwgQ0NQcmlvcml0aXplZFRleHR1
cmU6OkJhY2tpbmcqIGIpCiAgICAgewotICAgICAgICBpbnQgcHJpb3JpdHlBID0gYS0+Y3VycmVu
dFRleHR1cmUoKSA/IGEtPmN1cnJlbnRUZXh0dXJlKCktPnJlcXVlc3RQcmlvcml0eSgpIDogQ0NQ
cmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCk7Ci0gICAgICAgIGludCBwcmlvcml0
eUIgPSBiLT5jdXJyZW50VGV4dHVyZSgpID8gYi0+Y3VycmVudFRleHR1cmUoKS0+cmVxdWVzdFBy
aW9yaXR5KCkgOiBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKTsKKyAgICAg
ICAgaW50IHByaW9yaXR5QSA9IGEtPm93bmVyKCkgPyBhLT5vd25lcigpLT5yZXF1ZXN0UHJpb3Jp
dHkoKSA6IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpOworICAgICAgICBp
bnQgcHJpb3JpdHlCID0gYi0+b3duZXIoKSA/IGItPm93bmVyKCktPnJlcXVlc3RQcmlvcml0eSgp
IDogQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCk7CiAgICAgICAgIGlmIChw
cmlvcml0eUEgPT0gcHJpb3JpdHlCKQogICAgICAgICAgICAgcmV0dXJuIGEgPCBiOwogICAgICAg
ICByZXR1cm4gQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnByaW9yaXR5SXNMb3dlcihwcmlvcml0eUEs
IHByaW9yaXR5Qik7CkBAIC0xMDIsOSArMTEwLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVk
dWNlTWVtb3J5KHNpemVfdCBsaW1pdCwgVGV4dHVyZUFsbG9jYXRvciopOwogCi0gICAgdm9pZCBs
aW5rKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiwgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcq
KTsKLSAgICB2b2lkIHVubGluayhDQ1ByaW9yaXRpemVkVGV4dHVyZSosIENDUHJpb3JpdGl6ZWRU
ZXh0dXJlOjpCYWNraW5nKik7Ci0KICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyog
Y3JlYXRlQmFja2luZyhJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQsIFRleHR1cmVBbGxvY2F0b3Iq
KTsKICAgICB2b2lkIGRlc3Ryb3lCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5n
KiwgVGV4dHVyZUFsbG9jYXRvciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXR5Q2FsY3VsYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0eUNhbGN1bGF0
b3IuaAppbmRleCA2OGEyMjViZTBiOWVmMzI2NWYwZjg5OGE2MmZkYzU4ZGNjZWZiN2E2Li5hOTBh
MDczOTAyYjJjNzY4YmJjYTc5MjdkYzAyMjhhMTkzNmE4ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXR5Q2FsY3VsYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJpb3JpdHlDYWxjdWxhdG9yLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgi
Ci0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Njb3BlZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcAppbmRleCA4MGY4MzE1NDExYmU1NTFlYTZkY2E0
MDM2ZWNiOWJlYjdkNjU2N2YwLi5iOWY3NWQxODRjM2E2ODAxZmJiZThmZGZiYTQxZTQzMzY4ZmEz
MzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHAKQEAgLTI0LDEwICsyNCw5IEBA
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUZXh0
dXJlLmgiCiAKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIiAvLyBGb3IgVGV4dHVyZUFsbG9j
YXRvcgorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njb3BlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCmluZGV4IDVhM2M0ZTk2NGRkMmM2Y2VlNWE3
NDFkZjMxZjNjZmU2YmQxZTI0YzAuLjlmNzI0MWY1MTdmNGE0MGVkYjJhYzhjNDE4YWY4YjcxMWZl
NGQwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIENDU2NvcGVkVGV4dHVyZV9oCiAjZGVmaW5lIENDU2NvcGVkVGV4dHVyZV9oCiAKKyNp
bmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlLmgiCiAK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0zNCw3ICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIAogY2xhc3MgQ0NTY29wZWRUZXh0dXJl
IDogcHJvdGVjdGVkIENDVGV4dHVyZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTY29w
ZWRUZXh0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKaW5kZXggYTI5NjEwNDY5M2RkNDUyZjJiOTg1Nzgy
MDQ1ZWYwY2E3NmMxMmU4Mi4uMGQ1ZDlmNzY4M2U1NjllYzZkYjQ3ODJkNjg3MTlhYWU4YTNkOTcy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlLmgKQEAgLTM1LDYgKzM1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIENDVGV4dHVyZSB7CiBwdWJsaWM6CiAgICAgQ0NUZXh0dXJlKCkgOiBtX2lkKDAp
IHsgfQorICAgIENDVGV4dHVyZSh1bnNpZ25lZCBpZCwgSW50U2l6ZSBzaXplLCBHQzNEZW51bSBm
b3JtYXQpCisgICAgICAgIDogbV9pZChpZCkKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAg
ICAgLCBtX2Zvcm1hdChmb3JtYXQpIHsgfQogCiAgICAgdW5zaWduZWQgaWQoKSBjb25zdCB7IHJl
dHVybiBtX2lkOyB9CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCA1NjRlMzY5NmJl
MTU1MmVmNGY0YjQ1ZDA1NGFlYWQzZmFhNTY0NDUzLi4yYzNiNzU4NGNlNjVmZmQ0MWM1NDBjYjIw
MjlkNjI0NjJhNDEyZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAt
NTQsOCArNTQsNiBAQCBzdGF0aWMgY29uc3QgaW50IGRlYnVnVGlsZUJvcmRlck1pc3NpbmdUaWxl
Q29sb3JSZWQgPSAyNTU7CiBzdGF0aWMgY29uc3QgaW50IGRlYnVnVGlsZUJvcmRlck1pc3NpbmdU
aWxlQ29sb3JHcmVlbiA9IDA7CiBzdGF0aWMgY29uc3QgaW50IGRlYnVnVGlsZUJvcmRlck1pc3Np
bmdUaWxlQ29sb3JCbHVlID0gMDsKIAotY2xhc3MgTWFuYWdlZFRleHR1cmU7Ci0KIGNsYXNzIERy
YXdhYmxlVGlsZSA6IHB1YmxpYyBDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZSB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRHJhd2FibGVUaWxlKTsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRl
b0xheWVySW1wbC5jcHAKaW5kZXggM2UxZjU4MTM1M2YwMmNhYjNhMTU2MDQzZTAyOWYxOGYzZGU0
MDJlNi4uY2MzNDljOGU1ZDE3ZTFkZGJjYWU5NjU5MGU5YmFhOWM3M2YxMzJkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xh
eWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJM
YXllclRleHR1cmVTdWJJbWFnZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSAiVGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiIC8vIEZvciBU
ZXh0dXJlQWxsb2NhdG9yCisjaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUg
ImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CmluZGV4IGJlZGUyYjFlMzFkYzBjYmVjOThhZDI5MjI5ZjRiZGViMDc3NzAxOWMuLjNmOTA1YTdh
YjQyM2U5MTFhYTdjMGM3OTYwMDFmODY1YTA1OTAxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwaQpAQCAtMTM4LDcgKzEzOCw2IEBACiAgICAgICAgICAgICAndGVzdHMvU2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UZXh0dXJlQ29waWVy
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RleHR1cmVMYXllckNocm9taXVtVGVzdC5j
cHAnLAotICAgICAgICAgICAgJ3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5jcHAnLAogICAgICAg
ICAgICAgJ3Rlc3RzL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlclRlc3QuY3BwJywKICAgICAgICAg
ICAgICd0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvVGlsaW5nRGF0YVRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggZmJlZGU2Y2VkMTg1
Y2M1ZThjZDUxYWU1OWRiYmEzNGYwMzZmZjM5NS4uNmQyNGMxZGU3MDAzZjA5MzE1OWQyMGNkN2Q0
NGJmYWMxNTU0ZTFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNs
dWRlICJDQ1Rlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJNYW5hZ2Vk
VGV4dHVyZS5oIgogI2luY2x1ZGUgImNjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVGlsaW5nRGF0YS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4
dHVyZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVk
VGV4dHVyZVRlc3QuY3BwCmluZGV4IDQ2OGFmMzZiYmE1MGUzZWU4MTY1ZjNhY2FjNzRlMWU0OWY2
Zjk1NTkuLmE4Yjk2Mjc4N2Q4ZjIzZmViNjhmZDcyYmM1ZjY3OTUyYTVhNjYwZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0
dXJlVGVzdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNDVGlsZWRMYXllclRl
c3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaCIK
KyNpbmNsdWRlICJjYy9DQ1RleHR1cmUuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUwLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAg
c2l6ZV90IHRleHR1cmVzTWVtb3J5U2l6ZShzaXplX3QgdGV4dHVyZUNvdW50KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhtX3RleHR1cmVTaXpl
LCBtX3RleHR1cmVGb3JtYXQpICogdGV4dHVyZUNvdW50OworICAgICAgICByZXR1cm4gQ0NUZXh0
dXJlOjptZW1vcnlTaXplQnl0ZXMobV90ZXh0dXJlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSAqIHRl
eHR1cmVDb3VudDsKICAgICB9CiAKICAgICBQYXNzT3duUHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcj4gY3JlYXRlTWFuYWdlcihzaXplX3QgbWF4VGV4dHVyZXMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCmluZGV4IDQwZDNjZTVlNmZm
OTQzYmNkMGU5NGU3NWFiMzBiZTZjODA2ZWRkMTkuLjJlMmMxYTA2ZjRiMGZmNWMwY2VmMWQzZDUy
NzllZDgyNmU5YzllOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaHJlYWRlZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aHJlYWRlZFRlc3QuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAj
aW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUg
ImNjL0NDQWN0aXZlQW5pbWF0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IDUzZTU4YjNhN2E2ZDE2MTFi
NWEwNTFlM2U4OTMzYjQzN2Q0MDQxNzUuLjJiNDM3M2UwM2IzYTM2OTgzOGQ1ZjBlMWM1N2FhMGMx
M2Q1YzU0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aWxlZExheWVyVGVzdENvbW1vbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW50U2l6
ZS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJSZWdpb24u
aCIKKyNpbmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dHVyZUNvcGll
ci5oIgogI2luY2x1ZGUgIlRleHR1cmVVcGxvYWRlci5oIgogI2luY2x1ZGUgIlRpbGVkTGF5ZXJD
aHJvbWl1bS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52
YXMyRExheWVyQnJpZGdlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Nh
bnZhczJETGF5ZXJCcmlkZ2VUZXN0LmNwcAppbmRleCA0MzU5MDdjOTQzNzhhYmJjZGNiOTA5NDMw
ZWQ3YzAyZGM3OTE4ODljLi5jMjA2ZGRhNWU3NWExMjU5NWI1MWZjOGVkNGYwNTE3Y2ZlNzI2ZDA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJC
cmlkZ2VUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJE
TGF5ZXJCcmlkZ2VUZXN0LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
TGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
V2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgImNjL0NDR3Jh
cGhpY3NDb250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RleHR1cmVNYW5hZ2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rl
eHR1cmVNYW5hZ2VyVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MzEz
ZjVkYzIzNTBhMWU4ODg5NjRlMTJkZWViNTU4MzJmMmY4NzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
ZXh0dXJlTWFuYWdlclRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIkNDVGlsZWRMYXll
clRlc3RDb21tb24uaCIKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgotI2luY2x1ZGUgIlRl
eHR1cmVNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0czsKLXVzaW5nIG5hbWVz
cGFjZSBXVEY7Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIFRleHR1cmVNYW5hZ2VyVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLXB1YmxpYzoKLSAgICBUZXh0dXJlTWFuYWdlclRlc3QoKQot
ICAgICAgICA6IG1fdGV4dHVyZVNpemUoMjU2LCAyNTYpCi0gICAgICAgICwgbV90ZXh0dXJlRm9y
bWF0KEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IH5UZXh0dXJlTWFuYWdlclRlc3QoKQotICAgIHsKLSAgICB9Ci0KLSAgICBzaXplX3QgdGV4dHVy
ZXNNZW1vcnlTaXplKHNpemVfdCB0ZXh0dXJlQ291bnQpCi0gICAgewotICAgICAgICByZXR1cm4g
VGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKG1fdGV4dHVyZVNpemUsIG1fdGV4dHVyZUZv
cm1hdCkgKiB0ZXh0dXJlQ291bnQ7Ci0gICAgfQotCi0gICAgUGFzc093blB0cjxUZXh0dXJlTWFu
YWdlcj4gY3JlYXRlVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heFRleHR1cmVzLCBzaXplX3QgcHJl
ZmVycmVkVGV4dHVyZXMpCi0gICAgewotICAgICAgICByZXR1cm4gVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlc01lbW9yeVNpemUo
cHJlZmVycmVkVGV4dHVyZXMpLCAxMDI0KTsKLSAgICB9Ci0KLSAgICBib29sIHJlcXVlc3RUZXh0
dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyLCBUZXh0dXJlVG9rZW4gdG9rZW4pCi0gICAgewot
ICAgICAgICBib29sIHJlc3VsdCA9IG1hbmFnZXItPnJlcXVlc3RUZXh0dXJlKHRva2VuLCBtX3Rl
eHR1cmVTaXplLCBtX3RleHR1cmVGb3JtYXQpOwotICAgICAgICBpZiAocmVzdWx0KQotICAgICAg
ICAgICAgbWFuYWdlci0+YWxsb2NhdGVUZXh0dXJlKCZtX2Zha2VUZXh0dXJlQWxsb2NhdG9yLCB0
b2tlbik7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZh
a2VUZXh0dXJlQWxsb2NhdG9yIG1fZmFrZVRleHR1cmVBbGxvY2F0b3I7Ci0gICAgY29uc3QgSW50
U2l6ZSBtX3RleHR1cmVTaXplOwotICAgIGNvbnN0IEdDM0RlbnVtIG1fdGV4dHVyZUZvcm1hdDsK
LX07Ci0KLVRFU1RfRihUZXh0dXJlTWFuYWdlclRlc3QsIHJlcXVlc3RUZXh0dXJlSW5QcmVmZXJy
ZWRMaW1pdCkKLXsKLSAgICBjb25zdCBzaXplX3QgcHJlZmVycmVkVGV4dHVyZXMgPSA4OwotICAg
IE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBjcmVhdGVUZXh0dXJlTWFu
YWdlcihwcmVmZXJyZWRUZXh0dXJlcyAqIDIsIHByZWZlcnJlZFRleHR1cmVzKTsKLSAgICBUZXh0
dXJlVG9rZW4gdG9rZW5zW3ByZWZlcnJlZFRleHR1cmVzXTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHByZWZlcnJlZFRleHR1cmVzOyArK2kpIHsKLSAgICAgICAgdG9rZW5zW2ldID0gdGV4
dHVyZU1hbmFnZXItPmdldFRva2VuKCk7Ci0gICAgICAgIGlmIChpKQotICAgICAgICAgICAgRVhQ
RUNUX0dUKHRva2Vuc1tpXSwgdG9rZW5zW2kgLSAxXSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHJl
cXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tlbnNbaV0pKTsKLSAgICAgICAg
RVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5zW2ldKSk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5pc1Byb3RlY3RlZCh0b2tlbnNbaV0pKTsK
LSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWZlcnJlZFRleHR1cmVzOyAr
K2kpCi0gICAgICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vu
c1tpXSkpOwotCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0
dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci19Ci0KLVRF
U1RfRihUZXh0dXJlTWFuYWdlclRlc3QsIHJlcXVlc3RUZXh0dXJlRXhjZWVkaW5nUHJlZmVycmVk
TGltaXQpCi17Ci0gICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVzID0gODsKLSAgICBjb25zdCBz
aXplX3QgcHJlZmVycmVkVGV4dHVyZXMgPSA0OwotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBjcmVhdGVUZXh0dXJlTWFuYWdlcihtYXhUZXh0dXJlcywgcHJlZmVy
cmVkVGV4dHVyZXMpOwotICAgIFRleHR1cmVUb2tlbiB0b2tlbnNbbWF4VGV4dHVyZXNdOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkVGV4dHVyZXM7ICsraSkgewotICAgICAg
ICB0b2tlbnNbaV0gPSB0ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUocmVxdWVzdFRleHR1cmUodGV4dHVyZU1hbmFnZXIuZ2V0KCksIHRva2Vuc1tpXSkpOwot
ICAgICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbaV0p
KTsKLSAgICB9Ci0KLSAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZSh0b2tlbnNb
MF0pOwotICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKHRva2Vuc1syXSk7Ci0K
LSAgICBmb3IgKHNpemVfdCBpID0gcHJlZmVycmVkVGV4dHVyZXM7IGkgPCBtYXhUZXh0dXJlczsg
KytpKSB7Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwot
ICAgICAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwg
dG9rZW5zW2ldKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0
dXJlKHRva2Vuc1tpXSkpOwotICAgIH0KLQotICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RU
ZXh0dXJlKHRva2Vuc1s0XSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUo
dG9rZW5zWzVdKTsKLQotICAgIC8vIFRoZXNlIHRleHR1cmVzIHNob3VsZCBiZSB2YWxpZCBiZWZv
cmUgdGhlIHJlZHVjZU1lbW9yeVRvTGltaXQgY2FsbC4KLSAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJl
TWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbMF0pKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJl
TWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbMl0pKTsKLQotICAgIHRleHR1cmVNYW5hZ2VyLT5y
ZWR1Y2VNZW1vcnlUb0xpbWl0KHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcykp
OwotCi0gICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1sw
XSkpOwotICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1sx
XSkpOwotICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5pc1Byb3RlY3RlZCh0b2tlbnNb
MV0pKTsKLSAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5z
WzJdKSk7Ci0gICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5z
WzNdKSk7Ci0gICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKHRva2Vu
c1szXSkpOwotCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0
dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci19Ci0KLVRF
U1RfRihUZXh0dXJlTWFuYWdlclRlc3QsIHJlcXVlc3RUZXh0dXJlRXhjZWVkaW5nTWF4TGltaXQp
Ci17Ci0gICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVzID0gODsKLSAgICBjb25zdCBzaXplX3Qg
cHJlZmVycmVkVGV4dHVyZXMgPSA0OwotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVy
ZU1hbmFnZXIgPSBjcmVhdGVUZXh0dXJlTWFuYWdlcihtYXhUZXh0dXJlcywgcHJlZmVycmVkVGV4
dHVyZXMpOwotICAgIFRleHR1cmVUb2tlbiB0b2tlbnNbbWF4VGV4dHVyZXNdOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkgewotICAgICAgICB0b2tlbnNbaV0g
PSB0ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKTsKLSAgICAgICAgRVhQRUNUX1RSVUUocmVxdWVz
dFRleHR1cmUodGV4dHVyZU1hbmFnZXIuZ2V0KCksIHRva2Vuc1tpXSkpOwotICAgICAgICBFWFBF
Q1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbaV0pKTsKLSAgICB9Ci0K
LSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1h
bmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbWF4VGV4dHVyZXM7ICsraSkgewotICAgICAgICBUZXh0dXJlVG9rZW4gdG9rZW4gPSB0
ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHJlcXVlc3RU
ZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tlbikpOwotICAgICAgICBFWFBFQ1RfRkFM
U0UodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW4pKTsKLSAgICB9Ci0KLSAgICBFWFBF
Q1RfRVEodGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpLCB0ZXh0dXJlc01l
bW9yeVNpemUobWF4VGV4dHVyZXMpKTsKLQotICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RU
ZXh0dXJlKHRva2Vuc1sxXSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUo
dG9rZW5zWzNdKTsKLSAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdl
ci5nZXQoKSwgdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShy
ZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdGV4dHVyZU1hbmFnZXItPmdldFRv
a2VuKCkpKTsKLSAgICBFWFBFQ1RfRkFMU0UocmVxdWVzdFRleHR1cmUodGV4dHVyZU1hbmFnZXIu
Z2V0KCksIHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1
cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5
VXNlQnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJl
KHRva2Vuc1sxXSkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVy
ZSh0b2tlbnNbM10pKTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgcmVkdWNlTWVt
b3J5VG9MaW1pdCkKLXsKLSAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwotICAgIGNv
bnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDQ7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRleHR1cmVzLCBw
cmVmZXJyZWRUZXh0dXJlcyk7Ci0gICAgVGV4dHVyZVRva2VuIHRva2Vuc1ttYXhUZXh0dXJlc107
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKSB7Ci0gICAgICAg
IHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7Ci0g
ICAgfQotCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRl
eHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgdGV4dHVyZU1hbmFn
ZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSk7
Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVN
YW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJl
ZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSk7
Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVN
YW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0KLSAgICBjb25zdCBzaXplX3QgdW5w
cm90ZWN0ZWRUZXh0dXJlcyA9IHByZWZlcnJlZFRleHR1cmVzICsgMTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHByZWZlcnJlZFRleHR1cmVzICsgMTsgKytpKQotICAgICAgICB0ZXh0dXJl
TWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZSh0b2tlbnNbaV0pOwotCi0gICAgdGV4dHVyZU1hbmFn
ZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSk7
Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVN
YW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJl
ZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSk7
Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIHRl
eHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgdGV4dHVyZU1hbmFn
ZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKDEpKTsKLSAgICBFWFBF
Q1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzIC0gdW5wcm90ZWN0ZWRUZXh0dXJl
cyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0KLSAgICAvLyBy
ZWR1Y2VNZW1vcnlUb0xpbWl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBjdXJyZW50IG1lbW9yeSBsaW1p
dHMuCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1
cmVNYW5hZ2VyLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJl
c01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+cHJlZmVycmVk
TWVtb3J5TGltaXRCeXRlcygpKTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgc2V0
TWF4TWVtb3J5TGltaXRCeXRlcykKLXsKLSAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4
OwotICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDQ7Ci0gICAgT3duUHRyPFRl
eHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRl
eHR1cmVzLCBwcmVmZXJyZWRUZXh0dXJlcyk7Ci0gICAgVGV4dHVyZVRva2VuIHRva2Vuc1ttYXhU
ZXh0dXJlc107Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKSB7
Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotICAgICAg
ICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdG9rZW5z
W2ldKSk7Ci0gICAgfQotCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0
dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0KLSAgICBj
b25zdCBzaXplX3QgdW5wcm90ZWN0ZWRUZXh0dXJlcyA9IHByZWZlcnJlZFRleHR1cmVzICsgMTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVucHJvdGVjdGVkVGV4dHVyZXM7ICsraSkKLSAg
ICAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUodG9rZW5zW2ldKTsKLQotICAg
IHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVtb3J5U2l6
ZShtYXhUZXh0dXJlcykpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4
dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkpOwotICAgIHRl
eHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVtb3J5U2l6ZShw
cmVmZXJyZWRUZXh0dXJlcykpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUocHJl
ZmVycmVkVGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkp
OwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCB0
ZXh0dXJlTWFuYWdlci0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsKLX0KLQotVEVTVF9GKFRleHR1
cmVNYW5hZ2VyVGVzdCwgc2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcykKLXsKLSAgICBjb25z
dCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwotICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0
dXJlcyA9IDQ7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNy
ZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRleHR1cmVzLCBwcmVmZXJyZWRUZXh0dXJlcyk7Ci0gICAg
VGV4dHVyZVRva2VuIHRva2Vuc1ttYXhUZXh0dXJlc107Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtYXhUZXh0dXJlczsgKytpKSB7Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5h
Z2VyLT5nZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0
dXJlTWFuYWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7Ci0gICAgfQotCi0gICAgY29uc3Qgc2l6ZV90
IHVucHJvdGVjdGVkVGV4dHVyZXMgPSBwcmVmZXJyZWRUZXh0dXJlcyArIDE7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB1bnByb3RlY3RlZFRleHR1cmVzOyArK2kpCi0gICAgICAgIHRleHR1
cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKHRva2Vuc1tpXSk7Ci0KLSAgICBFWFBFQ1RfRVEo
dGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRN
ZW1vcnlVc2VCeXRlcygpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRl
eHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPm1heE1lbW9yeUxpbWl0Qnl0ZXMoKSk7Ci0KLSAgICAv
LyBTZXR0aW5nIHByZWZlcnJlZCBtZW1vcnkgbGltaXQgb25seSB3b24ndCBmb3JjZSByZWR1Y2VN
ZW1vcnlUb0xpbWl0LgotICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJyZWRNZW1vcnlMaW1p
dEJ5dGVzKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcykpOwotICAgIEVYUEVD
VF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+Y3Vy
cmVudE1lbW9yeVVzZUJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUo
bWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsKLSAg
ICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSwgdGV4dHVy
ZU1hbmFnZXItPnByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoKSk7Ci19Ci0KLVRFU1RfRihUZXh0
dXJlTWFuYWdlclRlc3QsIHRleHR1cmVNYW5hZ2VyRGVzdHJveWVkQmVmb3JlTWFuYWdlZFRleHR1
cmUpCi17Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0
ZVRleHR1cmVNYW5hZ2VyKDEsIDEpOwotICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbWFuYWdl
ZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyLmdldCgpKTsK
LQotICAgIEludFNpemUgc2l6ZSg1MCwgNTApOwotICAgIHVuc2lnbmVkIGZvcm1hdCA9IEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBOwotCi0gICAgLy8gVGV4dHVyZSBpcyBpbml0aWFsbHkgaW52YWxp
ZCwgYnV0IHdlIHNob3VsZCBiZSBhYmxlIHRvIHJlc2VydmUuCi0gICAgRVhQRUNUX0ZBTFNFKG1h
bmFnZWRUZXh0dXJlLT5pc1ZhbGlkKHNpemUsIGZvcm1hdCkpOwotICAgIEVYUEVDVF9UUlVFKG1h
bmFnZWRUZXh0dXJlLT5yZXNlcnZlKHNpemUsIGZvcm1hdCkpOwotICAgIEVYUEVDVF9UUlVFKG1h
bmFnZWRUZXh0dXJlLT5pc1ZhbGlkKHNpemUsIGZvcm1hdCkpOwotCi0gICAgdGV4dHVyZU1hbmFn
ZXIuY2xlYXIoKTsKLQotICAgIC8vIERlbGV0aW5nIHRoZSBtYW5hZ2VyIHNob3VsZCBpbnZhbGlk
YXRlIHRoZSB0ZXh0dXJlIGFuZCByZXNlcnZhdGlvbiBhdHRlbXB0cyBzaG91bGQgZmFpbC4KLSAg
ICBFWFBFQ1RfRkFMU0UobWFuYWdlZFRleHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG1hbmFnZWRUZXh0dXJlLT5yZXNlcnZlKHNpemUsIGZvcm1hdCkpOwot
fQotCi1URVNUX0YoVGV4dHVyZU1hbmFnZXJUZXN0LCB0ZXh0dXJlTW92ZWRUb05ld01hbmFnZXIp
Ci17Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlck9uZSA9IGNyZWF0
ZVRleHR1cmVNYW5hZ2VyKDEsIDEpOwotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVy
ZU1hbmFnZXJUd28gPSBjcmVhdGVUZXh0dXJlTWFuYWdlcigxLCAxKTsKLSAgICBPd25QdHI8TWFu
YWdlZFRleHR1cmU+IG1hbmFnZWRUZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZSh0ZXh0
dXJlTWFuYWdlck9uZS5nZXQoKSk7Ci0KLSAgICBJbnRTaXplIHNpemUoNTAsIDUwKTsKLSAgICB1
bnNpZ25lZCBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKLQotICAgIC8vIFRleHR1
cmUgaXMgaW5pdGlhbGx5IGludmFsaWQsIGJ1dCB3ZSBzaG91bGQgYmUgYWJsZSB0byByZXNlcnZl
LgotICAgIEVYUEVDVF9GQUxTRShtYW5hZ2VkVGV4dHVyZS0+aXNWYWxpZChzaXplLCBmb3JtYXQp
KTsKLSAgICBFWFBFQ1RfVFJVRShtYW5hZ2VkVGV4dHVyZS0+cmVzZXJ2ZShzaXplLCBmb3JtYXQp
KTsKLSAgICBFWFBFQ1RfVFJVRShtYW5hZ2VkVGV4dHVyZS0+aXNWYWxpZChzaXplLCBmb3JtYXQp
KTsKLQotICAgIC8vIFNldHRpbmcgdG8gdGhlIHNhbWUgbWFuYWdlciBzaG91bGQgYmUgYSBuby1v
cC4KLSAgICBtYW5hZ2VkVGV4dHVyZS0+c2V0VGV4dHVyZU1hbmFnZXIodGV4dHVyZU1hbmFnZXJP
bmUuZ2V0KCkpOwotICAgIEVYUEVDVF9UUlVFKG1hbmFnZWRUZXh0dXJlLT5pc1ZhbGlkKHNpemUs
IGZvcm1hdCkpOwotCi0gICAgLy8gU2V0dGluZyB0byBhIGRpZmZlcmVudCBtYW5hZ2VyIHNob3Vs
ZCBpbnZhbGlkYXRlIHRoZSB0ZXh0dXJlLgotICAgIG1hbmFnZWRUZXh0dXJlLT5zZXRUZXh0dXJl
TWFuYWdlcih0ZXh0dXJlTWFuYWdlclR3by5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRkFMU0UobWFu
YWdlZFRleHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0gICAgRVhQRUNUX1RSVUUobWFu
YWdlZFRleHR1cmUtPnJlc2VydmUoc2l6ZSwgZm9ybWF0KSk7Ci0gICAgRVhQRUNUX1RSVUUobWFu
YWdlZFRleHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151844</attachid>
            <date>2012-07-11 19:03:50 -0700</date>
            <delta_ts>2012-07-12 12:52:52 -0700</delta_ts>
            <desc>remove_more_whitespace</desc>
            <filename>bug-91001-20120711190349.patch</filename>
            <type>text/plain</type>
            <size>89965</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg0ZDhiODYyMzliZjQy
NTUwY2RhY2E2OTMzOWNiNDZmYjAzZDY2YS4uMTY5ZTY4NmI4YmI4MzM3ZTNkOGZjNzI0OWRlN2Q0
MGRiMzcwZDAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTA3LTExICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSBD
Q1RleHR1cmUgaW4gQ0NQcmlvcml0aXplZFRleHR1cmUsIHJlbW92ZSBUZXh0dXJlTWFuYWdlci5o
LCBhbmQgbWlub3IgcmVmYWN0b3JpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBDQ1RleHR1cmUgdG8gY2xlYW4gdXAgQ0NQcmlvcml0aXplZFRl
eHR1cmU6OkJhY2tpbmcuCisgICAgICAgIEFkZCBUZXh0dXJlQWxsb2NhdG9yLmggYW5kIHJlbW92
ZSByZW1haW5kZXIgb2YgVGV4dHVyZU1hbmFnZXIuaC9jcHAuCisgICAgICAgIE1pbm9yIG1vdmUv
cmVmYWN0b3Jpbmcgb2YgbGluay91bmxpbmsgaW4gQ0NQcmlvcml0aXplZFRleHR1cmUuCisKKyAg
ICAgICAgUmVmYWN0b3JpbmcgLSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmg6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmguCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1cmVBbGxvY2F0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZUFsbG9jYXRvcjo6flRleHR1cmVBbGxvY2F0b3IpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0RGltZW5zaW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmxpbmspOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dW5saW5rKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4
dHVyZTo6Ynl0ZXMpOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmhhdmVCYWNraW5nVGV4dHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZzo6QmFja2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZzo6fkJhY2tpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmc6Om93bmVy
KToKKyAgICAgICAgKEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRl
eHR1cmU6OmJhY2tpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RMYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdU
ZXh0dXJlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjpyZWR1Y2VNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZ2lzdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJldHVybkJhY2tpbmdUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlQmFja2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ry
b3lCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6YXNzZXJ0SW52YXJpYW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNvbXBhcmVCYWNraW5ncyk6CisgICAgICAgIChD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGV4dHVyZTo6Q0NUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3Bw
OgorCiAyMDEyLTA3LTExICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUaWxlQ2FjaGUgbGF5ZXJzIGhhdmUgd3JvbmcgYm9yZGVyIGRlYnVnIGNvbG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDU2MDNkNDFjN2FlYjA4OGM3MTRjOGMxNDkwMjU2NTM5NTgw
MjBlYjIuLjA3YmUxMWYxZDY1NWE4NTg1ZmVmNWFhNTRjYjkyMDg1MmFkODU4ODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDctMTEgIEVyaWMgUGVu
bmVyICA8ZXBlbm5lckBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIENDVGV4
dHVyZSBpbiBDQ1ByaW9yaXRpemVkVGV4dHVyZSwgcmVtb3ZlIFRleHR1cmVNYW5hZ2VyLmgsIGFu
ZCBtaW5vciByZWZhY3RvcmluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxMDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZpbmcgVGV4dHVyZU1hbmFnZXJUZXN0cyBhbG9uZyB3aXRoIFRleHR1
cmVNYW5hZ2VyCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NQcmlvcml0aXplZFRl
eHR1cmVUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0Ojp0
ZXh0dXJlc01lbW9yeVNpemUpOgorICAgICAgICAqIHRlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcDoK
KyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmg6CisgICAgICAgICogdGVz
dHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RleHR1cmVN
YW5hZ2VyVGVzdC5jcHA6IFJlbW92ZWQuCisKIDIwMTItMDctMTEgIFNoYXduIFNpbmdoICA8c2hh
d25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXgsIGZv
cmdvdCB0byBhZGQgVVJMVGVzdEhlbHBlcnMuKiB3aGVuIGxhbmRpbmcgcjEyMjM0NApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDcyZjc0ZTI0NmE4NzNlODI2OTExOTM1YjY4MGY1MmMzMGY5MWYzYWYuLmM2
MmJkNDQwMDk0MjBjYzQwMTg0MmE4ZTBiOTI5NzBiMzI4NzU5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTgyNDAsOCArODI0MCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVTdWJJbWFnZS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgnLAotICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1DYW52YXMu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNh
bnZhcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9y
bUNvbG9yLmgnLApAQCAtODI2Myw4ICs4MjYxLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uaCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3Bw
JywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdl
ci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxs
b2NhdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVVcGxvYWRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGY4NjljNThh
MmNjYzBiMDlmMjNmNTJjNDcxYzMyYTkwNDhlZGNlNDQuLmQ3NWNmMDU0ZGM1MmU5YjI3Zjg1NTRh
YTVlNWFkN2JmNTllODIyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTGF5ZXJQ
YWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1Db250ZXh0U2tpYS5oIgorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKICNp
bmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRm
b3JtX2NhbnZhcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKaW5kZXggZDk3OTY4YzAzNTU2MjQzMDU1MmNmZDhiZjc5NzYwNDBmZjkzOGQy
Ni4uMjc2ZTJiMzkxNzkyNjczYzRhNGYyYjQ0MjlmZGFkODg2YjRlZGVhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzgsNiArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwog
Y2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiAvLyBU
aGlzIGNsYXNzIHJhc3Rlcml6ZXMgdGhlIGNvbnRlbnRSZWN0IGludG8gYSBza2lhIGJpdG1hcCBj
YW52YXMuIEl0IHRoZW4gdXBkYXRlcwogLy8gdGV4dHVyZXMgYnkgY29weWluZyBmcm9tIHRoZSBj
YW52YXMgaW50byB0aGUgdGV4dHVyZSwgdXNpbmcgTWFwU3ViSW1hZ2UgaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKaW5kZXggMjNjZmZlYTk0MjBjMWI2MDY0NTdiZmUxZWZmMjcyZWU4Y2FmMzU0My4uODZm
YjJjOGMzYjQxMzg4NWZlYjlmZGU4MjNmOTUyMDgyODllYjE2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVk
ZSAiU2tDYW52YXMuaCIKICNpbmNsdWRlICJTa0RldmljZS5oIgorI2luY2x1ZGUgIlRleHR1cmVB
bGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNzg3YjM5OTM3Yzk5ZTE3YTY0YWViNGQw
ODhhNWNlODk4YmVlZGI2Yy4uOWYxMzg4ODI3YjM2ZDc3Y2E4OTNmMzNmM2I3MTMwZjU2MzE2ZGZm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFRleHR1cmVBbGxvY2F0b3I7CisKIC8vIFRoaXMgY2xhc3MgcmVjb3JkcyB0
aGUgY29udGVudFJlY3QgaW50byBhbiBTa1BpY3R1cmUsIHRoZW4gc29mdHdhcmUgcmFzdGVyaXpl
cwogLy8gdGhlIFNrUGljdHVyZSBpbnRvIGJpdG1hcHMgZm9yIGVhY2ggdGlsZS4gVGhpcyBpbXBs
ZW1lbnRzIENDU2V0dGluZ3M6OnBlclRpbGVQYWludGluZy4KIGNsYXNzIEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCAxNDE2
NDEzM2QxNmI4MjFiNWQyMGM1ZDk0NTYyMjBiYTg2YTJiYjZjLi43ZGNkNzNhOGEwNDkxMjlkMmUy
OTgwM2IxYjRlYjU0ZjBlOGU1Yzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTM2LDcgKzM2LDYgQEAKIAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCiAj
aW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJl
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA1NWI1
OTI5YTM0NjkxN2E1ZTZjNDExYTUwYTAxYTkyZGZmZGVkNzg0Li5hZTcxMGQ2YzMwOGM2NzdkMTVl
YTEyYjA2NGUxMmRkM2UzNzhhZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0NvbnRleHQz
RC5oIgogI2luY2x1ZGUgIlNrQml0bWFwLmgiCiAjaW5jbHVkZSAiU2tDb2xvci5oIgotI2luY2x1
ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
LmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlRyYWNraW5nVGV4dHVyZUFs
bG9jYXRvci5oIgpAQCAtMjE1LDExICsyMTQsMTAgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmluaXRpYWxpemUoKQogCiAgICAgbV9jYXBhYmlsaXRpZXMudXNpbmdUZXh0dXJlU3RvcmFn
ZUV4dGVuc2lvbiA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2Ui
KTsKIAorICAgIG1fY2xpZW50LT5zZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRNZW1vcnlBbGxvY2F0aW9uTGltaXQoKSk7CiAg
ICAgbV9jYXBhYmlsaXRpZXMudXNpbmdHcHVNZW1vcnlNYW5hZ2VyID0gZXh0ZW5zaW9ucy5jb250
YWlucygiR0xfQ0hST01JVU1fZ3B1X21lbW9yeV9tYW5hZ2VyIik7CiAgICAgaWYgKG1fY2FwYWJp
bGl0aWVzLnVzaW5nR3B1TWVtb3J5TWFuYWdlcikKICAgICAgICAgbV9jb250ZXh0LT5zZXRNZW1v
cnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrQ0hST01JVU0odGhpcyk7Ci0gICAgZWxzZQotICAg
ICAgICBtX2NsaWVudC0+c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFn
ZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSk7CiAKICAgICBtX2NhcGFiaWxpdGll
cy51c2luZ0Rpc2NhcmRGcmFtZWJ1ZmZlciA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0NIUk9N
SVVNX2Rpc2NhcmRfZnJhbWVidWZmZXIiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGFiZjFiZWJkZWE1NjZjODBkOGIxY2I1YTJhZWU0
YmY3YmMxZDkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJl
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0j
aW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCi0jaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlIDxwdWJsaWMv
V2ViR3JhcGhpY3NDb250ZXh0M0QuaD4KLQotdXNpbmcgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRl
eHQzRDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1NYW5hZ2VkVGV4dHVyZTo6TWFuYWdlZFRl
eHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCi0gICAgOiBtX3RleHR1cmVNYW5hZ2VyKG1h
bmFnZXIpCi0gICAgLCBtX3Rva2VuKDApCi0gICAgLCBtX2Zvcm1hdCgwKQotICAgICwgbV90ZXh0
dXJlSWQoMCkKLXsKLSAgICBtX3RleHR1cmVNYW5hZ2VyLT5yZWdpc3RlclRleHR1cmUodGhpcyk7
Ci19Ci0KLU1hbmFnZWRUZXh0dXJlOjpNYW5hZ2VkVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFu
YWdlciwgVGV4dHVyZVRva2VuIHRva2VuLCBJbnRTaXplIHNpemUsIHVuc2lnbmVkIGZvcm1hdCwg
dW5zaWduZWQgdGV4dHVyZUlkKQotICAgIDogbV90ZXh0dXJlTWFuYWdlcihtYW5hZ2VyKQotICAg
ICwgbV90b2tlbih0b2tlbikKLSAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9mb3JtYXQoZm9y
bWF0KQotICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQotewotICAgIG1fdGV4dHVyZU1hbmFn
ZXItPnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsKLX0KLQotTWFuYWdlZFRleHR1cmU6On5NYW5hZ2Vk
VGV4dHVyZSgpCi17Ci0gICAgaWYgKCFtX3RleHR1cmVNYW5hZ2VyKQotICAgICAgICByZXR1cm47
Ci0gICAgbV90ZXh0dXJlTWFuYWdlci0+dW5yZWdpc3RlclRleHR1cmUodGhpcyk7Ci0gICAgaWYg
KG1fdG9rZW4pCi0gICAgICAgIG1fdGV4dHVyZU1hbmFnZXItPnJlbGVhc2VUb2tlbihtX3Rva2Vu
KTsKLX0KLQotdm9pZCBNYW5hZ2VkVGV4dHVyZTo6c2V0VGV4dHVyZU1hbmFnZXIoVGV4dHVyZU1h
bmFnZXIqIG1hbmFnZXIpCi17Ci0gICAgaWYgKG1hbmFnZXIgPT0gbV90ZXh0dXJlTWFuYWdlcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fdGV4dHVyZU1hbmFnZXIpCi0gICAgICAgIG1f
dGV4dHVyZU1hbmFnZXItPnVucmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwotICAgIG1fdGV4dHVyZU1h
bmFnZXIgPSBtYW5hZ2VyOwotICAgIGNsZWFyKCk7Ci0gICAgaWYgKG1fdGV4dHVyZU1hbmFnZXIp
Ci0gICAgICAgIG1fdGV4dHVyZU1hbmFnZXItPnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsKLX0KLQot
Ym9vbCBNYW5hZ2VkVGV4dHVyZTo6aXNWYWxpZChjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25l
ZCBmb3JtYXQpCi17Ci0gICAgcmV0dXJuIG1fdG9rZW4gJiYgc2l6ZSA9PSBtX3NpemUgJiYgZm9y
bWF0ID09IG1fZm9ybWF0ICYmIG1fdGV4dHVyZU1hbmFnZXIgJiYgbV90ZXh0dXJlTWFuYWdlci0+
aGFzVGV4dHVyZShtX3Rva2VuKTsKLX0KLQotYm9vbCBNYW5hZ2VkVGV4dHVyZTo6cmVzZXJ2ZShj
b25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBmb3JtYXQpCi17Ci0gICAgaWYgKCFtX3RleHR1
cmVNYW5hZ2VyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1fdG9rZW4pCi0g
ICAgICAgIG1fdG9rZW4gPSBtX3RleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotCi0gICAgYm9v
bCByZXNlcnZlZCA9IHRydWU7Ci0gICAgaWYgKHNpemUgPT0gbV9zaXplICYmIGZvcm1hdCA9PSBt
X2Zvcm1hdCAmJiBtX3RleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKQotICAgICAg
ICBtX3RleHR1cmVNYW5hZ2VyLT5wcm90ZWN0VGV4dHVyZShtX3Rva2VuKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgbV90ZXh0dXJlSWQgPSAwOwotICAgICAgICByZXNlcnZlZCA9IG1fdGV4dHVyZU1h
bmFnZXItPnJlcXVlc3RUZXh0dXJlKG1fdG9rZW4sIHNpemUsIGZvcm1hdCk7Ci0gICAgICAgIGlm
IChyZXNlcnZlZCkgewotICAgICAgICAgICAgbV9zaXplID0gc2l6ZTsKLSAgICAgICAgICAgIG1f
Zm9ybWF0ID0gZm9ybWF0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc2VydmVk
OwotfQotCi12b2lkIE1hbmFnZWRUZXh0dXJlOjp1bnJlc2VydmUoKQotewotICAgIGlmICghbV90
b2tlbiB8fCAhbV90ZXh0dXJlTWFuYWdlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV90ZXh0
dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZShtX3Rva2VuKTsKLX0KLQotdm9pZCBNYW5hZ2Vk
VGV4dHVyZTo6YWxsb2NhdGUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotewotICAgIEFT
U0VSVChtX3RleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKLSAgICBpZiAoIW1f
dGV4dHVyZUlkKQotICAgICAgICBtX3RleHR1cmVJZCA9IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9j
YXRlVGV4dHVyZShhbGxvY2F0b3IsIG1fdG9rZW4pOwotfQotCi12b2lkIE1hbmFnZWRUZXh0dXJl
OjpiaW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yKQotewotICAgIGFsbG9jYXRlKGFsbG9jYXRvcik7Ci0gICAgV2ViR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQzRCgpOwotICAgIGlmICgh
Y29udGV4dDNkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyBwYXRoIGZvciBz
b2Z0d2FyZSBjb21wb3NpdGluZy4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb250ZXh0
M2QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJ
ZCk7Ci19Ci0KLVBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IE1hbmFnZWRUZXh0dXJlOjpzdGVh
bCgpCi17Ci0gICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlID0gYWRvcHRQdHIobmV3
IE1hbmFnZWRUZXh0dXJlKG1fdGV4dHVyZU1hbmFnZXIsIG1fdG9rZW4sIG1fc2l6ZSwgbV9mb3Jt
YXQsIG1fdGV4dHVyZUlkKSk7Ci0gICAgY2xlYXIoKTsKLSAgICByZXR1cm4gdGV4dHVyZS5yZWxl
YXNlKCk7Ci19Ci0KLXZvaWQgTWFuYWdlZFRleHR1cmU6OmNsZWFyKCkKLXsKLSAgICBtX3Rva2Vu
ID0gMDsKLSAgICBtX3NpemUgPSBJbnRTaXplKCk7Ci0gICAgbV9mb3JtYXQgPSAwOwotICAgIG1f
dGV4dHVyZUlkID0gMDsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTWFuYWdlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZlNjdlYmY2OGVhNWVlYmFjNDljYmM1ODYwODQ1ZjdmN2JiNTg0OTUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDg2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1hbmFnZWRUZXh0dXJlX2gKLSNkZWZp
bmUgTWFuYWdlZFRleHR1cmVfaAotCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlRl
eHR1cmVNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgotI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDR3Jh
cGhpY3NDb250ZXh0OwotCi1jbGFzcyBNYW5hZ2VkVGV4dHVyZSB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTWFuYWdlZFRleHR1cmUpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiBjcmVhdGUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1hbmFnZWRUZXh0dXJlKG1hbmFnZXIpKTsKLSAg
ICB9Ci0gICAgfk1hbmFnZWRUZXh0dXJlKCk7Ci0KLSAgICB2b2lkIHNldFRleHR1cmVNYW5hZ2Vy
KFRleHR1cmVNYW5hZ2VyKik7Ci0gICAgdm9pZCBjbGVhck1hbmFnZXIoKSB7IG1fdGV4dHVyZU1h
bmFnZXIgPSAwOyB9Ci0KLSAgICBib29sIGlzVmFsaWQoY29uc3QgSW50U2l6ZSYsIHVuc2lnbmVk
IGZvcm1hdCk7Ci0gICAgYm9vbCByZXNlcnZlKGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmb3Jt
YXQpOwotICAgIHZvaWQgdW5yZXNlcnZlKCk7Ci0gICAgYm9vbCBpc1Jlc2VydmVkKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3RleHR1cmVNYW5hZ2VyICYmIG1fdGV4dHVyZU1hbmFnZXItPmlz
UHJvdGVjdGVkKG1fdG9rZW4pOwotICAgIH0KLQotICAgIHZvaWQgYWxsb2NhdGUoVGV4dHVyZUFs
bG9jYXRvciopOwotICAgIHZvaWQgYmluZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0
dXJlQWxsb2NhdG9yKik7Ci0KLSAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Np
emU7IH0KLSAgICB1bnNpZ25lZCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQot
ICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9Ci0K
LSAgICAvLyBTdGVhbCB0b2tlbiBhbmQgdGV4dHVyZUlkIGJ5IGluc3RhbnRpYXRlcyBhIG5ldyB0
ZXh0dXJlIHVzaW5nIGV4aXN0aW5nCi0gICAgLy8gbWVtYmVyIHZhcmlhYmxlcy4KLSAgICBQYXNz
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiBzdGVhbCgpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0
IE1hbmFnZWRUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7Ci0gICAgTWFuYWdlZFRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqLCBUZXh0dXJlVG9rZW4sIEludFNpemUsIHVuc2lnbmVkIGZvcm1hdCwgdW5z
aWduZWQgdGV4dHVyZUlkKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKLQotICAgIFRleHR1cmVNYW5h
Z2VyKiBtX3RleHR1cmVNYW5hZ2VyOwotICAgIFRleHR1cmVUb2tlbiBtX3Rva2VuOwotICAgIElu
dFNpemUgbV9zaXplOwotICAgIHVuc2lnbmVkIG1fZm9ybWF0OwotICAgIHVuc2lnbmVkIG1fdGV4
dHVyZUlkOwotfTsKLQotfQotCi0jZW5kaWYgLy8gTWFuYWdlZFRleHR1cmVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9S
ZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAppbmRleCAwZTdkNGUzOGM1NmMxZWNjZDk2ZjVjYmFmZDc0
ZjlkZTVmM2Q4N2Q5Li4yYjYwOGY0ZTcyNzI3ZTNhMTA4ZDFlNjk2NGRlNjM5NDA5NmQyOTdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5k
ZXJTdXJmYWNlQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaApAQCAtNDAsNyArNDAsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgTGF5ZXJDaHJv
bWl1bTsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKLWNsYXNzIE1hbmFnZWRUZXh0dXJl
OwogCiBjbGFzcyBSZW5kZXJTdXJmYWNlQ2hyb21pdW0gewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFJlbmRlclN1cmZhY2VDaHJvbWl1bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNThkZTExNTIyYjRhYWRhZTE2YmNiMjdlMDU0ZmY3MzdiODg2YjgzZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVBbGxvY2F0b3IuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVm
IFRleHR1cmVBbGxvY2F0b3JfaAorI2RlZmluZSBUZXh0dXJlQWxsb2NhdG9yX2gKKworI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUg
IkludFNpemUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlQWxsb2Nh
dG9yIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3Qg
SW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVU
ZXh0dXJlKHVuc2lnbmVkIHRleHR1cmUsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVBbGxUZXh0dXJlcygpID0gMDsKKworcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgflRleHR1cmVBbGxvY2F0b3IoKSB7IH0KK307CisKK30KKworI2VuZGlmCisK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
ODVjNzIyMjhlYzAzN2ZjY2U1ZjNmZWM0MDA5MjQ4NTIzN2MwNmJjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMy
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIK
LQotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5oIgot
Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLQotbmFtZXNw
YWNlIHsKLXNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCB2aWV3cG9ydE11bHRpcGxpZXIs
IGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgc2l6ZV90IG1pbk1lZ2FieXRlcywgc2l6ZV90
IG1heE1lZ2FieXRlcykKLXsKLSAgICBpZiAoIXZpZXdwb3J0TXVsdGlwbGllcikKLSAgICAgICAg
cmV0dXJuIG1heE1lZ2FieXRlcyAqIDEwMjQgKiAxMDI0OwotICAgIGlmICh2aWV3cG9ydFNpemUu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbWluTWVnYWJ5dGVzICogMTAyNCAqIDEwMjQ7Ci0g
ICAgcmV0dXJuIG1heChtaW5NZWdhYnl0ZXMgKiAxMDI0ICogMTAyNCwgbWluKG1heE1lZ2FieXRl
cyAqIDEwMjQgKiAxMDI0LCB2aWV3cG9ydE11bHRpcGxpZXIgKiBUZXh0dXJlTWFuYWdlcjo6bWVt
b3J5VXNlQnl0ZXModmlld3BvcnRTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpKTsKLX0K
LX0KLQotc2l6ZV90IFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyhjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpemUpCi17Ci0gICAgc2l6ZV90IHZpZXdwb3J0TXVsdGlwbGllciwgbWluTWVn
YWJ5dGVzLCBtYXhNZWdhYnl0ZXM7Ci0jaWYgT1MoQU5EUk9JRCkKLSAgICB2aWV3cG9ydE11bHRp
cGxpZXIgPSAxNjsKLSAgICBtaW5NZWdhYnl0ZXMgPSAzMjsKLSAgICBtYXhNZWdhYnl0ZXMgPSA2
NDsKLSNlbHNlCi0gICAgdmlld3BvcnRNdWx0aXBsaWVyID0gMDsKLSAgICBtaW5NZWdhYnl0ZXMg
PSAwOwotICAgIG1heE1lZ2FieXRlcyA9IDEyODsKLSNlbmRpZgotICAgIHJldHVybiBtZW1vcnlM
aW1pdEJ5dGVzKHZpZXdwb3J0TXVsdGlwbGllciwgdmlld3BvcnRTaXplLCBtaW5NZWdhYnl0ZXMs
IG1heE1lZ2FieXRlcyk7Ci19Ci0KLXNpemVfdCBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0
Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQotewotICAgIHNpemVfdCB2aWV3cG9y
dE11bHRpcGxpZXIsIG1pbk1lZ2FieXRlcywgbWF4TWVnYWJ5dGVzOwotI2lmIE9TKEFORFJPSUQp
Ci0gICAgdmlld3BvcnRNdWx0aXBsaWVyID0gODsKLSAgICBtaW5NZWdhYnl0ZXMgPSAxNjsKLSAg
ICBtYXhNZWdhYnl0ZXMgPSAzMjsKLSNlbHNlCi0gICAgdmlld3BvcnRNdWx0aXBsaWVyID0gMDsK
LSAgICBtaW5NZWdhYnl0ZXMgPSAwOwotICAgIG1heE1lZ2FieXRlcyA9IDY0OwotI2VuZGlmCi0g
ICAgcmV0dXJuIG1lbW9yeUxpbWl0Qnl0ZXModmlld3BvcnRNdWx0aXBsaWVyLCB2aWV3cG9ydFNp
emUsIG1pbk1lZ2FieXRlcywgbWF4TWVnYWJ5dGVzKTsKLX0KLQotc2l6ZV90IFRleHR1cmVNYW5h
Z2VyOjptZW1vcnlVc2VCeXRlcyhjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51bSB0ZXh0dXJl
Rm9ybWF0KQotewotICAgIC8vIEZJWE1FOiBUaGlzIGFzc3VtZXMgYWxsIHRleHR1cmVzIGFyZSAx
IGJ5dGUvY29tcG9uZW50LgotICAgIGNvbnN0IEdDM0RlbnVtIHR5cGUgPSBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURTsKLSAgICB1bnNpZ25lZCBpbnQgY29tcG9uZW50c1BlclBpeGVs
ID0gNDsKLSAgICB1bnNpZ25lZCBpbnQgYnl0ZXNQZXJDb21wb25lbnQgPSAxOwotICAgIGlmICgh
R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyh0ZXh0dXJl
Rm9ybWF0LCB0eXBlLCAmY29tcG9uZW50c1BlclBpeGVsLCAmYnl0ZXNQZXJDb21wb25lbnQpKQot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIHJldHVybiBzaXplLndpZHRoKCkg
KiBzaXplLmhlaWdodCgpICogY29tcG9uZW50c1BlclBpeGVsICogYnl0ZXNQZXJDb21wb25lbnQ7
Ci19Ci0KLQotVGV4dHVyZU1hbmFnZXI6OlRleHR1cmVNYW5hZ2VyKHNpemVfdCBtYXhNZW1vcnlM
aW1pdEJ5dGVzLCBzaXplX3QgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1
cmVTaXplKQotICAgIDogbV9tYXhNZW1vcnlMaW1pdEJ5dGVzKG1heE1lbW9yeUxpbWl0Qnl0ZXMp
Ci0gICAgLCBtX3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMocHJlZmVycmVkTWVtb3J5TGltaXRC
eXRlcykKLSAgICAsIG1fbWVtb3J5VXNlQnl0ZXMoMCkKLSAgICAsIG1fbWF4VGV4dHVyZVNpemUo
bWF4VGV4dHVyZVNpemUpCi0gICAgLCBtX25leHRUb2tlbigxKQotewotfQotCi1UZXh0dXJlTWFu
YWdlcjo6flRleHR1cmVNYW5hZ2VyKCkKLXsKLSAgICBmb3IgKEhhc2hTZXQ8TWFuYWdlZFRleHR1
cmUqPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRUZXh0dXJlcy5iZWdpbigpOyBpdCAhPSBt
X3JlZ2lzdGVyZWRUZXh0dXJlcy5lbmQoKTsgKytpdCkKLSAgICAgICAgKCppdCktPmNsZWFyTWFu
YWdlcigpOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpzZXRNZW1vcnlBbGxvY2F0aW9uTGlt
aXRCeXRlcyhzaXplX3QgbWVtb3J5TGltaXRCeXRlcykKLXsKLSAgICBzZXRNYXhNZW1vcnlMaW1p
dEJ5dGVzKG1lbW9yeUxpbWl0Qnl0ZXMpOwotI2lmIGRlZmluZWQoT1NfQU5EUk9JRCkKLSAgICAv
LyBPbiBhbmRyb2lkLCB3ZSBhcmUgc2V0dGluZyB0aGUgcHJlZmVycmVkIG1lbW9yeSBsaW1pdCB0
byBoYWxmIG9mIG91cgotICAgIC8vIG1heGltdW0gYWxsb2NhdGlvbiwgYmVjYXVzZSB3ZSB3b3Vs
ZCBsaWtlIHRvIHN0YXkgc2lnbmlmaWNhbnRseSBiZWxvdwotICAgIC8vIHRoZSBhYnNvbHV0ZSBt
ZW1vcnkgbGltaXQgd2hlbmV2ZXIgd2UgY2FuLiBTcGVjaWZpY2FsbHksIGJ5IGxpbWl0dGluZwot
ICAgIC8vIHByZXBhaW50aW5nIG9ubHkgdG8gdGhlIGhhbGZ3YXkgbWVtb3J5IG1hcmsuCi0gICAg
c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhtZW1vcnlMaW1pdEJ5dGVzIC8gMik7Ci0jZWxz
ZQotICAgIHNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXRCeXRlcyk7Ci0j
ZW5kaWYKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhz
aXplX3QgbWVtb3J5TGltaXRCeXRlcykKLXsKLSAgICByZWR1Y2VNZW1vcnlUb0xpbWl0KG1lbW9y
eUxpbWl0Qnl0ZXMpOwotICAgIEFTU0VSVChjdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSA8PSBtZW1v
cnlMaW1pdEJ5dGVzKTsKLSAgICBtX21heE1lbW9yeUxpbWl0Qnl0ZXMgPSBtZW1vcnlMaW1pdEJ5
dGVzOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5
dGVzKHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzKQotewotICAgIG1fcHJlZmVycmVkTWVtb3J5TGlt
aXRCeXRlcyA9IG1lbW9yeUxpbWl0Qnl0ZXM7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnJl
Z2lzdGVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSkKLXsKLSAgICBBU1NFUlQodGV4
dHVyZSk7Ci0gICAgQVNTRVJUKCFtX3JlZ2lzdGVyZWRUZXh0dXJlcy5jb250YWlucyh0ZXh0dXJl
KSk7Ci0KLSAgICBtX3JlZ2lzdGVyZWRUZXh0dXJlcy5hZGQodGV4dHVyZSk7Ci19Ci0KLXZvaWQg
VGV4dHVyZU1hbmFnZXI6OnVucmVnaXN0ZXJUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJl
KQotewotICAgIEFTU0VSVCh0ZXh0dXJlKTsKLSAgICBBU1NFUlQobV9yZWdpc3RlcmVkVGV4dHVy
ZXMuY29udGFpbnModGV4dHVyZSkpOwotCi0gICAgbV9yZWdpc3RlcmVkVGV4dHVyZXMucmVtb3Zl
KHRleHR1cmUpOwotfQotCi1UZXh0dXJlVG9rZW4gVGV4dHVyZU1hbmFnZXI6OmdldFRva2VuKCkK
LXsKLSAgICByZXR1cm4gbV9uZXh0VG9rZW4rKzsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6
cmVsZWFzZVRva2VuKFRleHR1cmVUb2tlbiB0b2tlbikKLXsKLSAgICBUZXh0dXJlTWFwOjppdGVy
YXRvciBpdCA9IG1fdGV4dHVyZXMuZmluZCh0b2tlbik7Ci0gICAgaWYgKGl0ICE9IG1fdGV4dHVy
ZXMuZW5kKCkpCi0gICAgICAgIHJlbW92ZVRleHR1cmUodG9rZW4sIGl0LT5zZWNvbmQpOwotfQot
Ci1ib29sIFRleHR1cmVNYW5hZ2VyOjpoYXNUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbikKLXsK
LSAgICByZXR1cm4gbV90ZXh0dXJlcy5jb250YWlucyh0b2tlbik7Ci19Ci0KLWJvb2wgVGV4dHVy
ZU1hbmFnZXI6OmlzUHJvdGVjdGVkKFRleHR1cmVUb2tlbiB0b2tlbikKLXsKLSAgICByZXR1cm4g
dG9rZW4gJiYgaGFzVGV4dHVyZSh0b2tlbikgJiYgbV90ZXh0dXJlcy5nZXQodG9rZW4pLmlzUHJv
dGVjdGVkOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpwcm90ZWN0VGV4dHVyZShUZXh0dXJl
VG9rZW4gdG9rZW4pCi17Ci0gICAgQVNTRVJUKGhhc1RleHR1cmUodG9rZW4pKTsKLSAgICBUZXh0
dXJlSW5mbyBpbmZvID0gbV90ZXh0dXJlcy50YWtlKHRva2VuKTsKLSAgICBpbmZvLmlzUHJvdGVj
dGVkID0gdHJ1ZTsKLSAgICBtX3RleHR1cmVzLmFkZCh0b2tlbiwgaW5mbyk7Ci0gICAgLy8gSWYg
c29tZW9uZSBwcm90ZWN0cyBhIHRleHR1cmUsIHB1dCBpdCBhdCB0aGUgZW5kIG9mIHRoZSBMUlUg
bGlzdC4KLSAgICBtX3RleHR1cmVMUlVTZXQucmVtb3ZlKHRva2VuKTsKLSAgICBtX3RleHR1cmVM
UlVTZXQuYWRkKHRva2VuKTsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6dW5wcm90ZWN0VGV4
dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0gICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQg
PSBtX3RleHR1cmVzLmZpbmQodG9rZW4pOwotICAgIGlmIChpdCAhPSBtX3RleHR1cmVzLmVuZCgp
KQotICAgICAgICBpdC0+c2Vjb25kLmlzUHJvdGVjdGVkID0gZmFsc2U7Ci19Ci0KLXZvaWQgVGV4
dHVyZU1hbmFnZXI6OnVucHJvdGVjdEFsbFRleHR1cmVzKCkKLXsKLSAgICBmb3IgKFRleHR1cmVN
YXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5iZWdpbigpOyBpdCAhPSBtX3RleHR1cmVzLmVu
ZCgpOyArK2l0KQotICAgICAgICBpdC0+c2Vjb25kLmlzUHJvdGVjdGVkID0gZmFsc2U7Ci19Ci0K
LXZvaWQgVGV4dHVyZU1hbmFnZXI6OmV2aWN0VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRl
eHR1cmVJbmZvIGluZm8pCi17Ci0gICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJUZXh0dXJlTWFuYWdl
cjo6ZXZpY3RUZXh0dXJlIik7Ci0gICAgcmVtb3ZlVGV4dHVyZSh0b2tlbiwgaW5mbyk7Ci19Ci0K
LXZvaWQgVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeVRvTGltaXQoc2l6ZV90IGxpbWl0KQot
ewotICAgIHdoaWxlIChtX21lbW9yeVVzZUJ5dGVzID4gbGltaXQpIHsKLSAgICAgICAgQVNTRVJU
KCFtX3RleHR1cmVMUlVTZXQuaXNFbXB0eSgpKTsKLSAgICAgICAgYm9vbCBmb3VuZENhbmRpZGF0
ZSA9IGZhbHNlOwotICAgICAgICBmb3IgKExpc3RIYXNoU2V0PFRleHR1cmVUb2tlbj46Oml0ZXJh
dG9yIGxydUl0ID0gbV90ZXh0dXJlTFJVU2V0LmJlZ2luKCk7IGxydUl0ICE9IG1fdGV4dHVyZUxS
VVNldC5lbmQoKTsgKytscnVJdCkgewotICAgICAgICAgICAgVGV4dHVyZVRva2VuIHRva2VuID0g
KmxydUl0OwotICAgICAgICAgICAgVGV4dHVyZUluZm8gaW5mbyA9IG1fdGV4dHVyZXMuZ2V0KHRv
a2VuKTsKLSAgICAgICAgICAgIGlmIChpbmZvLmlzUHJvdGVjdGVkKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgZXZpY3RUZXh0dXJlKHRva2VuLCBpbmZvKTsKLSAgICAg
ICAgICAgIGZvdW5kQ2FuZGlkYXRlID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICghZm91bmRDYW5kaWRhdGUpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgfQotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjphZGRUZXh0dXJlKFRleHR1cmVUb2tlbiB0
b2tlbiwgVGV4dHVyZUluZm8gaW5mbykKLXsKLSAgICBBU1NFUlQoIW1fdGV4dHVyZUxSVVNldC5j
b250YWlucyh0b2tlbikpOwotICAgIEFTU0VSVCghbV90ZXh0dXJlcy5jb250YWlucyh0b2tlbikp
OwotICAgIG1fbWVtb3J5VXNlQnl0ZXMgKz0gbWVtb3J5VXNlQnl0ZXMoaW5mby5zaXplLCBpbmZv
LmZvcm1hdCk7Ci0gICAgbV90ZXh0dXJlcy5zZXQodG9rZW4sIGluZm8pOwotICAgIG1fdGV4dHVy
ZUxSVVNldC5hZGQodG9rZW4pOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpkZWxldGVFdmlj
dGVkVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotewotICAgIGlmIChhbGxv
Y2F0b3IpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V2aWN0ZWRUZXh0dXJl
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKG1fZXZpY3RlZFRleHR1cmVzW2ldLnRl
eHR1cmVJZCkgewotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9ldmlj
dGVkVGV4dHVyZXNbaV0uYWxsb2NhdG9yID09IGFsbG9jYXRvcik7Ci0jZW5kaWYKLSAgICAgICAg
ICAgICAgICBhbGxvY2F0b3ItPmRlbGV0ZVRleHR1cmUobV9ldmljdGVkVGV4dHVyZXNbaV0udGV4
dHVyZUlkLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5zaXplLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5m
b3JtYXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIG1fZXZpY3RlZFRl
eHR1cmVzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OmV2aWN0QW5kUmVtb3Zl
QWxsRGVsZXRlZFRleHR1cmVzKCkKLXsKLSAgICB1bnByb3RlY3RBbGxUZXh0dXJlcygpOwotICAg
IHJlZHVjZU1lbW9yeVRvTGltaXQoMCk7Ci0gICAgbV9ldmljdGVkVGV4dHVyZXMuY2xlYXIoKTsK
LX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6ZXZpY3RBbmREZWxldGVBbGxUZXh0dXJlcyhUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCi17Ci0gICAgdW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsK
LSAgICByZWR1Y2VNZW1vcnlUb0xpbWl0KDApOwotICAgIGRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhh
bGxvY2F0b3IpOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpyZW1vdmVUZXh0dXJlKFRleHR1
cmVUb2tlbiB0b2tlbiwgVGV4dHVyZUluZm8gaW5mbykKLXsKLSAgICBBU1NFUlQobV90ZXh0dXJl
TFJVU2V0LmNvbnRhaW5zKHRva2VuKSk7Ci0gICAgQVNTRVJUKG1fdGV4dHVyZXMuY29udGFpbnMo
dG9rZW4pKTsKLSAgICBtX21lbW9yeVVzZUJ5dGVzIC09IG1lbW9yeVVzZUJ5dGVzKGluZm8uc2l6
ZSwgaW5mby5mb3JtYXQpOwotICAgIG1fdGV4dHVyZXMucmVtb3ZlKHRva2VuKTsKLSAgICBBU1NF
UlQobV90ZXh0dXJlTFJVU2V0LmNvbnRhaW5zKHRva2VuKSk7Ci0gICAgbV90ZXh0dXJlTFJVU2V0
LnJlbW92ZSh0b2tlbik7Ci0gICAgRXZpY3Rpb25FbnRyeSBlbnRyeTsKLSAgICBlbnRyeS50ZXh0
dXJlSWQgPSBpbmZvLnRleHR1cmVJZDsKLSAgICBlbnRyeS5zaXplID0gaW5mby5zaXplOwotICAg
IGVudHJ5LmZvcm1hdCA9IGluZm8uZm9ybWF0OwotI2lmbmRlZiBOREVCVUcKLSAgICBlbnRyeS5h
bGxvY2F0b3IgPSBpbmZvLmFsbG9jYXRvcjsKLSNlbmRpZgotICAgIG1fZXZpY3RlZFRleHR1cmVz
LmFwcGVuZChlbnRyeSk7Ci19Ci0KLXVuc2lnbmVkIFRleHR1cmVNYW5hZ2VyOjphbGxvY2F0ZVRl
eHR1cmUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlVG9rZW4gdG9rZW4pCi17
Ci0gICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQodG9rZW4pOwot
ICAgIEFTU0VSVChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKTsKLSAgICBUZXh0dXJlSW5mbyogaW5m
byA9ICZpdC5nZXQoKS0+c2Vjb25kOwotICAgIEFTU0VSVChpbmZvLT5pc1Byb3RlY3RlZCk7Ci0K
LSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSBhbGxvY2F0b3ItPmNyZWF0ZVRleHR1cmUoaW5mby0+
c2l6ZSwgaW5mby0+Zm9ybWF0KTsKLSAgICBpbmZvLT50ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7Ci0j
aWZuZGVmIE5ERUJVRwotICAgIGluZm8tPmFsbG9jYXRvciA9IGFsbG9jYXRvcjsKLSNlbmRpZgot
ICAgIHJldHVybiB0ZXh0dXJlSWQ7Ci19Ci0KLWJvb2wgVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RU
ZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNpZ25lZCBmb3JtYXQp
Ci17Ci0gICAgaWYgKHNpemUud2lkdGgoKSA+IG1fbWF4VGV4dHVyZVNpemUgfHwgc2l6ZS5oZWln
aHQoKSA+IG1fbWF4VGV4dHVyZVNpemUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFRl
eHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5maW5kKHRva2VuKTsKLSAgICBpZiAo
aXQgIT0gbV90ZXh0dXJlcy5lbmQoKSkgewotICAgICAgICBBU1NFUlQoaXQtPnNlY29uZC5zaXpl
ICE9IHNpemUgfHwgaXQtPnNlY29uZC5mb3JtYXQgIT0gZm9ybWF0KTsKLSAgICAgICAgcmVtb3Zl
VGV4dHVyZSh0b2tlbiwgaXQtPnNlY29uZCk7Ci0gICAgfQotCi0gICAgc2l6ZV90IG1lbW9yeVJl
cXVpcmVkQnl0ZXMgPSBtZW1vcnlVc2VCeXRlcyhzaXplLCBmb3JtYXQpOwotICAgIGlmIChtZW1v
cnlSZXF1aXJlZEJ5dGVzID4gbV9tYXhNZW1vcnlMaW1pdEJ5dGVzKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZWR1Y2VNZW1vcnlUb0xpbWl0KG1fbWF4TWVtb3J5TGltaXRCeXRlcyAt
IG1lbW9yeVJlcXVpcmVkQnl0ZXMpOwotICAgIGlmIChtX21lbW9yeVVzZUJ5dGVzICsgbWVtb3J5
UmVxdWlyZWRCeXRlcyA+IG1fbWF4TWVtb3J5TGltaXRCeXRlcykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgVGV4dHVyZUluZm8gaW5mbzsKLSAgICBpbmZvLnNpemUgPSBzaXplOwotICAg
IGluZm8uZm9ybWF0ID0gZm9ybWF0OwotICAgIGluZm8udGV4dHVyZUlkID0gMDsKLSAgICBpbmZv
LmlzUHJvdGVjdGVkID0gdHJ1ZTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgaW5mby5hbGxvY2F0b3Ig
PSAwOwotI2VuZGlmCi0gICAgYWRkVGV4dHVyZSh0b2tlbiwgaW5mbyk7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2ExODliY2Nk
MzQwZTNlYzliNDczZWE4ZThmZTJiOTUxOGJhYTU3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
LSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgVGV4dHVyZU1hbmFnZXJfaAotI2RlZmluZSBUZXh0dXJl
TWFuYWdlcl9oCi0KLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIklu
dFJlY3QuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
Ci0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1hbmFnZWRUZXh0dXJlOwotdHlwZWRlZiBp
bnQgVGV4dHVyZVRva2VuOwotCi1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yIHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVt
IGZvcm1hdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRl
eHR1cmUsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVBbGxUZXh0dXJlcygpID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgflRleHR1
cmVBbGxvY2F0b3IoKSB7IH0KLX07Ci0KLWNsYXNzIFRleHR1cmVNYW5hZ2VyIHsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShUZXh0dXJlTWFuYWdlcik7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8VGV4dHVyZU1hbmFnZXI+IGNyZWF0ZShzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRl
cywgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZU1hbmFnZXIobWF4TWVt
b3J5TGltaXRCeXRlcywgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcywgbWF4VGV4dHVyZVNpemUp
KTsKLSAgICB9Ci0gICAgflRleHR1cmVNYW5hZ2VyKCk7Ci0KLSAgICAvLyBBYnNvbHV0ZSBtYXhp
bXVtIGxpbWl0IGZvciB0ZXh0dXJlIGFsbG9jYXRpb25zIGZvciB0aGlzIGluc3RhbmNlLgotICAg
IHN0YXRpYyBzaXplX3QgaGlnaExpbWl0Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXpl
KTsKLSAgICAvLyBQcmVmZXJyZWQgdGV4dHVyZSBzaXplIGxpbWl0IGdpdmVuIHRoZSB2aWV3cG9y
dCBzaXplLgotICAgIHN0YXRpYyBzaXplX3QgcmVjbGFpbUxpbWl0Qnl0ZXMoY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplKTsKLQotICAgIHN0YXRpYyBzaXplX3QgbWVtb3J5VXNlQnl0ZXMoY29u
c3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7Ci0KLSAgICB2b2lkIHNldE1lbW9yeUFsbG9j
YXRpb25MaW1pdEJ5dGVzKHNpemVfdCk7Ci0gICAgdm9pZCBzZXRNYXhNZW1vcnlMaW1pdEJ5dGVz
KHNpemVfdCk7Ci0gICAgc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMoKSB7IHJldHVybiBtX21h
eE1lbW9yeUxpbWl0Qnl0ZXM7IH0KLSAgICB2b2lkIHNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0
ZXMoc2l6ZV90KTsKLSAgICBzaXplX3QgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcygpIHsgcmV0
dXJuIG1fcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlczsgfQotCi0gICAgdm9pZCByZWdpc3RlclRl
eHR1cmUoTWFuYWdlZFRleHR1cmUqKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJUZXh0dXJlKE1hbmFn
ZWRUZXh0dXJlKik7Ci0KLSAgICBUZXh0dXJlVG9rZW4gZ2V0VG9rZW4oKTsKLSAgICB2b2lkIHJl
bGVhc2VUb2tlbihUZXh0dXJlVG9rZW4pOwotICAgIGJvb2wgaGFzVGV4dHVyZShUZXh0dXJlVG9r
ZW4pOwotCi0gICAgYm9vbCByZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9rZW4sIEludFNpemUsIEdD
M0RlbnVtIHRleHR1cmVGb3JtYXQpOwotCi0gICAgdm9pZCBwcm90ZWN0VGV4dHVyZShUZXh0dXJl
VG9rZW4pOwotICAgIHZvaWQgdW5wcm90ZWN0VGV4dHVyZShUZXh0dXJlVG9rZW4pOwotICAgIHZv
aWQgdW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKLSAgICBib29sIGlzUHJvdGVjdGVkKFRleHR1cmVU
b2tlbik7Ci0KLSAgICB1bnNpZ25lZCBhbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFsbG9jYXRvcios
IFRleHR1cmVUb2tlbik7Ci0gICAgdm9pZCBkZWxldGVFdmljdGVkVGV4dHVyZXMoVGV4dHVyZUFs
bG9jYXRvciopOwotCi0gICAgdm9pZCBldmljdEFuZFJlbW92ZUFsbERlbGV0ZWRUZXh0dXJlcygp
OwotICAgIHZvaWQgZXZpY3RBbmREZWxldGVBbGxUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKik7
Ci0KLSAgICB2b2lkIHJlZHVjZU1lbW9yeVRvTGltaXQoc2l6ZV90KTsKLSAgICBzaXplX3QgY3Vy
cmVudE1lbW9yeVVzZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2VCeXRlczsgfQot
Ci1wcml2YXRlOgotICAgIFRleHR1cmVNYW5hZ2VyKHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVz
LCBzaXplX3QgcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKTsK
LQotICAgIHN0cnVjdCBUZXh0dXJlSW5mbyB7Ci0gICAgICAgIEludFNpemUgc2l6ZTsKLSAgICAg
ICAgR0MzRGVudW0gZm9ybWF0OwotICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7Ci0gICAgICAg
IGJvb2wgaXNQcm90ZWN0ZWQ7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3I7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgdm9pZCBhZGRUZXh0dXJlKFRl
eHR1cmVUb2tlbiwgVGV4dHVyZUluZm8pOwotICAgIHZvaWQgcmVtb3ZlVGV4dHVyZShUZXh0dXJl
VG9rZW4sIFRleHR1cmVJbmZvKTsKLSAgICB2b2lkIGV2aWN0VGV4dHVyZShUZXh0dXJlVG9rZW4s
IFRleHR1cmVJbmZvKTsKLQotICAgIEhhc2hTZXQ8TWFuYWdlZFRleHR1cmUqPiBtX3JlZ2lzdGVy
ZWRUZXh0dXJlczsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxUZXh0dXJlVG9rZW4sIFRleHR1cmVJ
bmZvPiBUZXh0dXJlTWFwOwotICAgIFRleHR1cmVNYXAgbV90ZXh0dXJlczsKLSAgICBMaXN0SGFz
aFNldDxUZXh0dXJlVG9rZW4+IG1fdGV4dHVyZUxSVVNldDsKLQotICAgIHNpemVfdCBtX21heE1l
bW9yeUxpbWl0Qnl0ZXM7Ci0gICAgc2l6ZV90IG1fcHJlZmVycmVkTWVtb3J5TGltaXRCeXRlczsK
LSAgICBzaXplX3QgbV9tZW1vcnlVc2VCeXRlczsKLSAgICBpbnQgbV9tYXhUZXh0dXJlU2l6ZTsK
LSAgICBUZXh0dXJlVG9rZW4gbV9uZXh0VG9rZW47Ci0KLSAgICBzdHJ1Y3QgRXZpY3Rpb25FbnRy
eSB7Ci0gICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZDsKLSAgICAgICAgSW50U2l6ZSBzaXplOwot
ICAgICAgICBHQzNEZW51bSBmb3JtYXQ7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3I7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgVmVjdG9yPEV2aWN0
aW9uRW50cnk+IG1fZXZpY3RlZFRleHR1cmVzOwotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDVjNGJjMDVjZWU5ODdlNjNlZmE4MjczMDEwNTFj
YzZhYTBkZDkxNjkuLmMzNjYzZjNkZDgyMzJiYWIxZTdmMzA1MWIxOTQxZjI5MTMyNjZkN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1
ZGUgIlRpbGVkTGF5ZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2lu
Y2x1ZGUgIlRleHRTdHJlYW0uaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9j
YXRvci5jcHAKaW5kZXggYzU4OWEzYzZlZDNkMDBhZmYxZmJhMGQ3ZDQzNTk0ZjNhYWM5MWU4My4u
N2FlMjlmOTEyYjg4ZTMzOGI4ZGIwZjAzOGE0YjVhODI1MDVjNTM3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHVuc2lnbmVk
IFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiBz
aXplLCBHQzNEZW51bSBmCiAgICAgaWYgKHNpemUud2lkdGgoKSA+IG1fbWF4VGV4dHVyZVNpemUg
fHwgc2l6ZS5oZWlnaHQoKSA+IG1fbWF4VGV4dHVyZVNpemUpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMgKz0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVz
ZUJ5dGVzKHNpemUsIGZvcm1hdCk7CisgICAgbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXMgKz0gQ0NU
ZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKIAogICAgIHVuc2lnbmVkIHRl
eHR1cmVJZCA9IDA7CiAgICAgR0xDKG1fY29udGV4dCwgdGV4dHVyZUlkID0gbV9jb250ZXh0LT5j
cmVhdGVUZXh0dXJlKCkpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHVuc2lnbmVkIFRyYWNraW5nVGV4
dHVyZUFsbG9jYXRvcjo6Y3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEZW51
bSBmCiAKIHZvaWQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpkZWxldGVUZXh0dXJlKHVuc2ln
bmVkIHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQogewot
ICAgIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzIC09IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VC
eXRlcyhzaXplLCBmb3JtYXQpOworICAgIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzIC09IENDVGV4
dHVyZTo6bWVtb3J5U2l6ZUJ5dGVzKHNpemUsIGZvcm1hdCk7CiAgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1cmVJZCkpOwogICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSWQpKTsKICAgICBBU1NFUlQobV9hbGxv
Y2F0ZWRUZXh0dXJlSWRzLmNvbnRhaW5zKHRleHR1cmVJZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3IuaAppbmRleCA3OGVmNDBkMWI0M2U3YjM0MjQ1NGE1MmExNDAwMjRj
NTkxODE5ZmUyLi4zOGY3Y2EwNDNiNGZkOTcwNWI1OWJkMzNmM2E5YmI3MDE1NjBkMTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaApAQCAtMjUsNyArMjUsNyBAQAog
I2lmbmRlZiBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3JfaAogI2RlZmluZSBUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3JfaAogCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJU
ZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCmluZGV4
IDczMWY3NzBjMDk2NjMxODU4YTBhYzNjNGJjOGYzZDcxM2Y2NzEyNjguLmJlMTk5ODNlZmI2MjYz
NmMwNTZiNjkwNjc5ZjVmZDAxZTk2ZjQ4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3Bs
YXkuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNh
bnZhcy5oIgotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWJ1
Z1JlY3RIaXN0b3J5LmgiCiAjaW5jbHVkZSAiY2MvQ0NGcmFtZVJhdGVDb3VudGVyLmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAKaW5kZXggNDE0YjIwNTI2MWIzNzkyMmZiNjAxNzRmOWRjMGUyN2Y3YWEwMzQ0ZS4uYjhi
MjNlYTQ1OWFmYWE5OTk3MjFhYTZjNDczYTZiOGU3ZjUyYjU5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRy
ZWVIb3N0LmgiCiAKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiTWFuYWdl
ZFRleHR1cmUuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50Lmgi
CiAjaW5jbHVkZSAiVHJlZVN5bmNocm9uaXplci5oIgpAQCAtNTI5LDcgKzUyOCw3IEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0Ojpwcmlvcml0aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiB1cGRh
dGVMaXN0KQogICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSB1cGRh
dGVMaXN0W2ldLmdldCgpOwogICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1
cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKIAotICAgICAgICBz
aXplX3QgYnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMocmVuZGVyU3VyZmFj
ZS0+Y29udGVudFJlY3QoKS5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAg
ICAgc2l6ZV90IGJ5dGVzID0gQ0NUZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMocmVuZGVyU3VyZmFj
ZS0+Y29udGVudFJlY3QoKS5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICAg
ICAgY29udGVudHNUZXh0dXJlQnl0ZXMgKz0gYnl0ZXM7CiAKICAgICAgICAgaWYgKHJlbmRlclN1
cmZhY2UtPmJhY2tncm91bmRGaWx0ZXJzKCkuaXNFbXB0eSgpKQpAQCAtNTM4LDcgKzUzNyw3IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpwcmlvcml0aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0
JiB1cGRhdGVMaXN0KQogICAgICAgICBpZiAoYnl0ZXMgPiBtYXhCYWNrZ3JvdW5kVGV4dHVyZUJ5
dGVzKQogICAgICAgICAgICAgbWF4QmFja2dyb3VuZFRleHR1cmVCeXRlcyA9IGJ5dGVzOwogICAg
ICAgICBpZiAoIXJlYWRiYWNrQnl0ZXMpCi0gICAgICAgICAgICByZWFkYmFja0J5dGVzID0gVGV4
dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKG1fZGV2aWNlVmlld3BvcnRTaXplLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAgICByZWFkYmFja0J5dGVzID0gQ0NUZXh0dXJl
OjptZW1vcnlTaXplQnl0ZXMobV9kZXZpY2VWaWV3cG9ydFNpemUsIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBKTsKICAgICB9CiAgICAgc2l6ZV90IHJlbmRlclN1cmZhY2VzQnl0ZXMgPSByZWFkYmFj
a0J5dGVzICsgbWF4QmFja2dyb3VuZFRleHR1cmVCeXRlcyArIGNvbnRlbnRzVGV4dHVyZUJ5dGVz
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGMyMTQzZWFlNWQzNTFmYjA4MTg2
OTc4Y2Q5ZTg1NDAwZWEzMzExZjYuLmIzNGYwNGZhOWI2OTliODE2OTg1NjRhNjY0NzY4MWJmNjQ4
MGU4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC01MSw3ICs1MSw2IEBAIGNs
YXNzIENDTGF5ZXJDaHJvbWl1bTsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBD
Q0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50OwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKLWNsYXNz
IE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgUmVnaW9uOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsK
IGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKaW5kZXggMjZhMDllNzBmZTIwZDk3OWViZmEwODU0ODAxYzkzYTNk
NzU4NTFkNS4uZDQ3NmE5N2ZjZTY2OGFlYTZmMDk2OGVkNGViMzk0YzY4ZTAxZTgzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNp
bmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ092ZXJk
cmF3TWV0cmljcy5oIgogI2luY2x1ZGUgImNjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgiCisjaW5j
bHVkZSAiY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgpAQCAtMTIyLDcgKzEyMyw3IEBAIENDTGF5ZXJU
cmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5n
cyYgc2V0dGluZ3MsIENDCiAgICAgLCBtX2RldmljZVNjYWxlRmFjdG9yKDEpCiAgICAgLCBtX3Zp
c2libGUodHJ1ZSkKICAgICAsIG1fY29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RD
b21taXQoZmFsc2UpCi0gICAgLCBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKFRleHR1cmVN
YW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSkpCisgICAgLCBtX21lbW9yeUFs
bG9jYXRpb25MaW1pdEJ5dGVzKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdE1l
bW9yeUFsbG9jYXRpb25MaW1pdCgpKQogICAgICwgbV9oZWFkc1VwRGlzcGxheShDQ0hlYWRzVXBE
aXNwbGF5OjpjcmVhdGUoKSkKICAgICAsIG1fcGFnZVNjYWxlKDEpCiAgICAgLCBtX3BhZ2VTY2Fs
ZURlbHRhKDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAKaW5kZXgg
ZDhjYzE3NDg1YTkwZjkyMDJkMTdhNmYxODUyMjBhYTYyZTc2NzQzZi4uYTZhMzA4MTJiYTFhNjAz
ZDdmNmEzNjljMzVhMzIzMzE4NTgwZDYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6
ZWRUZXh0dXJlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIkNDUHJpb3JpdHlDYWxjdWxhdG9yLmgiCiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCisjaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRv
ci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTM4
LDE2ICszOSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6
Q0NQcmlvcml0aXplZFRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2Vy
LCBJbnRTaXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKICAgICA6IG1fc2l6ZShzaXplKQogICAg
ICwgbV9mb3JtYXQoZm9ybWF0KQotICAgICwgbV9tZW1vcnlTaXplQnl0ZXMoMCkKKyAgICAsIG1f
Ynl0ZXMoMCkKICAgICAsIG1fcHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFBy
aW9yaXR5KCkpCiAgICAgLCBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZihmYWxzZSkKLSAgICAsIG1f
Y3VycmVudEJhY2tpbmcoMCkKKyAgICAsIG1fYmFja2luZygwKQogICAgICwgbV9tYW5hZ2VyKDAp
CiB7CiAgICAgLy8gbV9tYW5hZ2VyIGlzIHNldCBpbiByZWdpc3RlclRleHR1cmUoKSBzbyB2YWxp
ZGl0eSBjYW4gYmUgY2hlY2tlZC4KICAgICBBU1NFUlQoZm9ybWF0IHx8IHNpemUuaXNFbXB0eSgp
KTsKICAgICBpZiAoZm9ybWF0KQotICAgICAgICBtX21lbW9yeVNpemVCeXRlcyA9IFRleHR1cmVN
YW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhzaXplLCBmb3JtYXQpOworICAgICAgICBtX2J5dGVzID0g
Q0NUZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKICAgICBpZiAobWFuYWdl
cikKICAgICAgICAgbWFuYWdlci0+cmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwogfQpAQCAtNzQsOCAr
NzUsOCBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpzZXREaW1lbnNpb25zKEludFNpemUg
c2l6ZSwgR0MzRGVudW0gZm9ybWF0KQogICAgICAgICBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZiA9
IGZhbHNlOwogICAgICAgICBtX2Zvcm1hdCA9IGZvcm1hdDsKICAgICAgICAgbV9zaXplID0gc2l6
ZTsKLSAgICAgICAgbV9tZW1vcnlTaXplQnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNl
Qnl0ZXMoc2l6ZSwgZm9ybWF0KTsKLSAgICAgICAgQVNTRVJUKG1fbWFuYWdlciB8fCAhbV9jdXJy
ZW50QmFja2luZyk7CisgICAgICAgIG1fYnl0ZXMgPSBDQ1RleHR1cmU6Om1lbW9yeVNpemVCeXRl
cyhzaXplLCBmb3JtYXQpOworICAgICAgICBBU1NFUlQobV9tYW5hZ2VyIHx8ICFtX2JhY2tpbmcp
OwogICAgICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICAgICAgbV9tYW5hZ2VyLT5yZXR1cm5C
YWNraW5nVGV4dHVyZSh0aGlzKTsKICAgICB9CkBAIC05Nyw4ICs5OCw4IEBAIHZvaWQgQ0NQcmlv
cml0aXplZFRleHR1cmU6OmFjcXVpcmVCYWNraW5nVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IpCiAKIHVuc2lnbmVkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjp0ZXh0dXJlSWQoKQog
ewotICAgIGlmIChtX2N1cnJlbnRCYWNraW5nKQotICAgICAgICByZXR1cm4gbV9jdXJyZW50QmFj
a2luZy0+dGV4dHVyZUlkKCk7CisgICAgaWYgKG1fYmFja2luZykKKyAgICAgICAgcmV0dXJuIG1f
YmFja2luZy0+aWQoKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTA3LDcgKzEwOCw3IEBAIHZv
aWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OmJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhCiAgICAgQVNTRVJUKG1faXNBYm92ZVByaW9yaXR5Q3V0b2Zm
KTsKICAgICBpZiAobV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpCiAgICAgICAgIGFjcXVpcmVCYWNr
aW5nVGV4dHVyZShhbGxvY2F0b3IpOwotICAgIEFTU0VSVChtX2N1cnJlbnRCYWNraW5nKTsKKyAg
ICBBU1NFUlQobV9iYWNraW5nKTsKICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewog
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9z
aXRpbmcuCkBAIC0xMjEsNyArMTIyLDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6ZnJh
bWVidWZmZXJUZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHQKICAgICBB
U1NFUlQobV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpOwogICAgIGlmIChtX2lzQWJvdmVQcmlvcml0
eUN1dG9mZikKICAgICAgICAgYWNxdWlyZUJhY2tpbmdUZXh0dXJlKGFsbG9jYXRvcik7Ci0gICAg
QVNTRVJUKG1fY3VycmVudEJhY2tpbmcpOworICAgIEFTU0VSVChtX2JhY2tpbmcpOwogICAgIFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCA9IGNvbnRleHQtPmNvbnRleHQz
RCgpOwogICAgIGlmICghY29udGV4dDNkKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcyBwYXRoIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZy4KQEAgLTEzMCwxMiArMTMxLDI2IEBA
IHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKENDR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBUZXh0CiAgICAgY29udGV4dDNkLT5mcmFtZWJ1ZmZlclRleHR1
cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJ
ZCgpLCAwKTsKIH0KIAotdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0Q3VycmVudEJhY2tp
bmcoQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tpbmcpCit2b2lkIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlOjpsaW5rKEJhY2tpbmcqIGJhY2tpbmcpCiB7Ci0gICAgaWYgKG1fY3VycmVu
dEJhY2tpbmcgPT0gYmFja2luZykKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY3VycmVudEJhY2tp
bmcgPSBiYWNraW5nOworICAgIEFTU0VSVChiYWNraW5nKTsKKyAgICBBU1NFUlQoIWJhY2tpbmct
Pm1fb3duZXIpOworICAgIEFTU0VSVCghbV9iYWNraW5nKTsKKworICAgIG1fYmFja2luZyA9IGJh
Y2tpbmc7CisgICAgbV9iYWNraW5nLT5tX293bmVyID0gdGhpczsKK30KKwordm9pZCBDQ1ByaW9y
aXRpemVkVGV4dHVyZTo6dW5saW5rKCkKK3sKKyAgICBBU1NFUlQobV9iYWNraW5nKTsKKyAgICBB
U1NFUlQobV9iYWNraW5nLT5tX293bmVyID09IHRoaXMpOworCisgICAgbV9iYWNraW5nLT5tX293
bmVyID0gMDsKKyAgICBtX2JhY2tpbmcgPSAwOwogfQogCisKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaAppbmRleCA5ZWEyZmIx
ZTQxNTc5ZjY0NTA0ZjZhM2M5YmIwZDdiZTBiMzJlMWYyLi5kYzg1NzkzMjQxODM5NmZkYTM3ODkw
MTA1MzU1YzkyNGEyZmYyMGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
LmgKQEAgLTI2LDE2ICsyNiwxNyBAQAogI2RlZmluZSBDQ1ByaW9yaXRpemVkVGV4dHVyZV9oCiAK
ICNpbmNsdWRlICJDQ1ByaW9yaXR5Q2FsY3VsYXRvci5oIgorI2luY2x1ZGUgIkNDVGV4dHVyZS5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKIGNs
YXNzIENDUHJpb3JpdHlDYWxjdWxhdG9yOwogY2xhc3MgQ0NHcmFwaGljc0NvbnRleHQ7CitjbGFz
cyBUZXh0dXJlQWxsb2NhdG9yOwogCiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NQcmlvcml0aXplZFRleHR1cmUpOwpAQCAtNTcsNyArNTgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREaW1lbnNpb25zKEludFNpemUsIEdDM0RlbnVtIGZv
cm1hdCk7CiAgICAgR0MzRGVudW0gZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0K
ICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBzaXplX3Qg
bWVtb3J5U2l6ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlTaXplQnl0ZXM7IH0KKyAg
ICBzaXplX3QgYnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVzOyB9CiAKICAgICAvLyBTZXQg
cHJpb3JpdHkgZm9yIHRoZSByZXF1ZXN0ZWQgdGV4dHVyZS4gCiAgICAgdm9pZCBzZXRSZXF1ZXN0
UHJpb3JpdHkoaW50IHByaW9yaXR5KSB7IG1fcHJpb3JpdHkgPSBwcmlvcml0eTsgfQpAQCAtNjgs
MTIgKzY5LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmOyB9CiAKICAgICAvLyBUaGlz
IHJldHVybnMgd2hldGhlciB3ZSBzdGlsbCBoYXZlIGEgYmFja2luZyB0ZXh0dXJlLiBUaGlzIGNh
biBjb250aW51ZQotICAgIC8vIHRvIGJlIHRydWUgZXZlbiBhZnRlciBjYW5BcXVpcmVCYWNraW5n
VGV4dHVyZSgpIGJlY29tZXMgZmFsc2UuIEluIHRoaXMKKyAgICAvLyB0byBiZSB0cnVlIGV2ZW4g
YWZ0ZXIgY2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkgYmVjb21lcyBmYWxzZS4gSW4gdGhpcwog
ICAgIC8vIGNhc2UgdGhlIHRleHR1cmUgY2FuIGJlIHVzZWQgYnV0IHNob3VsZG4ndCBiZSB1cGRh
dGVkIHNpbmNlIGl0IHdpbGwgZ2V0CiAgICAgLy8gdGFrZW4gYXdheSAic29vbiIuCi0gICAgYm9v
bCBoYXZlQmFja2luZ1RleHR1cmUoKSBjb25zdCB7IHJldHVybiAhIWN1cnJlbnRCYWNraW5nKCk7
IH0KKyAgICBib29sIGhhdmVCYWNraW5nVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuICEhYmFja2lu
ZygpOyB9CiAKLSAgICAvLyBJZiBjYW5BcXVpcmVCYWNraW5nVGV4dHVyZSgpIGlzIHRydWUgYWNx
dWlyZUJhY2tpbmdUZXh0dXJlKCkgd2lsbCBhY3F1aXJlCisgICAgLy8gSWYgY2FuQWNxdWlyZUJh
Y2tpbmdUZXh0dXJlKCkgaXMgdHJ1ZSBhY3F1aXJlQmFja2luZ1RleHR1cmUoKSB3aWxsIGFjcXVp
cmUKICAgICAvLyBhIGJhY2tpbmcgdGV4dHVyZSBmb3IgdXNlLiBDYWxsIHRoaXMgd2hlbmV2ZXIg
dGhlIHRleHR1cmUgaXMgYWN0dWFsbHkgbmVlZGVkLgogICAgIHZvaWQgYWNxdWlyZUJhY2tpbmdU
ZXh0dXJlKFRleHR1cmVBbGxvY2F0b3IqKTsKIApAQCAtODEsMTMgKzgyLDEzIEBAIHB1YmxpYzoK
ICAgICAvLyAgICAgICAgKGFsbCB0ZXh0dXJlcyBhcmUgdmlzaWJsZSkgYnV0IHdlIGNhbiBzdGls
bCBzcXVlZXplIGludG8gdGhlIGxpbWl0CiAgICAgLy8gICAgICAgIGJ5IG5vdCBwYWludGluZyBv
Y2NsdWRlZCB0ZXh0dXJlcy4gSW4gdGhpcyBjYXNlIHRoZSBtYW5hZ2VyCiAgICAgLy8gICAgICAg
IHJlZnVzZXMgYWxsIHZpc2libGUgdGV4dHVyZXMgYW5kIHJlcXVlc3RMYXRlKCkgd2lsbCBlbmFi
bGUKLSAgICAvLyAgICAgICAgY2FuQXF1aXJlQmFja2luZ1RleHR1cmUoKSBvbiBhIGNhbGwtb3Jk
ZXIgYmFzaXMuIFdlIG1pZ2h0IHdhbnQgdG8KKyAgICAvLyAgICAgICAgY2FuQWNxdWlyZUJhY2tp
bmdUZXh0dXJlKCkgb24gYSBjYWxsLW9yZGVyIGJhc2lzLiBXZSBtaWdodCB3YW50IHRvCiAgICAg
Ly8gICAgICAgIGp1c3QgcmVtb3ZlIHRoaXMgaW4gdGhlIGZ1dHVyZSAoY2FyZWZ1bGx5KSBhbmQg
anVzdCBtYWtlIHN1cmUgd2UgZG9uJ3QKICAgICAvLyAgICAgICAgcmVncmVzcyBPT01zIHNpdHVh
dGlvbnMuCiAgICAgYm9vbCByZXF1ZXN0TGF0ZSgpOwogCi0gICAgLy8gVGhlc2UgZnVuY3Rpb25z
IHdpbGwgYXF1aXJlIHRoZSB0ZXh0dXJlIGlmIHBvc3NpYmxlLiBJZiBuZWl0aGVyIGhhdmVCYWNr
aW5nVGV4dHVyZSgpCi0gICAgLy8gbm9yIGNhbkFxdWlyZUJhY2tpbmdUZXh0dXJlKCkgaXMgdHJ1
ZSwgYW4gSUQgb2YgemVybyB3aWxsIGJlIHVzZWQvcmV0dXJuZWQuCisgICAgLy8gVGhlc2UgZnVu
Y3Rpb25zIHdpbGwgYWNxdWlyZSB0aGUgdGV4dHVyZSBpZiBwb3NzaWJsZS4gSWYgbmVpdGhlciBo
YXZlQmFja2luZ1RleHR1cmUoKQorICAgIC8vIG5vciBjYW5BY3F1aXJlQmFja2luZ1RleHR1cmUo
KSBpcyB0cnVlLCBhbiBJRCBvZiB6ZXJvIHdpbGwgYmUgdXNlZC9yZXR1cm5lZC4KICAgICB2b2lk
IGJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciopOwogICAg
IHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoQ0NHcmFwaGljc0NvbnRleHQqLCBUZXh0dXJlQWxs
b2NhdG9yKik7CiAgICAgdW5zaWduZWQgdGV4dHVyZUlkKCk7CkBAIC05NSwzNCArOTYsMTcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOwogCi0gICAgY2xhc3MgQmFja2luZyB7CisgICAgY2xhc3MgQmFja2luZyA6IHB1Ymxp
YyBDQ1RleHR1cmUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNraW5nKTsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQotICAgICAgICBHQzNEZW51bSBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQot
ICAgICAgICBzaXplX3QgbWVtb3J5U2l6ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlT
aXplQnl0ZXM7IH0KLSAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0dXJlSWQ7IH0KLSAgICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUqIGN1cnJlbnRUZXh0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VGV4dHVyZTsgfQotICAgICAgICB2b2lkIHNl
dEN1cnJlbnRUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiBjdXJyZW50KSB7IG1fY3VycmVu
dFRleHR1cmUgPSBjdXJyZW50OyB9CisgICAgICAgIEJhY2tpbmcodW5zaWduZWQgaWQsIEludFNp
emUgc2l6ZSwgR0MzRGVudW0gZm9ybWF0KQorICAgICAgICAgICAgOiBDQ1RleHR1cmUoaWQsIHNp
emUsIGZvcm1hdCksIG1fb3duZXIoMCkgeyB9CisgICAgICAgIH5CYWNraW5nKCkgeyBBU1NFUlQo
IW1fb3duZXIpOyB9CiAKKyAgICAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUqIG93bmVyKCkgeyBy
ZXR1cm4gbV9vd25lcjsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI7Ci0KLSAgICAgICAgQmFja2luZyhJbnRTaXplIHNpemUs
IEdDM0RlbnVtIGZvcm1hdCwgdW5zaWduZWQgdGV4dHVyZUlkKQotICAgICAgICAgICAgOiBtX3Np
emUoc2l6ZSkKLSAgICAgICAgICAgICwgbV9mb3JtYXQoZm9ybWF0KQotICAgICAgICAgICAgLCBt
X21lbW9yeVNpemVCeXRlcyhUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9y
bWF0KSkKLSAgICAgICAgICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQotICAgICAgICAgICAg
LCBtX3ByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpKQotICAg
ICAgICAgICAgLCBtX2N1cnJlbnRUZXh0dXJlKDApIHsgfQotICAgICAgICB+QmFja2luZygpIHsg
QVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlKTsgfQotCi0gICAgICAgIEludFNpemUgbV9zaXplOwot
ICAgICAgICBHQzNEZW51bSBtX2Zvcm1hdDsKLSAgICAgICAgc2l6ZV90IG1fbWVtb3J5U2l6ZUJ5
dGVzOwotICAgICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKLSAgICAgICAgaW50IG1fcHJpb3Jp
dHk7Ci0gICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiBtX2N1cnJlbnRUZXh0dXJlOworICAg
ICAgICBmcmllbmQgY2xhc3MgQ0NQcmlvcml0aXplZFRleHR1cmU7CisgICAgICAgIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlKiBtX293bmVyOwogICAgIH07CiAKICAgICBDQ1ByaW9yaXRpemVkVGV4dHVy
ZShDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIqLCBJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQp
OwpAQCAtMTMxLDE3ICsxMTUsMTggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEFib3ZlUHJpb3Jp
dHlDdXRvZmYoYm9vbCBpc0Fib3ZlUHJpb3JpdHlDdXRvZmYpIHsgbV9pc0Fib3ZlUHJpb3JpdHlD
dXRvZmYgPSBpc0Fib3ZlUHJpb3JpdHlDdXRvZmY7IH0KICAgICB2b2lkIHNldE1hbmFnZXJJbnRl
cm5hbChDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgbV9tYW5hZ2VyID0g
bWFuYWdlcjsgfQogCi0gICAgQmFja2luZyogY3VycmVudEJhY2tpbmcoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRCYWNraW5nOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50QmFja2luZyhCYWNraW5n
Kik7CisgICAgQmFja2luZyogYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQor
ICAgIHZvaWQgbGluayhCYWNraW5nKik7CisgICAgdm9pZCB1bmxpbmsoKTsKIAogICAgIEludFNp
emUgbV9zaXplOwogICAgIEdDM0RlbnVtIG1fZm9ybWF0OwotICAgIHNpemVfdCBtX21lbW9yeVNp
emVCeXRlczsKKyAgICBzaXplX3QgbV9ieXRlczsKIAogICAgIHNpemVfdCBtX3ByaW9yaXR5Owog
ICAgIGJvb2wgbV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmY7CiAKLSAgICBCYWNraW5nKiBtX2N1cnJl
bnRCYWNraW5nOworICAgIEJhY2tpbmcqIG1fYmFja2luZzsKICAgICBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXIqIG1fbWFuYWdlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4IDVhZjUzZGYwNGJkZWI2N2UyYTBlY2Mx
YTM0YTllYTZiY2U5OWYzMjUuLjAxOTViNmYxY2RlYWI1MDZmMDMzMjc4NTY4Mzk4ZGI2ODQxNzdk
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
cHJpb3JpdGl6ZVRleHR1cmVzKHNpemVfdCByZW5kZXJTdXJmYWNlc01lbW9yeQogICAgICAgICAg
ICAgcmVzZXJ2ZWRSZW5kZXJTdXJmYWNlcyA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBz
aXplX3QgbmV3TWVtb3J5Qnl0ZXMgPSBtZW1vcnlCeXRlcyArICgqaXQpLT5tZW1vcnlTaXplQnl0
ZXMoKTsKKyAgICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0
KS0+Ynl0ZXMoKTsKICAgICAgICAgaWYgKG5ld01lbW9yeUJ5dGVzID4gbV9tZW1vcnlBdmFpbGFi
bGVCeXRlcykgewogICAgICAgICAgICAgbV9wcmlvcml0eUN1dG9mZiA9ICgqaXQpLT5yZXF1ZXN0
UHJpb3JpdHkoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQg
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpwcmlvcml0aXplVGV4dHVyZXMoc2l6ZV90IHJl
bmRlclN1cmZhY2VzTWVtb3J5CiAgICAgICAgIGJvb2wgaXNBYm92ZVByaW9yaXR5Q3V0b2ZmID0g
Q0NQcmlvcml0eUNhbGN1bGF0b3I6OnByaW9yaXR5SXNIaWdoZXIoKCppdCktPnJlcXVlc3RQcmlv
cml0eSgpLCBtX3ByaW9yaXR5Q3V0b2ZmKTsKICAgICAgICAgKCppdCktPnNldEFib3ZlUHJpb3Jp
dHlDdXRvZmYoaXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKICAgICAgICAgaWYgKGlzQWJvdmVQcmlv
cml0eUN1dG9mZikKLSAgICAgICAgICAgIG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyArPSAoKml0
KS0+bWVtb3J5U2l6ZUJ5dGVzKCk7CisgICAgICAgICAgICBtX21lbW9yeUFib3ZlQ3V0b2ZmQnl0
ZXMgKz0gKCppdCktPmJ5dGVzKCk7CiAgICAgfQogICAgIEFTU0VSVChtX21lbW9yeUFib3ZlQ3V0
b2ZmQnl0ZXMgPD0gbV9tZW1vcnlBdmFpbGFibGVCeXRlcyk7CiAKQEAgLTE1NywxNSArMTU3LDE1
IEBAIGJvb2wgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0TGF0ZShDQ1ByaW9y
aXRpemVkVGV4dHVyZSogdGV4dHVyZSkKICAgICBpZiAoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnBy
aW9yaXR5SXNMb3dlcih0ZXh0dXJlLT5yZXF1ZXN0UHJpb3JpdHkoKSwgbV9wcmlvcml0eUN1dG9m
ZikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9
IG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyArIHRleHR1cmUtPm1lbW9yeVNpemVCeXRlcygpOwor
ICAgIHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9IG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyArIHRl
eHR1cmUtPmJ5dGVzKCk7CiAgICAgaWYgKG5ld01lbW9yeUJ5dGVzID4gbV9tZW1vcnlBdmFpbGFi
bGVCeXRlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9tZW1vcnlBYm92ZUN1dG9m
ZkJ5dGVzID0gbmV3TWVtb3J5Qnl0ZXM7CiAgICAgdGV4dHVyZS0+c2V0QWJvdmVQcmlvcml0eUN1
dG9mZih0cnVlKTsKLSAgICBpZiAodGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSkgewotICAgICAg
ICBtX2JhY2tpbmdzLnJlbW92ZSh0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKTsKLSAgICAgICAg
bV9iYWNraW5ncy5hZGQodGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSk7CisgICAgaWYgKHRleHR1
cmUtPmJhY2tpbmcoKSkgeworICAgICAgICBtX2JhY2tpbmdzLnJlbW92ZSh0ZXh0dXJlLT5iYWNr
aW5nKCkpOworICAgICAgICBtX2JhY2tpbmdzLmFkZCh0ZXh0dXJlLT5iYWNraW5nKCkpOwogICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBib29sIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdExhdGUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRl
eHR1cmUpCiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdU
ZXh0dXJlSWZOZWVkZWQoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBBU1NFUlQodGV4dHVyZS0+aXNBYm92ZVByaW9yaXR5
Q3V0b2ZmKCkpOwotICAgIGlmICh0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpIHx8ICF0ZXh0dXJl
LT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKKyAgICBpZiAodGV4dHVyZS0+YmFja2luZygpIHx8
ICF0ZXh0dXJlLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gRmluZCBhIGJhY2tpbmcgYmVsb3csIGJ5IGVpdGhlciByZWN5Y2xpbmcgb3IgYWxsb2Nh
dGluZy4KQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQoQ0NQcmlvcml0aXplZFRleAogCiAgICAg
Ly8gRmlyc3QgdHJ5IHRvIHJlY3ljbGUKICAgICBmb3IgKEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0
ID0gbV9iYWNraW5ncy5iZWdpbigpOyBpdCAhPSBtX2JhY2tpbmdzLmVuZCgpOyArK2l0KSB7Ci0g
ICAgICAgIGlmICgoKml0KS0+Y3VycmVudFRleHR1cmUoKSAmJiAoKml0KS0+Y3VycmVudFRleHR1
cmUoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCisgICAgICAgIGlmICgoKml0KS0+b3duZXIo
KSAmJiAoKml0KS0+b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgaWYgKCgqaXQpLT5zaXplKCkgPT0gdGV4dHVyZS0+c2l6ZSgpICYm
ICgqaXQpLT5mb3JtYXQoKSA9PSB0ZXh0dXJlLT5mb3JtYXQoKSkgewogICAgICAgICAgICAgYmFj
a2luZyA9ICgqaXQpOwpAQCAtMTkxLDE0ICsxOTEsMTQgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRU
ZXgKIAogICAgIC8vIE90aGVyd2lzZSByZWR1Y2UgbWVtb3J5IGFuZCBqdXN0IGFsbG9jYXRlIGEg
bmV3IGJhY2tpbmcgdGV4dXJlcy4KICAgICBpZiAoIWJhY2tpbmcpIHsKLSAgICAgICAgcmVkdWNl
TWVtb3J5KG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMgLSB0ZXh0dXJlLT5tZW1vcnlTaXplQnl0ZXMo
KSwgYWxsb2NhdG9yKTsKKyAgICAgICAgcmVkdWNlTWVtb3J5KG1fbWVtb3J5QXZhaWxhYmxlQnl0
ZXMgLSB0ZXh0dXJlLT5ieXRlcygpLCBhbGxvY2F0b3IpOwogICAgICAgICBiYWNraW5nID0gY3Jl
YXRlQmFja2luZyh0ZXh0dXJlLT5zaXplKCksIHRleHR1cmUtPmZvcm1hdCgpLCBhbGxvY2F0b3Ip
OwogICAgIH0KIAogICAgIC8vIE1vdmUgdGhlIHVzZWQgYmFja2luZyB0ZXh0dXJlIHRvIHRoZSBl
bmQgb2YgdGhlIGV2aWN0aW9uIGxpc3QuCi0gICAgaWYgKGJhY2tpbmctPmN1cnJlbnRUZXh0dXJl
KCkpCi0gICAgICAgIHVubGluayhiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpLCBiYWNraW5nKTsK
LSAgICBsaW5rKHRleHR1cmUsIGJhY2tpbmcpOworICAgIGlmIChiYWNraW5nLT5vd25lcigpKQor
ICAgICAgICBiYWNraW5nLT5vd25lcigpLT51bmxpbmsoKTsKKyAgICB0ZXh0dXJlLT5saW5rKGJh
Y2tpbmcpOwogICAgIG1fYmFja2luZ3MucmVtb3ZlKGJhY2tpbmcpOwogICAgIG1fYmFja2luZ3Mu
YWRkKGJhY2tpbmcpOwogfQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoc2l6ZV90IGxpbWl0Qnl0ZXMsIFRleHR1cmVBbGxv
Y2F0CiAgICAgLy8gb3IgdW50aWwgYWxsIGJhY2tpbmdzIHJlbWFpbmluZyBhcmUgYWJvdmUgdGhl
IGN1dG9mZi4KICAgICB3aGlsZSAobWVtb3J5VXNlQnl0ZXMoKSA+IGxpbWl0Qnl0ZXMgJiYgbV9i
YWNraW5ncy5zaXplKCkgPiAwKSB7CiAgICAgICAgIEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0g
bV9iYWNraW5ncy5iZWdpbigpOwotICAgICAgICBpZiAoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkg
JiYgKCppdCktPmN1cnJlbnRUZXh0dXJlKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQorICAg
ICAgICBpZiAoKCppdCktPm93bmVyKCkgJiYgKCppdCktPm93bmVyKCktPmlzQWJvdmVQcmlvcml0
eUN1dG9mZigpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlc3Ryb3lCYWNraW5nKCgq
aXQpLCBhbGxvY2F0b3IpOwogICAgIH0KQEAgLTIyOSw5ICsyMjksOSBAQCB2b2lkIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvcikKICAgICAvLyBiYWNraW5nIHRleHR1cmVzIChhbnkgbW9yZSB0aGFuIDEwJSkuCiAgICAg
c2l6ZV90IHdhc3RlZE1lbW9yeSA9IDA7CiAgICAgZm9yIChCYWNraW5nU2V0OjppdGVyYXRvciBp
dCA9IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQoKTsgKytpdCkgewot
ICAgICAgICBpZiAoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkpCisgICAgICAgIGlmICgoKml0KS0+
b3duZXIoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB3YXN0ZWRNZW1vcnkgKz0gKCpp
dCktPm1lbW9yeVNpemVCeXRlcygpOworICAgICAgICB3YXN0ZWRNZW1vcnkgKz0gKCppdCktPmJ5
dGVzKCk7CiAgICAgfQogICAgIHNpemVfdCB0ZW5QZXJjZW50T2ZNZW1vcnkgPSBtX21lbW9yeUF2
YWlsYWJsZUJ5dGVzIC8gMTA7CiAgICAgaWYgKHdhc3RlZE1lbW9yeSA8PSB0ZW5QZXJjZW50T2ZN
ZW1vcnkpCkBAIC0yNDQsOCArMjQ0LDggQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmNsZWFyQWxsTWVtb3J5KFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKICAgICAvLyBV
bmxpbmsgYW5kIGRlc3Ryb3kgYWxsIGJhY2tpbmcgdGV4dHVyZXMuCiAgICAgd2hpbGUgKG1fYmFj
a2luZ3Muc2l6ZSgpID4gMCkgewogICAgICAgICBCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1f
YmFja2luZ3MuYmVnaW4oKTsKLSAgICAgICAgaWYgKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpKQot
ICAgICAgICAgICAgdW5saW5rKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpLCAoKml0KSk7CisgICAg
ICAgIGlmICgoKml0KS0+b3duZXIoKSkKKyAgICAgICAgICAgICgqaXQpLT5vd25lcigpLT51bmxp
bmsoKTsKICAgICAgICAgZGVzdHJveUJhY2tpbmcoKCppdCksIGFsbG9jYXRvcik7CiAgICAgfQog
fQpAQCAtMjU4LDMyICsyNTgsMTEgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
OmFsbEJhY2tpbmdUZXh0dXJlc1dlcmVEZWxldGVkKCkKICAgICBjbGVhckFsbE1lbW9yeSgwKTsK
IH0KIAotdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnVubGluayhDQ1ByaW9yaXRp
emVkVGV4dHVyZSogdGV4dHVyZSwgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJhY2tp
bmcpCi17Ci0gICAgQVNTRVJUKHRleHR1cmUgJiYgYmFja2luZyk7Ci0gICAgQVNTRVJUKHRleHR1
cmUtPmN1cnJlbnRCYWNraW5nKCkgPT0gYmFja2luZyk7Ci0gICAgQVNTRVJUKGJhY2tpbmctPmN1
cnJlbnRUZXh0dXJlKCkgPT0gdGV4dHVyZSk7Ci0KLSAgICB0ZXh0dXJlLT5zZXRDdXJyZW50QmFj
a2luZygwKTsKLSAgICBiYWNraW5nLT5zZXRDdXJyZW50VGV4dHVyZSgwKTsKLX0KLQotdm9pZCBD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmxpbmsoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRl
eHR1cmUsIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nKQotewotICAgIEFT
U0VSVCh0ZXh0dXJlICYmIGJhY2tpbmcpOwotICAgIEFTU0VSVCghdGV4dHVyZS0+Y3VycmVudEJh
Y2tpbmcoKSk7Ci0gICAgQVNTRVJUKCFiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpKTsKLQotICAg
IHRleHR1cmUtPnNldEN1cnJlbnRCYWNraW5nKGJhY2tpbmcpOwotICAgIGJhY2tpbmctPnNldEN1
cnJlbnRUZXh0dXJlKHRleHR1cmUpOwotfQotCi0KIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjpyZWdpc3RlclRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUpCiB7
CiAgICAgQVNTRVJUKHRleHR1cmUpOwogICAgIEFTU0VSVCghdGV4dHVyZS0+dGV4dHVyZU1hbmFn
ZXIoKSk7Ci0gICAgQVNTRVJUKCF0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKTsKKyAgICBBU1NF
UlQoIXRleHR1cmUtPmJhY2tpbmcoKSk7CiAgICAgQVNTRVJUKG1fdGV4dHVyZXMuZmluZCh0ZXh0
dXJlKSA9PSBtX3RleHR1cmVzLmVuZCgpKTsKIAogICAgIHRleHR1cmUtPnNldE1hbmFnZXJJbnRl
cm5hbCh0aGlzKTsKQEAgLTMwNSwxMSArMjg0LDExIEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjp1bnJlZ2lzdGVyVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVy
CiAKIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZXR1cm5CYWNraW5nVGV4dHVy
ZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSkKIHsKLSAgICBpZiAodGV4dHVyZS0+Y3Vy
cmVudEJhY2tpbmcoKSkgeworICAgIGlmICh0ZXh0dXJlLT5iYWNraW5nKCkpIHsKICAgICAgICAg
Ly8gTW92ZSB0aGUgYmFja2luZyB0ZXh0dXJlIHRvIHRoZSBmcm9udCBmb3IgZXZpY3Rpb24vcmVj
eWNsaW5nIGFuZCB1bmxpbmsgaXQuCi0gICAgICAgIG1fYmFja2luZ3MucmVtb3ZlKHRleHR1cmUt
PmN1cnJlbnRCYWNraW5nKCkpOwotICAgICAgICBtX2JhY2tpbmdzLmluc2VydEJlZm9yZShtX2Jh
Y2tpbmdzLmJlZ2luKCksIHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpOwotICAgICAgICB1bmxp
bmsodGV4dHVyZSwgdGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSk7CisgICAgICAgIG1fYmFja2lu
Z3MucmVtb3ZlKHRleHR1cmUtPmJhY2tpbmcoKSk7CisgICAgICAgIG1fYmFja2luZ3MuaW5zZXJ0
QmVmb3JlKG1fYmFja2luZ3MuYmVnaW4oKSwgdGV4dHVyZS0+YmFja2luZygpKTsKKyAgICAgICAg
dGV4dHVyZS0+dW5saW5rKCk7CiAgICAgfQogfQogCkBAIC0zMTcsOSArMjk2LDggQEAgQ0NQcmlv
cml0aXplZFRleHR1cmU6OkJhY2tpbmcqIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3Jl
YXRlQmFja2luZyhJbnRTaXoKIHsKICAgICBBU1NFUlQoYWxsb2NhdG9yKTsKIAotICAgIHVuc2ln
bmVkIHRleHR1cmVJZCA9IGFsbG9jYXRvci0+Y3JlYXRlVGV4dHVyZShzaXplLCBmb3JtYXQpOwot
ICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nID0gbmV3IENDUHJpb3Jp
dGl6ZWRUZXh0dXJlOjpCYWNraW5nKHNpemUsIGZvcm1hdCwgdGV4dHVyZUlkKTsKLSAgICBtX21l
bW9yeVVzZUJ5dGVzICs9IGJhY2tpbmctPm1lbW9yeVNpemVCeXRlcygpOworICAgIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nID0gbmV3IENDUHJpb3JpdGl6ZWRUZXh0dXJl
OjpCYWNraW5nKGFsbG9jYXRvci0+Y3JlYXRlVGV4dHVyZShzaXplLCBmb3JtYXQpLCBzaXplLCBm
b3JtYXQpOworICAgIG1fbWVtb3J5VXNlQnl0ZXMgKz0gYmFja2luZy0+Ynl0ZXMoKTsKICAgICAv
LyBQdXQgYmFja2luZyB0ZXh0dXJlIGF0IHRoZSBmcm9udCBmb3IgZXZpY3Rpb24sIHNpbmNlIGl0
IGlzbid0IGluIHVzZSB5ZXQuCiAgICAgbV9iYWNraW5ncy5pbnNlcnRCZWZvcmUobV9iYWNraW5n
cy5iZWdpbigpLCBiYWNraW5nKTsKICAgICByZXR1cm4gYmFja2luZzsKQEAgLTMyOCwxNCArMzA2
LDE0IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmcoSW50U2l6CiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6ZGVzdHJveUJhY2tpbmcoQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGJh
Y2tpbmcsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBBU1NFUlQoYmFja2lu
Zyk7Ci0gICAgQVNTRVJUKCFiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpIHx8ICFiYWNraW5nLT5j
dXJyZW50VGV4dHVyZSgpLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSk7CisgICAgQVNTRVJUKCFi
YWNraW5nLT5vd25lcigpIHx8ICFiYWNraW5nLT5vd25lcigpLT5pc0Fib3ZlUHJpb3JpdHlDdXRv
ZmYoKSk7CiAgICAgQVNTRVJUKG1fYmFja2luZ3MuZmluZChiYWNraW5nKSAhPSBtX2JhY2tpbmdz
LmVuZCgpKTsKIAogICAgIGlmIChhbGxvY2F0b3IpCi0gICAgICAgIGFsbG9jYXRvci0+ZGVsZXRl
VGV4dHVyZShiYWNraW5nLT50ZXh0dXJlSWQoKSwgYmFja2luZy0+c2l6ZSgpLCBiYWNraW5nLT5m
b3JtYXQoKSk7Ci0gICAgaWYgKGJhY2tpbmctPmN1cnJlbnRUZXh0dXJlKCkpCi0gICAgICAgIHVu
bGluayhiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpLCBiYWNraW5nKTsKLSAgICBtX21lbW9yeVVz
ZUJ5dGVzIC09IGJhY2tpbmctPm1lbW9yeVNpemVCeXRlcygpOworICAgICAgICBhbGxvY2F0b3It
PmRlbGV0ZVRleHR1cmUoYmFja2luZy0+aWQoKSwgYmFja2luZy0+c2l6ZSgpLCBiYWNraW5nLT5m
b3JtYXQoKSk7CisgICAgaWYgKGJhY2tpbmctPm93bmVyKCkpCisgICAgICAgIGJhY2tpbmctPm93
bmVyKCktPnVubGluaygpOworICAgIG1fbWVtb3J5VXNlQnl0ZXMgLT0gYmFja2luZy0+Ynl0ZXMo
KTsKICAgICBtX2JhY2tpbmdzLnJlbW92ZShiYWNraW5nKTsKIAogICAgIGRlbGV0ZSBiYWNraW5n
OwpAQCAtMzUxLDE1ICszMjksMTUgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
OmFzc2VydEludmFyaWFudHMoKQogCiAgICAgLy8gQmFja2luZ3MvdGV4dHVyZXMgbXVzdCBiZSBk
b3VibHktbGlua2VkIGFuZCBvbmx5IHRvIG90aGVyIGJhY2tpbmdzL3RleHR1cmVzIGluIHRoaXMg
bWFuYWdlci4KICAgICBmb3IgKEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5i
ZWdpbigpOyBpdCAhPSBtX2JhY2tpbmdzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0
KS0+Y3VycmVudFRleHR1cmUoKSkgewotICAgICAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXMuZmlu
ZCgoKml0KS0+Y3VycmVudFRleHR1cmUoKSkgIT0gbV90ZXh0dXJlcy5lbmQoKSk7Ci0gICAgICAg
ICAgICBBU1NFUlQoKCppdCktPmN1cnJlbnRUZXh0dXJlKCktPmN1cnJlbnRCYWNraW5nKCkgPT0g
KCppdCkpOworICAgICAgICBpZiAoKCppdCktPm93bmVyKCkpIHsKKyAgICAgICAgICAgIEFTU0VS
VChtX3RleHR1cmVzLmZpbmQoKCppdCktPm93bmVyKCkpICE9IG1fdGV4dHVyZXMuZW5kKCkpOwor
ICAgICAgICAgICAgQVNTRVJUKCgqaXQpLT5vd25lcigpLT5iYWNraW5nKCkgPT0gKCppdCkpOwog
ICAgICAgICB9CiAgICAgfQogICAgIGZvciAoVGV4dHVyZVNldDo6aXRlcmF0b3IgaXQgPSBtX3Rl
eHR1cmVzLmJlZ2luKCk7IGl0ICE9IG1fdGV4dHVyZXMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAg
aWYgKCgqaXQpLT5jdXJyZW50QmFja2luZygpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9iYWNr
aW5ncy5maW5kKCgqaXQpLT5jdXJyZW50QmFja2luZygpKSAhPSBtX2JhY2tpbmdzLmVuZCgpKTsK
LSAgICAgICAgICAgIEFTU0VSVCgoKml0KS0+Y3VycmVudEJhY2tpbmcoKS0+Y3VycmVudFRleHR1
cmUoKSA9PSAoKml0KSk7CisgICAgICAgIGlmICgoKml0KS0+YmFja2luZygpKSB7CisgICAgICAg
ICAgICBBU1NFUlQobV9iYWNraW5ncy5maW5kKCgqaXQpLT5iYWNraW5nKCkpICE9IG1fYmFja2lu
Z3MuZW5kKCkpOworICAgICAgICAgICAgQVNTRVJUKCgqaXQpLT5iYWNraW5nKCktPm93bmVyKCkg
PT0gKCppdCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zNjgsMTAgKzM0NiwxMCBAQCB2b2lk
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YXNzZXJ0SW52YXJpYW50cygpCiAgICAgLy8g
cmVkdWNlTWVtb3J5IHdpbGwgbm90IGZpbmQgYWxsIHRleHR1cmVzIGF2YWlsYWJsZSBmb3IgZXZp
Y3Rpb24vcmVjeWNsaW5nKS4KICAgICBib29sIHJlYWNoZWRQcm90ZWN0ZWQgPSBmYWxzZTsKICAg
ICBmb3IgKEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigpOyBpdCAh
PSBtX2JhY2tpbmdzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+Y3VycmVudFRl
eHR1cmUoKSAmJiAoKml0KS0+Y3VycmVudFRleHR1cmUoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2Zm
KCkpCisgICAgICAgIGlmICgoKml0KS0+b3duZXIoKSAmJiAoKml0KS0+b3duZXIoKS0+aXNBYm92
ZVByaW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAgICAgICByZWFjaGVkUHJvdGVjdGVkID0gdHJ1ZTsK
ICAgICAgICAgaWYgKHJlYWNoZWRQcm90ZWN0ZWQpCi0gICAgICAgICAgICBBU1NFUlQoKCppdCkt
PmN1cnJlbnRUZXh0dXJlKCkgJiYgKCppdCktPmN1cnJlbnRUZXh0dXJlKCktPmlzQWJvdmVQcmlv
cml0eUN1dG9mZigpKTsKKyAgICAgICAgICAgIEFTU0VSVCgoKml0KS0+b3duZXIoKSAmJiAoKml0
KS0+b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpOwogICAgIH0KIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAppbmRleCAz
YzcwYjJiMmEwMjMwOWNhMTY0ZDZkY2E5MWNkOTBiYzQyYWZlNmVkLi4xMWQ0ZDc3MmY3ZGUwM2I4
Mzg2YTg2ZmMzNTk5ZGU3NGMzNTllZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXIuaApAQCAtMjcsMTAgKzI3LDEwIEBACiAKICNpbmNsdWRlICJD
Q1ByaW9yaXRpemVkVGV4dHVyZS5oIgogI2luY2x1ZGUgIkNDUHJpb3JpdHlDYWxjdWxhdG9yLmgi
CisjaW5jbHVkZSAiQ0NUZXh0dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlRl
eHR1cmVNYW5hZ2VyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTAsNiArNTAsMTQg
QEAgcHVibGljOgogICAgIH0KICAgICB+Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKCk7CiAK
KyAgICAvLyBGSVhNRTogVGhpcyA5Nk1CIGRlZmF1bHQgaXMgYSBzdHJhZ2dsZXIgZnJvbSB0aGUg
b2xkIHRleHR1cmUgbWFuYWdlciBhbmQKKyAgICAvLyBpcyBqdXN0IHRvIGdpdmUgdXMgYSBkZWZh
dWx0IG1lbW9yeSBhbGxvY2F0aW9uIGJlZm9yZSB3ZSBnZXQgYSBjYWxsYmFjaworICAgIC8vIGZy
b20gdGhlIEdQVSBtZW1vcnkgbWFuYWdlci4gV2Ugc2hvdWxkIHByb2JhYnkgZWl0aGVyOgorICAg
IC8vIC0gd2FpdCBmb3IgdGhlIGNhbGxiYWNrIGJlZm9yZSByZW5kZXJpbmcgYW55dGhpbmcgaW5z
dGVhZAorICAgIC8vIC0gbWFrZSBhIHN5bmNocm9ub3VzIGNhbGwgdG8gR1BVIG1lbS1tYW5hZ2Vy
IHRvIGdldCB0aGUgZGVmYXVsdCAoaXQgY2FuCisgICAgLy8gICBkZWNpZGUgd2hldGhlciB0byBi
bG9jayBvciBqdXN0IHJldHVybiB0aGlzIGRlZmF1bHQgaXRzZWxmKS4KKyAgICBzdGF0aWMgc2l6
ZV90IGRlZmF1bHRNZW1vcnlBbGxvY2F0aW9uTGltaXQoKSB7IHJldHVybiA5NiAqIDEwMjQgKiAx
MDI0OyB9CisKICAgICAvLyBtZW1vcnlVc2VCeXRlcygpIGRlc2NyaWJlcyB0aGUgbnVtYmVyIG9m
IGJ5dGVzIHVzZWQgYnkgZXhpc3RpbmcgYWxsb2NhdGVkIHRleHR1cmVzLgogICAgIC8vIG1lbW9y
eUFib3ZlQ3V0b2ZmQnl0ZXMoKSBkZXNjcmliZXMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdv
dWxkIGJlIHVzZWQgaWYgYWxsCiAgICAgLy8gdGV4dHVyZXMgdGhhdCBhcmUgYWJvdmUgdGhlIGN1
dG9mZiB3ZXJlIGFsbG9jYXRlZC4KQEAgLTkxLDggKzk5LDggQEAgcHJpdmF0ZToKICAgICAvLyBD
b21wYXJlIGJhY2tpbmdzLiBMb3dlc3QgcHJpb3JpdHkgZmlyc3QuCiAgICAgc3RhdGljIGlubGlu
ZSBib29sIGNvbXBhcmVCYWNraW5ncyhDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYSwg
Q0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqIGIpCiAgICAgewotICAgICAgICBpbnQgcHJp
b3JpdHlBID0gYS0+Y3VycmVudFRleHR1cmUoKSA/IGEtPmN1cnJlbnRUZXh0dXJlKCktPnJlcXVl
c3RQcmlvcml0eSgpIDogQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCk7Ci0g
ICAgICAgIGludCBwcmlvcml0eUIgPSBiLT5jdXJyZW50VGV4dHVyZSgpID8gYi0+Y3VycmVudFRl
eHR1cmUoKS0+cmVxdWVzdFByaW9yaXR5KCkgOiBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0
UHJpb3JpdHkoKTsKKyAgICAgICAgaW50IHByaW9yaXR5QSA9IGEtPm93bmVyKCkgPyBhLT5vd25l
cigpLT5yZXF1ZXN0UHJpb3JpdHkoKSA6IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlv
cml0eSgpOworICAgICAgICBpbnQgcHJpb3JpdHlCID0gYi0+b3duZXIoKSA/IGItPm93bmVyKCkt
PnJlcXVlc3RQcmlvcml0eSgpIDogQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5
KCk7CiAgICAgICAgIGlmIChwcmlvcml0eUEgPT0gcHJpb3JpdHlCKQogICAgICAgICAgICAgcmV0
dXJuIGEgPCBiOwogICAgICAgICByZXR1cm4gQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnByaW9yaXR5
SXNMb3dlcihwcmlvcml0eUEsIHByaW9yaXR5Qik7CkBAIC0xMDIsOSArMTEwLDYgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdCwgVGV4dHVyZUFsbG9jYXRv
ciopOwogCi0gICAgdm9pZCBsaW5rKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiwgQ0NQcmlvcml0aXpl
ZFRleHR1cmU6OkJhY2tpbmcqKTsKLSAgICB2b2lkIHVubGluayhDQ1ByaW9yaXRpemVkVGV4dHVy
ZSosIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKik7Ci0KICAgICBDQ1ByaW9yaXRpemVk
VGV4dHVyZTo6QmFja2luZyogY3JlYXRlQmFja2luZyhJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQs
IFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGRlc3Ryb3lCYWNraW5nKENDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpCYWNraW5nKiwgVGV4dHVyZUFsbG9jYXRvciopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXR5Q2Fs
Y3VsYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcmlvcml0eUNhbGN1bGF0b3IuaAppbmRleCA2OGEyMjViZTBiOWVmMzI2NWYwZjg5OGE2MmZk
YzU4ZGNjZWZiN2E2Li5hOTBhMDczOTAyYjJjNzY4YmJjYTc5MjdkYzAyMjhhMTkzNmE4ZTZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXR5Q2FsY3VsYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmgKQEAgLTI4LDcgKzI4LDYgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcAppbmRleCA4MGY4
MzE1NDExYmU1NTFlYTZkY2E0MDM2ZWNiOWJlYjdkNjU2N2YwLi5iOWY3NWQxODRjM2E2ODAxZmJi
ZThmZGZiYTQxZTQzMzY4ZmEzMzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHAK
QEAgLTI0LDEwICsyNCw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVk
ZSAiY2MvQ0NTY29wZWRUZXh0dXJlLmgiCiAKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIiAv
LyBGb3IgVGV4dHVyZUFsbG9jYXRvcgorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCmluZGV4IDVh
M2M0ZTk2NGRkMmM2Y2VlNWE3NDFkZjMxZjNjZmU2YmQxZTI0YzAuLjlmNzI0MWY1MTdmNGE0MGVk
YjJhYzhjNDE4YWY4YjcxMWZlNGQwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIENDU2NvcGVkVGV4dHVyZV9oCiAjZGVmaW5lIENDU2Nv
cGVkVGV4dHVyZV9oCiAKKyNpbmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NUZXh0dXJlLmgiCiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0zNCw3ICszNSw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIAogY2xh
c3MgQ0NTY29wZWRUZXh0dXJlIDogcHJvdGVjdGVkIENDVGV4dHVyZSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ0NTY29wZWRUZXh0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKaW5kZXggYTI5NjEw
NDY5M2RkNDUyZjJiOTg1NzgyMDQ1ZWYwY2E3NmMxMmU4Mi4uMGQ1ZDlmNzY4M2U1NjllYzZkYjQ3
ODJkNjg3MTlhYWU4YTNkOTcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmgKQEAgLTM1LDYgKzM1LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENDVGV4dHVyZSB7CiBwdWJsaWM6CiAgICAgQ0NU
ZXh0dXJlKCkgOiBtX2lkKDApIHsgfQorICAgIENDVGV4dHVyZSh1bnNpZ25lZCBpZCwgSW50U2l6
ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQpCisgICAgICAgIDogbV9pZChpZCkKKyAgICAgICAgLCBt
X3NpemUoc2l6ZSkKKyAgICAgICAgLCBtX2Zvcm1hdChmb3JtYXQpIHsgfQogCiAgICAgdW5zaWdu
ZWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNw
cAppbmRleCA1NjRlMzY5NmJlMTU1MmVmNGY0YjQ1ZDA1NGFlYWQzZmFhNTY0NDUzLi4yYzNiNzU4
NGNlNjVmZmQ0MWM1NDBjYjIwMjlkNjI0NjJhNDEyZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmNwcApAQCAtNTQsOCArNTQsNiBAQCBzdGF0aWMgY29uc3QgaW50IGRlYnVnVGls
ZUJvcmRlck1pc3NpbmdUaWxlQ29sb3JSZWQgPSAyNTU7CiBzdGF0aWMgY29uc3QgaW50IGRlYnVn
VGlsZUJvcmRlck1pc3NpbmdUaWxlQ29sb3JHcmVlbiA9IDA7CiBzdGF0aWMgY29uc3QgaW50IGRl
YnVnVGlsZUJvcmRlck1pc3NpbmdUaWxlQ29sb3JCbHVlID0gMDsKIAotY2xhc3MgTWFuYWdlZFRl
eHR1cmU7Ci0KIGNsYXNzIERyYXdhYmxlVGlsZSA6IHB1YmxpYyBDQ0xheWVyVGlsaW5nRGF0YTo6
VGlsZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhd2FibGVUaWxlKTsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVmlkZW9MYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKaW5kZXggM2UxZjU4MTM1M2YwMmNhYjNh
MTU2MDQzZTAyOWYxOGYzZGU0MDJlNi4uY2MzNDljOGU1ZDE3ZTFkZGJjYWU5NjU5MGU5YmFhOWM3
M2YxMzJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAKICNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgotI2luY2x1ZGUgIlRleHR1cmVN
YW5hZ2VyLmgiIC8vIEZvciBUZXh0dXJlQWxsb2NhdG9yCisjaW5jbHVkZSAiVGV4dHVyZUFsbG9j
YXRvci5oIgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCmluZGV4IGJlZGUyYjFlMzFkYzBjYmVjOThhZDI5MjI5ZjRiZGVi
MDc3NzAxOWMuLjNmOTA1YTdhYjQyM2U5MTFhYTdjMGM3OTYwMDFmODY1YTA1OTAxYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTM4LDcgKzEzOCw2IEBACiAgICAgICAgICAg
ICAndGVzdHMvU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RleHR1cmVM
YXllckNocm9taXVtVGVzdC5jcHAnLAotICAgICAgICAgICAgJ3Rlc3RzL1RleHR1cmVNYW5hZ2Vy
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlclRl
c3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvVGlsaW5nRGF0YVRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAK
aW5kZXggZmJlZGU2Y2VkMTg1Y2M1ZThjZDUxYWU1OWRiYmEzNGYwMzZmZjM5NS4uNmQyNGMxZGU3
MDAzZjA5MzE1OWQyMGNkN2Q0NGJmYWMxNTU0ZTFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTMx
LDcgKzMxLDYgQEAKICNpbmNsdWRlICJDQ1Rlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIK
LSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgImNjL0NDSU9TdXJmYWNlTGF5
ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVGlsaW5nRGF0YS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwCmluZGV4IDQ2OGFmMzZiYmE1MGUzZWU4
MTY1ZjNhY2FjNzRlMWU0OWY2Zjk1NTkuLmE4Yjk2Mjc4N2Q4ZjIzZmViNjhmZDcyYmM1ZjY3OTUy
YTVhNjYwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlv
cml0aXplZFRleHR1cmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmUuaCIKICNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUwLDcgKzUxLDcg
QEAgcHVibGljOgogCiAgICAgc2l6ZV90IHRleHR1cmVzTWVtb3J5U2l6ZShzaXplX3QgdGV4dHVy
ZUNvdW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VC
eXRlcyhtX3RleHR1cmVTaXplLCBtX3RleHR1cmVGb3JtYXQpICogdGV4dHVyZUNvdW50OworICAg
ICAgICByZXR1cm4gQ0NUZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMobV90ZXh0dXJlU2l6ZSwgbV90
ZXh0dXJlRm9ybWF0KSAqIHRleHR1cmVDb3VudDsKICAgICB9CiAKICAgICBQYXNzT3duUHRyPEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcj4gY3JlYXRlTWFuYWdlcihzaXplX3QgbWF4VGV4dHVy
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFkZWRU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3Bw
CmluZGV4IDQwZDNjZTVlNmZmOTQzYmNkMGU5NGU3NWFiMzBiZTZjODA2ZWRkMTkuLjJlMmMxYTA2
ZjRiMGZmNWMwY2VmMWQzZDUyNzllZDgyNmU5YzllOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5j
bHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRl
eHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIldl
YktpdC5oIgogI2luY2x1ZGUgImNjL0NDQWN0aXZlQW5pbWF0aW9uLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4
IDUzZTU4YjNhN2E2ZDE2MTFiNWEwNTFlM2U4OTMzYjQzN2Q0MDQxNzUuLjJiNDM3M2UwM2IzYTM2
OTgzOGQ1ZjBlMWM1N2FhMGMxM2Q1YzU0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIK
ICNpbmNsdWRlICJSZWdpb24uaCIKKyNpbmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5j
bHVkZSAiVGV4dHVyZUNvcGllci5oIgogI2luY2x1ZGUgIlRleHR1cmVVcGxvYWRlci5oIgogI2lu
Y2x1ZGUgIlRpbGVkTGF5ZXJDaHJvbWl1bS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQnJpZGdlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VUZXN0LmNwcAppbmRleCA0MzU5MDdj
OTQzNzhhYmJjZGNiOTA5NDMwZWQ3YzAyZGM3OTE4ODljLi5jMjA2ZGRhNWU3NWExMjU5NWI1MWZj
OGVkNGYwNTE3Y2ZlNzI2ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VUZXN0LmNwcApAQCAtMzAsNyArMzAsNiBAQAog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgog
I2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ1MzEzZjVkYzIzNTBhMWU4ODg5NjRlMTJkZWViNTU4MzJmMmY4NzAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlTWFuYWdlclRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMjk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lu
Y2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVy
ZS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXRU
ZXN0czsKLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0KLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIFRleHR1
cmVNYW5hZ2VyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKLXB1YmxpYzoKLSAgICBUZXh0
dXJlTWFuYWdlclRlc3QoKQotICAgICAgICA6IG1fdGV4dHVyZVNpemUoMjU2LCAyNTYpCi0gICAg
ICAgICwgbV90ZXh0dXJlRm9ybWF0KEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKQotICAgIHsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIH5UZXh0dXJlTWFuYWdlclRlc3QoKQotICAgIHsKLSAgICB9Ci0K
LSAgICBzaXplX3QgdGV4dHVyZXNNZW1vcnlTaXplKHNpemVfdCB0ZXh0dXJlQ291bnQpCi0gICAg
ewotICAgICAgICByZXR1cm4gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKG1fdGV4dHVy
ZVNpemUsIG1fdGV4dHVyZUZvcm1hdCkgKiB0ZXh0dXJlQ291bnQ7Ci0gICAgfQotCi0gICAgUGFz
c093blB0cjxUZXh0dXJlTWFuYWdlcj4gY3JlYXRlVGV4dHVyZU1hbmFnZXIoc2l6ZV90IG1heFRl
eHR1cmVzLCBzaXplX3QgcHJlZmVycmVkVGV4dHVyZXMpCi0gICAgewotICAgICAgICByZXR1cm4g
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0
ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCAxMDI0KTsKLSAgICB9Ci0KLSAg
ICBib29sIHJlcXVlc3RUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyLCBUZXh0dXJlVG9r
ZW4gdG9rZW4pCi0gICAgewotICAgICAgICBib29sIHJlc3VsdCA9IG1hbmFnZXItPnJlcXVlc3RU
ZXh0dXJlKHRva2VuLCBtX3RleHR1cmVTaXplLCBtX3RleHR1cmVGb3JtYXQpOwotICAgICAgICBp
ZiAocmVzdWx0KQotICAgICAgICAgICAgbWFuYWdlci0+YWxsb2NhdGVUZXh0dXJlKCZtX2Zha2VU
ZXh0dXJlQWxsb2NhdG9yLCB0b2tlbik7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIG1fZmFrZVRleHR1cmVBbGxvY2F0
b3I7Ci0gICAgY29uc3QgSW50U2l6ZSBtX3RleHR1cmVTaXplOwotICAgIGNvbnN0IEdDM0RlbnVt
IG1fdGV4dHVyZUZvcm1hdDsKLX07Ci0KLVRFU1RfRihUZXh0dXJlTWFuYWdlclRlc3QsIHJlcXVl
c3RUZXh0dXJlSW5QcmVmZXJyZWRMaW1pdCkKLXsKLSAgICBjb25zdCBzaXplX3QgcHJlZmVycmVk
VGV4dHVyZXMgPSA4OwotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIg
PSBjcmVhdGVUZXh0dXJlTWFuYWdlcihwcmVmZXJyZWRUZXh0dXJlcyAqIDIsIHByZWZlcnJlZFRl
eHR1cmVzKTsKLSAgICBUZXh0dXJlVG9rZW4gdG9rZW5zW3ByZWZlcnJlZFRleHR1cmVzXTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWZlcnJlZFRleHR1cmVzOyArK2kpIHsKLSAgICAg
ICAgdG9rZW5zW2ldID0gdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCk7Ci0gICAgICAgIGlmIChp
KQotICAgICAgICAgICAgRVhQRUNUX0dUKHRva2Vuc1tpXSwgdG9rZW5zW2kgLSAxXSk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tl
bnNbaV0pKTsKLSAgICAgICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUo
dG9rZW5zW2ldKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5pc1Byb3Rl
Y3RlZCh0b2tlbnNbaV0pKTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBy
ZWZlcnJlZFRleHR1cmVzOyArK2kpCi0gICAgICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2Vy
LT5oYXNUZXh0dXJlKHRva2Vuc1tpXSkpOwotCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5
U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNl
Qnl0ZXMoKSk7Ci19Ci0KLVRFU1RfRihUZXh0dXJlTWFuYWdlclRlc3QsIHJlcXVlc3RUZXh0dXJl
RXhjZWVkaW5nUHJlZmVycmVkTGltaXQpCi17Ci0gICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVz
ID0gODsKLSAgICBjb25zdCBzaXplX3QgcHJlZmVycmVkVGV4dHVyZXMgPSA0OwotICAgIE93blB0
cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBjcmVhdGVUZXh0dXJlTWFuYWdlciht
YXhUZXh0dXJlcywgcHJlZmVycmVkVGV4dHVyZXMpOwotICAgIFRleHR1cmVUb2tlbiB0b2tlbnNb
bWF4VGV4dHVyZXNdOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkVGV4dHVy
ZXM7ICsraSkgewotICAgICAgICB0b2tlbnNbaV0gPSB0ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4o
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUocmVxdWVzdFRleHR1cmUodGV4dHVyZU1hbmFnZXIuZ2V0
KCksIHRva2Vuc1tpXSkpOwotICAgICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aGFz
VGV4dHVyZSh0b2tlbnNbaV0pKTsKLSAgICB9Ci0KLSAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90
ZWN0VGV4dHVyZSh0b2tlbnNbMF0pOwotICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0
dXJlKHRva2Vuc1syXSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gcHJlZmVycmVkVGV4dHVyZXM7
IGkgPCBtYXhUZXh0dXJlczsgKytpKSB7Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5h
Z2VyLT5nZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0
dXJlTWFuYWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHRleHR1
cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1tpXSkpOwotICAgIH0KLQotICAgIHRleHR1cmVN
YW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKHRva2Vuc1s0XSk7Ci0gICAgdGV4dHVyZU1hbmFnZXIt
PnVucHJvdGVjdFRleHR1cmUodG9rZW5zWzVdKTsKLQotICAgIC8vIFRoZXNlIHRleHR1cmVzIHNo
b3VsZCBiZSB2YWxpZCBiZWZvcmUgdGhlIHJlZHVjZU1lbW9yeVRvTGltaXQgY2FsbC4KLSAgICBF
WFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbMF0pKTsKLSAgICBF
WFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbMl0pKTsKLQotICAg
IHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHRleHR1cmVzTWVtb3J5U2l6ZShw
cmVmZXJyZWRUZXh0dXJlcykpOwotCi0gICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVNYW5hZ2VyLT5o
YXNUZXh0dXJlKHRva2Vuc1swXSkpOwotICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5o
YXNUZXh0dXJlKHRva2Vuc1sxXSkpOwotICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5p
c1Byb3RlY3RlZCh0b2tlbnNbMV0pKTsKLSAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZU1hbmFnZXIt
Pmhhc1RleHR1cmUodG9rZW5zWzJdKSk7Ci0gICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXIt
Pmhhc1RleHR1cmUodG9rZW5zWzNdKSk7Ci0gICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXIt
PmlzUHJvdGVjdGVkKHRva2Vuc1szXSkpOwotCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5
U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNl
Qnl0ZXMoKSk7Ci19Ci0KLVRFU1RfRihUZXh0dXJlTWFuYWdlclRlc3QsIHJlcXVlc3RUZXh0dXJl
RXhjZWVkaW5nTWF4TGltaXQpCi17Ci0gICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVzID0gODsK
LSAgICBjb25zdCBzaXplX3QgcHJlZmVycmVkVGV4dHVyZXMgPSA0OwotICAgIE93blB0cjxUZXh0
dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBjcmVhdGVUZXh0dXJlTWFuYWdlcihtYXhUZXh0
dXJlcywgcHJlZmVycmVkVGV4dHVyZXMpOwotICAgIFRleHR1cmVUb2tlbiB0b2tlbnNbbWF4VGV4
dHVyZXNdOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkgewot
ICAgICAgICB0b2tlbnNbaV0gPSB0ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKTsKLSAgICAgICAg
RVhQRUNUX1RSVUUocmVxdWVzdFRleHR1cmUodGV4dHVyZU1hbmFnZXIuZ2V0KCksIHRva2Vuc1tp
XSkpOwotICAgICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tl
bnNbaV0pKTsKLSAgICB9Ci0KLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRl
eHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkgewotICAgICAgICBUZXh0
dXJlVG9rZW4gdG9rZW4gPSB0ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKTsKLSAgICAgICAgRVhQ
RUNUX0ZBTFNFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tlbikpOwot
ICAgICAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW4pKTsK
LSAgICB9Ci0KLSAgICBFWFBFQ1RfRVEodGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VC
eXRlcygpLCB0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpKTsKLQotICAgIHRleHR1cmVN
YW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKHRva2Vuc1sxXSk7Ci0gICAgdGV4dHVyZU1hbmFnZXIt
PnVucHJvdGVjdFRleHR1cmUodG9rZW5zWzNdKTsKLSAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4
dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdGV4
dHVyZU1hbmFnZXItPmdldFRva2VuKCkpKTsKLSAgICBFWFBFQ1RfRkFMU0UocmVxdWVzdFRleHR1
cmUodGV4dHVyZU1hbmFnZXIuZ2V0KCksIHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpKSk7Ci0g
ICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5h
Z2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVN
YW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1sxXSkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJl
TWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbM10pKTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5h
Z2VyVGVzdCwgcmVkdWNlTWVtb3J5VG9MaW1pdCkKLXsKLSAgICBjb25zdCBzaXplX3QgbWF4VGV4
dHVyZXMgPSA4OwotICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDQ7Ci0gICAg
T3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5h
Z2VyKG1heFRleHR1cmVzLCBwcmVmZXJyZWRUZXh0dXJlcyk7Ci0gICAgVGV4dHVyZVRva2VuIHRv
a2Vuc1ttYXhUZXh0dXJlc107Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJl
czsgKytpKSB7Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigp
OwotICAgICAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQo
KSwgdG9rZW5zW2ldKSk7Ci0gICAgfQotCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6
ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7
Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlT
aXplKG1heFRleHR1cmVzKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhU
ZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAg
dGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKHBy
ZWZlcnJlZFRleHR1cmVzKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhU
ZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0KLSAg
ICBjb25zdCBzaXplX3QgdW5wcm90ZWN0ZWRUZXh0dXJlcyA9IHByZWZlcnJlZFRleHR1cmVzICsg
MTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWZlcnJlZFRleHR1cmVzICsgMTsgKytp
KQotICAgICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZSh0b2tlbnNbaV0pOwot
Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlT
aXplKG1heFRleHR1cmVzKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhU
ZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAg
dGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKHBy
ZWZlcnJlZFRleHR1cmVzKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVm
ZXJyZWRUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7
Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlT
aXplKDEpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzIC0g
dW5wcm90ZWN0ZWRUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0
ZXMoKSk7Ci0KLSAgICAvLyByZWR1Y2VNZW1vcnlUb0xpbWl0IGRvZXNuJ3QgY2hhbmdlIHRoZSBj
dXJyZW50IG1lbW9yeSBsaW1pdHMuCi0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZSht
YXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwotICAg
IEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCB0ZXh0dXJl
TWFuYWdlci0+cHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcygpKTsKLX0KLQotVEVTVF9GKFRleHR1
cmVNYW5hZ2VyVGVzdCwgc2V0TWF4TWVtb3J5TGltaXRCeXRlcykKLXsKLSAgICBjb25zdCBzaXpl
X3QgbWF4VGV4dHVyZXMgPSA4OwotICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9
IDQ7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRl
eHR1cmVNYW5hZ2VyKG1heFRleHR1cmVzLCBwcmVmZXJyZWRUZXh0dXJlcyk7Ci0gICAgVGV4dHVy
ZVRva2VuIHRva2Vuc1ttYXhUZXh0dXJlc107Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
YXhUZXh0dXJlczsgKytpKSB7Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5n
ZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFu
YWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7Ci0gICAgfQotCi0gICAgRVhQRUNUX0VRKHRleHR1cmVz
TWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNl
Qnl0ZXMoKSk7Ci0KLSAgICBjb25zdCBzaXplX3QgdW5wcm90ZWN0ZWRUZXh0dXJlcyA9IHByZWZl
cnJlZFRleHR1cmVzICsgMTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVucHJvdGVjdGVk
VGV4dHVyZXM7ICsraSkKLSAgICAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUo
dG9rZW5zW2ldKTsKLQotICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVz
KHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcykpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJl
c01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVz
ZUJ5dGVzKCkpOwotICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHRl
eHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcykpOwotICAgIEVYUEVDVF9FUSh0ZXh0
dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+Y3VycmVu
dE1lbW9yeVVzZUJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUocHJl
ZmVycmVkVGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsK
LX0KLQotVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgc2V0UHJlZmVycmVkTWVtb3J5TGltaXRC
eXRlcykKLXsKLSAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwotICAgIGNvbnN0IHNp
emVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDQ7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0
ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRleHR1cmVzLCBwcmVmZXJy
ZWRUZXh0dXJlcyk7Ci0gICAgVGV4dHVyZVRva2VuIHRva2Vuc1ttYXhUZXh0dXJlc107Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKSB7Ci0gICAgICAgIHRva2Vu
c1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfVFJVRShy
ZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7Ci0gICAgfQot
Ci0gICAgY29uc3Qgc2l6ZV90IHVucHJvdGVjdGVkVGV4dHVyZXMgPSBwcmVmZXJyZWRUZXh0dXJl
cyArIDE7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1bnByb3RlY3RlZFRleHR1cmVzOyAr
K2kpCi0gICAgICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKHRva2Vuc1tpXSk7
Ci0KLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVy
ZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVy
ZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPm1heE1lbW9yeUxpbWl0
Qnl0ZXMoKSk7Ci0KLSAgICAvLyBTZXR0aW5nIHByZWZlcnJlZCBtZW1vcnkgbGltaXQgb25seSB3
b24ndCBmb3JjZSByZWR1Y2VNZW1vcnlUb0xpbWl0LgotICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRQ
cmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0
dXJlcykpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0
ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0
ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+bWF4TWVtb3J5
TGltaXRCeXRlcygpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJl
ZFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPnByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoKSk7
Ci19Ci0KLVRFU1RfRihUZXh0dXJlTWFuYWdlclRlc3QsIHRleHR1cmVNYW5hZ2VyRGVzdHJveWVk
QmVmb3JlTWFuYWdlZFRleHR1cmUpCi17Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0
dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKDEsIDEpOwotICAgIE93blB0cjxNYW5h
Z2VkVGV4dHVyZT4gbWFuYWdlZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1
cmVNYW5hZ2VyLmdldCgpKTsKLQotICAgIEludFNpemUgc2l6ZSg1MCwgNTApOwotICAgIHVuc2ln
bmVkIGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwotCi0gICAgLy8gVGV4dHVyZSBp
cyBpbml0aWFsbHkgaW52YWxpZCwgYnV0IHdlIHNob3VsZCBiZSBhYmxlIHRvIHJlc2VydmUuCi0g
ICAgRVhQRUNUX0ZBTFNFKG1hbmFnZWRUZXh0dXJlLT5pc1ZhbGlkKHNpemUsIGZvcm1hdCkpOwot
ICAgIEVYUEVDVF9UUlVFKG1hbmFnZWRUZXh0dXJlLT5yZXNlcnZlKHNpemUsIGZvcm1hdCkpOwot
ICAgIEVYUEVDVF9UUlVFKG1hbmFnZWRUZXh0dXJlLT5pc1ZhbGlkKHNpemUsIGZvcm1hdCkpOwot
Ci0gICAgdGV4dHVyZU1hbmFnZXIuY2xlYXIoKTsKLQotICAgIC8vIERlbGV0aW5nIHRoZSBtYW5h
Z2VyIHNob3VsZCBpbnZhbGlkYXRlIHRoZSB0ZXh0dXJlIGFuZCByZXNlcnZhdGlvbiBhdHRlbXB0
cyBzaG91bGQgZmFpbC4KLSAgICBFWFBFQ1RfRkFMU0UobWFuYWdlZFRleHR1cmUtPmlzVmFsaWQo
c2l6ZSwgZm9ybWF0KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG1hbmFnZWRUZXh0dXJlLT5yZXNlcnZl
KHNpemUsIGZvcm1hdCkpOwotfQotCi1URVNUX0YoVGV4dHVyZU1hbmFnZXJUZXN0LCB0ZXh0dXJl
TW92ZWRUb05ld01hbmFnZXIpCi17Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlck9uZSA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKDEsIDEpOwotICAgIE93blB0cjxUZXh0
dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXJUd28gPSBjcmVhdGVUZXh0dXJlTWFuYWdlcigxLCAx
KTsKLSAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1hbmFnZWRUZXh0dXJlID0gTWFuYWdlZFRl
eHR1cmU6OmNyZWF0ZSh0ZXh0dXJlTWFuYWdlck9uZS5nZXQoKSk7Ci0KLSAgICBJbnRTaXplIHNp
emUoNTAsIDUwKTsKLSAgICB1bnNpZ25lZCBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QTsKLQotICAgIC8vIFRleHR1cmUgaXMgaW5pdGlhbGx5IGludmFsaWQsIGJ1dCB3ZSBzaG91bGQg
YmUgYWJsZSB0byByZXNlcnZlLgotICAgIEVYUEVDVF9GQUxTRShtYW5hZ2VkVGV4dHVyZS0+aXNW
YWxpZChzaXplLCBmb3JtYXQpKTsKLSAgICBFWFBFQ1RfVFJVRShtYW5hZ2VkVGV4dHVyZS0+cmVz
ZXJ2ZShzaXplLCBmb3JtYXQpKTsKLSAgICBFWFBFQ1RfVFJVRShtYW5hZ2VkVGV4dHVyZS0+aXNW
YWxpZChzaXplLCBmb3JtYXQpKTsKLQotICAgIC8vIFNldHRpbmcgdG8gdGhlIHNhbWUgbWFuYWdl
ciBzaG91bGQgYmUgYSBuby1vcC4KLSAgICBtYW5hZ2VkVGV4dHVyZS0+c2V0VGV4dHVyZU1hbmFn
ZXIodGV4dHVyZU1hbmFnZXJPbmUuZ2V0KCkpOwotICAgIEVYUEVDVF9UUlVFKG1hbmFnZWRUZXh0
dXJlLT5pc1ZhbGlkKHNpemUsIGZvcm1hdCkpOwotCi0gICAgLy8gU2V0dGluZyB0byBhIGRpZmZl
cmVudCBtYW5hZ2VyIHNob3VsZCBpbnZhbGlkYXRlIHRoZSB0ZXh0dXJlLgotICAgIG1hbmFnZWRU
ZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdlcih0ZXh0dXJlTWFuYWdlclR3by5nZXQoKSk7Ci0KLSAg
ICBFWFBFQ1RfRkFMU0UobWFuYWdlZFRleHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0g
ICAgRVhQRUNUX1RSVUUobWFuYWdlZFRleHR1cmUtPnJlc2VydmUoc2l6ZSwgZm9ybWF0KSk7Ci0g
ICAgRVhQRUNUX1RSVUUobWFuYWdlZFRleHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152031</attachid>
            <date>2012-07-12 12:52:55 -0700</date>
            <delta_ts>2012-07-12 13:15:31 -0700</delta_ts>
            <desc>rebase_add_bug_link_use_64mb_default</desc>
            <filename>bug-91001-20120712125254.patch</filename>
            <type>text/plain</type>
            <size>89883</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzIzZmE3OTk0MmUxMjYz
NTJiNWE0MjM2YzlhYmNkN2JiMGNiMWM5Yy4uNGU1NzY0Mzk5MjUyOWMxZWViZDRlYzMxMWE1ZTM0
NDU0YTQ5NDFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEyLTA3LTEyICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSBD
Q1RleHR1cmUvVGV4dHVyZUFsbG9jYXRvciBhbmQgcmVtb3ZlIFRleHR1cmVNYW5hZ2VyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTAwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBDQ1RleHR1cmUg
dG8gY2xlYW4gdXAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcuCisgICAgICAgIEFkZCBU
ZXh0dXJlQWxsb2NhdG9yLmggYW5kIHJlbW92ZSByZW1haW5kZXIgb2YgVGV4dHVyZU1hbmFnZXIu
aC9jcHAuCisgICAgICAgIE1pbm9yIG1vdmUvcmVmYWN0b3Jpbmcgb2YgbGluay91bmxpbmsgaW4g
Q0NQcmlvcml0aXplZFRleHR1cmUuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0
cyAocmVmYWN0b3JpbmcpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5p
dGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRl
eHR1cmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L01hbmFnZWRUZXh0dXJlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJpb3JpdHlDYWxjdWxhdG9yLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHR1
cmVBbGxvY2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUFsbG9jYXRvcjo6flRleHR1
cmVBbGxvY2F0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlTWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmRlbGV0ZVRleHR1cmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9j
YXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNV
cERpc3BsYXkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBy
aW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OkNDTGF5ZXJUcmVlSG9zdEltcGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0
dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpDQ1ByaW9y
aXRpemVkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6
c2V0RGltZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6
dGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiaW5k
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6ZnJhbWVi
dWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6
OmxpbmspOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRp
emVkVGV4dHVyZTo6dW5saW5rKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZTo6Ynl0ZXMpOgorICAgICAgICAoQ0NQcmlv
cml0aXplZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6
OmhhdmVCYWNraW5nVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4
dHVyZTo6QmFja2luZzo6QmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVk
VGV4dHVyZTo6QmFja2luZzo6fkJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0
aXplZFRleHR1cmU6OkJhY2tpbmc6Om93bmVyKToKKyAgICAgICAgKEJhY2tpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmJhY2tpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9y
aXRpemVUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OnJlcXVlc3RMYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9yeSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZ2lzdGVy
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
OnJldHVybkJhY2tpbmdUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ryb3lCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YXNzZXJ0SW52YXJpYW50cyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyLmg6CisgICAgICAgIChDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0TWVtb3J5QWxsb2Nh
dGlvbkxpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6Y29tcGFyZUJhY2tpbmdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ByaW9yaXR5Q2FsY3VsYXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rl
eHR1cmU6OkNDVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKwogMjAx
Mi0wNy0xMSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDAwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDMxMmNlNzI5ZTkxOTRlNTE3NzIyYTQyNGU3NTJmMTAwODYxZjA5ZGYuLmZm
NDhlY2E4YTJiZjI4YmJjNTgwZDMzMjkyNzgxODZlOGRiZGI2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDctMTIgIEVyaWMgUGVubmVyICA8ZXBl
bm5lckBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIENDVGV4dHVyZS9UZXh0
dXJlQWxsb2NhdG9yIGFuZCByZW1vdmUgVGV4dHVyZU1hbmFnZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMDAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsZXRpbmcgb2xkIHRleHR1cmUgbWFuYWdl
ciB0ZXN0cy4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1ByaW9yaXRpemVkVGV4
dHVyZVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Q6OnRl
eHR1cmVzTWVtb3J5U2l6ZSk6CisgICAgICAgICogdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwOgor
ICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAgICAgICAgKiB0ZXN0
cy9DYW52YXMyRExheWVyQnJpZGdlVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvVGV4dHVyZU1h
bmFnZXJUZXN0LmNwcDogUmVtb3ZlZC4KKwogMjAxMi0wNy0xMiAgVG9ueSBDaGFuZyAgPHRvbnlA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGRyYWcgYW5kIGRyb3Ag
QVBJIG1ldGhvZHMgdGhhdCBhcmUgbm8gbG9uZ2VyIHVzZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2
MDhkYmJhNDQwOTNhMDE0YTJhYzc4MjA3ZGIyNzZhOTNkMmIxZjJkLi5lMWIwMjA0MTk0MWQwY2Zh
Mjc1Y2U2YWUwZTZmNTQ2ODc0MzZiNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04MjQ5LDggKzgy
NDksNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4
dHVyZVN1YkltYWdlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oJywKLSAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAnLAotICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ2FudmFzLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1DYW52YXMuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGxhdGZvcm1Db2xvci5oJywKQEAg
LTgyNzIsOCArODI3MCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZUNvcGllci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmgnLAotICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcCcsCi0gICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUFsbG9jYXRvci5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBmODY5YzU4YTJjY2MwYjA5ZjIzZjUy
YzQ3MWMzMmE5MDQ4ZWRjZTQ0Li5kNzVjZjA1NGRjNTJlOWIyN2Y4NTU0YWE1ZTVhZDdiZjU5ZTgy
MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVt
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4
dFNraWEuaCIKKyNpbmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmlu
ZGV4IGQ5Nzk2OGMwMzU1NjI0MzA1NTJjZmQ4YmY3OTc2MDQwZmY5MzhkMjYuLjI3NmUyYjM5MTc5
MjY3M2M0YTRmMmI0NDI5ZmRhZDg4NmI0ZWRlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIENDR3JhcGhp
Y3NDb250ZXh0OworY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIAogLy8gVGhpcyBjbGFzcyByYXN0
ZXJpemVzIHRoZSBjb250ZW50UmVjdCBpbnRvIGEgc2tpYSBiaXRtYXAgY2FudmFzLiBJdCB0aGVu
IHVwZGF0ZXMKIC8vIHRleHR1cmVzIGJ5IGNvcHlpbmcgZnJvbSB0aGUgY2FudmFzIGludG8gdGhl
IHRleHR1cmUsIHVzaW5nIE1hcFN1YkltYWdlIGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDIz
Y2ZmZWE5NDIwYzFiNjA2NDU3YmZlMWVmZjI3MmVlOGNhZjM1NDMuLjg2ZmIyYzhjM2I0MTM4ODVm
ZWI5ZmRlODIzZjk1MjA4Mjg5ZWIxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgIlNrQ2FudmFzLmgi
CiAjaW5jbHVkZSAiU2tEZXZpY2UuaCIKKyNpbmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgiCiAj
aW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCmluZGV4IDc4N2IzOTkzN2M5OWUxN2E2NGFlYjRkMDg4YTVjZTg5OGJlZWRi
NmMuLjlmMTM4ODgyN2IzNmQ3N2NhODkzZjMzZjNiNzEzMGY1NjMxNmRmZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBU
ZXh0dXJlQWxsb2NhdG9yOworCiAvLyBUaGlzIGNsYXNzIHJlY29yZHMgdGhlIGNvbnRlbnRSZWN0
IGludG8gYW4gU2tQaWN0dXJlLCB0aGVuIHNvZnR3YXJlIHJhc3Rlcml6ZXMKIC8vIHRoZSBTa1Bp
Y3R1cmUgaW50byBiaXRtYXBzIGZvciBlYWNoIHRpbGUuIFRoaXMgaW1wbGVtZW50cyBDQ1NldHRp
bmdzOjpwZXJUaWxlUGFpbnRpbmcuCiBjbGFzcyBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyIDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMzc2OTM2NTg2ZDhhOTFhODM1
ZmY2ZWM4M2I1M2ZjODJiYTU1YzBjNy4uNjk2NTYzYWNmZTlhYzExZGNmYjY5OTViMmE1ZGYxODZi
ZTE3NDRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCkBAIC0zNiw3ICszNiw2
IEBACiAKICNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgogI2luY2x1ZGUgIkxheWVy
VGV4dHVyZVVwZGF0ZXIuaCIKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtQ29sb3IuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggZTc1OWY1YzhlNzM5OTcwN2Y2
ZGVlMTI4ZmM4MTZkZTI1YTBmOTdjNy4uNzRmZDdiYmNjOGZlMGVlYjhhZGJjMjJkNTJlODc3ZGU3
MTc4YzUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC00Myw3
ICs0Myw2IEBACiAjaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRl
ICJTa0JpdG1hcC5oIgogI2luY2x1ZGUgIlNrQ29sb3IuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFu
YWdlci5oIgogI2luY2x1ZGUgIlRocm90dGxlZFRleHR1cmVVcGxvYWRlci5oIgogI2luY2x1ZGUg
IlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKQEAg
LTIwNiwxMSArMjA1LDEwIEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFsaXpl
KCkKIAogICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nVGV4dHVyZVN0b3JhZ2VFeHRlbnNpb24gPSBl
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIik7CiAKKyAgICBtX2Ns
aWVudC0+c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjpkZWZhdWx0TWVtb3J5QWxsb2NhdGlvbkxpbWl0KCkpOwogICAgIG1fY2FwYWJpbGl0
aWVzLnVzaW5nR3B1TWVtb3J5TWFuYWdlciA9IGV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0NIUk9N
SVVNX2dwdV9tZW1vcnlfbWFuYWdlciIpOwogICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2luZ0dw
dU1lbW9yeU1hbmFnZXIpCiAgICAgICAgIG1fY29udGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbkNo
YW5nZWRDYWxsYmFja0NIUk9NSVVNKHRoaXMpOwotICAgIGVsc2UKLSAgICAgICAgbV9jbGllbnQt
PnNldE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRC
eXRlcyh2aWV3cG9ydFNpemUoKSkpOwogCiAgICAgbV9jYXBhYmlsaXRpZXMudXNpbmdEaXNjYXJk
RnJhbWVidWZmZXIgPSBleHRlbnNpb25zLmNvbnRhaW5zKCJHTF9DSFJPTUlVTV9kaXNjYXJkX2Zy
YW1lYnVmZmVyIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNGRhYmYxYmViZGVhNTY2YzgwZDhiMWNiNWEyYWVlNGJmN2JjMWQ5MC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2luY2x1ZGUgIk1hbmFn
ZWRUZXh0dXJlLmgiCi0KLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUg
ImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmg+Ci0KLXVzaW5nIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0Q7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotTWFuYWdlZFRleHR1cmU6Ok1hbmFnZWRUZXh0dXJlKFRleHR1cmVN
YW5hZ2VyKiBtYW5hZ2VyKQotICAgIDogbV90ZXh0dXJlTWFuYWdlcihtYW5hZ2VyKQotICAgICwg
bV90b2tlbigwKQotICAgICwgbV9mb3JtYXQoMCkKLSAgICAsIG1fdGV4dHVyZUlkKDApCi17Ci0g
ICAgbV90ZXh0dXJlTWFuYWdlci0+cmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwotfQotCi1NYW5hZ2Vk
VGV4dHVyZTo6TWFuYWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIsIFRleHR1cmVU
b2tlbiB0b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHRleHR1
cmVJZCkKLSAgICA6IG1fdGV4dHVyZU1hbmFnZXIobWFuYWdlcikKLSAgICAsIG1fdG9rZW4odG9r
ZW4pCi0gICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZm9ybWF0KGZvcm1hdCkKLSAgICAsIG1f
dGV4dHVyZUlkKHRleHR1cmVJZCkKLXsKLSAgICBtX3RleHR1cmVNYW5hZ2VyLT5yZWdpc3RlclRl
eHR1cmUodGhpcyk7Ci19Ci0KLU1hbmFnZWRUZXh0dXJlOjp+TWFuYWdlZFRleHR1cmUoKQotewot
ICAgIGlmICghbV90ZXh0dXJlTWFuYWdlcikKLSAgICAgICAgcmV0dXJuOwotICAgIG1fdGV4dHVy
ZU1hbmFnZXItPnVucmVnaXN0ZXJUZXh0dXJlKHRoaXMpOwotICAgIGlmIChtX3Rva2VuKQotICAg
ICAgICBtX3RleHR1cmVNYW5hZ2VyLT5yZWxlYXNlVG9rZW4obV90b2tlbik7Ci19Ci0KLXZvaWQg
TWFuYWdlZFRleHR1cmU6OnNldFRleHR1cmVNYW5hZ2VyKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2Vy
KQotewotICAgIGlmIChtYW5hZ2VyID09IG1fdGV4dHVyZU1hbmFnZXIpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChtX3RleHR1cmVNYW5hZ2VyKQotICAgICAgICBtX3RleHR1cmVNYW5hZ2Vy
LT51bnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsKLSAgICBtX3RleHR1cmVNYW5hZ2VyID0gbWFuYWdl
cjsKLSAgICBjbGVhcigpOwotICAgIGlmIChtX3RleHR1cmVNYW5hZ2VyKQotICAgICAgICBtX3Rl
eHR1cmVNYW5hZ2VyLT5yZWdpc3RlclRleHR1cmUodGhpcyk7Ci19Ci0KLWJvb2wgTWFuYWdlZFRl
eHR1cmU6OmlzVmFsaWQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQotewot
ICAgIHJldHVybiBtX3Rva2VuICYmIHNpemUgPT0gbV9zaXplICYmIGZvcm1hdCA9PSBtX2Zvcm1h
dCAmJiBtX3RleHR1cmVNYW5hZ2VyICYmIG1fdGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90
b2tlbik7Ci19Ci0KLWJvb2wgTWFuYWdlZFRleHR1cmU6OnJlc2VydmUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgdW5zaWduZWQgZm9ybWF0KQotewotICAgIGlmICghbV90ZXh0dXJlTWFuYWdlcikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFtX3Rva2VuKQotICAgICAgICBtX3Rva2Vu
ID0gbV90ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKTsKLQotICAgIGJvb2wgcmVzZXJ2ZWQgPSB0
cnVlOwotICAgIGlmIChzaXplID09IG1fc2l6ZSAmJiBmb3JtYXQgPT0gbV9mb3JtYXQgJiYgbV90
ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSkKLSAgICAgICAgbV90ZXh0dXJlTWFu
YWdlci0+cHJvdGVjdFRleHR1cmUobV90b2tlbik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fdGV4
dHVyZUlkID0gMDsKLSAgICAgICAgcmVzZXJ2ZWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5yZXF1ZXN0
VGV4dHVyZShtX3Rva2VuLCBzaXplLCBmb3JtYXQpOwotICAgICAgICBpZiAocmVzZXJ2ZWQpIHsK
LSAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7Ci0gICAgICAgICAgICBtX2Zvcm1hdCA9IGZvcm1h
dDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXNlcnZlZDsKLX0KLQotdm9pZCBN
YW5hZ2VkVGV4dHVyZTo6dW5yZXNlcnZlKCkKLXsKLSAgICBpZiAoIW1fdG9rZW4gfHwgIW1fdGV4
dHVyZU1hbmFnZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdGV4dHVyZU1hbmFnZXItPnVu
cHJvdGVjdFRleHR1cmUobV90b2tlbik7Ci19Ci0KLXZvaWQgTWFuYWdlZFRleHR1cmU6OmFsbG9j
YXRlKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKLXsKLSAgICBBU1NFUlQobV90ZXh0dXJl
TWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7Ci0gICAgaWYgKCFtX3RleHR1cmVJZCkKLSAg
ICAgICAgbV90ZXh0dXJlSWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUoYWxs
b2NhdG9yLCBtX3Rva2VuKTsKLX0KLQotdm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUo
Q0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikK
LXsKLSAgICBhbGxvY2F0ZShhbGxvY2F0b3IpOwotICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewot
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9z
aXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29udGV4dDNkLT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpOwotfQotCi1QYXNz
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiBNYW5hZ2VkVGV4dHVyZTo6c3RlYWwoKQotewotICAgIE93
blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSA9IGFkb3B0UHRyKG5ldyBNYW5hZ2VkVGV4dHVy
ZShtX3RleHR1cmVNYW5hZ2VyLCBtX3Rva2VuLCBtX3NpemUsIG1fZm9ybWF0LCBtX3RleHR1cmVJ
ZCkpOwotICAgIGNsZWFyKCk7Ci0gICAgcmV0dXJuIHRleHR1cmUucmVsZWFzZSgpOwotfQotCi12
b2lkIE1hbmFnZWRUZXh0dXJlOjpjbGVhcigpCi17Ci0gICAgbV90b2tlbiA9IDA7Ci0gICAgbV9z
aXplID0gSW50U2l6ZSgpOwotICAgIG1fZm9ybWF0ID0gMDsKLSAgICBtX3RleHR1cmVJZCA9IDA7
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRU
ZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5h
Z2VkVGV4dHVyZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTY3ZWJmNjhlYTVl
ZWJhYzQ5Y2JjNTg2MDg0NWY3ZjdiYjU4NDk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL01hbmFnZWRUZXh0dXJlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBNYW5hZ2VkVGV4dHVyZV9oCi0jZGVmaW5lIE1hbmFnZWRUZXh0
dXJlX2gKLQotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5o
IgotCi0jaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsK
LQotY2xhc3MgTWFuYWdlZFRleHR1cmUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hbmFn
ZWRUZXh0dXJlKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVy
ZT4gY3JlYXRlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBNYW5hZ2VkVGV4dHVyZShtYW5hZ2VyKSk7Ci0gICAgfQotICAgIH5NYW5h
Z2VkVGV4dHVyZSgpOwotCi0gICAgdm9pZCBzZXRUZXh0dXJlTWFuYWdlcihUZXh0dXJlTWFuYWdl
ciopOwotICAgIHZvaWQgY2xlYXJNYW5hZ2VyKCkgeyBtX3RleHR1cmVNYW5hZ2VyID0gMDsgfQot
Ci0gICAgYm9vbCBpc1ZhbGlkKGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBmb3JtYXQpOwotICAg
IGJvb2wgcmVzZXJ2ZShjb25zdCBJbnRTaXplJiwgdW5zaWduZWQgZm9ybWF0KTsKLSAgICB2b2lk
IHVucmVzZXJ2ZSgpOwotICAgIGJvb2wgaXNSZXNlcnZlZCgpCi0gICAgewotICAgICAgICByZXR1
cm4gbV90ZXh0dXJlTWFuYWdlciAmJiBtX3RleHR1cmVNYW5hZ2VyLT5pc1Byb3RlY3RlZChtX3Rv
a2VuKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFsbG9jYXRlKFRleHR1cmVBbGxvY2F0b3IqKTsKLSAg
ICB2b2lkIGJpbmRUZXh0dXJlKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciop
OwotCi0gICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgdW5z
aWduZWQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KLSAgICB1bnNpZ25lZCB0
ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQotCi0gICAgLy8gU3RlYWwg
dG9rZW4gYW5kIHRleHR1cmVJZCBieSBpbnN0YW50aWF0ZXMgYSBuZXcgdGV4dHVyZSB1c2luZyBl
eGlzdGluZwotICAgIC8vIG1lbWJlciB2YXJpYWJsZXMuCi0gICAgUGFzc093blB0cjxNYW5hZ2Vk
VGV4dHVyZT4gc3RlYWwoKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNYW5hZ2VkVGV4dHVy
ZShUZXh0dXJlTWFuYWdlciopOwotICAgIE1hbmFnZWRUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiwg
VGV4dHVyZVRva2VuLCBJbnRTaXplLCB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHRleHR1cmVJ
ZCk7Ci0KLSAgICB2b2lkIGNsZWFyKCk7Ci0KLSAgICBUZXh0dXJlTWFuYWdlciogbV90ZXh0dXJl
TWFuYWdlcjsKLSAgICBUZXh0dXJlVG9rZW4gbV90b2tlbjsKLSAgICBJbnRTaXplIG1fc2l6ZTsK
LSAgICB1bnNpZ25lZCBtX2Zvcm1hdDsKLSAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKLX07Ci0K
LX0KLQotI2VuZGlmIC8vIE1hbmFnZWRUZXh0dXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNo
cm9taXVtLmgKaW5kZXggMGU3ZDRlMzhjNTZjMWVjY2Q5NmY1Y2JhZmQ3NGY5ZGU1ZjNkODdkOS4u
MmI2MDhmNGU3MjcyN2UzYTEwOGQxZTY5NjRkZTYzOTQwOTZkMjk3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVu
ZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIGNsYXNzIExheWVyQ2hyb21pdW07CiBjbGFzcyBM
YXllclJlbmRlcmVyQ2hyb21pdW07Ci1jbGFzcyBNYW5hZ2VkVGV4dHVyZTsKIAogY2xhc3MgUmVu
ZGVyU3VyZmFjZUNocm9taXVtIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW5kZXJTdXJm
YWNlQ2hyb21pdW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUFsbG9jYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ZGUxMTUy
MmI0YWFkYWUxNmJjYjI3ZTA1NGZmNzM3Yjg4NmI4M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmgK
QEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBUZXh0dXJlQWxsb2Nh
dG9yX2gKKyNkZWZpbmUgVGV4dHVyZUFsbG9jYXRvcl9oCisKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNE
ZW51bSBmb3JtYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25l
ZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQWxsVGV4dHVyZXMoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5U
ZXh0dXJlQWxsb2NhdG9yKCkgeyB9Cit9OworCit9CisKKyNlbmRpZgorCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVN
YW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg1YzcyMjI4ZWMwMzdm
Y2NlNWYzZmVjNDAwOTI0ODUyMzdjMDZiYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlTWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKLQotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJN
YW5hZ2VkVGV4dHVyZS5oIgotI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKLQotdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0KLW5hbWVzcGFjZSB7Ci1zaXplX3Qg
bWVtb3J5TGltaXRCeXRlcyhzaXplX3Qgdmlld3BvcnRNdWx0aXBsaWVyLCBjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpemUsIHNpemVfdCBtaW5NZWdhYnl0ZXMsIHNpemVfdCBtYXhNZWdhYnl0ZXMp
Ci17Ci0gICAgaWYgKCF2aWV3cG9ydE11bHRpcGxpZXIpCi0gICAgICAgIHJldHVybiBtYXhNZWdh
Ynl0ZXMgKiAxMDI0ICogMTAyNDsKLSAgICBpZiAodmlld3BvcnRTaXplLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIG1pbk1lZ2FieXRlcyAqIDEwMjQgKiAxMDI0OwotICAgIHJldHVybiBtYXgo
bWluTWVnYWJ5dGVzICogMTAyNCAqIDEwMjQsIG1pbihtYXhNZWdhYnl0ZXMgKiAxMDI0ICogMTAy
NCwgdmlld3BvcnRNdWx0aXBsaWVyICogVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHZp
ZXdwb3J0U2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKSk7Ci19Ci19Ci0KLXNpemVfdCBU
ZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXpl
KQotewotICAgIHNpemVfdCB2aWV3cG9ydE11bHRpcGxpZXIsIG1pbk1lZ2FieXRlcywgbWF4TWVn
YWJ5dGVzOwotI2lmIE9TKEFORFJPSUQpCi0gICAgdmlld3BvcnRNdWx0aXBsaWVyID0gMTY7Ci0g
ICAgbWluTWVnYWJ5dGVzID0gMzI7Ci0gICAgbWF4TWVnYWJ5dGVzID0gNjQ7Ci0jZWxzZQotICAg
IHZpZXdwb3J0TXVsdGlwbGllciA9IDA7Ci0gICAgbWluTWVnYWJ5dGVzID0gMDsKLSAgICBtYXhN
ZWdhYnl0ZXMgPSAxMjg7Ci0jZW5kaWYKLSAgICByZXR1cm4gbWVtb3J5TGltaXRCeXRlcyh2aWV3
cG9ydE11bHRpcGxpZXIsIHZpZXdwb3J0U2l6ZSwgbWluTWVnYWJ5dGVzLCBtYXhNZWdhYnl0ZXMp
OwotfQotCi1zaXplX3QgVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSkKLXsKLSAgICBzaXplX3Qgdmlld3BvcnRNdWx0aXBsaWVyLCBt
aW5NZWdhYnl0ZXMsIG1heE1lZ2FieXRlczsKLSNpZiBPUyhBTkRST0lEKQotICAgIHZpZXdwb3J0
TXVsdGlwbGllciA9IDg7Ci0gICAgbWluTWVnYWJ5dGVzID0gMTY7Ci0gICAgbWF4TWVnYWJ5dGVz
ID0gMzI7Ci0jZWxzZQotICAgIHZpZXdwb3J0TXVsdGlwbGllciA9IDA7Ci0gICAgbWluTWVnYWJ5
dGVzID0gMDsKLSAgICBtYXhNZWdhYnl0ZXMgPSA2NDsKLSNlbmRpZgotICAgIHJldHVybiBtZW1v
cnlMaW1pdEJ5dGVzKHZpZXdwb3J0TXVsdGlwbGllciwgdmlld3BvcnRTaXplLCBtaW5NZWdhYnl0
ZXMsIG1heE1lZ2FieXRlcyk7Ci19Ci0KLXNpemVfdCBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNl
Qnl0ZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKLXsKLSAg
ICAvLyBGSVhNRTogVGhpcyBhc3N1bWVzIGFsbCB0ZXh0dXJlcyBhcmUgMSBieXRlL2NvbXBvbmVu
dC4KLSAgICBjb25zdCBHQzNEZW51bSB0eXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEU7Ci0gICAgdW5zaWduZWQgaW50IGNvbXBvbmVudHNQZXJQaXhlbCA9IDQ7Ci0gICAgdW5z
aWduZWQgaW50IGJ5dGVzUGVyQ29tcG9uZW50ID0gMTsKLSAgICBpZiAoIUdyYXBoaWNzQ29udGV4
dDNEOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnModGV4dHVyZUZvcm1hdCwgdHlwZSwg
JmNvbXBvbmVudHNQZXJQaXhlbCwgJmJ5dGVzUGVyQ29tcG9uZW50KSkKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0KLSAgICByZXR1cm4gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQo
KSAqIGNvbXBvbmVudHNQZXJQaXhlbCAqIGJ5dGVzUGVyQ29tcG9uZW50OwotfQotCi0KLVRleHR1
cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6
ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSkKLSAgICA6
IG1fbWF4TWVtb3J5TGltaXRCeXRlcyhtYXhNZW1vcnlMaW1pdEJ5dGVzKQotICAgICwgbV9wcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMpCi0gICAgLCBt
X21lbW9yeVVzZUJ5dGVzKDApCi0gICAgLCBtX21heFRleHR1cmVTaXplKG1heFRleHR1cmVTaXpl
KQotICAgICwgbV9uZXh0VG9rZW4oMSkKLXsKLX0KLQotVGV4dHVyZU1hbmFnZXI6On5UZXh0dXJl
TWFuYWdlcigpCi17Ci0gICAgZm9yIChIYXNoU2V0PE1hbmFnZWRUZXh0dXJlKj46Oml0ZXJhdG9y
IGl0ID0gbV9yZWdpc3RlcmVkVGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0gbV9yZWdpc3RlcmVkVGV4
dHVyZXMuZW5kKCk7ICsraXQpCi0gICAgICAgICgqaXQpLT5jbGVhck1hbmFnZXIoKTsKLX0KLQot
dm9pZCBUZXh0dXJlTWFuYWdlcjo6c2V0TWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90
IG1lbW9yeUxpbWl0Qnl0ZXMpCi17Ci0gICAgc2V0TWF4TWVtb3J5TGltaXRCeXRlcyhtZW1vcnlM
aW1pdEJ5dGVzKTsKLSNpZiBkZWZpbmVkKE9TX0FORFJPSUQpCi0gICAgLy8gT24gYW5kcm9pZCwg
d2UgYXJlIHNldHRpbmcgdGhlIHByZWZlcnJlZCBtZW1vcnkgbGltaXQgdG8gaGFsZiBvZiBvdXIK
LSAgICAvLyBtYXhpbXVtIGFsbG9jYXRpb24sIGJlY2F1c2Ugd2Ugd291bGQgbGlrZSB0byBzdGF5
IHNpZ25pZmljYW50bHkgYmVsb3cKLSAgICAvLyB0aGUgYWJzb2x1dGUgbWVtb3J5IGxpbWl0IHdo
ZW5ldmVyIHdlIGNhbi4gU3BlY2lmaWNhbGx5LCBieSBsaW1pdHRpbmcKLSAgICAvLyBwcmVwYWlu
dGluZyBvbmx5IHRvIHRoZSBoYWxmd2F5IG1lbW9yeSBtYXJrLgotICAgIHNldFByZWZlcnJlZE1l
bW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXRCeXRlcyAvIDIpOwotI2Vsc2UKLSAgICBzZXRQcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0Qnl0ZXMpOwotI2VuZGlmCi19Ci0KLXZv
aWQgVGV4dHVyZU1hbmFnZXI6OnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxp
bWl0Qnl0ZXMpCi17Ci0gICAgcmVkdWNlTWVtb3J5VG9MaW1pdChtZW1vcnlMaW1pdEJ5dGVzKTsK
LSAgICBBU1NFUlQoY3VycmVudE1lbW9yeVVzZUJ5dGVzKCkgPD0gbWVtb3J5TGltaXRCeXRlcyk7
Ci0gICAgbV9tYXhNZW1vcnlMaW1pdEJ5dGVzID0gbWVtb3J5TGltaXRCeXRlczsKLX0KLQotdm9p
ZCBUZXh0dXJlTWFuYWdlcjo6c2V0UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhzaXplX3QgbWVt
b3J5TGltaXRCeXRlcykKLXsKLSAgICBtX3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMgPSBtZW1v
cnlMaW1pdEJ5dGVzOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpyZWdpc3RlclRleHR1cmUo
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUpCi17Ci0gICAgQVNTRVJUKHRleHR1cmUpOwotICAgIEFT
U0VSVCghbV9yZWdpc3RlcmVkVGV4dHVyZXMuY29udGFpbnModGV4dHVyZSkpOwotCi0gICAgbV9y
ZWdpc3RlcmVkVGV4dHVyZXMuYWRkKHRleHR1cmUpOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2Vy
Ojp1bnJlZ2lzdGVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSkKLXsKLSAgICBBU1NF
UlQodGV4dHVyZSk7Ci0gICAgQVNTRVJUKG1fcmVnaXN0ZXJlZFRleHR1cmVzLmNvbnRhaW5zKHRl
eHR1cmUpKTsKLQotICAgIG1fcmVnaXN0ZXJlZFRleHR1cmVzLnJlbW92ZSh0ZXh0dXJlKTsKLX0K
LQotVGV4dHVyZVRva2VuIFRleHR1cmVNYW5hZ2VyOjpnZXRUb2tlbigpCi17Ci0gICAgcmV0dXJu
IG1fbmV4dFRva2VuKys7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnJlbGVhc2VUb2tlbihU
ZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0gICAgVGV4dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Rl
eHR1cmVzLmZpbmQodG9rZW4pOwotICAgIGlmIChpdCAhPSBtX3RleHR1cmVzLmVuZCgpKQotICAg
ICAgICByZW1vdmVUZXh0dXJlKHRva2VuLCBpdC0+c2Vjb25kKTsKLX0KLQotYm9vbCBUZXh0dXJl
TWFuYWdlcjo6aGFzVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0gICAgcmV0dXJuIG1f
dGV4dHVyZXMuY29udGFpbnModG9rZW4pOwotfQotCi1ib29sIFRleHR1cmVNYW5hZ2VyOjppc1By
b3RlY3RlZChUZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0gICAgcmV0dXJuIHRva2VuICYmIGhhc1Rl
eHR1cmUodG9rZW4pICYmIG1fdGV4dHVyZXMuZ2V0KHRva2VuKS5pc1Byb3RlY3RlZDsKLX0KLQot
dm9pZCBUZXh0dXJlTWFuYWdlcjo6cHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuKQot
ewotICAgIEFTU0VSVChoYXNUZXh0dXJlKHRva2VuKSk7Ci0gICAgVGV4dHVyZUluZm8gaW5mbyA9
IG1fdGV4dHVyZXMudGFrZSh0b2tlbik7Ci0gICAgaW5mby5pc1Byb3RlY3RlZCA9IHRydWU7Ci0g
ICAgbV90ZXh0dXJlcy5hZGQodG9rZW4sIGluZm8pOwotICAgIC8vIElmIHNvbWVvbmUgcHJvdGVj
dHMgYSB0ZXh0dXJlLCBwdXQgaXQgYXQgdGhlIGVuZCBvZiB0aGUgTFJVIGxpc3QuCi0gICAgbV90
ZXh0dXJlTFJVU2V0LnJlbW92ZSh0b2tlbik7Ci0gICAgbV90ZXh0dXJlTFJVU2V0LmFkZCh0b2tl
bik7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnVucHJvdGVjdFRleHR1cmUoVGV4dHVyZVRv
a2VuIHRva2VuKQotewotICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5m
aW5kKHRva2VuKTsKLSAgICBpZiAoaXQgIT0gbV90ZXh0dXJlcy5lbmQoKSkKLSAgICAgICAgaXQt
PnNlY29uZC5pc1Byb3RlY3RlZCA9IGZhbHNlOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjp1
bnByb3RlY3RBbGxUZXh0dXJlcygpCi17Ci0gICAgZm9yIChUZXh0dXJlTWFwOjppdGVyYXRvciBp
dCA9IG1fdGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0gbV90ZXh0dXJlcy5lbmQoKTsgKytpdCkKLSAg
ICAgICAgaXQtPnNlY29uZC5pc1Byb3RlY3RlZCA9IGZhbHNlOwotfQotCi12b2lkIFRleHR1cmVN
YW5hZ2VyOjpldmljdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBUZXh0dXJlSW5mbyBpbmZv
KQotewotICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiVGV4dHVyZU1hbmFnZXI6OmV2aWN0VGV4dHVy
ZSIpOwotICAgIHJlbW92ZVRleHR1cmUodG9rZW4sIGluZm8pOwotfQotCi12b2lkIFRleHR1cmVN
YW5hZ2VyOjpyZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCBsaW1pdCkKLXsKLSAgICB3aGlsZSAo
bV9tZW1vcnlVc2VCeXRlcyA+IGxpbWl0KSB7Ci0gICAgICAgIEFTU0VSVCghbV90ZXh0dXJlTFJV
U2V0LmlzRW1wdHkoKSk7Ci0gICAgICAgIGJvb2wgZm91bmRDYW5kaWRhdGUgPSBmYWxzZTsKLSAg
ICAgICAgZm9yIChMaXN0SGFzaFNldDxUZXh0dXJlVG9rZW4+OjppdGVyYXRvciBscnVJdCA9IG1f
dGV4dHVyZUxSVVNldC5iZWdpbigpOyBscnVJdCAhPSBtX3RleHR1cmVMUlVTZXQuZW5kKCk7ICsr
bHJ1SXQpIHsKLSAgICAgICAgICAgIFRleHR1cmVUb2tlbiB0b2tlbiA9ICpscnVJdDsKLSAgICAg
ICAgICAgIFRleHR1cmVJbmZvIGluZm8gPSBtX3RleHR1cmVzLmdldCh0b2tlbik7Ci0gICAgICAg
ICAgICBpZiAoaW5mby5pc1Byb3RlY3RlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIGV2aWN0VGV4dHVyZSh0b2tlbiwgaW5mbyk7Ci0gICAgICAgICAgICBmb3VuZENh
bmRpZGF0ZSA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoIWZvdW5kQ2FuZGlkYXRlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9p
ZCBUZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJ
bmZvIGluZm8pCi17Ci0gICAgQVNTRVJUKCFtX3RleHR1cmVMUlVTZXQuY29udGFpbnModG9rZW4p
KTsKLSAgICBBU1NFUlQoIW1fdGV4dHVyZXMuY29udGFpbnModG9rZW4pKTsKLSAgICBtX21lbW9y
eVVzZUJ5dGVzICs9IG1lbW9yeVVzZUJ5dGVzKGluZm8uc2l6ZSwgaW5mby5mb3JtYXQpOwotICAg
IG1fdGV4dHVyZXMuc2V0KHRva2VuLCBpbmZvKTsKLSAgICBtX3RleHR1cmVMUlVTZXQuYWRkKHRv
a2VuKTsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlRXZpY3RlZFRleHR1cmVzKFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKLXsKLSAgICBpZiAoYWxsb2NhdG9yKSB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ldmljdGVkVGV4dHVyZXMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgIGlmIChtX2V2aWN0ZWRUZXh0dXJlc1tpXS50ZXh0dXJlSWQpIHsKLSNp
Zm5kZWYgTkRFQlVHCi0gICAgICAgICAgICAgICAgQVNTRVJUKG1fZXZpY3RlZFRleHR1cmVzW2ld
LmFsbG9jYXRvciA9PSBhbGxvY2F0b3IpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgYWxsb2Nh
dG9yLT5kZWxldGVUZXh0dXJlKG1fZXZpY3RlZFRleHR1cmVzW2ldLnRleHR1cmVJZCwgbV9ldmlj
dGVkVGV4dHVyZXNbaV0uc2l6ZSwgbV9ldmljdGVkVGV4dHVyZXNbaV0uZm9ybWF0KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBtX2V2aWN0ZWRUZXh0dXJlcy5jbGVhcigp
OwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpldmljdEFuZFJlbW92ZUFsbERlbGV0ZWRUZXh0
dXJlcygpCi17Ci0gICAgdW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKLSAgICByZWR1Y2VNZW1vcnlU
b0xpbWl0KDApOwotICAgIG1fZXZpY3RlZFRleHR1cmVzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgVGV4
dHVyZU1hbmFnZXI6OmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yKQotewotICAgIHVucHJvdGVjdEFsbFRleHR1cmVzKCk7Ci0gICAgcmVkdWNlTWVt
b3J5VG9MaW1pdCgwKTsKLSAgICBkZWxldGVFdmljdGVkVGV4dHVyZXMoYWxsb2NhdG9yKTsKLX0K
LQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4s
IFRleHR1cmVJbmZvIGluZm8pCi17Ci0gICAgQVNTRVJUKG1fdGV4dHVyZUxSVVNldC5jb250YWlu
cyh0b2tlbikpOwotICAgIEFTU0VSVChtX3RleHR1cmVzLmNvbnRhaW5zKHRva2VuKSk7Ci0gICAg
bV9tZW1vcnlVc2VCeXRlcyAtPSBtZW1vcnlVc2VCeXRlcyhpbmZvLnNpemUsIGluZm8uZm9ybWF0
KTsKLSAgICBtX3RleHR1cmVzLnJlbW92ZSh0b2tlbik7Ci0gICAgQVNTRVJUKG1fdGV4dHVyZUxS
VVNldC5jb250YWlucyh0b2tlbikpOwotICAgIG1fdGV4dHVyZUxSVVNldC5yZW1vdmUodG9rZW4p
OwotICAgIEV2aWN0aW9uRW50cnkgZW50cnk7Ci0gICAgZW50cnkudGV4dHVyZUlkID0gaW5mby50
ZXh0dXJlSWQ7Ci0gICAgZW50cnkuc2l6ZSA9IGluZm8uc2l6ZTsKLSAgICBlbnRyeS5mb3JtYXQg
PSBpbmZvLmZvcm1hdDsKLSNpZm5kZWYgTkRFQlVHCi0gICAgZW50cnkuYWxsb2NhdG9yID0gaW5m
by5hbGxvY2F0b3I7Ci0jZW5kaWYKLSAgICBtX2V2aWN0ZWRUZXh0dXJlcy5hcHBlbmQoZW50cnkp
OwotfQotCi11bnNpZ25lZCBUZXh0dXJlTWFuYWdlcjo6YWxsb2NhdGVUZXh0dXJlKFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZVRva2VuIHRva2VuKQotewotICAgIFRleHR1cmVN
YXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5maW5kKHRva2VuKTsKLSAgICBBU1NFUlQoaXQg
IT0gbV90ZXh0dXJlcy5lbmQoKSk7Ci0gICAgVGV4dHVyZUluZm8qIGluZm8gPSAmaXQuZ2V0KCkt
PnNlY29uZDsKLSAgICBBU1NFUlQoaW5mby0+aXNQcm90ZWN0ZWQpOwotCi0gICAgdW5zaWduZWQg
dGV4dHVyZUlkID0gYWxsb2NhdG9yLT5jcmVhdGVUZXh0dXJlKGluZm8tPnNpemUsIGluZm8tPmZv
cm1hdCk7Ci0gICAgaW5mby0+dGV4dHVyZUlkID0gdGV4dHVyZUlkOwotI2lmbmRlZiBOREVCVUcK
LSAgICBpbmZvLT5hbGxvY2F0b3IgPSBhbGxvY2F0b3I7Ci0jZW5kaWYKLSAgICByZXR1cm4gdGV4
dHVyZUlkOwotfQotCi1ib29sIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShUZXh0dXJl
VG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQotewotICAgIGlmIChz
aXplLndpZHRoKCkgPiBtX21heFRleHR1cmVTaXplIHx8IHNpemUuaGVpZ2h0KCkgPiBtX21heFRl
eHR1cmVTaXplKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBUZXh0dXJlTWFwOjppdGVy
YXRvciBpdCA9IG1fdGV4dHVyZXMuZmluZCh0b2tlbik7Ci0gICAgaWYgKGl0ICE9IG1fdGV4dHVy
ZXMuZW5kKCkpIHsKLSAgICAgICAgQVNTRVJUKGl0LT5zZWNvbmQuc2l6ZSAhPSBzaXplIHx8IGl0
LT5zZWNvbmQuZm9ybWF0ICE9IGZvcm1hdCk7Ci0gICAgICAgIHJlbW92ZVRleHR1cmUodG9rZW4s
IGl0LT5zZWNvbmQpOwotICAgIH0KLQotICAgIHNpemVfdCBtZW1vcnlSZXF1aXJlZEJ5dGVzID0g
bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKLSAgICBpZiAobWVtb3J5UmVxdWlyZWRCeXRl
cyA+IG1fbWF4TWVtb3J5TGltaXRCeXRlcykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmVkdWNlTWVtb3J5VG9MaW1pdChtX21heE1lbW9yeUxpbWl0Qnl0ZXMgLSBtZW1vcnlSZXF1aXJl
ZEJ5dGVzKTsKLSAgICBpZiAobV9tZW1vcnlVc2VCeXRlcyArIG1lbW9yeVJlcXVpcmVkQnl0ZXMg
PiBtX21heE1lbW9yeUxpbWl0Qnl0ZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFRl
eHR1cmVJbmZvIGluZm87Ci0gICAgaW5mby5zaXplID0gc2l6ZTsKLSAgICBpbmZvLmZvcm1hdCA9
IGZvcm1hdDsKLSAgICBpbmZvLnRleHR1cmVJZCA9IDA7Ci0gICAgaW5mby5pc1Byb3RlY3RlZCA9
IHRydWU7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGluZm8uYWxsb2NhdG9yID0gMDsKLSNlbmRpZgot
ICAgIGFkZFRleHR1cmUodG9rZW4sIGluZm8pOwotICAgIHJldHVybiB0cnVlOwotfQotCi19Ci0K
LSNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdhMTg5YmNjZDM0MGUzZWM5YjQ3M2Vh
OGU4ZmUyYjk1MThiYWE1Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgot
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFRleHR1cmVNYW5hZ2VyX2gKLSNkZWZpbmUgVGV4dHVyZU1hbmFnZXJfaAotCi0j
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBNYW5hZ2VkVGV4dHVyZTsKLXR5cGVkZWYgaW50IFRleHR1cmVUb2tl
bjsKLQotY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB1bnNp
Z25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJ
bnRTaXplJiwgR0MzRGVudW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVy
ZXMoKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5UZXh0dXJlQWxsb2NhdG9yKCkg
eyB9Ci19OwotCi1jbGFzcyBUZXh0dXJlTWFuYWdlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVGV4dHVyZU1hbmFnZXIpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHR1
cmVNYW5hZ2VyPiBjcmVhdGUoc2l6ZV90IG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHNpemVfdCBwcmVm
ZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVNYW5hZ2VyKG1heE1lbW9yeUxpbWl0Qnl0ZXMs
IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIG1heFRleHR1cmVTaXplKSk7Ci0gICAgfQotICAg
IH5UZXh0dXJlTWFuYWdlcigpOwotCi0gICAgLy8gQWJzb2x1dGUgbWF4aW11bSBsaW1pdCBmb3Ig
dGV4dHVyZSBhbGxvY2F0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS4KLSAgICBzdGF0aWMgc2l6ZV90
IGhpZ2hMaW1pdEJ5dGVzKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSk7Ci0gICAgLy8gUHJl
ZmVycmVkIHRleHR1cmUgc2l6ZSBsaW1pdCBnaXZlbiB0aGUgdmlld3BvcnQgc2l6ZS4KLSAgICBz
dGF0aWMgc2l6ZV90IHJlY2xhaW1MaW1pdEJ5dGVzKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6
ZSk7Ci0KLSAgICBzdGF0aWMgc2l6ZV90IG1lbW9yeVVzZUJ5dGVzKGNvbnN0IEludFNpemUmLCBH
QzNEZW51bSBmb3JtYXQpOwotCi0gICAgdm9pZCBzZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRl
cyhzaXplX3QpOwotICAgIHZvaWQgc2V0TWF4TWVtb3J5TGltaXRCeXRlcyhzaXplX3QpOwotICAg
IHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzKCkgeyByZXR1cm4gbV9tYXhNZW1vcnlMaW1pdEJ5
dGVzOyB9Ci0gICAgdm9pZCBzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCk7Ci0g
ICAgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoKSB7IHJldHVybiBtX3ByZWZlcnJl
ZE1lbW9yeUxpbWl0Qnl0ZXM7IH0KLQotICAgIHZvaWQgcmVnaXN0ZXJUZXh0dXJlKE1hbmFnZWRU
ZXh0dXJlKik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSopOwot
Ci0gICAgVGV4dHVyZVRva2VuIGdldFRva2VuKCk7Ci0gICAgdm9pZCByZWxlYXNlVG9rZW4oVGV4
dHVyZVRva2VuKTsKLSAgICBib29sIGhhc1RleHR1cmUoVGV4dHVyZVRva2VuKTsKLQotICAgIGJv
b2wgcmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuLCBJbnRTaXplLCBHQzNEZW51bSB0ZXh0dXJl
Rm9ybWF0KTsKLQotICAgIHZvaWQgcHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuKTsKLSAgICB2
b2lkIHVucHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuKTsKLSAgICB2b2lkIHVucHJvdGVjdEFs
bFRleHR1cmVzKCk7Ci0gICAgYm9vbCBpc1Byb3RlY3RlZChUZXh0dXJlVG9rZW4pOwotCi0gICAg
dW5zaWduZWQgYWxsb2NhdGVUZXh0dXJlKFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJlVG9rZW4p
OwotICAgIHZvaWQgZGVsZXRlRXZpY3RlZFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3IqKTsKLQot
ICAgIHZvaWQgZXZpY3RBbmRSZW1vdmVBbGxEZWxldGVkVGV4dHVyZXMoKTsKLSAgICB2b2lkIGV2
aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciopOwotCi0gICAgdm9pZCBy
ZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCk7Ci0gICAgc2l6ZV90IGN1cnJlbnRNZW1vcnlVc2VC
eXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNlQnl0ZXM7IH0KLQotcHJpdmF0ZToKLSAg
ICBUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90IHByZWZl
cnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBzdHJ1Y3Qg
VGV4dHVyZUluZm8gewotICAgICAgICBJbnRTaXplIHNpemU7Ci0gICAgICAgIEdDM0RlbnVtIGZv
cm1hdDsKLSAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkOwotICAgICAgICBib29sIGlzUHJvdGVj
dGVkOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
OwotI2VuZGlmCi0gICAgfTsKLQotICAgIHZvaWQgYWRkVGV4dHVyZShUZXh0dXJlVG9rZW4sIFRl
eHR1cmVJbmZvKTsKLSAgICB2b2lkIHJlbW92ZVRleHR1cmUoVGV4dHVyZVRva2VuLCBUZXh0dXJl
SW5mbyk7Ci0gICAgdm9pZCBldmljdFRleHR1cmUoVGV4dHVyZVRva2VuLCBUZXh0dXJlSW5mbyk7
Ci0KLSAgICBIYXNoU2V0PE1hbmFnZWRUZXh0dXJlKj4gbV9yZWdpc3RlcmVkVGV4dHVyZXM7Ci0K
LSAgICB0eXBlZGVmIEhhc2hNYXA8VGV4dHVyZVRva2VuLCBUZXh0dXJlSW5mbz4gVGV4dHVyZU1h
cDsKLSAgICBUZXh0dXJlTWFwIG1fdGV4dHVyZXM7Ci0gICAgTGlzdEhhc2hTZXQ8VGV4dHVyZVRv
a2VuPiBtX3RleHR1cmVMUlVTZXQ7Ci0KLSAgICBzaXplX3QgbV9tYXhNZW1vcnlMaW1pdEJ5dGVz
OwotICAgIHNpemVfdCBtX3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXM7Ci0gICAgc2l6ZV90IG1f
bWVtb3J5VXNlQnl0ZXM7Ci0gICAgaW50IG1fbWF4VGV4dHVyZVNpemU7Ci0gICAgVGV4dHVyZVRv
a2VuIG1fbmV4dFRva2VuOwotCi0gICAgc3RydWN0IEV2aWN0aW9uRW50cnkgewotICAgICAgICB1
bnNpZ25lZCB0ZXh0dXJlSWQ7Ci0gICAgICAgIEludFNpemUgc2l6ZTsKLSAgICAgICAgR0MzRGVu
dW0gZm9ybWF0OwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yOwotI2VuZGlmCi0gICAgfTsKLQotICAgIFZlY3RvcjxFdmljdGlvbkVudHJ5PiBtX2V2
aWN0ZWRUZXh0dXJlczsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcAppbmRleCBlNzVkZDQwZjZhZThhNmJlYjc2ZjMwZDJkOGIxZmM0ODNjOWVlNzhkLi5k
MDg1YzlkZDE1YThlMTQ4NjAxMGZkOTJlNjVlMWZlMDg1MTRhNDBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJUaWxlZExheWVy
Q2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAi
TWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0U3Ry
ZWFtLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuY3BwCmluZGV4
IGM1ODlhM2M2ZWQzZDAwYWZmMWZiYTBkN2Q0MzU5NGYzYWFjOTFlODMuLjdhZTI5ZjkxMmI4OGUz
MzhiOGRiMGYwMzhhNGI1YTgyNTA1YzUzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yLmNwcApAQCAtNzUsNyArNzUsNyBAQCB1bnNpZ25lZCBUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3I6OmNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0g
ZgogICAgIGlmIChzaXplLndpZHRoKCkgPiBtX21heFRleHR1cmVTaXplIHx8IHNpemUuaGVpZ2h0
KCkgPiBtX21heFRleHR1cmVTaXplKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIG1fY3VycmVu
dE1lbW9yeVVzZUJ5dGVzICs9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhzaXplLCBm
b3JtYXQpOworICAgIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzICs9IENDVGV4dHVyZTo6bWVtb3J5
U2l6ZUJ5dGVzKHNpemUsIGZvcm1hdCk7CiAKICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSAwOwog
ICAgIEdMQyhtX2NvbnRleHQsIHRleHR1cmVJZCA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgp
KTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB1bnNpZ25lZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6
OmNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZgogCiB2b2lkIFRy
YWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlSWQs
IGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKIHsKLSAgICBtX2N1cnJlbnRN
ZW1vcnlVc2VCeXRlcyAtPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9y
bWF0KTsKKyAgICBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlcyAtPSBDQ1RleHR1cmU6Om1lbW9yeVNp
emVCeXRlcyhzaXplLCBmb3JtYXQpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVs
ZXRlVGV4dHVyZSh0ZXh0dXJlSWQpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRl
bGV0ZVRleHR1cmUodGV4dHVyZUlkKSk7CiAgICAgQVNTRVJUKG1fYWxsb2NhdGVkVGV4dHVyZUlk
cy5jb250YWlucyh0ZXh0dXJlSWQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmgKaW5kZXggNzhlZjQwZDFiNDNlN2IzNDI0NTRhNTJhMTQwMDI0YzU5MTgxOWZlMi4uMzhm
N2NhMDQzYjRmZDk3MDViNTliZDMzZjNhOWJiNzAxNTYwZDEyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpZm5kZWYgVHJhY2tp
bmdUZXh0dXJlQWxsb2NhdG9yX2gKICNkZWZpbmUgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yX2gK
IAotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCisjaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRv
ci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAppbmRleCA3MzFmNzcwYzA5NjYz
MTg1OGEwYWMzYzRiYzhmM2Q3MTNmNjcxMjY4Li5iZTE5OTgzZWZiNjI2MzZjMDU2YjY5MDY3OWY1
ZmQwMWU5NmY0OGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtMzEs
NyArMzEsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5
ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DYW52YXMuaCIKLSNpbmNs
dWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5o
IgogI2luY2x1ZGUgImNjL0NDRnJhbWVSYXRlQ291bnRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGQ2
NTM5N2VlZDE5MzM1OGNiZGQ0M2NjMTUwNTJjYWZmZDcyM2JhMWQuLjFhNDM1OWVkYmQ0Njk3Nzlh
MDdmNDBmZDYwOWRhMmU3MmY4M2M3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogCiAj
aW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAj
aW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlRy
ZWVTeW5jaHJvbml6ZXIuaCIKQEAgLTUyOSw3ICs1MjgsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCkKICAgICAg
ICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gdXBkYXRlTGlzdFtpXS5nZXQo
KTsKICAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVy
U3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAKLSAgICAgICAgc2l6ZV90IGJ5dGVzID0g
VGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0
KCkuc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgIHNpemVfdCBieXRl
cyA9IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5dGVzKHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0
KCkuc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAgICAgIGNvbnRlbnRzVGV4
dHVyZUJ5dGVzICs9IGJ5dGVzOwogCiAgICAgICAgIGlmIChyZW5kZXJTdXJmYWNlLT5iYWNrZ3Jv
dW5kRmlsdGVycygpLmlzRW1wdHkoKSkKQEAgLTUzOCw3ICs1MzcsNyBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCkK
ICAgICAgICAgaWYgKGJ5dGVzID4gbWF4QmFja2dyb3VuZFRleHR1cmVCeXRlcykKICAgICAgICAg
ICAgIG1heEJhY2tncm91bmRUZXh0dXJlQnl0ZXMgPSBieXRlczsKICAgICAgICAgaWYgKCFyZWFk
YmFja0J5dGVzKQotICAgICAgICAgICAgcmVhZGJhY2tCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjpt
ZW1vcnlVc2VCeXRlcyhtX2RldmljZVZpZXdwb3J0U2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEpOworICAgICAgICAgICAgcmVhZGJhY2tCeXRlcyA9IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5
dGVzKG1fZGV2aWNlVmlld3BvcnRTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAg
fQogICAgIHNpemVfdCByZW5kZXJTdXJmYWNlc0J5dGVzID0gcmVhZGJhY2tCeXRlcyArIG1heEJh
Y2tncm91bmRUZXh0dXJlQnl0ZXMgKyBjb250ZW50c1RleHR1cmVCeXRlczsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaAppbmRleCA5NzA2MGY3MzdhNjk1YmRhOTgzNmJmZWJjNDdlOGE4ZWU0
NjJjNTBiLi43YmIwZjY4YzYwNTZjNTdiNzE3MGNlODM1NDFhOWQ5OTI4NTU2NzU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNTEsNyArNTEsNiBAQCBjbGFzcyBDQ0xheWVyQ2hy
b21pdW07CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0
SW1wbENsaWVudDsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7Ci1jbGFzcyBNYW5hZ2VkVGV4dHVy
ZTsKIGNsYXNzIFJlZ2lvbjsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCmluZGV4IDc4ZTcwOTE0ZGExMjhhN2Q4MjYwZTUwZDNlOWIzMGI1ODkyYzhmNDMuLmE4NjUz
MGM1ZjM0MTMzYjc1M2VlZGViNzFlM2U1ODg3MjUxMzA1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiY2MvQ0NM
YXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NPdmVyZHJhd01ldHJpY3MuaCIK
ICNpbmNsdWRlICJjYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgImNjL0NDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdR
dWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaCIKQEAgLTEyMiw3ICsxMjMsNyBAQCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpD
Q0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBD
QwogICAgICwgbV9kZXZpY2VTY2FsZUZhY3RvcigxKQogICAgICwgbV92aXNpYmxlKHRydWUpCiAg
ICAgLCBtX2NvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0KGZhbHNlKQot
ICAgICwgbV9tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6aGlnaExp
bWl0Qnl0ZXModmlld3BvcnRTaXplKCkpKQorICAgICwgbV9tZW1vcnlBbGxvY2F0aW9uTGltaXRC
eXRlcyhDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRNZW1vcnlBbGxvY2F0aW9u
TGltaXQoKSkKICAgICAsIG1faGVhZHNVcERpc3BsYXkoQ0NIZWFkc1VwRGlzcGxheTo6Y3JlYXRl
KCkpCiAgICAgLCBtX3BhZ2VTY2FsZSgxKQogICAgICwgbV9wYWdlU2NhbGVEZWx0YSgxKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cmlvcml0aXplZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwCmluZGV4IGQ4Y2MxNzQ4NWE5MGY5
MjAyZDE3YTZmMTg1MjIwYWE2MmU3Njc0M2YuLmE2YTMwODEyYmExYTYwM2Q3ZjZhMzY5YzM1YTMy
MzMxODU4MGQ2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJDQ1ByaW9yaXR5Q2FsY3VsYXRvci5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0zOCwxNiArMzksMTYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogQ0NQcmlvcml0aXplZFRleHR1cmU6OkNDUHJpb3JpdGl6ZWRU
ZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlciogbWFuYWdlciwgSW50U2l6ZSBzaXpl
LCBHQzNEZW51bSBmb3JtYXQpCiAgICAgOiBtX3NpemUoc2l6ZSkKICAgICAsIG1fZm9ybWF0KGZv
cm1hdCkKLSAgICAsIG1fbWVtb3J5U2l6ZUJ5dGVzKDApCisgICAgLCBtX2J5dGVzKDApCiAgICAg
LCBtX3ByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpKQogICAg
ICwgbV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoZmFsc2UpCi0gICAgLCBtX2N1cnJlbnRCYWNraW5n
KDApCisgICAgLCBtX2JhY2tpbmcoMCkKICAgICAsIG1fbWFuYWdlcigwKQogewogICAgIC8vIG1f
bWFuYWdlciBpcyBzZXQgaW4gcmVnaXN0ZXJUZXh0dXJlKCkgc28gdmFsaWRpdHkgY2FuIGJlIGNo
ZWNrZWQuCiAgICAgQVNTRVJUKGZvcm1hdCB8fCBzaXplLmlzRW1wdHkoKSk7CiAgICAgaWYgKGZv
cm1hdCkKLSAgICAgICAgbV9tZW1vcnlTaXplQnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5
VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKKyAgICAgICAgbV9ieXRlcyA9IENDVGV4dHVyZTo6bWVt
b3J5U2l6ZUJ5dGVzKHNpemUsIGZvcm1hdCk7CiAgICAgaWYgKG1hbmFnZXIpCiAgICAgICAgIG1h
bmFnZXItPnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsKIH0KQEAgLTc0LDggKzc1LDggQEAgdm9pZCBD
Q1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0RGltZW5zaW9ucyhJbnRTaXplIHNpemUsIEdDM0RlbnVt
IGZvcm1hdCkKICAgICAgICAgbV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYgPSBmYWxzZTsKICAgICAg
ICAgbV9mb3JtYXQgPSBmb3JtYXQ7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7Ci0gICAgICAgIG1f
bWVtb3J5U2l6ZUJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNpemUsIGZv
cm1hdCk7Ci0gICAgICAgIEFTU0VSVChtX21hbmFnZXIgfHwgIW1fY3VycmVudEJhY2tpbmcpOwor
ICAgICAgICBtX2J5dGVzID0gQ0NUZXh0dXJlOjptZW1vcnlTaXplQnl0ZXMoc2l6ZSwgZm9ybWF0
KTsKKyAgICAgICAgQVNTRVJUKG1fbWFuYWdlciB8fCAhbV9iYWNraW5nKTsKICAgICAgICAgaWYg
KG1fbWFuYWdlcikKICAgICAgICAgICAgIG1fbWFuYWdlci0+cmV0dXJuQmFja2luZ1RleHR1cmUo
dGhpcyk7CiAgICAgfQpAQCAtOTcsOCArOTgsOCBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJl
OjphY3F1aXJlQmFja2luZ1RleHR1cmUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogCiB1
bnNpZ25lZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6dGV4dHVyZUlkKCkKIHsKLSAgICBpZiAobV9j
dXJyZW50QmFja2luZykKLSAgICAgICAgcmV0dXJuIG1fY3VycmVudEJhY2tpbmctPnRleHR1cmVJ
ZCgpOworICAgIGlmIChtX2JhY2tpbmcpCisgICAgICAgIHJldHVybiBtX2JhY2tpbmctPmlkKCk7
CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwNyw3ICsxMDgsNyBAQCB2b2lkIENDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVy
ZUFsbG9jYQogICAgIEFTU0VSVChtX2lzQWJvdmVQcmlvcml0eUN1dG9mZik7CiAgICAgaWYgKG1f
aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKQogICAgICAgICBhY3F1aXJlQmFja2luZ1RleHR1cmUoYWxs
b2NhdG9yKTsKLSAgICBBU1NFUlQobV9jdXJyZW50QmFja2luZyk7CisgICAgQVNTRVJUKG1fYmFj
a2luZyk7CiAgICAgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkID0gY29u
dGV4dC0+Y29udGV4dDNEKCk7CiAgICAgaWYgKCFjb250ZXh0M2QpIHsKICAgICAgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJlIGNvbXBvc2l0aW5nLgpAQCAtMTIx
LDcgKzEyMiw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0CiAgICAgQVNTRVJUKG1faXNBYm92
ZVByaW9yaXR5Q3V0b2ZmKTsKICAgICBpZiAobV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYpCiAgICAg
ICAgIGFjcXVpcmVCYWNraW5nVGV4dHVyZShhbGxvY2F0b3IpOwotICAgIEFTU0VSVChtX2N1cnJl
bnRCYWNraW5nKTsKKyAgICBBU1NFUlQobV9iYWNraW5nKTsKICAgICBXZWJLaXQ6OldlYkdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAo
IWNvbnRleHQzZCkgewogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Ig
c29mdHdhcmUgY29tcG9zaXRpbmcuCkBAIC0xMzAsMTIgKzEzMSwyNiBAQCB2b2lkIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChDQ0dyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgVGV4dAogICAgIGNvbnRleHQzZC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVO
VDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQoKSwgMCk7CiB9CiAK
LXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OnNldEN1cnJlbnRCYWNraW5nKENDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nKQordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6
bGluayhCYWNraW5nKiBiYWNraW5nKQogewotICAgIGlmIChtX2N1cnJlbnRCYWNraW5nID09IGJh
Y2tpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2N1cnJlbnRCYWNraW5nID0gYmFja2luZzsK
KyAgICBBU1NFUlQoYmFja2luZyk7CisgICAgQVNTRVJUKCFiYWNraW5nLT5tX293bmVyKTsKKyAg
ICBBU1NFUlQoIW1fYmFja2luZyk7CisKKyAgICBtX2JhY2tpbmcgPSBiYWNraW5nOworICAgIG1f
YmFja2luZy0+bV9vd25lciA9IHRoaXM7Cit9CisKK3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6
OnVubGluaygpCit7CisgICAgQVNTRVJUKG1fYmFja2luZyk7CisgICAgQVNTRVJUKG1fYmFja2lu
Zy0+bV9vd25lciA9PSB0aGlzKTsKKworICAgIG1fYmFja2luZy0+bV9vd25lciA9IDA7CisgICAg
bV9iYWNraW5nID0gMDsKIH0KIAorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlv
cml0aXplZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgKaW5kZXggOWVhMmZiMWU0MTU3OWY2NDUwNGY2
YTNjOWJiMGQ3YmUwYjMyZTFmMi4uZGM4NTc5MzI0MTgzOTZmZGEzNzg5MDEwNTM1NWM5MjRhMmZm
MjBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5oCkBAIC0yNiwxNiAr
MjYsMTcgQEAKICNkZWZpbmUgQ0NQcmlvcml0aXplZFRleHR1cmVfaAogCiAjaW5jbHVkZSAiQ0NQ
cmlvcml0eUNhbGN1bGF0b3IuaCIKKyNpbmNsdWRlICJDQ1RleHR1cmUuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI7CiBjbGFzcyBDQ1ByaW9yaXR5
Q2FsY3VsYXRvcjsKIGNsYXNzIENDR3JhcGhpY3NDb250ZXh0OworY2xhc3MgVGV4dHVyZUFsbG9j
YXRvcjsKIAogY2xhc3MgQ0NQcmlvcml0aXplZFRleHR1cmUgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKENDUHJpb3JpdGl6ZWRUZXh0dXJlKTsKQEAgLTU3LDcgKzU4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0RGltZW5zaW9ucyhJbnRTaXplLCBHQzNEZW51bSBmb3JtYXQpOwogICAgIEdD
M0RlbnVtIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAgICAgSW50U2l6ZSBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgc2l6ZV90IG1lbW9yeVNpemVCeXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5U2l6ZUJ5dGVzOyB9CisgICAgc2l6ZV90IGJ5dGVz
KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlczsgfQogCiAgICAgLy8gU2V0IHByaW9yaXR5IGZvciB0
aGUgcmVxdWVzdGVkIHRleHR1cmUuIAogICAgIHZvaWQgc2V0UmVxdWVzdFByaW9yaXR5KGludCBw
cmlvcml0eSkgeyBtX3ByaW9yaXR5ID0gcHJpb3JpdHk7IH0KQEAgLTY4LDEyICs2OSwxMiBAQCBw
dWJsaWM6CiAgICAgYm9vbCBjYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKSBjb25zdCB7IHJldHVy
biBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZjsgfQogCiAgICAgLy8gVGhpcyByZXR1cm5zIHdoZXRo
ZXIgd2Ugc3RpbGwgaGF2ZSBhIGJhY2tpbmcgdGV4dHVyZS4gVGhpcyBjYW4gY29udGludWUKLSAg
ICAvLyB0byBiZSB0cnVlIGV2ZW4gYWZ0ZXIgY2FuQXF1aXJlQmFja2luZ1RleHR1cmUoKSBiZWNv
bWVzIGZhbHNlLiBJbiB0aGlzCisgICAgLy8gdG8gYmUgdHJ1ZSBldmVuIGFmdGVyIGNhbkFjcXVp
cmVCYWNraW5nVGV4dHVyZSgpIGJlY29tZXMgZmFsc2UuIEluIHRoaXMKICAgICAvLyBjYXNlIHRo
ZSB0ZXh0dXJlIGNhbiBiZSB1c2VkIGJ1dCBzaG91bGRuJ3QgYmUgdXBkYXRlZCBzaW5jZSBpdCB3
aWxsIGdldAogICAgIC8vIHRha2VuIGF3YXkgInNvb24iLgotICAgIGJvb2wgaGF2ZUJhY2tpbmdU
ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gISFjdXJyZW50QmFja2luZygpOyB9CisgICAgYm9vbCBo
YXZlQmFja2luZ1RleHR1cmUoKSBjb25zdCB7IHJldHVybiAhIWJhY2tpbmcoKTsgfQogCi0gICAg
Ly8gSWYgY2FuQXF1aXJlQmFja2luZ1RleHR1cmUoKSBpcyB0cnVlIGFjcXVpcmVCYWNraW5nVGV4
dHVyZSgpIHdpbGwgYWNxdWlyZQorICAgIC8vIElmIGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgp
IGlzIHRydWUgYWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkgd2lsbCBhY3F1aXJlCiAgICAgLy8gYSBi
YWNraW5nIHRleHR1cmUgZm9yIHVzZS4gQ2FsbCB0aGlzIHdoZW5ldmVyIHRoZSB0ZXh0dXJlIGlz
IGFjdHVhbGx5IG5lZWRlZC4KICAgICB2b2lkIGFjcXVpcmVCYWNraW5nVGV4dHVyZShUZXh0dXJl
QWxsb2NhdG9yKik7CiAKQEAgLTgxLDEzICs4MiwxMyBAQCBwdWJsaWM6CiAgICAgLy8gICAgICAg
IChhbGwgdGV4dHVyZXMgYXJlIHZpc2libGUpIGJ1dCB3ZSBjYW4gc3RpbGwgc3F1ZWV6ZSBpbnRv
IHRoZSBsaW1pdAogICAgIC8vICAgICAgICBieSBub3QgcGFpbnRpbmcgb2NjbHVkZWQgdGV4dHVy
ZXMuIEluIHRoaXMgY2FzZSB0aGUgbWFuYWdlcgogICAgIC8vICAgICAgICByZWZ1c2VzIGFsbCB2
aXNpYmxlIHRleHR1cmVzIGFuZCByZXF1ZXN0TGF0ZSgpIHdpbGwgZW5hYmxlCi0gICAgLy8gICAg
ICAgIGNhbkFxdWlyZUJhY2tpbmdUZXh0dXJlKCkgb24gYSBjYWxsLW9yZGVyIGJhc2lzLiBXZSBt
aWdodCB3YW50IHRvCisgICAgLy8gICAgICAgIGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIG9u
IGEgY2FsbC1vcmRlciBiYXNpcy4gV2UgbWlnaHQgd2FudCB0bwogICAgIC8vICAgICAgICBqdXN0
IHJlbW92ZSB0aGlzIGluIHRoZSBmdXR1cmUgKGNhcmVmdWxseSkgYW5kIGp1c3QgbWFrZSBzdXJl
IHdlIGRvbid0CiAgICAgLy8gICAgICAgIHJlZ3Jlc3MgT09NcyBzaXR1YXRpb25zLgogICAgIGJv
b2wgcmVxdWVzdExhdGUoKTsKIAotICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFxdWlyZSB0
aGUgdGV4dHVyZSBpZiBwb3NzaWJsZS4gSWYgbmVpdGhlciBoYXZlQmFja2luZ1RleHR1cmUoKQot
ICAgIC8vIG5vciBjYW5BcXVpcmVCYWNraW5nVGV4dHVyZSgpIGlzIHRydWUsIGFuIElEIG9mIHpl
cm8gd2lsbCBiZSB1c2VkL3JldHVybmVkLgorICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFj
cXVpcmUgdGhlIHRleHR1cmUgaWYgcG9zc2libGUuIElmIG5laXRoZXIgaGF2ZUJhY2tpbmdUZXh0
dXJlKCkKKyAgICAvLyBub3IgY2FuQWNxdWlyZUJhY2tpbmdUZXh0dXJlKCkgaXMgdHJ1ZSwgYW4g
SUQgb2YgemVybyB3aWxsIGJlIHVzZWQvcmV0dXJuZWQuCiAgICAgdm9pZCBiaW5kVGV4dHVyZShD
Q0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGZyYW1lYnVm
ZmVyVGV4dHVyZTJEKENDR3JhcGhpY3NDb250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciopOwogICAg
IHVuc2lnbmVkIHRleHR1cmVJZCgpOwpAQCAtOTUsMzQgKzk2LDE3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjsKIAotICAg
IGNsYXNzIEJhY2tpbmcgeworICAgIGNsYXNzIEJhY2tpbmcgOiBwdWJsaWMgQ0NUZXh0dXJlIHsK
ICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja2luZyk7CiAgICAgcHVibGljOgotICAg
ICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICAgICAgR0Mz
RGVudW0gZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KLSAgICAgICAgc2l6ZV90
IG1lbW9yeVNpemVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5U2l6ZUJ5dGVzOyB9Ci0g
ICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9
Ci0gICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiBjdXJyZW50VGV4dHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudFRleHR1cmU7IH0KLSAgICAgICAgdm9pZCBzZXRDdXJyZW50VGV4dHVy
ZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogY3VycmVudCkgeyBtX2N1cnJlbnRUZXh0dXJlID0gY3Vy
cmVudDsgfQorICAgICAgICBCYWNraW5nKHVuc2lnbmVkIGlkLCBJbnRTaXplIHNpemUsIEdDM0Rl
bnVtIGZvcm1hdCkKKyAgICAgICAgICAgIDogQ0NUZXh0dXJlKGlkLCBzaXplLCBmb3JtYXQpLCBt
X293bmVyKDApIHsgfQorICAgICAgICB+QmFja2luZygpIHsgQVNTRVJUKCFtX293bmVyKTsgfQog
CisgICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlKiBvd25lcigpIHsgcmV0dXJuIG1fb3duZXI7
IH0KICAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOwotCi0gICAgICAgIEJhY2tpbmcoSW50U2l6ZSBzaXplLCBHQzNEZW51bSBmb3Jt
YXQsIHVuc2lnbmVkIHRleHR1cmVJZCkKLSAgICAgICAgICAgIDogbV9zaXplKHNpemUpCi0gICAg
ICAgICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKLSAgICAgICAgICAgICwgbV9tZW1vcnlTaXplQnl0
ZXMoVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNpemUsIGZvcm1hdCkpCi0gICAgICAg
ICAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKLSAgICAgICAgICAgICwgbV9wcmlvcml0eShD
Q1ByaW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKSkKLSAgICAgICAgICAgICwgbV9j
dXJyZW50VGV4dHVyZSgwKSB7IH0KLSAgICAgICAgfkJhY2tpbmcoKSB7IEFTU0VSVCghbV9jdXJy
ZW50VGV4dHVyZSk7IH0KLQotICAgICAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICAgICAgR0MzRGVu
dW0gbV9mb3JtYXQ7Ci0gICAgICAgIHNpemVfdCBtX21lbW9yeVNpemVCeXRlczsKLSAgICAgICAg
dW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgICAgIGludCBtX3ByaW9yaXR5OwotICAgICAgICBD
Q1ByaW9yaXRpemVkVGV4dHVyZSogbV9jdXJyZW50VGV4dHVyZTsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlOworICAgICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZSog
bV9vd25lcjsKICAgICB9OwogCiAgICAgQ0NQcmlvcml0aXplZFRleHR1cmUoQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyKiwgSW50U2l6ZSwgR0MzRGVudW0gZm9ybWF0KTsKQEAgLTEzMSwxNyAr
MTE1LDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRBYm92ZVByaW9yaXR5Q3V0b2ZmKGJvb2wg
aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKSB7IG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmID0gaXNBYm92
ZVByaW9yaXR5Q3V0b2ZmOyB9CiAgICAgdm9pZCBzZXRNYW5hZ2VySW50ZXJuYWwoQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IG1fbWFuYWdlciA9IG1hbmFnZXI7IH0KIAot
ICAgIEJhY2tpbmcqIGN1cnJlbnRCYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50QmFj
a2luZzsgfQotICAgIHZvaWQgc2V0Q3VycmVudEJhY2tpbmcoQmFja2luZyopOworICAgIEJhY2tp
bmcqIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICB2b2lkIGxpbmso
QmFja2luZyopOworICAgIHZvaWQgdW5saW5rKCk7CiAKICAgICBJbnRTaXplIG1fc2l6ZTsKICAg
ICBHQzNEZW51bSBtX2Zvcm1hdDsKLSAgICBzaXplX3QgbV9tZW1vcnlTaXplQnl0ZXM7CisgICAg
c2l6ZV90IG1fYnl0ZXM7CiAKICAgICBzaXplX3QgbV9wcmlvcml0eTsKICAgICBib29sIG1faXNB
Ym92ZVByaW9yaXR5Q3V0b2ZmOwogCi0gICAgQmFja2luZyogbV9jdXJyZW50QmFja2luZzsKKyAg
ICBCYWNraW5nKiBtX2JhY2tpbmc7CiAgICAgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBt
X21hbmFnZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyLmNwcAppbmRleCA1YWY1M2RmMDRiZGViNjdlMmEwZWNjMWEzNGE5ZWE2YmNlOTlm
MzI1Li4wMTk1YjZmMWNkZWFiNTA2ZjAzMzI3ODU2ODM5OGRiNjg0MTc3ZGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKQEAgLTk3LDcg
Kzk3LDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0
dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1vcnkKICAgICAgICAgICAgIHJlc2VydmVkUmVu
ZGVyU3VyZmFjZXMgPSB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgc2l6ZV90IG5ld01lbW9y
eUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0KS0+bWVtb3J5U2l6ZUJ5dGVzKCk7CisgICAgICAg
IHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9IG1lbW9yeUJ5dGVzICsgKCppdCktPmJ5dGVzKCk7CiAg
ICAgICAgIGlmIChuZXdNZW1vcnlCeXRlcyA+IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMpIHsKICAg
ICAgICAgICAgIG1fcHJpb3JpdHlDdXRvZmYgPSAoKml0KS0+cmVxdWVzdFByaW9yaXR5KCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6cHJpb3JpdGl6ZVRleHR1cmVzKHNpemVfdCByZW5kZXJTdXJmYWNlc01l
bW9yeQogICAgICAgICBib29sIGlzQWJvdmVQcmlvcml0eUN1dG9mZiA9IENDUHJpb3JpdHlDYWxj
dWxhdG9yOjpwcmlvcml0eUlzSGlnaGVyKCgqaXQpLT5yZXF1ZXN0UHJpb3JpdHkoKSwgbV9wcmlv
cml0eUN1dG9mZik7CiAgICAgICAgICgqaXQpLT5zZXRBYm92ZVByaW9yaXR5Q3V0b2ZmKGlzQWJv
dmVQcmlvcml0eUN1dG9mZik7CiAgICAgICAgIGlmIChpc0Fib3ZlUHJpb3JpdHlDdXRvZmYpCi0g
ICAgICAgICAgICBtX21lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMgKz0gKCppdCktPm1lbW9yeVNpemVC
eXRlcygpOworICAgICAgICAgICAgbV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzICs9ICgqaXQpLT5i
eXRlcygpOwogICAgIH0KICAgICBBU1NFUlQobV9tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzIDw9IG1f
bWVtb3J5QXZhaWxhYmxlQnl0ZXMpOwogCkBAIC0xNTcsMTUgKzE1NywxNSBAQCBib29sIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdExhdGUoQ0NQcmlvcml0aXplZFRleHR1cmUq
IHRleHR1cmUpCiAgICAgaWYgKENDUHJpb3JpdHlDYWxjdWxhdG9yOjpwcmlvcml0eUlzTG93ZXIo
dGV4dHVyZS0+cmVxdWVzdFByaW9yaXR5KCksIG1fcHJpb3JpdHlDdXRvZmYpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBzaXplX3QgbmV3TWVtb3J5Qnl0ZXMgPSBtX21lbW9yeUFib3Zl
Q3V0b2ZmQnl0ZXMgKyB0ZXh0dXJlLT5tZW1vcnlTaXplQnl0ZXMoKTsKKyAgICBzaXplX3QgbmV3
TWVtb3J5Qnl0ZXMgPSBtX21lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMgKyB0ZXh0dXJlLT5ieXRlcygp
OwogICAgIGlmIChuZXdNZW1vcnlCeXRlcyA+IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fbWVtb3J5QWJvdmVDdXRvZmZCeXRlcyA9IG5ld01l
bW9yeUJ5dGVzOwogICAgIHRleHR1cmUtPnNldEFib3ZlUHJpb3JpdHlDdXRvZmYodHJ1ZSk7Ci0g
ICAgaWYgKHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpIHsKLSAgICAgICAgbV9iYWNraW5ncy5y
ZW1vdmUodGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSk7Ci0gICAgICAgIG1fYmFja2luZ3MuYWRk
KHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpOworICAgIGlmICh0ZXh0dXJlLT5iYWNraW5nKCkp
IHsKKyAgICAgICAgbV9iYWNraW5ncy5yZW1vdmUodGV4dHVyZS0+YmFja2luZygpKTsKKyAgICAg
ICAgbV9iYWNraW5ncy5hZGQodGV4dHVyZS0+YmFja2luZygpKTsKICAgICB9CiAgICAgcmV0dXJu
IHRydWU7CiB9CkBAIC0xNzMsNyArMTczLDcgQEAgYm9vbCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OnJlcXVlc3RMYXRlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlKQogdm9pZCBD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVk
KENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IpCiB7CiAgICAgQVNTRVJUKHRleHR1cmUtPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKTsKLSAg
ICBpZiAodGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSB8fCAhdGV4dHVyZS0+aXNBYm92ZVByaW9y
aXR5Q3V0b2ZmKCkpCisgICAgaWYgKHRleHR1cmUtPmJhY2tpbmcoKSB8fCAhdGV4dHVyZS0+aXNB
Ym92ZVByaW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZpbmQgYSBi
YWNraW5nIGJlbG93LCBieSBlaXRoZXIgcmVjeWNsaW5nIG9yIGFsbG9jYXRpbmcuCkBAIC0xODEs
NyArMTgxLDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFjcXVpcmVCYWNr
aW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXgKIAogICAgIC8vIEZpcnN0IHRyeSB0
byByZWN5Y2xlCiAgICAgZm9yIChCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3Mu
YmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoKCpp
dCktPmN1cnJlbnRUZXh0dXJlKCkgJiYgKCppdCktPmN1cnJlbnRUZXh0dXJlKCktPmlzQWJvdmVQ
cmlvcml0eUN1dG9mZigpKQorICAgICAgICBpZiAoKCppdCktPm93bmVyKCkgJiYgKCppdCktPm93
bmVyKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGlmICgoKml0KS0+c2l6ZSgpID09IHRleHR1cmUtPnNpemUoKSAmJiAoKml0KS0+Zm9ybWF0
KCkgPT0gdGV4dHVyZS0+Zm9ybWF0KCkpIHsKICAgICAgICAgICAgIGJhY2tpbmcgPSAoKml0KTsK
QEAgLTE5MSwxNCArMTkxLDE0IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjph
Y3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4CiAKICAgICAvLyBP
dGhlcndpc2UgcmVkdWNlIG1lbW9yeSBhbmQganVzdCBhbGxvY2F0ZSBhIG5ldyBiYWNraW5nIHRl
eHVyZXMuCiAgICAgaWYgKCFiYWNraW5nKSB7Ci0gICAgICAgIHJlZHVjZU1lbW9yeShtX21lbW9y
eUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+bWVtb3J5U2l6ZUJ5dGVzKCksIGFsbG9jYXRvcik7
CisgICAgICAgIHJlZHVjZU1lbW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+
Ynl0ZXMoKSwgYWxsb2NhdG9yKTsKICAgICAgICAgYmFja2luZyA9IGNyZWF0ZUJhY2tpbmcodGV4
dHVyZS0+c2l6ZSgpLCB0ZXh0dXJlLT5mb3JtYXQoKSwgYWxsb2NhdG9yKTsKICAgICB9CiAKICAg
ICAvLyBNb3ZlIHRoZSB1c2VkIGJhY2tpbmcgdGV4dHVyZSB0byB0aGUgZW5kIG9mIHRoZSBldmlj
dGlvbiBsaXN0LgotICAgIGlmIChiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpKQotICAgICAgICB1
bmxpbmsoYmFja2luZy0+Y3VycmVudFRleHR1cmUoKSwgYmFja2luZyk7Ci0gICAgbGluayh0ZXh0
dXJlLCBiYWNraW5nKTsKKyAgICBpZiAoYmFja2luZy0+b3duZXIoKSkKKyAgICAgICAgYmFja2lu
Zy0+b3duZXIoKS0+dW5saW5rKCk7CisgICAgdGV4dHVyZS0+bGluayhiYWNraW5nKTsKICAgICBt
X2JhY2tpbmdzLnJlbW92ZShiYWNraW5nKTsKICAgICBtX2JhY2tpbmdzLmFkZChiYWNraW5nKTsK
IH0KQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
cmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdEJ5dGVzLCBUZXh0dXJlQWxsb2NhdAogICAgIC8vIG9y
IHVudGlsIGFsbCBiYWNraW5ncyByZW1haW5pbmcgYXJlIGFib3ZlIHRoZSBjdXRvZmYuCiAgICAg
d2hpbGUgKG1lbW9yeVVzZUJ5dGVzKCkgPiBsaW1pdEJ5dGVzICYmIG1fYmFja2luZ3Muc2l6ZSgp
ID4gMCkgewogICAgICAgICBCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVn
aW4oKTsKLSAgICAgICAgaWYgKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpICYmICgqaXQpLT5jdXJy
ZW50VGV4dHVyZSgpLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKKyAgICAgICAgaWYgKCgqaXQp
LT5vd25lcigpICYmICgqaXQpLT5vd25lcigpLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZXN0cm95QmFja2luZygoKml0KSwgYWxsb2NhdG9y
KTsKICAgICB9CkBAIC0yMjksOSArMjI5LDkgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OnJlZHVjZU1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiAgICAgLy8g
YmFja2luZyB0ZXh0dXJlcyAoYW55IG1vcmUgdGhhbiAxMCUpLgogICAgIHNpemVfdCB3YXN0ZWRN
ZW1vcnkgPSAwOwogICAgIGZvciAoQmFja2luZ1NldDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tpbmdz
LmJlZ2luKCk7IGl0ICE9IG1fYmFja2luZ3MuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKCgq
aXQpLT5jdXJyZW50VGV4dHVyZSgpKQorICAgICAgICBpZiAoKCppdCktPm93bmVyKCkpCiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgd2FzdGVkTWVtb3J5ICs9ICgqaXQpLT5tZW1vcnlTaXpl
Qnl0ZXMoKTsKKyAgICAgICAgd2FzdGVkTWVtb3J5ICs9ICgqaXQpLT5ieXRlcygpOwogICAgIH0K
ICAgICBzaXplX3QgdGVuUGVyY2VudE9mTWVtb3J5ID0gbV9tZW1vcnlBdmFpbGFibGVCeXRlcyAv
IDEwOwogICAgIGlmICh3YXN0ZWRNZW1vcnkgPD0gdGVuUGVyY2VudE9mTWVtb3J5KQpAQCAtMjQ0
LDggKzI0NCw4IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1l
bW9yeShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiAgICAgLy8gVW5saW5rIGFuZCBkZXN0
cm95IGFsbCBiYWNraW5nIHRleHR1cmVzLgogICAgIHdoaWxlIChtX2JhY2tpbmdzLnNpemUoKSA+
IDApIHsKICAgICAgICAgQmFja2luZ1NldDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2lu
KCk7Ci0gICAgICAgIGlmICgoKml0KS0+Y3VycmVudFRleHR1cmUoKSkKLSAgICAgICAgICAgIHVu
bGluaygoKml0KS0+Y3VycmVudFRleHR1cmUoKSwgKCppdCkpOworICAgICAgICBpZiAoKCppdCkt
Pm93bmVyKCkpCisgICAgICAgICAgICAoKml0KS0+b3duZXIoKS0+dW5saW5rKCk7CiAgICAgICAg
IGRlc3Ryb3lCYWNraW5nKCgqaXQpLCBhbGxvY2F0b3IpOwogICAgIH0KIH0KQEAgLTI1OCwzMiAr
MjU4LDExIEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphbGxCYWNraW5nVGV4
dHVyZXNXZXJlRGVsZXRlZCgpCiAgICAgY2xlYXJBbGxNZW1vcnkoMCk7CiB9CiAKLXZvaWQgQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjp1bmxpbmsoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRl
eHR1cmUsIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nKQotewotICAgIEFT
U0VSVCh0ZXh0dXJlICYmIGJhY2tpbmcpOwotICAgIEFTU0VSVCh0ZXh0dXJlLT5jdXJyZW50QmFj
a2luZygpID09IGJhY2tpbmcpOwotICAgIEFTU0VSVChiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgp
ID09IHRleHR1cmUpOwotCi0gICAgdGV4dHVyZS0+c2V0Q3VycmVudEJhY2tpbmcoMCk7Ci0gICAg
YmFja2luZy0+c2V0Q3VycmVudFRleHR1cmUoMCk7Ci19Ci0KLXZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjpsaW5rKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlLCBDQ1ByaW9y
aXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZykKLXsKLSAgICBBU1NFUlQodGV4dHVyZSAm
JiBiYWNraW5nKTsKLSAgICBBU1NFUlQoIXRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpOwotICAg
IEFTU0VSVCghYmFja2luZy0+Y3VycmVudFRleHR1cmUoKSk7Ci0KLSAgICB0ZXh0dXJlLT5zZXRD
dXJyZW50QmFja2luZyhiYWNraW5nKTsKLSAgICBiYWNraW5nLT5zZXRDdXJyZW50VGV4dHVyZSh0
ZXh0dXJlKTsKLX0KLQotCiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVnaXN0
ZXJUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlKQogewogICAgIEFTU0VSVCh0
ZXh0dXJlKTsKICAgICBBU1NFUlQoIXRleHR1cmUtPnRleHR1cmVNYW5hZ2VyKCkpOwotICAgIEFT
U0VSVCghdGV4dHVyZS0+Y3VycmVudEJhY2tpbmcoKSk7CisgICAgQVNTRVJUKCF0ZXh0dXJlLT5i
YWNraW5nKCkpOwogICAgIEFTU0VSVChtX3RleHR1cmVzLmZpbmQodGV4dHVyZSkgPT0gbV90ZXh0
dXJlcy5lbmQoKSk7CiAKICAgICB0ZXh0dXJlLT5zZXRNYW5hZ2VySW50ZXJuYWwodGhpcyk7CkBA
IC0zMDUsMTEgKzI4NCwxMSBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6dW5y
ZWdpc3RlclRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cgogCiB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmV0dXJuQmFja2luZ1RleHR1cmUoQ0NQcmlvcml0aXpl
ZFRleHR1cmUqIHRleHR1cmUpCiB7Ci0gICAgaWYgKHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkp
IHsKKyAgICBpZiAodGV4dHVyZS0+YmFja2luZygpKSB7CiAgICAgICAgIC8vIE1vdmUgdGhlIGJh
Y2tpbmcgdGV4dHVyZSB0byB0aGUgZnJvbnQgZm9yIGV2aWN0aW9uL3JlY3ljbGluZyBhbmQgdW5s
aW5rIGl0LgotICAgICAgICBtX2JhY2tpbmdzLnJlbW92ZSh0ZXh0dXJlLT5jdXJyZW50QmFja2lu
ZygpKTsKLSAgICAgICAgbV9iYWNraW5ncy5pbnNlcnRCZWZvcmUobV9iYWNraW5ncy5iZWdpbigp
LCB0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKTsKLSAgICAgICAgdW5saW5rKHRleHR1cmUsIHRl
eHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpOworICAgICAgICBtX2JhY2tpbmdzLnJlbW92ZSh0ZXh0
dXJlLT5iYWNraW5nKCkpOworICAgICAgICBtX2JhY2tpbmdzLmluc2VydEJlZm9yZShtX2JhY2tp
bmdzLmJlZ2luKCksIHRleHR1cmUtPmJhY2tpbmcoKSk7CisgICAgICAgIHRleHR1cmUtPnVubGlu
aygpOwogICAgIH0KIH0KIApAQCAtMzE3LDkgKzI5Niw4IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJl
OjpCYWNraW5nKiBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmcoSW50
U2l6CiB7CiAgICAgQVNTRVJUKGFsbG9jYXRvcik7CiAKLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQg
PSBhbGxvY2F0b3ItPmNyZWF0ZVRleHR1cmUoc2l6ZSwgZm9ybWF0KTsKLSAgICBDQ1ByaW9yaXRp
emVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZyA9IG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6
QmFja2luZyhzaXplLCBmb3JtYXQsIHRleHR1cmVJZCk7Ci0gICAgbV9tZW1vcnlVc2VCeXRlcyAr
PSBiYWNraW5nLT5tZW1vcnlTaXplQnl0ZXMoKTsKKyAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6
QmFja2luZyogYmFja2luZyA9IG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyhhbGxv
Y2F0b3ItPmNyZWF0ZVRleHR1cmUoc2l6ZSwgZm9ybWF0KSwgc2l6ZSwgZm9ybWF0KTsKKyAgICBt
X21lbW9yeVVzZUJ5dGVzICs9IGJhY2tpbmctPmJ5dGVzKCk7CiAgICAgLy8gUHV0IGJhY2tpbmcg
dGV4dHVyZSBhdCB0aGUgZnJvbnQgZm9yIGV2aWN0aW9uLCBzaW5jZSBpdCBpc24ndCBpbiB1c2Ug
eWV0LgogICAgIG1fYmFja2luZ3MuaW5zZXJ0QmVmb3JlKG1fYmFja2luZ3MuYmVnaW4oKSwgYmFj
a2luZyk7CiAgICAgcmV0dXJuIGJhY2tpbmc7CkBAIC0zMjgsMTQgKzMwNiwxNCBAQCBDQ1ByaW9y
aXRpemVkVGV4dHVyZTo6QmFja2luZyogQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGVCYWNraW5nKEludFNpegogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ry
b3lCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nLCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAgQVNTRVJUKGJhY2tpbmcpOwotICAgIEFTU0VS
VCghYmFja2luZy0+Y3VycmVudFRleHR1cmUoKSB8fCAhYmFja2luZy0+Y3VycmVudFRleHR1cmUo
KS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpOworICAgIEFTU0VSVCghYmFja2luZy0+b3duZXIo
KSB8fCAhYmFja2luZy0+b3duZXIoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpOwogICAgIEFT
U0VSVChtX2JhY2tpbmdzLmZpbmQoYmFja2luZykgIT0gbV9iYWNraW5ncy5lbmQoKSk7CiAKICAg
ICBpZiAoYWxsb2NhdG9yKQotICAgICAgICBhbGxvY2F0b3ItPmRlbGV0ZVRleHR1cmUoYmFja2lu
Zy0+dGV4dHVyZUlkKCksIGJhY2tpbmctPnNpemUoKSwgYmFja2luZy0+Zm9ybWF0KCkpOwotICAg
IGlmIChiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpKQotICAgICAgICB1bmxpbmsoYmFja2luZy0+
Y3VycmVudFRleHR1cmUoKSwgYmFja2luZyk7Ci0gICAgbV9tZW1vcnlVc2VCeXRlcyAtPSBiYWNr
aW5nLT5tZW1vcnlTaXplQnl0ZXMoKTsKKyAgICAgICAgYWxsb2NhdG9yLT5kZWxldGVUZXh0dXJl
KGJhY2tpbmctPmlkKCksIGJhY2tpbmctPnNpemUoKSwgYmFja2luZy0+Zm9ybWF0KCkpOworICAg
IGlmIChiYWNraW5nLT5vd25lcigpKQorICAgICAgICBiYWNraW5nLT5vd25lcigpLT51bmxpbmso
KTsKKyAgICBtX21lbW9yeVVzZUJ5dGVzIC09IGJhY2tpbmctPmJ5dGVzKCk7CiAgICAgbV9iYWNr
aW5ncy5yZW1vdmUoYmFja2luZyk7CiAKICAgICBkZWxldGUgYmFja2luZzsKQEAgLTM1MSwxNSAr
MzI5LDE1IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphc3NlcnRJbnZhcmlh
bnRzKCkKIAogICAgIC8vIEJhY2tpbmdzL3RleHR1cmVzIG11c3QgYmUgZG91Ymx5LWxpbmtlZCBh
bmQgb25seSB0byBvdGhlciBiYWNraW5ncy90ZXh0dXJlcyBpbiB0aGlzIG1hbmFnZXIuCiAgICAg
Zm9yIChCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0g
bV9iYWNraW5ncy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoKCppdCktPmN1cnJlbnRUZXh0
dXJlKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3RleHR1cmVzLmZpbmQoKCppdCktPmN1cnJl
bnRUZXh0dXJlKCkpICE9IG1fdGV4dHVyZXMuZW5kKCkpOwotICAgICAgICAgICAgQVNTRVJUKCgq
aXQpLT5jdXJyZW50VGV4dHVyZSgpLT5jdXJyZW50QmFja2luZygpID09ICgqaXQpKTsKKyAgICAg
ICAgaWYgKCgqaXQpLT5vd25lcigpKSB7CisgICAgICAgICAgICBBU1NFUlQobV90ZXh0dXJlcy5m
aW5kKCgqaXQpLT5vd25lcigpKSAhPSBtX3RleHR1cmVzLmVuZCgpKTsKKyAgICAgICAgICAgIEFT
U0VSVCgoKml0KS0+b3duZXIoKS0+YmFja2luZygpID09ICgqaXQpKTsKICAgICAgICAgfQogICAg
IH0KICAgICBmb3IgKFRleHR1cmVTZXQ6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5iZWdpbigp
OyBpdCAhPSBtX3RleHR1cmVzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+Y3Vy
cmVudEJhY2tpbmcoKSkgewotICAgICAgICAgICAgQVNTRVJUKG1fYmFja2luZ3MuZmluZCgoKml0
KS0+Y3VycmVudEJhY2tpbmcoKSkgIT0gbV9iYWNraW5ncy5lbmQoKSk7Ci0gICAgICAgICAgICBB
U1NFUlQoKCppdCktPmN1cnJlbnRCYWNraW5nKCktPmN1cnJlbnRUZXh0dXJlKCkgPT0gKCppdCkp
OworICAgICAgICBpZiAoKCppdCktPmJhY2tpbmcoKSkgeworICAgICAgICAgICAgQVNTRVJUKG1f
YmFja2luZ3MuZmluZCgoKml0KS0+YmFja2luZygpKSAhPSBtX2JhY2tpbmdzLmVuZCgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCgoKml0KS0+YmFja2luZygpLT5vd25lcigpID09ICgqaXQpKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMzY4LDEwICszNDYsMTAgQEAgdm9pZCBDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmFzc2VydEludmFyaWFudHMoKQogICAgIC8vIHJlZHVjZU1lbW9yeSB3
aWxsIG5vdCBmaW5kIGFsbCB0ZXh0dXJlcyBhdmFpbGFibGUgZm9yIGV2aWN0aW9uL3JlY3ljbGlu
ZykuCiAgICAgYm9vbCByZWFjaGVkUHJvdGVjdGVkID0gZmFsc2U7CiAgICAgZm9yIChCYWNraW5n
U2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5l
bmQoKTsgKytpdCkgewotICAgICAgICBpZiAoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkgJiYgKCpp
dCktPmN1cnJlbnRUZXh0dXJlKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQorICAgICAgICBp
ZiAoKCppdCktPm93bmVyKCkgJiYgKCppdCktPm93bmVyKCktPmlzQWJvdmVQcmlvcml0eUN1dG9m
ZigpKQogICAgICAgICAgICAgcmVhY2hlZFByb3RlY3RlZCA9IHRydWU7CiAgICAgICAgIGlmIChy
ZWFjaGVkUHJvdGVjdGVkKQotICAgICAgICAgICAgQVNTRVJUKCgqaXQpLT5jdXJyZW50VGV4dHVy
ZSgpICYmICgqaXQpLT5jdXJyZW50VGV4dHVyZSgpLT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSk7
CisgICAgICAgICAgICBBU1NFUlQoKCppdCktPm93bmVyKCkgJiYgKCppdCktPm93bmVyKCktPmlz
QWJvdmVQcmlvcml0eUN1dG9mZigpKTsKICAgICB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKaW5kZXggM2M3MGIyYjJhMDIzMDlj
YTE2NGQ2ZGNhOTFjZDkwYmM0MmFmZTZlZC4uZDE2YjY4NDc1YTUxNDRkY2QwMzdkY2ExNTkwZWI3
OTk5NjY1MzUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyLmgKQEAgLTI3LDEwICsyNywxMCBAQAogCiAjaW5jbHVkZSAiQ0NQcmlvcml0aXplZFRl
eHR1cmUuaCIKICNpbmNsdWRlICJDQ1ByaW9yaXR5Q2FsY3VsYXRvci5oIgorI2luY2x1ZGUgIkND
VGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUwLDYgKzUwLDEzIEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgfkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcigpOwogCisgICAgLy8gRklYTUUg
KGh0dHA6Ly9jcmJ1Zy5jb20vMTM3MDk0KTogVGhpcyA5Nk1CIGRlZmF1bHQgaXMgYSBzdHJhZ2ds
ZXIgZnJvbSB0aGUKKyAgICAvLyBvbGQgdGV4dHVyZSBtYW5hZ2VyIGFuZCBpcyBqdXN0IHRvIGdp
dmUgdXMgYSBkZWZhdWx0IG1lbW9yeSBhbGxvY2F0aW9uIGJlZm9yZQorICAgIC8vIHdlIGdldCBh
IGNhbGxiYWNrIGZyb20gdGhlIEdQVSBtZW1vcnkgbWFuYWdlci4gV2Ugc2hvdWxkIHByb2JhYnkg
ZWl0aGVyOgorICAgIC8vIC0gd2FpdCBmb3IgdGhlIGNhbGxiYWNrIGJlZm9yZSByZW5kZXJpbmcg
YW55dGhpbmcgaW5zdGVhZAorICAgIC8vIC0gcHVzaCB0aGlzIGludG8gdGhlIEdQVSBtZW1vcnkg
bWFuYWdlciBzb21laG93LgorICAgIHN0YXRpYyBzaXplX3QgZGVmYXVsdE1lbW9yeUFsbG9jYXRp
b25MaW1pdCgpIHsgcmV0dXJuIDY0ICogMTAyNCAqIDEwMjQ7IH0KKwogICAgIC8vIG1lbW9yeVVz
ZUJ5dGVzKCkgZGVzY3JpYmVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCBieSBleGlzdGluZyBh
bGxvY2F0ZWQgdGV4dHVyZXMuCiAgICAgLy8gbWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpIGRlc2Ny
aWJlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd291bGQgYmUgdXNlZCBpZiBhbGwKICAgICAv
LyB0ZXh0dXJlcyB0aGF0IGFyZSBhYm92ZSB0aGUgY3V0b2ZmIHdlcmUgYWxsb2NhdGVkLgpAQCAt
OTEsOCArOTgsOCBAQCBwcml2YXRlOgogICAgIC8vIENvbXBhcmUgYmFja2luZ3MuIExvd2VzdCBw
cmlvcml0eSBmaXJzdC4KICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUJhY2tpbmdzKEND
UHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBhLCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFj
a2luZyogYikKICAgICB7Ci0gICAgICAgIGludCBwcmlvcml0eUEgPSBhLT5jdXJyZW50VGV4dHVy
ZSgpID8gYS0+Y3VycmVudFRleHR1cmUoKS0+cmVxdWVzdFByaW9yaXR5KCkgOiBDQ1ByaW9yaXR5
Q2FsY3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKTsKLSAgICAgICAgaW50IHByaW9yaXR5QiA9IGIt
PmN1cnJlbnRUZXh0dXJlKCkgPyBiLT5jdXJyZW50VGV4dHVyZSgpLT5yZXF1ZXN0UHJpb3JpdHko
KSA6IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlvcml0eSgpOworICAgICAgICBpbnQg
cHJpb3JpdHlBID0gYS0+b3duZXIoKSA/IGEtPm93bmVyKCktPnJlcXVlc3RQcmlvcml0eSgpIDog
Q0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCk7CisgICAgICAgIGludCBwcmlv
cml0eUIgPSBiLT5vd25lcigpID8gYi0+b3duZXIoKS0+cmVxdWVzdFByaW9yaXR5KCkgOiBDQ1By
aW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKTsKICAgICAgICAgaWYgKHByaW9yaXR5
QSA9PSBwcmlvcml0eUIpCiAgICAgICAgICAgICByZXR1cm4gYSA8IGI7CiAgICAgICAgIHJldHVy
biBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3JpdHlJc0xvd2VyKHByaW9yaXR5QSwgcHJpb3Jp
dHlCKTsKQEAgLTEwMiw5ICsxMDksNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWR1Y2VNZW1v
cnkoc2l6ZV90IGxpbWl0LCBUZXh0dXJlQWxsb2NhdG9yKik7CiAKLSAgICB2b2lkIGxpbmsoQ0NQ
cmlvcml0aXplZFRleHR1cmUqLCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyopOwotICAg
IHZvaWQgdW5saW5rKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiwgQ0NQcmlvcml0aXplZFRleHR1cmU6
OkJhY2tpbmcqKTsKLQogICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBjcmVhdGVC
YWNraW5nKEludFNpemUsIEdDM0RlbnVtIGZvcm1hdCwgVGV4dHVyZUFsbG9jYXRvciopOwogICAg
IHZvaWQgZGVzdHJveUJhY2tpbmcoQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqLCBUZXh0
dXJlQWxsb2NhdG9yKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXR5Q2FsY3VsYXRvci5oCmlu
ZGV4IDY4YTIyNWJlMGI5ZWYzMjY1ZjBmODk4YTYyZmRjNThkY2NlZmI3YTYuLmE5MGEwNzM5MDJi
MmM3NjhiYmNhNzkyN2RjMDIyOGExOTM2YThlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdHlDYWxjdWxhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0
eUNhbGN1bGF0b3IuaApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNs
dWRlICJUZXh0dXJlTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVk
VGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njb3BlZFRleHR1cmUuY3BwCmluZGV4IDgwZjgzMTU0MTFiZTU1MWVhNmRjYTQwMzZlY2I5
YmViN2Q2NTY3ZjAuLmI5Zjc1ZDE4NGMzYTY4MDFmYmJlOGZkZmJhNDFlNDMzNjhmYTMzOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NvcGVkVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcApAQCAtMjQsMTAgKzI0LDkgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRleHR1cmUuaCIK
IAotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiIC8vIEZvciBUZXh0dXJlQWxsb2NhdG9yCisj
aW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NvcGVkVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY29wZWRUZXh0dXJlLmgKaW5kZXggNWEzYzRlOTY0ZGQyYzZjZWU1YTc0MWRmMzFm
M2NmZTZiZDFlMjRjMC4uOWY3MjQxZjUxN2Y0YTQwZWRiMmFjOGM0MThhZjhiNzExZmU0ZDAwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTY29wZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYg
Q0NTY29wZWRUZXh0dXJlX2gKICNkZWZpbmUgQ0NTY29wZWRUZXh0dXJlX2gKIAorI2luY2x1ZGUg
IlRleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJjYy9DQ1RleHR1cmUuaCIKIAogI2lmICFB
U1NFUlRfRElTQUJMRUQKQEAgLTM0LDcgKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiBjbGFzcyBDQ1Njb3BlZFRleHR1cmUgOiBwcm90
ZWN0ZWQgQ0NUZXh0dXJlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1Njb3BlZFRleHR1
cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmUuaAppbmRleCBhMjk2MTA0NjkzZGQ0NTJmMmI5ODU3ODIwNDVlZjBj
YTc2YzEyZTgyLi4wZDVkOWY3NjgzZTU2OWVjNmRiNDc4MmQ2ODcxOWFhZThhM2Q5NzJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmUuaApAQCAtMzUsNiArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ0NUZXh0dXJlIHsKIHB1YmxpYzoKICAgICBDQ1RleHR1cmUoKSA6IG1faWQoMCkgeyB9Cisg
ICAgQ0NUZXh0dXJlKHVuc2lnbmVkIGlkLCBJbnRTaXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkK
KyAgICAgICAgOiBtX2lkKGlkKQorICAgICAgICAsIG1fc2l6ZShzaXplKQorICAgICAgICAsIG1f
Zm9ybWF0KGZvcm1hdCkgeyB9CiAKICAgICB1bnNpZ25lZCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aWQ7IH0KICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IGNjNzkwZTU1MzlhZDgzNjMw
YmRiNGRlMTE1MzBhYTM3YzUyNzcxZjMuLjFiMjEwODkxMmY3OTg5NzAyNGU0ZTIyNjBlZWU5MWYw
MmUwNTVhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC01NCw4ICs1
NCw2IEBAIHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvclJl
ZCA9IDI1NTsKIHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xv
ckdyZWVuID0gMDsKIHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVD
b2xvckJsdWUgPSAwOwogCi1jbGFzcyBNYW5hZ2VkVGV4dHVyZTsKLQogY2xhc3MgRHJhd2FibGVU
aWxlIDogcHVibGljIENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEcmF3YWJsZVRpbGUpOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJ
bXBsLmNwcAppbmRleCAzZTFmNTgxMzUzZjAyY2FiM2ExNTYwNDNlMDI5ZjE4ZjNkZTQwMmU2Li5j
YzM0OWM4ZTVkMTdlMWRkYmNhZTk2NTkwZTliYWE5YzczZjEzMmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkxheWVyVGV4
dHVyZVN1YkltYWdlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJU
ZXh0U3RyZWFtLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIgLy8gRm9yIFRleHR1cmVB
bGxvY2F0b3IKKyNpbmNsdWRlICJUZXh0dXJlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAj
aW5jbHVkZSAiY2MvQ0NQcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXgg
YmVkZTJiMWUzMWRjMGNiZWM5OGFkMjkyMjlmNGJkZWIwNzc3MDE5Yy4uM2Y5MDVhN2FiNDIzZTkx
MWFhN2MwYzc5NjAwMWY4NjVhMDU5MDFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CkBAIC0xMzgsNyArMTM4LDYgQEAKICAgICAgICAgICAgICd0ZXN0cy9TY3JvbGxiYXJMYXllckNo
cm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNw
cCcsCiAgICAgICAgICAgICAndGVzdHMvVGV4dHVyZUxheWVyQ2hyb21pdW1UZXN0LmNwcCcsCi0g
ICAgICAgICAgICAndGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rl
c3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UaWxp
bmdEYXRhVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBhYmYxZWZmOGUxMTEzNGEwMzI3
MmQ2NWY1OTA3MjA3MGQ0NDVkMDk4Li4xMTg0YjIyYTBkMzdhNDgxNzY0MzA0ZTFiYmU5ZTIyNWMw
NjdlMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkND
VGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJl
LmgiCiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUaWxpbmdEYXRhLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
VGVzdC5jcHAKaW5kZXggNDY4YWYzNmJiYTUwZTNlZTgxNjVmM2FjYWM3NGUxZTQ5ZjZmOTU1OS4u
YThiOTYyNzg3ZDhmMjNmZWI2OGZkNzJiYzVmNjc5NTJhNWE2NjBkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1v
bi5oIgogI2luY2x1ZGUgImNjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIgorI2luY2x1
ZGUgImNjL0NDVGV4dHVyZS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtNTAsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICBzaXplX3Qg
dGV4dHVyZXNNZW1vcnlTaXplKHNpemVfdCB0ZXh0dXJlQ291bnQpCiAgICAgewotICAgICAgICBy
ZXR1cm4gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKG1fdGV4dHVyZVNpemUsIG1fdGV4
dHVyZUZvcm1hdCkgKiB0ZXh0dXJlQ291bnQ7CisgICAgICAgIHJldHVybiBDQ1RleHR1cmU6Om1l
bW9yeVNpemVCeXRlcyhtX3RleHR1cmVTaXplLCBtX3RleHR1cmVGb3JtYXQpICogdGV4dHVyZUNv
dW50OwogICAgIH0KIAogICAgIFBhc3NPd25QdHI8Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
PiBjcmVhdGVNYW5hZ2VyKHNpemVfdCBtYXhUZXh0dXJlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKaW5kZXggNDBkM2NlNWU2ZmY5NDNiY2Qw
ZTk0ZTc1YWIzMGJlNmM4MDZlZGQxOS4uMmUyYzFhMDZmNGIwZmY1YzBjZWYxZDNkNTI3OWVkODI2
ZTljOWU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVh
ZGVkVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVk
VGVzdC5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250
ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRl
ICJMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiY2MvQ0NB
Y3RpdmVBbmltYXRpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKaW5kZXggZGZkNDZkOWMyM2I0NDQ4ZTQ2ZGU5ZjM4
YzE4NmRmNjI1N2M1ZDM0OS4uOTUwMWNhYmE5YWFjODBjNDQ5YzJhZjNlMGJkODUxNzNiMTgyYTkx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJU
ZXN0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5
ZXJUZXN0Q29tbW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAj
aW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2lu
Y2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCiAj
aW5jbHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCiAjaW5jbHVkZSAiVGlsZWRMYXllckNocm9taXVt
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5
ZXJCcmlkZ2VUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRM
YXllckJyaWRnZVRlc3QuY3BwCmluZGV4IDQzNTkwN2M5NDM3OGFiYmNkY2I5MDk0MzBlZDdjMDJk
Yzc5MTg4OWMuLmMyMDZkZGE1ZTc1YTEyNTk1YjUxZmM4ZWQ0ZjA1MTdjZmU3MjZkMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckJyaWRnZVRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckJy
aWRnZVRlc3QuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJMYXllckNo
cm9taXVtLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb21w
b3NpdG9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0Nv
bnRleHQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVy
ZU1hbmFnZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGV4dHVyZU1h
bmFnZXJUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUzMTNmNWRjMjM1
MGExZTg4ODk2NGUxMmRlZWI1NTgzMmYyZjg3MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVN
YW5hZ2VyVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiQ0NUaWxlZExheWVyVGVzdENv
bW1vbi5oIgotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1h
bmFnZXIuaCIKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwotdXNpbmcgbmFtZXNwYWNlIFdU
RjsKLQotbmFtZXNwYWNlIHsKLQotY2xhc3MgVGV4dHVyZU1hbmFnZXJUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewotcHVibGljOgotICAgIFRleHR1cmVNYW5hZ2VyVGVzdCgpCi0gICAgICAg
IDogbV90ZXh0dXJlU2l6ZSgyNTYsIDI1NikKLSAgICAgICAgLCBtX3RleHR1cmVGb3JtYXQoR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgflRleHR1
cmVNYW5hZ2VyVGVzdCgpCi0gICAgewotICAgIH0KLQotICAgIHNpemVfdCB0ZXh0dXJlc01lbW9y
eVNpemUoc2l6ZV90IHRleHR1cmVDb3VudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBUZXh0dXJl
TWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMobV90ZXh0dXJlU2l6ZSwgbV90ZXh0dXJlRm9ybWF0KSAq
IHRleHR1cmVDb3VudDsKLSAgICB9Ci0KLSAgICBQYXNzT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBj
cmVhdGVUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4VGV4dHVyZXMsIHNpemVfdCBwcmVmZXJyZWRU
ZXh0dXJlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKHRl
eHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJy
ZWRUZXh0dXJlcyksIDEwMjQpOwotICAgIH0KLQotICAgIGJvb2wgcmVxdWVzdFRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqIG1hbmFnZXIsIFRleHR1cmVUb2tlbiB0b2tlbikKLSAgICB7Ci0gICAgICAg
IGJvb2wgcmVzdWx0ID0gbWFuYWdlci0+cmVxdWVzdFRleHR1cmUodG9rZW4sIG1fdGV4dHVyZVNp
emUsIG1fdGV4dHVyZUZvcm1hdCk7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICBt
YW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUoJm1fZmFrZVRleHR1cmVBbGxvY2F0b3IsIHRva2VuKTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRmFrZVRleHR1
cmVBbGxvY2F0b3IgbV9mYWtlVGV4dHVyZUFsbG9jYXRvcjsKLSAgICBjb25zdCBJbnRTaXplIG1f
dGV4dHVyZVNpemU7Ci0gICAgY29uc3QgR0MzRGVudW0gbV90ZXh0dXJlRm9ybWF0OwotfTsKLQot
VEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgcmVxdWVzdFRleHR1cmVJblByZWZlcnJlZExpbWl0
KQotewotICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDg7Ci0gICAgT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKHBy
ZWZlcnJlZFRleHR1cmVzICogMiwgcHJlZmVycmVkVGV4dHVyZXMpOwotICAgIFRleHR1cmVUb2tl
biB0b2tlbnNbcHJlZmVycmVkVGV4dHVyZXNdOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cHJlZmVycmVkVGV4dHVyZXM7ICsraSkgewotICAgICAgICB0b2tlbnNbaV0gPSB0ZXh0dXJlTWFu
YWdlci0+Z2V0VG9rZW4oKTsKLSAgICAgICAgaWYgKGkpCi0gICAgICAgICAgICBFWFBFQ1RfR1Qo
dG9rZW5zW2ldLCB0b2tlbnNbaSAtIDFdKTsKLSAgICAgICAgRVhQRUNUX1RSVUUocmVxdWVzdFRl
eHR1cmUodGV4dHVyZU1hbmFnZXIuZ2V0KCksIHRva2Vuc1tpXSkpOwotICAgICAgICBFWFBFQ1Rf
VFJVRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbaV0pKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKHRva2Vuc1tpXSkpOwotICAgIH0K
LQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkVGV4dHVyZXM7ICsraSkKLSAg
ICAgICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5zW2ldKSk7
Ci0KLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSwg
dGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLX0KLQotVEVTVF9GKFRl
eHR1cmVNYW5hZ2VyVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRpbmdQcmVmZXJyZWRMaW1pdCkK
LXsKLSAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwotICAgIGNvbnN0IHNpemVfdCBw
cmVmZXJyZWRUZXh0dXJlcyA9IDQ7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRleHR1cmVzLCBwcmVmZXJyZWRUZXh0
dXJlcyk7Ci0gICAgVGV4dHVyZVRva2VuIHRva2Vuc1ttYXhUZXh0dXJlc107Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcmVmZXJyZWRUZXh0dXJlczsgKytpKSB7Ci0gICAgICAgIHRva2Vu
c1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfVFJVRShy
ZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7Ci0gICAgICAg
IEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1tpXSkpOwotICAg
IH0KLQotICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKHRva2Vuc1swXSk7Ci0g
ICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUodG9rZW5zWzJdKTsKLQotICAgIGZv
ciAoc2l6ZV90IGkgPSBwcmVmZXJyZWRUZXh0dXJlczsgaSA8IG1heFRleHR1cmVzOyArK2kpIHsK
LSAgICAgICAgdG9rZW5zW2ldID0gdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCk7Ci0gICAgICAg
IEVYUEVDVF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tlbnNb
aV0pKTsKLSAgICAgICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9r
ZW5zW2ldKSk7Ci0gICAgfQotCi0gICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUo
dG9rZW5zWzRdKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZSh0b2tlbnNb
NV0pOwotCi0gICAgLy8gVGhlc2UgdGV4dHVyZXMgc2hvdWxkIGJlIHZhbGlkIGJlZm9yZSB0aGUg
cmVkdWNlTWVtb3J5VG9MaW1pdCBjYWxsLgotICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2Vy
LT5oYXNUZXh0dXJlKHRva2Vuc1swXSkpOwotICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2Vy
LT5oYXNUZXh0dXJlKHRva2Vuc1syXSkpOwotCi0gICAgdGV4dHVyZU1hbmFnZXItPnJlZHVjZU1l
bW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSk7Ci0KLSAg
ICBFWFBFQ1RfRkFMU0UodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5zWzBdKSk7Ci0g
ICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5zWzFdKSk7Ci0g
ICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKHRva2Vuc1sxXSkpOwot
ICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbMl0pKTsK
LSAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNbM10pKTsK
LSAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aXNQcm90ZWN0ZWQodG9rZW5zWzNdKSk7
Ci0KLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSwg
dGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLX0KLQotVEVTVF9GKFRl
eHR1cmVNYW5hZ2VyVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRpbmdNYXhMaW1pdCkKLXsKLSAg
ICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwotICAgIGNvbnN0IHNpemVfdCBwcmVmZXJy
ZWRUZXh0dXJlcyA9IDQ7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRleHR1cmVzLCBwcmVmZXJyZWRUZXh0dXJlcyk7
Ci0gICAgVGV4dHVyZVRva2VuIHRva2Vuc1ttYXhUZXh0dXJlc107Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKSB7Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRleHR1
cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVy
ZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1tpXSkpOwotICAgIH0KLQotICAgIEVY
UEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+
Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
YXhUZXh0dXJlczsgKytpKSB7Ci0gICAgICAgIFRleHR1cmVUb2tlbiB0b2tlbiA9IHRleHR1cmVN
YW5hZ2VyLT5nZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfRkFMU0UocmVxdWVzdFRleHR1cmUo
dGV4dHVyZU1hbmFnZXIuZ2V0KCksIHRva2VuKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRSh0ZXh0
dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbikpOwotICAgIH0KLQotICAgIEVYUEVDVF9FUSh0
ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVzTWVtb3J5U2l6
ZShtYXhUZXh0dXJlcykpOwotCi0gICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUo
dG9rZW5zWzFdKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZSh0b2tlbnNb
M10pOwotICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgp
LCB0ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKSkpOwotICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RU
ZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKSkp
OwotICAgIEVYUEVDVF9GQUxTRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwg
dGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCkpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1v
cnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRl
cygpKTsKLSAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUodG9rZW5z
WzFdKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vu
c1szXSkpOwotfQotCi1URVNUX0YoVGV4dHVyZU1hbmFnZXJUZXN0LCByZWR1Y2VNZW1vcnlUb0xp
bWl0KQotewotICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlcyA9IDg7Ci0gICAgY29uc3Qgc2l6
ZV90IHByZWZlcnJlZFRleHR1cmVzID0gNDsKLSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIobWF4VGV4dHVyZXMsIHByZWZlcnJl
ZFRleHR1cmVzKTsKLSAgICBUZXh0dXJlVG9rZW4gdG9rZW5zW21heFRleHR1cmVzXTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpIHsKLSAgICAgICAgdG9rZW5z
W2ldID0gdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHJl
cXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tlbnNbaV0pKTsKLSAgICB9Ci0K
LSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1h
bmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVk
dWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpKTsKLSAgICBF
WFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXIt
PmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVt
b3J5VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpKTsKLSAgICBF
WFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXIt
PmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLQotICAgIGNvbnN0IHNpemVfdCB1bnByb3RlY3Rl
ZFRleHR1cmVzID0gcHJlZmVycmVkVGV4dHVyZXMgKyAxOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcHJlZmVycmVkVGV4dHVyZXMgKyAxOyArK2kpCi0gICAgICAgIHRleHR1cmVNYW5hZ2Vy
LT51bnByb3RlY3RUZXh0dXJlKHRva2Vuc1tpXSk7Ci0KLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVk
dWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpKTsKLSAgICBF
WFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXIt
PmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVt
b3J5VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpKTsKLSAgICBF
WFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSwgdGV4dHVyZU1h
bmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+cmVk
dWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUoMSkpOwotICAgIEVYUEVDVF9FUSh0
ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMgLSB1bnByb3RlY3RlZFRleHR1cmVzKSwgdGV4
dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLQotICAgIC8vIHJlZHVjZU1l
bW9yeVRvTGltaXQgZG9lc24ndCBjaGFuZ2UgdGhlIGN1cnJlbnQgbWVtb3J5IGxpbWl0cy4KLSAg
ICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFn
ZXItPm1heE1lbW9yeUxpbWl0Qnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5
U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5wcmVmZXJyZWRNZW1vcnlM
aW1pdEJ5dGVzKCkpOwotfQotCi1URVNUX0YoVGV4dHVyZU1hbmFnZXJUZXN0LCBzZXRNYXhNZW1v
cnlMaW1pdEJ5dGVzKQotewotICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlcyA9IDg7Ci0gICAg
Y29uc3Qgc2l6ZV90IHByZWZlcnJlZFRleHR1cmVzID0gNDsKLSAgICBPd25QdHI8VGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIobWF4VGV4dHVyZXMs
IHByZWZlcnJlZFRleHR1cmVzKTsKLSAgICBUZXh0dXJlVG9rZW4gdG9rZW5zW21heFRleHR1cmVz
XTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpIHsKLSAgICAg
ICAgdG9rZW5zW2ldID0gdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCk7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tlbnNbaV0pKTsK
LSAgICB9Ci0KLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwg
dGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLQotICAgIGNvbnN0IHNp
emVfdCB1bnByb3RlY3RlZFRleHR1cmVzID0gcHJlZmVycmVkVGV4dHVyZXMgKyAxOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdW5wcm90ZWN0ZWRUZXh0dXJlczsgKytpKQotICAgICAgICB0
ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZSh0b2tlbnNbaV0pOwotCi0gICAgdGV4dHVy
ZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKG1heFRl
eHR1cmVzKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyks
IHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgdGV4dHVyZU1h
bmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJl
ZFRleHR1cmVzKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRU
ZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAg
RVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIHRleHR1cmVN
YW5hZ2VyLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwotfQotCi1URVNUX0YoVGV4dHVyZU1hbmFn
ZXJUZXN0LCBzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKQotewotICAgIGNvbnN0IHNpemVf
dCBtYXhUZXh0dXJlcyA9IDg7Ci0gICAgY29uc3Qgc2l6ZV90IHByZWZlcnJlZFRleHR1cmVzID0g
NDsKLSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlVGV4
dHVyZU1hbmFnZXIobWF4VGV4dHVyZXMsIHByZWZlcnJlZFRleHR1cmVzKTsKLSAgICBUZXh0dXJl
VG9rZW4gdG9rZW5zW21heFRleHR1cmVzXTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1h
eFRleHR1cmVzOyArK2kpIHsKLSAgICAgICAgdG9rZW5zW2ldID0gdGV4dHVyZU1hbmFnZXItPmdl
dFRva2VuKCk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5h
Z2VyLmdldCgpLCB0b2tlbnNbaV0pKTsKLSAgICB9Ci0KLSAgICBjb25zdCBzaXplX3QgdW5wcm90
ZWN0ZWRUZXh0dXJlcyA9IHByZWZlcnJlZFRleHR1cmVzICsgMTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHVucHJvdGVjdGVkVGV4dHVyZXM7ICsraSkKLSAgICAgICAgdGV4dHVyZU1hbmFn
ZXItPnVucHJvdGVjdFRleHR1cmUodG9rZW5zW2ldKTsKLQotICAgIEVYUEVDVF9FUSh0ZXh0dXJl
c01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVz
ZUJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMp
LCB0ZXh0dXJlTWFuYWdlci0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsKLQotICAgIC8vIFNldHRp
bmcgcHJlZmVycmVkIG1lbW9yeSBsaW1pdCBvbmx5IHdvbid0IGZvcmNlIHJlZHVjZU1lbW9yeVRv
TGltaXQuCi0gICAgdGV4dHVyZU1hbmFnZXItPnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMo
dGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSk7Ci0gICAgRVhQRUNUX0VRKHRl
eHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVt
b3J5VXNlQnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0
dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwotICAgIEVYUEVD
VF9FUSh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdl
ci0+cHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcygpKTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5h
Z2VyVGVzdCwgdGV4dHVyZU1hbmFnZXJEZXN0cm95ZWRCZWZvcmVNYW5hZ2VkVGV4dHVyZSkKLXsK
LSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlVGV4dHVy
ZU1hbmFnZXIoMSwgMSk7Ci0gICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtYW5hZ2VkVGV4dHVy
ZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIuZ2V0KCkpOwotCi0gICAg
SW50U2l6ZSBzaXplKDUwLCA1MCk7Ci0gICAgdW5zaWduZWQgZm9ybWF0ID0gR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkE7Ci0KLSAgICAvLyBUZXh0dXJlIGlzIGluaXRpYWxseSBpbnZhbGlkLCBidXQg
d2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVzZXJ2ZS4KLSAgICBFWFBFQ1RfRkFMU0UobWFuYWdlZFRl
eHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0gICAgRVhQRUNUX1RSVUUobWFuYWdlZFRl
eHR1cmUtPnJlc2VydmUoc2l6ZSwgZm9ybWF0KSk7Ci0gICAgRVhQRUNUX1RSVUUobWFuYWdlZFRl
eHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0KLSAgICB0ZXh0dXJlTWFuYWdlci5jbGVh
cigpOwotCi0gICAgLy8gRGVsZXRpbmcgdGhlIG1hbmFnZXIgc2hvdWxkIGludmFsaWRhdGUgdGhl
IHRleHR1cmUgYW5kIHJlc2VydmF0aW9uIGF0dGVtcHRzIHNob3VsZCBmYWlsLgotICAgIEVYUEVD
VF9GQUxTRShtYW5hZ2VkVGV4dHVyZS0+aXNWYWxpZChzaXplLCBmb3JtYXQpKTsKLSAgICBFWFBF
Q1RfRkFMU0UobWFuYWdlZFRleHR1cmUtPnJlc2VydmUoc2l6ZSwgZm9ybWF0KSk7Ci19Ci0KLVRF
U1RfRihUZXh0dXJlTWFuYWdlclRlc3QsIHRleHR1cmVNb3ZlZFRvTmV3TWFuYWdlcikKLXsKLSAg
ICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyT25lID0gY3JlYXRlVGV4dHVy
ZU1hbmFnZXIoMSwgMSk7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
clR3byA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKDEsIDEpOwotICAgIE93blB0cjxNYW5hZ2VkVGV4
dHVyZT4gbWFuYWdlZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5h
Z2VyT25lLmdldCgpKTsKLQotICAgIEludFNpemUgc2l6ZSg1MCwgNTApOwotICAgIHVuc2lnbmVk
IGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwotCi0gICAgLy8gVGV4dHVyZSBpcyBp
bml0aWFsbHkgaW52YWxpZCwgYnV0IHdlIHNob3VsZCBiZSBhYmxlIHRvIHJlc2VydmUuCi0gICAg
RVhQRUNUX0ZBTFNFKG1hbmFnZWRUZXh0dXJlLT5pc1ZhbGlkKHNpemUsIGZvcm1hdCkpOwotICAg
IEVYUEVDVF9UUlVFKG1hbmFnZWRUZXh0dXJlLT5yZXNlcnZlKHNpemUsIGZvcm1hdCkpOwotICAg
IEVYUEVDVF9UUlVFKG1hbmFnZWRUZXh0dXJlLT5pc1ZhbGlkKHNpemUsIGZvcm1hdCkpOwotCi0g
ICAgLy8gU2V0dGluZyB0byB0aGUgc2FtZSBtYW5hZ2VyIHNob3VsZCBiZSBhIG5vLW9wLgotICAg
IG1hbmFnZWRUZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdlcih0ZXh0dXJlTWFuYWdlck9uZS5nZXQo
KSk7Ci0gICAgRVhQRUNUX1RSVUUobWFuYWdlZFRleHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0
KSk7Ci0KLSAgICAvLyBTZXR0aW5nIHRvIGEgZGlmZmVyZW50IG1hbmFnZXIgc2hvdWxkIGludmFs
aWRhdGUgdGhlIHRleHR1cmUuCi0gICAgbWFuYWdlZFRleHR1cmUtPnNldFRleHR1cmVNYW5hZ2Vy
KHRleHR1cmVNYW5hZ2VyVHdvLmdldCgpKTsKLQotICAgIEVYUEVDVF9GQUxTRShtYW5hZ2VkVGV4
dHVyZS0+aXNWYWxpZChzaXplLCBmb3JtYXQpKTsKLSAgICBFWFBFQ1RfVFJVRShtYW5hZ2VkVGV4
dHVyZS0+cmVzZXJ2ZShzaXplLCBmb3JtYXQpKTsKLSAgICBFWFBFQ1RfVFJVRShtYW5hZ2VkVGV4
dHVyZS0+aXNWYWxpZChzaXplLCBmb3JtYXQpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152040</attachid>
            <date>2012-07-12 13:15:35 -0700</date>
            <delta_ts>2012-07-12 14:35:49 -0700</delta_ts>
            <desc>remove_double_init</desc>
            <filename>bug-91001-20120712131534.patch</filename>
            <type>text/plain</type>
            <size>90756</size>
            <attacher name="Eric Penner">epenner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzIzZmE3OTk0MmUxMjYz
NTJiNWE0MjM2YzlhYmNkN2JiMGNiMWM5Yy4uNGMzODk3MGIwMmQyY2E3NjJmMDhkZTBiNjE0ZGY2
M2I1Mjg1OTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEyLTA3LTEyICBFcmlj
IFBlbm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSBD
Q1RleHR1cmUvVGV4dHVyZUFsbG9jYXRvciBhbmQgcmVtb3ZlIFRleHR1cmVNYW5hZ2VyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTAwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBDQ1RleHR1cmUg
dG8gY2xlYW4gdXAgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcuCisgICAgICAgIEFkZCBU
ZXh0dXJlQWxsb2NhdG9yLmggYW5kIHJlbW92ZSByZW1haW5kZXIgb2YgVGV4dHVyZU1hbmFnZXIu
aC9jcHAuCisgICAgICAgIE1pbm9yIG1vdmUvcmVmYWN0b3Jpbmcgb2YgbGluay91bmxpbmsgaW4g
Q0NQcmlvcml0aXplZFRleHR1cmUuCisgICAgICAgIFJlbW92ZSBkb3VibGUgaW5pdGlhbGl6YXRp
b24gb2YgdGhlIGRlZmF1bHQgbWVtb3J5IGxpbWl0LgorCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMgKHJlZmFjdG9yaW5nKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmluaXRpYWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L01hbmFnZWRUZXh0dXJlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUFsbG9j
YXRvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ByaW9yaXR5Q2FsY3VsYXRvci5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChUZXh0dXJlQWxsb2NhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVBbGxvY2F0
b3I6On5UZXh0dXJlQWxsb2NhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlTWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZVRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpkZWxldGVU
ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1Rl
eHR1cmVBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0Ojpwcmlvcml0aXplVGV4dHVyZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhv
c3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVy
ZTo6Q0NQcmlvcml0aXplZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXpl
ZFRleHR1cmU6OnNldERpbWVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXpl
ZFRleHR1cmU6OnRleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4
dHVyZTo6YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1
cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpsaW5rKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NQcmlvcml0aXplZFRleHR1cmU6OnVubGluayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmU6OmJ5dGVzKToKKyAgICAg
ICAgKENDUHJpb3JpdGl6ZWRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpoYXZlQmFja2luZ1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlv
cml0aXplZFRleHR1cmU6OkJhY2tpbmc6OkJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
cmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmc6On5CYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nOjpvd25lcik6CisgICAgICAgIChCYWNraW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiYWNraW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpwcmlvcml0aXplVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0TGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y2xlYXJB
bGxNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2Vy
OjpyZWdpc3RlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpyZXR1cm5CYWNraW5nVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZXN0cm95QmFja2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFzc2VydEludmFyaWFudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlci5oOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdE1l
bW9yeUFsbG9jYXRpb25MaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OmNvbXBhcmVCYWNraW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0eUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUZXh0dXJlOjpDQ1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5j
cHA6CisKIDIwMTItMDctMTEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTAwMApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAzMTJjZTcyOWU5MTk0ZTUxNzcyMmE0MjRlNzUyZjEwMDg2
MWYwOWRmLi5mZjQ4ZWNhOGEyYmYyOGJiYzU4MGQzMzI5Mjc4MTg2ZThkYmRiNjljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA3LTEyICBFcmljIFBl
bm5lciAgPGVwZW5uZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSBDQ1Rl
eHR1cmUvVGV4dHVyZUFsbG9jYXRvciBhbmQgcmVtb3ZlIFRleHR1cmVNYW5hZ2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTAwMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlbGV0aW5nIG9sZCB0ZXh0
dXJlIG1hbmFnZXIgdGVzdHMuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NQcmlv
cml0aXplZFRleHR1cmVUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1
cmVUZXN0Ojp0ZXh0dXJlc01lbW9yeVNpemUpOgorICAgICAgICAqIHRlc3RzL0NDVGhyZWFkZWRU
ZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmg6CisgICAg
ICAgICogdGVzdHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3Rz
L1RleHR1cmVNYW5hZ2VyVGVzdC5jcHA6IFJlbW92ZWQuCisKIDIwMTItMDctMTIgIFRvbnkgQ2hh
bmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBkcmFn
IGFuZCBkcm9wIEFQSSBtZXRob2RzIHRoYXQgYXJlIG5vIGxvbmdlciB1c2VkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggNjA4ZGJiYTQ0MDkzYTAxNGEyYWM3ODIwN2RiMjc2YTkzZDJiMWYyZC4uZTFiMDIw
NDE5NDFkMGNmYTI3NWNlNmFlMGU2ZjU0Njg3NDM2YjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
ODI0OSw4ICs4MjQ5LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVTdWJJbWFnZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVN1YkltYWdlLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCcsCi0gICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwJywKLSAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbGF0Zm9ybUNhbnZhcy5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ2FudmFz
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ29s
b3IuaCcsCkBAIC04MjcyLDggKzgyNzAsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5oJywKLSAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAnLAot
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVBbGxvY2F0
b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVw
bG9hZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90
dGxlZFRleHR1cmVVcGxvYWRlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZjg2OWM1OGEyY2Nj
MGIwOWYyM2Y1MmM0NzFjMzJhOTA0OGVkY2U0NC4uZDc1Y2YwNTRkYzUyZTliMjdmODU1NGFhNWU1
YWQ3YmY1OWU4MjJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJMYXllclBhaW50
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUNvbnRleHRTa2lhLmgiCisjaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAic2tpYS9leHQvcGxhdGZvcm1f
Y2FudmFzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAppbmRleCBkOTc5NjhjMDM1NTYyNDMwNTUyY2ZkOGJmNzk3NjA0MGZmOTM4ZDI2Li4y
NzZlMmIzOTE3OTI2NzNjNGE0ZjJiNDQyOWZkYWQ4ODZiNGVkZWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zOCw2ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiBjbGFz
cyBDQ0dyYXBoaWNzQ29udGV4dDsKK2NsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiAKIC8vIFRoaXMg
Y2xhc3MgcmFzdGVyaXplcyB0aGUgY29udGVudFJlY3QgaW50byBhIHNraWEgYml0bWFwIGNhbnZh
cy4gSXQgdGhlbiB1cGRhdGVzCiAvLyB0ZXh0dXJlcyBieSBjb3B5aW5nIGZyb20gdGhlIGNhbnZh
cyBpbnRvIHRoZSB0ZXh0dXJlLCB1c2luZyBNYXBTdWJJbWFnZSBpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cAppbmRleCAyM2NmZmVhOTQyMGMxYjYwNjQ1N2JmZTFlZmYyNzJlZThjYWYzNTQzLi44NmZiMmM4
YzNiNDEzODg1ZmViOWZkZTgyM2Y5NTIwODI4OWViMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKICNpbmNsdWRlICJT
a0NhbnZhcy5oIgogI2luY2x1ZGUgIlNrRGV2aWNlLmgiCisjaW5jbHVkZSAiVGV4dHVyZUFsbG9j
YXRvci5oIgogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA3ODdiMzk5MzdjOTllMTdhNjRhZWI0ZDA4OGE1
Y2U4OThiZWVkYjZjLi45ZjEzODg4MjdiMzZkNzdjYTg5M2YzM2YzYjcxMzBmNTYzMTZkZmY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKKwogLy8gVGhpcyBjbGFzcyByZWNvcmRzIHRoZSBj
b250ZW50UmVjdCBpbnRvIGFuIFNrUGljdHVyZSwgdGhlbiBzb2Z0d2FyZSByYXN0ZXJpemVzCiAv
LyB0aGUgU2tQaWN0dXJlIGludG8gYml0bWFwcyBmb3IgZWFjaCB0aWxlLiBUaGlzIGltcGxlbWVu
dHMgQ0NTZXR0aW5nczo6cGVyVGlsZVBhaW50aW5nLgogY2xhc3MgQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDM3NjkzNjU4
NmQ4YTkxYTgzNWZmNmVjODNiNTNmYzgyYmE1NWMwYzcuLjY5NjU2M2FjZmU5YWMxMWRjZmI2OTk1
YjJhNWRmMTg2YmUxNzQ0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAt
MzYsNyArMzYsNiBAQAogCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKICNpbmNs
dWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCi0jaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGU3NTlmNWM4
ZTczOTk3MDdmNmRlZTEyOGZjODE2ZGUyNWEwZjk3YzcuLjRjODJjZmE5OTBjYTdmYmEzNzBiMzc4
NDJjN2JlNTkxYzU2OGYyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIlNoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiU2tCaXRtYXAuaCIKICNpbmNsdWRlICJTa0NvbG9yLmgiCi0jaW5jbHVkZSAi
VGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaCIK
ICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmgiCkBAIC0yMDksOCArMjA4LDYgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06Omlu
aXRpYWxpemUoKQogICAgIG1fY2FwYWJpbGl0aWVzLnVzaW5nR3B1TWVtb3J5TWFuYWdlciA9IGV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0NIUk9NSVVNX2dwdV9tZW1vcnlfbWFuYWdlciIpOwogICAg
IGlmIChtX2NhcGFiaWxpdGllcy51c2luZ0dwdU1lbW9yeU1hbmFnZXIpCiAgICAgICAgIG1fY29u
dGV4dC0+c2V0TWVtb3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0NIUk9NSVVNKHRoaXMpOwot
ICAgIGVsc2UKLSAgICAgICAgbV9jbGllbnQtPnNldE1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVz
KFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSkpOwogCiAgICAg
bV9jYXBhYmlsaXRpZXMudXNpbmdEaXNjYXJkRnJhbWVidWZmZXIgPSBleHRlbnNpb25zLmNvbnRh
aW5zKCJHTF9DSFJPTUlVTV9kaXNjYXJkX2ZyYW1lYnVmZmVyIik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0
dXJlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRhYmYxYmViZGVhNTY2Yzgw
ZDhiMWNiNWEyYWVlNGJmN2JjMWQ5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9N
YW5hZ2VkVGV4dHVyZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLQotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCi0KLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5j
bHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+Ci0KLXVzaW5nIFdlYktpdDo6V2Vi
R3JhcGhpY3NDb250ZXh0M0Q7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTWFuYWdlZFRleHR1
cmU6Ok1hbmFnZWRUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQotICAgIDogbV90ZXh0
dXJlTWFuYWdlcihtYW5hZ2VyKQotICAgICwgbV90b2tlbigwKQotICAgICwgbV9mb3JtYXQoMCkK
LSAgICAsIG1fdGV4dHVyZUlkKDApCi17Ci0gICAgbV90ZXh0dXJlTWFuYWdlci0+cmVnaXN0ZXJU
ZXh0dXJlKHRoaXMpOwotfQotCi1NYW5hZ2VkVGV4dHVyZTo6TWFuYWdlZFRleHR1cmUoVGV4dHVy
ZU1hbmFnZXIqIG1hbmFnZXIsIFRleHR1cmVUb2tlbiB0b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNp
Z25lZCBmb3JtYXQsIHVuc2lnbmVkIHRleHR1cmVJZCkKLSAgICA6IG1fdGV4dHVyZU1hbmFnZXIo
bWFuYWdlcikKLSAgICAsIG1fdG9rZW4odG9rZW4pCi0gICAgLCBtX3NpemUoc2l6ZSkKLSAgICAs
IG1fZm9ybWF0KGZvcm1hdCkKLSAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKLXsKLSAgICBt
X3RleHR1cmVNYW5hZ2VyLT5yZWdpc3RlclRleHR1cmUodGhpcyk7Ci19Ci0KLU1hbmFnZWRUZXh0
dXJlOjp+TWFuYWdlZFRleHR1cmUoKQotewotICAgIGlmICghbV90ZXh0dXJlTWFuYWdlcikKLSAg
ICAgICAgcmV0dXJuOwotICAgIG1fdGV4dHVyZU1hbmFnZXItPnVucmVnaXN0ZXJUZXh0dXJlKHRo
aXMpOwotICAgIGlmIChtX3Rva2VuKQotICAgICAgICBtX3RleHR1cmVNYW5hZ2VyLT5yZWxlYXNl
VG9rZW4obV90b2tlbik7Ci19Ci0KLXZvaWQgTWFuYWdlZFRleHR1cmU6OnNldFRleHR1cmVNYW5h
Z2VyKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQotewotICAgIGlmIChtYW5hZ2VyID09IG1fdGV4
dHVyZU1hbmFnZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3RleHR1cmVNYW5hZ2Vy
KQotICAgICAgICBtX3RleHR1cmVNYW5hZ2VyLT51bnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsKLSAg
ICBtX3RleHR1cmVNYW5hZ2VyID0gbWFuYWdlcjsKLSAgICBjbGVhcigpOwotICAgIGlmIChtX3Rl
eHR1cmVNYW5hZ2VyKQotICAgICAgICBtX3RleHR1cmVNYW5hZ2VyLT5yZWdpc3RlclRleHR1cmUo
dGhpcyk7Ci19Ci0KLWJvb2wgTWFuYWdlZFRleHR1cmU6OmlzVmFsaWQoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgdW5zaWduZWQgZm9ybWF0KQotewotICAgIHJldHVybiBtX3Rva2VuICYmIHNpemUgPT0g
bV9zaXplICYmIGZvcm1hdCA9PSBtX2Zvcm1hdCAmJiBtX3RleHR1cmVNYW5hZ2VyICYmIG1fdGV4
dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tlbik7Ci19Ci0KLWJvb2wgTWFuYWdlZFRleHR1
cmU6OnJlc2VydmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQotewotICAg
IGlmICghbV90ZXh0dXJlTWFuYWdlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KCFtX3Rva2VuKQotICAgICAgICBtX3Rva2VuID0gbV90ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4o
KTsKLQotICAgIGJvb2wgcmVzZXJ2ZWQgPSB0cnVlOwotICAgIGlmIChzaXplID09IG1fc2l6ZSAm
JiBmb3JtYXQgPT0gbV9mb3JtYXQgJiYgbV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rv
a2VuKSkKLSAgICAgICAgbV90ZXh0dXJlTWFuYWdlci0+cHJvdGVjdFRleHR1cmUobV90b2tlbik7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fdGV4dHVyZUlkID0gMDsKLSAgICAgICAgcmVzZXJ2ZWQg
PSBtX3RleHR1cmVNYW5hZ2VyLT5yZXF1ZXN0VGV4dHVyZShtX3Rva2VuLCBzaXplLCBmb3JtYXQp
OwotICAgICAgICBpZiAocmVzZXJ2ZWQpIHsKLSAgICAgICAgICAgIG1fc2l6ZSA9IHNpemU7Ci0g
ICAgICAgICAgICBtX2Zvcm1hdCA9IGZvcm1hdDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJl
dHVybiByZXNlcnZlZDsKLX0KLQotdm9pZCBNYW5hZ2VkVGV4dHVyZTo6dW5yZXNlcnZlKCkKLXsK
LSAgICBpZiAoIW1fdG9rZW4gfHwgIW1fdGV4dHVyZU1hbmFnZXIpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUobV90b2tlbik7Ci19Ci0K
LXZvaWQgTWFuYWdlZFRleHR1cmU6OmFsbG9jYXRlKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
cikKLXsKLSAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7
Ci0gICAgaWYgKCFtX3RleHR1cmVJZCkKLSAgICAgICAgbV90ZXh0dXJlSWQgPSBtX3RleHR1cmVN
YW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUoYWxsb2NhdG9yLCBtX3Rva2VuKTsKLX0KLQotdm9pZCBN
YW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKLXsKLSAgICBhbGxvY2F0ZShhbGxvY2F0b3IpOwot
ICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250ZXh0LT5jb250ZXh0M0Qo
KTsKLSAgICBpZiAoIWNvbnRleHQzZCkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCi0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV90ZXh0dXJlSWQpOwotfQotCi1QYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBNYW5hZ2Vk
VGV4dHVyZTo6c3RlYWwoKQotewotICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSA9
IGFkb3B0UHRyKG5ldyBNYW5hZ2VkVGV4dHVyZShtX3RleHR1cmVNYW5hZ2VyLCBtX3Rva2VuLCBt
X3NpemUsIG1fZm9ybWF0LCBtX3RleHR1cmVJZCkpOwotICAgIGNsZWFyKCk7Ci0gICAgcmV0dXJu
IHRleHR1cmUucmVsZWFzZSgpOwotfQotCi12b2lkIE1hbmFnZWRUZXh0dXJlOjpjbGVhcigpCi17
Ci0gICAgbV90b2tlbiA9IDA7Ci0gICAgbV9zaXplID0gSW50U2l6ZSgpOwotICAgIG1fZm9ybWF0
ID0gMDsKLSAgICBtX3RleHR1cmVJZCA9IDA7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2ZTY3ZWJmNjhlYTVlZWJhYzQ5Y2JjNTg2MDg0NWY3ZjdiYjU4NDk1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNYW5hZ2VkVGV4
dHVyZV9oCi0jZGVmaW5lIE1hbmFnZWRUZXh0dXJlX2gKLQotI2luY2x1ZGUgIkludFNpemUuaCIK
LSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgotCi0jaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jh
c2UuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBDQ0dyYXBoaWNzQ29udGV4dDsKLQotY2xhc3MgTWFuYWdlZFRleHR1cmUgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKE1hbmFnZWRUZXh0dXJlKTsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gY3JlYXRlKFRleHR1cmVNYW5hZ2VyKiBtYW5h
Z2VyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNYW5hZ2VkVGV4dHVyZSht
YW5hZ2VyKSk7Ci0gICAgfQotICAgIH5NYW5hZ2VkVGV4dHVyZSgpOwotCi0gICAgdm9pZCBzZXRU
ZXh0dXJlTWFuYWdlcihUZXh0dXJlTWFuYWdlciopOwotICAgIHZvaWQgY2xlYXJNYW5hZ2VyKCkg
eyBtX3RleHR1cmVNYW5hZ2VyID0gMDsgfQotCi0gICAgYm9vbCBpc1ZhbGlkKGNvbnN0IEludFNp
emUmLCB1bnNpZ25lZCBmb3JtYXQpOwotICAgIGJvb2wgcmVzZXJ2ZShjb25zdCBJbnRTaXplJiwg
dW5zaWduZWQgZm9ybWF0KTsKLSAgICB2b2lkIHVucmVzZXJ2ZSgpOwotICAgIGJvb2wgaXNSZXNl
cnZlZCgpCi0gICAgewotICAgICAgICByZXR1cm4gbV90ZXh0dXJlTWFuYWdlciAmJiBtX3RleHR1
cmVNYW5hZ2VyLT5pc1Byb3RlY3RlZChtX3Rva2VuKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFsbG9j
YXRlKFRleHR1cmVBbGxvY2F0b3IqKTsKLSAgICB2b2lkIGJpbmRUZXh0dXJlKENDR3JhcGhpY3ND
b250ZXh0KiwgVGV4dHVyZUFsbG9jYXRvciopOwotCi0gICAgSW50U2l6ZSBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9Ci0gICAgdW5zaWduZWQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXQ7IH0KLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmVJZDsgfQotCi0gICAgLy8gU3RlYWwgdG9rZW4gYW5kIHRleHR1cmVJZCBieSBpbnN0YW50
aWF0ZXMgYSBuZXcgdGV4dHVyZSB1c2luZyBleGlzdGluZwotICAgIC8vIG1lbWJlciB2YXJpYWJs
ZXMuCi0gICAgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gc3RlYWwoKTsKLQotcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBNYW5hZ2VkVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwotICAgIE1hbmFn
ZWRUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiwgVGV4dHVyZVRva2VuLCBJbnRTaXplLCB1bnNpZ25l
ZCBmb3JtYXQsIHVuc2lnbmVkIHRleHR1cmVJZCk7Ci0KLSAgICB2b2lkIGNsZWFyKCk7Ci0KLSAg
ICBUZXh0dXJlTWFuYWdlciogbV90ZXh0dXJlTWFuYWdlcjsKLSAgICBUZXh0dXJlVG9rZW4gbV90
b2tlbjsKLSAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICB1bnNpZ25lZCBtX2Zvcm1hdDsKLSAgICB1
bnNpZ25lZCBtX3RleHR1cmVJZDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIE1hbmFnZWRUZXh0dXJl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKaW5kZXggMGU3ZDRlMzhjNTZjMWVj
Y2Q5NmY1Y2JhZmQ3NGY5ZGU1ZjNkODdkOS4uMmI2MDhmNGU3MjcyN2UzYTEwOGQxZTY5NjRkZTYz
OTQwOTZkMjk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTQwLDcg
KzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIGNs
YXNzIExheWVyQ2hyb21pdW07CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07Ci1jbGFzcyBN
YW5hZ2VkVGV4dHVyZTsKIAogY2xhc3MgUmVuZGVyU3VyZmFjZUNocm9taXVtIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShSZW5kZXJTdXJmYWNlQ2hyb21pdW0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUFsbG9jYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUFsbG9j
YXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU4ZGUxMTUyMmI0YWFkYWUxNmJjYjI3ZTA1NGZmNzM3Yjg4NmI4
M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlQWxsb2NhdG9yLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKworI2lmbmRlZiBUZXh0dXJlQWxsb2NhdG9yX2gKKyNkZWZpbmUgVGV4dHVyZUFsbG9jYXRv
cl9oCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIkludFJlY3Qu
aCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
VGV4dHVyZUFsbG9jYXRvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVU
ZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0Mz
RGVudW0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKSA9IDA7CisK
K3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5UZXh0dXJlQWxsb2NhdG9yKCkgeyB9Cit9OworCit9
CisKKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDg1YzcyMjI4ZWMwMzdmY2NlNWYzZmVjNDAwOTI0ODUyMzdjMDZiYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwzMjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2luY2x1ZGUgIlRleHR1
cmVNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgotI2luY2x1ZGUgIlRy
YWNlRXZlbnQuaCIKLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0KLW5hbWVzcGFjZSB7Ci1zaXplX3QgbWVtb3J5TGltaXRCeXRlcyhzaXplX3Qgdmlld3Bv
cnRNdWx0aXBsaWVyLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIHNpemVfdCBtaW5NZWdh
Ynl0ZXMsIHNpemVfdCBtYXhNZWdhYnl0ZXMpCi17Ci0gICAgaWYgKCF2aWV3cG9ydE11bHRpcGxp
ZXIpCi0gICAgICAgIHJldHVybiBtYXhNZWdhYnl0ZXMgKiAxMDI0ICogMTAyNDsKLSAgICBpZiAo
dmlld3BvcnRTaXplLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1pbk1lZ2FieXRlcyAqIDEw
MjQgKiAxMDI0OwotICAgIHJldHVybiBtYXgobWluTWVnYWJ5dGVzICogMTAyNCAqIDEwMjQsIG1p
bihtYXhNZWdhYnl0ZXMgKiAxMDI0ICogMTAyNCwgdmlld3BvcnRNdWx0aXBsaWVyICogVGV4dHVy
ZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHZpZXdwb3J0U2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEpKSk7Ci19Ci19Ci0KLXNpemVfdCBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMo
Y29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQotewotICAgIHNpemVfdCB2aWV3cG9ydE11bHRp
cGxpZXIsIG1pbk1lZ2FieXRlcywgbWF4TWVnYWJ5dGVzOwotI2lmIE9TKEFORFJPSUQpCi0gICAg
dmlld3BvcnRNdWx0aXBsaWVyID0gMTY7Ci0gICAgbWluTWVnYWJ5dGVzID0gMzI7Ci0gICAgbWF4
TWVnYWJ5dGVzID0gNjQ7Ci0jZWxzZQotICAgIHZpZXdwb3J0TXVsdGlwbGllciA9IDA7Ci0gICAg
bWluTWVnYWJ5dGVzID0gMDsKLSAgICBtYXhNZWdhYnl0ZXMgPSAxMjg7Ci0jZW5kaWYKLSAgICBy
ZXR1cm4gbWVtb3J5TGltaXRCeXRlcyh2aWV3cG9ydE11bHRpcGxpZXIsIHZpZXdwb3J0U2l6ZSwg
bWluTWVnYWJ5dGVzLCBtYXhNZWdhYnl0ZXMpOwotfQotCi1zaXplX3QgVGV4dHVyZU1hbmFnZXI6
OnJlY2xhaW1MaW1pdEJ5dGVzKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKLXsKLSAgICBz
aXplX3Qgdmlld3BvcnRNdWx0aXBsaWVyLCBtaW5NZWdhYnl0ZXMsIG1heE1lZ2FieXRlczsKLSNp
ZiBPUyhBTkRST0lEKQotICAgIHZpZXdwb3J0TXVsdGlwbGllciA9IDg7Ci0gICAgbWluTWVnYWJ5
dGVzID0gMTY7Ci0gICAgbWF4TWVnYWJ5dGVzID0gMzI7Ci0jZWxzZQotICAgIHZpZXdwb3J0TXVs
dGlwbGllciA9IDA7Ci0gICAgbWluTWVnYWJ5dGVzID0gMDsKLSAgICBtYXhNZWdhYnl0ZXMgPSA2
NDsKLSNlbmRpZgotICAgIHJldHVybiBtZW1vcnlMaW1pdEJ5dGVzKHZpZXdwb3J0TXVsdGlwbGll
ciwgdmlld3BvcnRTaXplLCBtaW5NZWdhYnl0ZXMsIG1heE1lZ2FieXRlcyk7Ci19Ci0KLXNpemVf
dCBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0Mz
RGVudW0gdGV4dHVyZUZvcm1hdCkKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBhc3N1bWVzIGFsbCB0
ZXh0dXJlcyBhcmUgMSBieXRlL2NvbXBvbmVudC4KLSAgICBjb25zdCBHQzNEZW51bSB0eXBlID0g
R3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEU7Ci0gICAgdW5zaWduZWQgaW50IGNvbXBv
bmVudHNQZXJQaXhlbCA9IDQ7Ci0gICAgdW5zaWduZWQgaW50IGJ5dGVzUGVyQ29tcG9uZW50ID0g
MTsKLSAgICBpZiAoIUdyYXBoaWNzQ29udGV4dDNEOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFt
ZXRlcnModGV4dHVyZUZvcm1hdCwgdHlwZSwgJmNvbXBvbmVudHNQZXJQaXhlbCwgJmJ5dGVzUGVy
Q29tcG9uZW50KSkKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICByZXR1cm4g
c2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIGNvbXBvbmVudHNQZXJQaXhlbCAqIGJ5dGVz
UGVyQ29tcG9uZW50OwotfQotCi0KLVRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihzaXpl
X3QgbWF4TWVtb3J5TGltaXRCeXRlcywgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMs
IGludCBtYXhUZXh0dXJlU2l6ZSkKLSAgICA6IG1fbWF4TWVtb3J5TGltaXRCeXRlcyhtYXhNZW1v
cnlMaW1pdEJ5dGVzKQotICAgICwgbV9wcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJl
ZE1lbW9yeUxpbWl0Qnl0ZXMpCi0gICAgLCBtX21lbW9yeVVzZUJ5dGVzKDApCi0gICAgLCBtX21h
eFRleHR1cmVTaXplKG1heFRleHR1cmVTaXplKQotICAgICwgbV9uZXh0VG9rZW4oMSkKLXsKLX0K
LQotVGV4dHVyZU1hbmFnZXI6On5UZXh0dXJlTWFuYWdlcigpCi17Ci0gICAgZm9yIChIYXNoU2V0
PE1hbmFnZWRUZXh0dXJlKj46Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkVGV4dHVyZXMuYmVn
aW4oKTsgaXQgIT0gbV9yZWdpc3RlcmVkVGV4dHVyZXMuZW5kKCk7ICsraXQpCi0gICAgICAgICgq
aXQpLT5jbGVhck1hbmFnZXIoKTsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6c2V0TWVtb3J5
QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMpCi17Ci0gICAgc2V0
TWF4TWVtb3J5TGltaXRCeXRlcyhtZW1vcnlMaW1pdEJ5dGVzKTsKLSNpZiBkZWZpbmVkKE9TX0FO
RFJPSUQpCi0gICAgLy8gT24gYW5kcm9pZCwgd2UgYXJlIHNldHRpbmcgdGhlIHByZWZlcnJlZCBt
ZW1vcnkgbGltaXQgdG8gaGFsZiBvZiBvdXIKLSAgICAvLyBtYXhpbXVtIGFsbG9jYXRpb24sIGJl
Y2F1c2Ugd2Ugd291bGQgbGlrZSB0byBzdGF5IHNpZ25pZmljYW50bHkgYmVsb3cKLSAgICAvLyB0
aGUgYWJzb2x1dGUgbWVtb3J5IGxpbWl0IHdoZW5ldmVyIHdlIGNhbi4gU3BlY2lmaWNhbGx5LCBi
eSBsaW1pdHRpbmcKLSAgICAvLyBwcmVwYWludGluZyBvbmx5IHRvIHRoZSBoYWxmd2F5IG1lbW9y
eSBtYXJrLgotICAgIHNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXRCeXRl
cyAvIDIpOwotI2Vsc2UKLSAgICBzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxp
bWl0Qnl0ZXMpOwotI2VuZGlmCi19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OnNldE1heE1lbW9y
eUxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMpCi17Ci0gICAgcmVkdWNlTWVtb3J5
VG9MaW1pdChtZW1vcnlMaW1pdEJ5dGVzKTsKLSAgICBBU1NFUlQoY3VycmVudE1lbW9yeVVzZUJ5
dGVzKCkgPD0gbWVtb3J5TGltaXRCeXRlcyk7Ci0gICAgbV9tYXhNZW1vcnlMaW1pdEJ5dGVzID0g
bWVtb3J5TGltaXRCeXRlczsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6c2V0UHJlZmVycmVk
TWVtb3J5TGltaXRCeXRlcyhzaXplX3QgbWVtb3J5TGltaXRCeXRlcykKLXsKLSAgICBtX3ByZWZl
cnJlZE1lbW9yeUxpbWl0Qnl0ZXMgPSBtZW1vcnlMaW1pdEJ5dGVzOwotfQotCi12b2lkIFRleHR1
cmVNYW5hZ2VyOjpyZWdpc3RlclRleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUpCi17Ci0g
ICAgQVNTRVJUKHRleHR1cmUpOwotICAgIEFTU0VSVCghbV9yZWdpc3RlcmVkVGV4dHVyZXMuY29u
dGFpbnModGV4dHVyZSkpOwotCi0gICAgbV9yZWdpc3RlcmVkVGV4dHVyZXMuYWRkKHRleHR1cmUp
OwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjp1bnJlZ2lzdGVyVGV4dHVyZShNYW5hZ2VkVGV4
dHVyZSogdGV4dHVyZSkKLXsKLSAgICBBU1NFUlQodGV4dHVyZSk7Ci0gICAgQVNTRVJUKG1fcmVn
aXN0ZXJlZFRleHR1cmVzLmNvbnRhaW5zKHRleHR1cmUpKTsKLQotICAgIG1fcmVnaXN0ZXJlZFRl
eHR1cmVzLnJlbW92ZSh0ZXh0dXJlKTsKLX0KLQotVGV4dHVyZVRva2VuIFRleHR1cmVNYW5hZ2Vy
OjpnZXRUb2tlbigpCi17Ci0gICAgcmV0dXJuIG1fbmV4dFRva2VuKys7Ci19Ci0KLXZvaWQgVGV4
dHVyZU1hbmFnZXI6OnJlbGVhc2VUb2tlbihUZXh0dXJlVG9rZW4gdG9rZW4pCi17Ci0gICAgVGV4
dHVyZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RleHR1cmVzLmZpbmQodG9rZW4pOwotICAgIGlmIChp
dCAhPSBtX3RleHR1cmVzLmVuZCgpKQotICAgICAgICByZW1vdmVUZXh0dXJlKHRva2VuLCBpdC0+
c2Vjb25kKTsKLX0KLQotYm9vbCBUZXh0dXJlTWFuYWdlcjo6aGFzVGV4dHVyZShUZXh0dXJlVG9r
ZW4gdG9rZW4pCi17Ci0gICAgcmV0dXJuIG1fdGV4dHVyZXMuY29udGFpbnModG9rZW4pOwotfQot
Ci1ib29sIFRleHR1cmVNYW5hZ2VyOjppc1Byb3RlY3RlZChUZXh0dXJlVG9rZW4gdG9rZW4pCi17
Ci0gICAgcmV0dXJuIHRva2VuICYmIGhhc1RleHR1cmUodG9rZW4pICYmIG1fdGV4dHVyZXMuZ2V0
KHRva2VuKS5pc1Byb3RlY3RlZDsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6cHJvdGVjdFRl
eHR1cmUoVGV4dHVyZVRva2VuIHRva2VuKQotewotICAgIEFTU0VSVChoYXNUZXh0dXJlKHRva2Vu
KSk7Ci0gICAgVGV4dHVyZUluZm8gaW5mbyA9IG1fdGV4dHVyZXMudGFrZSh0b2tlbik7Ci0gICAg
aW5mby5pc1Byb3RlY3RlZCA9IHRydWU7Ci0gICAgbV90ZXh0dXJlcy5hZGQodG9rZW4sIGluZm8p
OwotICAgIC8vIElmIHNvbWVvbmUgcHJvdGVjdHMgYSB0ZXh0dXJlLCBwdXQgaXQgYXQgdGhlIGVu
ZCBvZiB0aGUgTFJVIGxpc3QuCi0gICAgbV90ZXh0dXJlTFJVU2V0LnJlbW92ZSh0b2tlbik7Ci0g
ICAgbV90ZXh0dXJlTFJVU2V0LmFkZCh0b2tlbik7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6
OnVucHJvdGVjdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuKQotewotICAgIFRleHR1cmVNYXA6
Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5maW5kKHRva2VuKTsKLSAgICBpZiAoaXQgIT0gbV90
ZXh0dXJlcy5lbmQoKSkKLSAgICAgICAgaXQtPnNlY29uZC5pc1Byb3RlY3RlZCA9IGZhbHNlOwot
fQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjp1bnByb3RlY3RBbGxUZXh0dXJlcygpCi17Ci0gICAg
Zm9yIChUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0g
bV90ZXh0dXJlcy5lbmQoKTsgKytpdCkKLSAgICAgICAgaXQtPnNlY29uZC5pc1Byb3RlY3RlZCA9
IGZhbHNlOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpldmljdFRleHR1cmUoVGV4dHVyZVRv
a2VuIHRva2VuLCBUZXh0dXJlSW5mbyBpbmZvKQotewotICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAi
VGV4dHVyZU1hbmFnZXI6OmV2aWN0VGV4dHVyZSIpOwotICAgIHJlbW92ZVRleHR1cmUodG9rZW4s
IGluZm8pOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnlUb0xpbWl0KHNp
emVfdCBsaW1pdCkKLXsKLSAgICB3aGlsZSAobV9tZW1vcnlVc2VCeXRlcyA+IGxpbWl0KSB7Ci0g
ICAgICAgIEFTU0VSVCghbV90ZXh0dXJlTFJVU2V0LmlzRW1wdHkoKSk7Ci0gICAgICAgIGJvb2wg
Zm91bmRDYW5kaWRhdGUgPSBmYWxzZTsKLSAgICAgICAgZm9yIChMaXN0SGFzaFNldDxUZXh0dXJl
VG9rZW4+OjppdGVyYXRvciBscnVJdCA9IG1fdGV4dHVyZUxSVVNldC5iZWdpbigpOyBscnVJdCAh
PSBtX3RleHR1cmVMUlVTZXQuZW5kKCk7ICsrbHJ1SXQpIHsKLSAgICAgICAgICAgIFRleHR1cmVU
b2tlbiB0b2tlbiA9ICpscnVJdDsKLSAgICAgICAgICAgIFRleHR1cmVJbmZvIGluZm8gPSBtX3Rl
eHR1cmVzLmdldCh0b2tlbik7Ci0gICAgICAgICAgICBpZiAoaW5mby5pc1Byb3RlY3RlZCkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGV2aWN0VGV4dHVyZSh0b2tlbiwg
aW5mbyk7Ci0gICAgICAgICAgICBmb3VuZENhbmRpZGF0ZSA9IHRydWU7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWZvdW5kQ2FuZGlkYXRlKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6YWRkVGV4dHVyZShU
ZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCi17Ci0gICAgQVNTRVJUKCFtX3Rl
eHR1cmVMUlVTZXQuY29udGFpbnModG9rZW4pKTsKLSAgICBBU1NFUlQoIW1fdGV4dHVyZXMuY29u
dGFpbnModG9rZW4pKTsKLSAgICBtX21lbW9yeVVzZUJ5dGVzICs9IG1lbW9yeVVzZUJ5dGVzKGlu
Zm8uc2l6ZSwgaW5mby5mb3JtYXQpOwotICAgIG1fdGV4dHVyZXMuc2V0KHRva2VuLCBpbmZvKTsK
LSAgICBtX3RleHR1cmVMUlVTZXQuYWRkKHRva2VuKTsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdl
cjo6ZGVsZXRlRXZpY3RlZFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKLXsK
LSAgICBpZiAoYWxsb2NhdG9yKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9l
dmljdGVkVGV4dHVyZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChtX2V2aWN0ZWRU
ZXh0dXJlc1tpXS50ZXh0dXJlSWQpIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICAgICAg
QVNTRVJUKG1fZXZpY3RlZFRleHR1cmVzW2ldLmFsbG9jYXRvciA9PSBhbGxvY2F0b3IpOwotI2Vu
ZGlmCi0gICAgICAgICAgICAgICAgYWxsb2NhdG9yLT5kZWxldGVUZXh0dXJlKG1fZXZpY3RlZFRl
eHR1cmVzW2ldLnRleHR1cmVJZCwgbV9ldmljdGVkVGV4dHVyZXNbaV0uc2l6ZSwgbV9ldmljdGVk
VGV4dHVyZXNbaV0uZm9ybWF0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAg
ICBtX2V2aWN0ZWRUZXh0dXJlcy5jbGVhcigpOwotfQotCi12b2lkIFRleHR1cmVNYW5hZ2VyOjpl
dmljdEFuZFJlbW92ZUFsbERlbGV0ZWRUZXh0dXJlcygpCi17Ci0gICAgdW5wcm90ZWN0QWxsVGV4
dHVyZXMoKTsKLSAgICByZWR1Y2VNZW1vcnlUb0xpbWl0KDApOwotICAgIG1fZXZpY3RlZFRleHR1
cmVzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hbmFnZXI6OmV2aWN0QW5kRGVsZXRlQWxs
VGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotewotICAgIHVucHJvdGVjdEFs
bFRleHR1cmVzKCk7Ci0gICAgcmVkdWNlTWVtb3J5VG9MaW1pdCgwKTsKLSAgICBkZWxldGVFdmlj
dGVkVGV4dHVyZXMoYWxsb2NhdG9yKTsKLX0KLQotdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3Zl
VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCi17Ci0gICAgQVNT
RVJUKG1fdGV4dHVyZUxSVVNldC5jb250YWlucyh0b2tlbikpOwotICAgIEFTU0VSVChtX3RleHR1
cmVzLmNvbnRhaW5zKHRva2VuKSk7Ci0gICAgbV9tZW1vcnlVc2VCeXRlcyAtPSBtZW1vcnlVc2VC
eXRlcyhpbmZvLnNpemUsIGluZm8uZm9ybWF0KTsKLSAgICBtX3RleHR1cmVzLnJlbW92ZSh0b2tl
bik7Ci0gICAgQVNTRVJUKG1fdGV4dHVyZUxSVVNldC5jb250YWlucyh0b2tlbikpOwotICAgIG1f
dGV4dHVyZUxSVVNldC5yZW1vdmUodG9rZW4pOwotICAgIEV2aWN0aW9uRW50cnkgZW50cnk7Ci0g
ICAgZW50cnkudGV4dHVyZUlkID0gaW5mby50ZXh0dXJlSWQ7Ci0gICAgZW50cnkuc2l6ZSA9IGlu
Zm8uc2l6ZTsKLSAgICBlbnRyeS5mb3JtYXQgPSBpbmZvLmZvcm1hdDsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgZW50cnkuYWxsb2NhdG9yID0gaW5mby5hbGxvY2F0b3I7Ci0jZW5kaWYKLSAgICBtX2V2
aWN0ZWRUZXh0dXJlcy5hcHBlbmQoZW50cnkpOwotfQotCi11bnNpZ25lZCBUZXh0dXJlTWFuYWdl
cjo6YWxsb2NhdGVUZXh0dXJlKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZVRv
a2VuIHRva2VuKQotewotICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5m
aW5kKHRva2VuKTsKLSAgICBBU1NFUlQoaXQgIT0gbV90ZXh0dXJlcy5lbmQoKSk7Ci0gICAgVGV4
dHVyZUluZm8qIGluZm8gPSAmaXQuZ2V0KCktPnNlY29uZDsKLSAgICBBU1NFUlQoaW5mby0+aXNQ
cm90ZWN0ZWQpOwotCi0gICAgdW5zaWduZWQgdGV4dHVyZUlkID0gYWxsb2NhdG9yLT5jcmVhdGVU
ZXh0dXJlKGluZm8tPnNpemUsIGluZm8tPmZvcm1hdCk7Ci0gICAgaW5mby0+dGV4dHVyZUlkID0g
dGV4dHVyZUlkOwotI2lmbmRlZiBOREVCVUcKLSAgICBpbmZvLT5hbGxvY2F0b3IgPSBhbGxvY2F0
b3I7Ci0jZW5kaWYKLSAgICByZXR1cm4gdGV4dHVyZUlkOwotfQotCi1ib29sIFRleHR1cmVNYW5h
Z2VyOjpyZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5z
aWduZWQgZm9ybWF0KQotewotICAgIGlmIChzaXplLndpZHRoKCkgPiBtX21heFRleHR1cmVTaXpl
IHx8IHNpemUuaGVpZ2h0KCkgPiBtX21heFRleHR1cmVTaXplKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuZmluZCh0b2tl
bik7Ci0gICAgaWYgKGl0ICE9IG1fdGV4dHVyZXMuZW5kKCkpIHsKLSAgICAgICAgQVNTRVJUKGl0
LT5zZWNvbmQuc2l6ZSAhPSBzaXplIHx8IGl0LT5zZWNvbmQuZm9ybWF0ICE9IGZvcm1hdCk7Ci0g
ICAgICAgIHJlbW92ZVRleHR1cmUodG9rZW4sIGl0LT5zZWNvbmQpOwotICAgIH0KLQotICAgIHNp
emVfdCBtZW1vcnlSZXF1aXJlZEJ5dGVzID0gbWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KTsK
LSAgICBpZiAobWVtb3J5UmVxdWlyZWRCeXRlcyA+IG1fbWF4TWVtb3J5TGltaXRCeXRlcykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmVkdWNlTWVtb3J5VG9MaW1pdChtX21heE1lbW9y
eUxpbWl0Qnl0ZXMgLSBtZW1vcnlSZXF1aXJlZEJ5dGVzKTsKLSAgICBpZiAobV9tZW1vcnlVc2VC
eXRlcyArIG1lbW9yeVJlcXVpcmVkQnl0ZXMgPiBtX21heE1lbW9yeUxpbWl0Qnl0ZXMpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIFRleHR1cmVJbmZvIGluZm87Ci0gICAgaW5mby5zaXpl
ID0gc2l6ZTsKLSAgICBpbmZvLmZvcm1hdCA9IGZvcm1hdDsKLSAgICBpbmZvLnRleHR1cmVJZCA9
IDA7Ci0gICAgaW5mby5pc1Byb3RlY3RlZCA9IHRydWU7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGlu
Zm8uYWxsb2NhdG9yID0gMDsKLSNlbmRpZgotICAgIGFkZFRleHR1cmUodG9rZW4sIGluZm8pOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi19Ci0KLSNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDdhMTg5YmNjZDM0MGUzZWM5YjQ3M2VhOGU4ZmUyYjk1MThiYWE1Ny4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFRleHR1cmVNYW5hZ2VyX2gKLSNk
ZWZpbmUgVGV4dHVyZU1hbmFnZXJfaAotCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
LSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgPHd0
Zi9GYXN0QWxsb2NCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNYW5hZ2VkVGV4dHVy
ZTsKLXR5cGVkZWYgaW50IFRleHR1cmVUb2tlbjsKLQotY2xhc3MgVGV4dHVyZUFsbG9jYXRvciB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNp
emUmLCBHQzNEZW51bSBmb3JtYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVy
ZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlQWxsVGV4dHVyZXMoKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIH5UZXh0dXJlQWxsb2NhdG9yKCkgeyB9Ci19OwotCi1jbGFzcyBUZXh0dXJlTWFuYWdl
ciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1hbmFnZXIpOwotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBjcmVhdGUoc2l6ZV90IG1heE1l
bW9yeUxpbWl0Qnl0ZXMsIHNpemVfdCBwcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4
VGV4dHVyZVNpemUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVN
YW5hZ2VyKG1heE1lbW9yeUxpbWl0Qnl0ZXMsIHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIG1h
eFRleHR1cmVTaXplKSk7Ci0gICAgfQotICAgIH5UZXh0dXJlTWFuYWdlcigpOwotCi0gICAgLy8g
QWJzb2x1dGUgbWF4aW11bSBsaW1pdCBmb3IgdGV4dHVyZSBhbGxvY2F0aW9ucyBmb3IgdGhpcyBp
bnN0YW5jZS4KLSAgICBzdGF0aWMgc2l6ZV90IGhpZ2hMaW1pdEJ5dGVzKGNvbnN0IEludFNpemUm
IHZpZXdwb3J0U2l6ZSk7Ci0gICAgLy8gUHJlZmVycmVkIHRleHR1cmUgc2l6ZSBsaW1pdCBnaXZl
biB0aGUgdmlld3BvcnQgc2l6ZS4KLSAgICBzdGF0aWMgc2l6ZV90IHJlY2xhaW1MaW1pdEJ5dGVz
KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSk7Ci0KLSAgICBzdGF0aWMgc2l6ZV90IG1lbW9y
eVVzZUJ5dGVzKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpOwotCi0gICAgdm9pZCBz
ZXRNZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhzaXplX3QpOwotICAgIHZvaWQgc2V0TWF4TWVt
b3J5TGltaXRCeXRlcyhzaXplX3QpOwotICAgIHNpemVfdCBtYXhNZW1vcnlMaW1pdEJ5dGVzKCkg
eyByZXR1cm4gbV9tYXhNZW1vcnlMaW1pdEJ5dGVzOyB9Ci0gICAgdm9pZCBzZXRQcmVmZXJyZWRN
ZW1vcnlMaW1pdEJ5dGVzKHNpemVfdCk7Ci0gICAgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0
Qnl0ZXMoKSB7IHJldHVybiBtX3ByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXM7IH0KLQotICAgIHZv
aWQgcmVnaXN0ZXJUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVy
VGV4dHVyZShNYW5hZ2VkVGV4dHVyZSopOwotCi0gICAgVGV4dHVyZVRva2VuIGdldFRva2VuKCk7
Ci0gICAgdm9pZCByZWxlYXNlVG9rZW4oVGV4dHVyZVRva2VuKTsKLSAgICBib29sIGhhc1RleHR1
cmUoVGV4dHVyZVRva2VuKTsKLQotICAgIGJvb2wgcmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2Vu
LCBJbnRTaXplLCBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLQotICAgIHZvaWQgcHJvdGVjdFRl
eHR1cmUoVGV4dHVyZVRva2VuKTsKLSAgICB2b2lkIHVucHJvdGVjdFRleHR1cmUoVGV4dHVyZVRv
a2VuKTsKLSAgICB2b2lkIHVucHJvdGVjdEFsbFRleHR1cmVzKCk7Ci0gICAgYm9vbCBpc1Byb3Rl
Y3RlZChUZXh0dXJlVG9rZW4pOwotCi0gICAgdW5zaWduZWQgYWxsb2NhdGVUZXh0dXJlKFRleHR1
cmVBbGxvY2F0b3IqLCBUZXh0dXJlVG9rZW4pOwotICAgIHZvaWQgZGVsZXRlRXZpY3RlZFRleHR1
cmVzKFRleHR1cmVBbGxvY2F0b3IqKTsKLQotICAgIHZvaWQgZXZpY3RBbmRSZW1vdmVBbGxEZWxl
dGVkVGV4dHVyZXMoKTsKLSAgICB2b2lkIGV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoVGV4dHVy
ZUFsbG9jYXRvciopOwotCi0gICAgdm9pZCByZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCk7Ci0g
ICAgc2l6ZV90IGN1cnJlbnRNZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5
VXNlQnl0ZXM7IH0KLQotcHJpdmF0ZToKLSAgICBUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4TWVt
b3J5TGltaXRCeXRlcywgc2l6ZV90IHByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhU
ZXh0dXJlU2l6ZSk7Ci0KLSAgICBzdHJ1Y3QgVGV4dHVyZUluZm8gewotICAgICAgICBJbnRTaXpl
IHNpemU7Ci0gICAgICAgIEdDM0RlbnVtIGZvcm1hdDsKLSAgICAgICAgdW5zaWduZWQgdGV4dHVy
ZUlkOwotICAgICAgICBib29sIGlzUHJvdGVjdGVkOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yOwotI2VuZGlmCi0gICAgfTsKLQotICAgIHZvaWQg
YWRkVGV4dHVyZShUZXh0dXJlVG9rZW4sIFRleHR1cmVJbmZvKTsKLSAgICB2b2lkIHJlbW92ZVRl
eHR1cmUoVGV4dHVyZVRva2VuLCBUZXh0dXJlSW5mbyk7Ci0gICAgdm9pZCBldmljdFRleHR1cmUo
VGV4dHVyZVRva2VuLCBUZXh0dXJlSW5mbyk7Ci0KLSAgICBIYXNoU2V0PE1hbmFnZWRUZXh0dXJl
Kj4gbV9yZWdpc3RlcmVkVGV4dHVyZXM7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8VGV4dHVyZVRv
a2VuLCBUZXh0dXJlSW5mbz4gVGV4dHVyZU1hcDsKLSAgICBUZXh0dXJlTWFwIG1fdGV4dHVyZXM7
Ci0gICAgTGlzdEhhc2hTZXQ8VGV4dHVyZVRva2VuPiBtX3RleHR1cmVMUlVTZXQ7Ci0KLSAgICBz
aXplX3QgbV9tYXhNZW1vcnlMaW1pdEJ5dGVzOwotICAgIHNpemVfdCBtX3ByZWZlcnJlZE1lbW9y
eUxpbWl0Qnl0ZXM7Ci0gICAgc2l6ZV90IG1fbWVtb3J5VXNlQnl0ZXM7Ci0gICAgaW50IG1fbWF4
VGV4dHVyZVNpemU7Ci0gICAgVGV4dHVyZVRva2VuIG1fbmV4dFRva2VuOwotCi0gICAgc3RydWN0
IEV2aWN0aW9uRW50cnkgewotICAgICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7Ci0gICAgICAgIElu
dFNpemUgc2l6ZTsKLSAgICAgICAgR0MzRGVudW0gZm9ybWF0OwotI2lmbmRlZiBOREVCVUcKLSAg
ICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yOwotI2VuZGlmCi0gICAgfTsKLQotICAg
IFZlY3RvcjxFdmljdGlvbkVudHJ5PiBtX2V2aWN0ZWRUZXh0dXJlczsKLX07Ci0KLX0KLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCBlNzVkZDQwZjZhZThhNmJl
Yjc2ZjMwZDJkOGIxZmM0ODNjOWVlNzhkLi5kMDg1YzlkZDE1YThlMTQ4NjAxMGZkOTJlNjVlMWZl
MDg1MTRhNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTMwLDcgKzMw
LDYgQEAKICNpbmNsdWRlICJUaWxlZExheWVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJS
ZWdpb24uaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2lu
Z1RleHR1cmVBbGxvY2F0b3IuY3BwCmluZGV4IGM1ODlhM2M2ZWQzZDAwYWZmMWZiYTBkN2Q0MzU5
NGYzYWFjOTFlODMuLjdhZTI5ZjkxMmI4OGUzMzhiOGRiMGYwMzhhNGI1YTgyNTA1YzUzN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNr
aW5nVGV4dHVyZUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcApAQCAtNzUsNyArNzUs
NyBAQCB1bnNpZ25lZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZVRleHR1cmUoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGVudW0gZgogICAgIGlmIChzaXplLndpZHRoKCkgPiBtX21h
eFRleHR1cmVTaXplIHx8IHNpemUuaGVpZ2h0KCkgPiBtX21heFRleHR1cmVTaXplKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIG1fY3VycmVudE1lbW9yeVVzZUJ5dGVzICs9IFRleHR1cmVNYW5h
Z2VyOjptZW1vcnlVc2VCeXRlcyhzaXplLCBmb3JtYXQpOworICAgIG1fY3VycmVudE1lbW9yeVVz
ZUJ5dGVzICs9IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5dGVzKHNpemUsIGZvcm1hdCk7CiAKICAg
ICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSAwOwogICAgIEdMQyhtX2NvbnRleHQsIHRleHR1cmVJZCA9
IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB1bnNpZ25l
ZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgR0MzRGVudW0gZgogCiB2b2lkIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRl
VGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVt
IGZvcm1hdCkKIHsKLSAgICBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlcyAtPSBUZXh0dXJlTWFuYWdl
cjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKKyAgICBtX2N1cnJlbnRNZW1vcnlVc2VC
eXRlcyAtPSBDQ1RleHR1cmU6Om1lbW9yeVNpemVCeXRlcyhzaXplLCBmb3JtYXQpOwogICAgIEdM
QyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSWQpKTsKICAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkKSk7CiAgICAg
QVNTRVJUKG1fYWxsb2NhdGVkVGV4dHVyZUlkcy5jb250YWlucyh0ZXh0dXJlSWQpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5n
VGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKaW5kZXggNzhlZjQwZDFiNDNlN2IzNDI0
NTRhNTJhMTQwMDI0YzU5MTgxOWZlMi4uMzhmN2NhMDQzYjRmZDk3MDViNTliZDMzZjNhOWJiNzAx
NTYwZDEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKQEAgLTI1
LDcgKzI1LDcgQEAKICNpZm5kZWYgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yX2gKICNkZWZpbmUg
VHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yX2gKIAotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5LmNwcAppbmRleCA3MzFmNzcwYzA5NjYzMTg1OGEwYWMzYzRiYzhmM2Q3MTNmNjcxMjY4Li5i
ZTE5OTgzZWZiNjI2MzZjMDU2YjY5MDY3OWY1ZmQwMWU5NmY0OGRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1DYW52YXMuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1
ZGUgImNjL0NDRGVidWdSZWN0SGlzdG9yeS5oIgogI2luY2x1ZGUgImNjL0NDRnJhbWVSYXRlQ291
bnRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGQ2NTM5N2VlZDE5MzM1OGNiZGQ0M2NjMTUwNTJjYWZm
ZDcyM2JhMWQuLjFhNDM1OWVkYmQ0Njk3NzlhMDdmNDBmZDYwOWRhMmU3MmY4M2M3YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2lu
Y2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAi
VHJhY2VFdmVudC5oIgogI2luY2x1ZGUgIlRyZWVTeW5jaHJvbml6ZXIuaCIKQEAgLTUyOSw3ICs1
MjgsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IExh
eWVyTGlzdCYgdXBkYXRlTGlzdCkKICAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFj
ZUxheWVyID0gdXBkYXRlTGlzdFtpXS5nZXQoKTsKICAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9t
aXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7
CiAKLSAgICAgICAgc2l6ZV90IGJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVz
KHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkuc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSk7CisgICAgICAgIHNpemVfdCBieXRlcyA9IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5dGVz
KHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkuc2l6ZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSk7CiAgICAgICAgIGNvbnRlbnRzVGV4dHVyZUJ5dGVzICs9IGJ5dGVzOwogCiAgICAgICAg
IGlmIChyZW5kZXJTdXJmYWNlLT5iYWNrZ3JvdW5kRmlsdGVycygpLmlzRW1wdHkoKSkKQEAgLTUz
OCw3ICs1MzcsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJpb3JpdGl6ZVRleHR1cmVzKGNv
bnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCkKICAgICAgICAgaWYgKGJ5dGVzID4gbWF4QmFja2dy
b3VuZFRleHR1cmVCeXRlcykKICAgICAgICAgICAgIG1heEJhY2tncm91bmRUZXh0dXJlQnl0ZXMg
PSBieXRlczsKICAgICAgICAgaWYgKCFyZWFkYmFja0J5dGVzKQotICAgICAgICAgICAgcmVhZGJh
Y2tCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhtX2RldmljZVZpZXdwb3J0
U2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICAgICAgcmVhZGJhY2tCeXRl
cyA9IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5dGVzKG1fZGV2aWNlVmlld3BvcnRTaXplLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAgfQogICAgIHNpemVfdCByZW5kZXJTdXJmYWNlc0J5
dGVzID0gcmVhZGJhY2tCeXRlcyArIG1heEJhY2tncm91bmRUZXh0dXJlQnl0ZXMgKyBjb250ZW50
c1RleHR1cmVCeXRlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA5NzA2MGY3
MzdhNjk1YmRhOTgzNmJmZWJjNDdlOGE4ZWU0NjJjNTBiLi43YmIwZjY4YzYwNTZjNTdiNzE3MGNl
ODM1NDFhOWQ5OTI4NTU2NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNTEs
NyArNTEsNiBAQCBjbGFzcyBDQ0xheWVyQ2hyb21pdW07CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJ
bXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudDsKIGNsYXNzIENDVGV4dHVyZVVw
ZGF0ZXI7Ci1jbGFzcyBNYW5hZ2VkVGV4dHVyZTsKIGNsYXNzIFJlZ2lvbjsKIGNsYXNzIFRleHR1
cmVBbGxvY2F0b3I7CiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDc4ZTcwOTE0ZGExMjhhN2Q4MjYw
ZTUwZDNlOWIzMGI1ODkyYzhmNDMuLmE4NjUzMGM1ZjM0MTMzYjc1M2VlZGViNzFlM2U1ODg3MjUx
MzA1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NPdmVyZHJhd01ldHJpY3MuaCIKICNpbmNsdWRlICJjYy9DQ1BhZ2VTY2FsZUFuaW1h
dGlvbi5oIgorI2luY2x1ZGUgImNjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIgogI2lu
Y2x1ZGUgImNjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NTZXR0aW5n
cy5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKQEAgLTEyMiw3ICsxMjMs
NyBAQCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpDQ0xheWVyVHJlZUhvc3RJbXBsKGNvbnN0IENDTGF5
ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzLCBDQwogICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rvcigx
KQogICAgICwgbV92aXNpYmxlKHRydWUpCiAgICAgLCBtX2NvbnRlbnRzVGV4dHVyZXNXZXJlUHVy
Z2VkU2luY2VMYXN0Q29tbWl0KGZhbHNlKQotICAgICwgbV9tZW1vcnlBbGxvY2F0aW9uTGltaXRC
eXRlcyhUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpKQorICAg
ICwgbV9tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmRlZmF1bHRNZW1vcnlBbGxvY2F0aW9uTGltaXQoKSkKICAgICAsIG1faGVhZHNVcERpc3Bs
YXkoQ0NIZWFkc1VwRGlzcGxheTo6Y3JlYXRlKCkpCiAgICAgLCBtX3BhZ2VTY2FsZSgxKQogICAg
ICwgbV9wYWdlU2NhbGVEZWx0YSgxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1
cmUuY3BwCmluZGV4IGQ4Y2MxNzQ4NWE5MGY5MjAyZDE3YTZmMTg1MjIwYWE2MmU3Njc0M2YuLmE2
YTMwODEyYmExYTYwM2Q3ZjZhMzY5YzM1YTMyMzMxODU4MGQ2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0
dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ByaW9yaXRpemVkVGV4dHVyZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJDQ1ByaW9yaXR5Q2FsY3Vs
YXRvci5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlRl
eHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CkBAIC0zOCwxNiArMzksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ0NQcmlvcml0
aXplZFRleHR1cmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlciogbWFuYWdlciwgSW50U2l6ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQpCiAgICAgOiBtX3Np
emUoc2l6ZSkKICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKLSAgICAsIG1fbWVtb3J5U2l6ZUJ5dGVz
KDApCisgICAgLCBtX2J5dGVzKDApCiAgICAgLCBtX3ByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxh
dG9yOjpsb3dlc3RQcmlvcml0eSgpKQogICAgICwgbV9pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoZmFs
c2UpCi0gICAgLCBtX2N1cnJlbnRCYWNraW5nKDApCisgICAgLCBtX2JhY2tpbmcoMCkKICAgICAs
IG1fbWFuYWdlcigwKQogewogICAgIC8vIG1fbWFuYWdlciBpcyBzZXQgaW4gcmVnaXN0ZXJUZXh0
dXJlKCkgc28gdmFsaWRpdHkgY2FuIGJlIGNoZWNrZWQuCiAgICAgQVNTRVJUKGZvcm1hdCB8fCBz
aXplLmlzRW1wdHkoKSk7CiAgICAgaWYgKGZvcm1hdCkKLSAgICAgICAgbV9tZW1vcnlTaXplQnl0
ZXMgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKKyAgICAg
ICAgbV9ieXRlcyA9IENDVGV4dHVyZTo6bWVtb3J5U2l6ZUJ5dGVzKHNpemUsIGZvcm1hdCk7CiAg
ICAgaWYgKG1hbmFnZXIpCiAgICAgICAgIG1hbmFnZXItPnJlZ2lzdGVyVGV4dHVyZSh0aGlzKTsK
IH0KQEAgLTc0LDggKzc1LDggQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6c2V0RGltZW5z
aW9ucyhJbnRTaXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKICAgICAgICAgbV9pc0Fib3ZlUHJp
b3JpdHlDdXRvZmYgPSBmYWxzZTsKICAgICAgICAgbV9mb3JtYXQgPSBmb3JtYXQ7CiAgICAgICAg
IG1fc2l6ZSA9IHNpemU7Ci0gICAgICAgIG1fbWVtb3J5U2l6ZUJ5dGVzID0gVGV4dHVyZU1hbmFn
ZXI6Om1lbW9yeVVzZUJ5dGVzKHNpemUsIGZvcm1hdCk7Ci0gICAgICAgIEFTU0VSVChtX21hbmFn
ZXIgfHwgIW1fY3VycmVudEJhY2tpbmcpOworICAgICAgICBtX2J5dGVzID0gQ0NUZXh0dXJlOjpt
ZW1vcnlTaXplQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKKyAgICAgICAgQVNTRVJUKG1fbWFuYWdlciB8
fCAhbV9iYWNraW5nKTsKICAgICAgICAgaWYgKG1fbWFuYWdlcikKICAgICAgICAgICAgIG1fbWFu
YWdlci0+cmV0dXJuQmFja2luZ1RleHR1cmUodGhpcyk7CiAgICAgfQpAQCAtOTcsOCArOTgsOCBA
QCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjphY3F1aXJlQmFja2luZ1RleHR1cmUoVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKQogCiB1bnNpZ25lZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6
dGV4dHVyZUlkKCkKIHsKLSAgICBpZiAobV9jdXJyZW50QmFja2luZykKLSAgICAgICAgcmV0dXJu
IG1fY3VycmVudEJhY2tpbmctPnRleHR1cmVJZCgpOworICAgIGlmIChtX2JhY2tpbmcpCisgICAg
ICAgIHJldHVybiBtX2JhY2tpbmctPmlkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwNyw3
ICsxMDgsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShDQ0dyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgVGV4dHVyZUFsbG9jYQogICAgIEFTU0VSVChtX2lzQWJvdmVQ
cmlvcml0eUN1dG9mZik7CiAgICAgaWYgKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKQogICAgICAg
ICBhY3F1aXJlQmFja2luZ1RleHR1cmUoYWxsb2NhdG9yKTsKLSAgICBBU1NFUlQobV9jdXJyZW50
QmFja2luZyk7CisgICAgQVNTRVJUKG1fYmFja2luZyk7CiAgICAgV2ViS2l0OjpXZWJHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CiAgICAgaWYgKCFj
b250ZXh0M2QpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNv
ZnR3YXJlIGNvbXBvc2l0aW5nLgpAQCAtMTIxLDcgKzEyMiw3IEBAIHZvaWQgQ0NQcmlvcml0aXpl
ZFRleHR1cmU6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBUZXh0CiAgICAgQVNTRVJUKG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmKTsKICAgICBpZiAobV9p
c0Fib3ZlUHJpb3JpdHlDdXRvZmYpCiAgICAgICAgIGFjcXVpcmVCYWNraW5nVGV4dHVyZShhbGxv
Y2F0b3IpOwotICAgIEFTU0VSVChtX2N1cnJlbnRCYWNraW5nKTsKKyAgICBBU1NFUlQobV9iYWNr
aW5nKTsKICAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M2QgPSBjb250
ZXh0LT5jb250ZXh0M0QoKTsKICAgICBpZiAoIWNvbnRleHQzZCkgewogICAgICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgcGF0aCBmb3Igc29mdHdhcmUgY29tcG9zaXRpbmcuCkBAIC0xMzAs
MTIgKzEzMSwyNiBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1
cmUyRChDQ0dyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dAogICAgIGNvbnRleHQzZC0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCB0ZXh0dXJlSWQoKSwgMCk7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OnNl
dEN1cnJlbnRCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nKQor
dm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6bGluayhCYWNraW5nKiBiYWNraW5nKQogewotICAg
IGlmIChtX2N1cnJlbnRCYWNraW5nID09IGJhY2tpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBt
X2N1cnJlbnRCYWNraW5nID0gYmFja2luZzsKKyAgICBBU1NFUlQoYmFja2luZyk7CisgICAgQVNT
RVJUKCFiYWNraW5nLT5tX293bmVyKTsKKyAgICBBU1NFUlQoIW1fYmFja2luZyk7CisKKyAgICBt
X2JhY2tpbmcgPSBiYWNraW5nOworICAgIG1fYmFja2luZy0+bV9vd25lciA9IHRoaXM7Cit9CisK
K3ZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmU6OnVubGluaygpCit7CisgICAgQVNTRVJUKG1fYmFj
a2luZyk7CisgICAgQVNTRVJUKG1fYmFja2luZy0+bV9vd25lciA9PSB0aGlzKTsKKworICAgIG1f
YmFja2luZy0+bV9vd25lciA9IDA7CisgICAgbV9iYWNraW5nID0gMDsKIH0KIAorCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlLmgK
aW5kZXggOWVhMmZiMWU0MTU3OWY2NDUwNGY2YTNjOWJiMGQ3YmUwYjMyZTFmMi4uZGM4NTc5MzI0
MTgzOTZmZGEzNzg5MDEwNTM1NWM5MjRhMmZmMjBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9y
aXRpemVkVGV4dHVyZS5oCkBAIC0yNiwxNiArMjYsMTcgQEAKICNkZWZpbmUgQ0NQcmlvcml0aXpl
ZFRleHR1cmVfaAogCiAjaW5jbHVkZSAiQ0NQcmlvcml0eUNhbGN1bGF0b3IuaCIKKyNpbmNsdWRl
ICJDQ1RleHR1cmUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUg
IkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hbmFn
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI7CiBjbGFzcyBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjsKIGNsYXNzIENDR3JhcGhpY3ND
b250ZXh0OworY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIAogY2xhc3MgQ0NQcmlvcml0aXplZFRl
eHR1cmUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUHJpb3JpdGl6ZWRUZXh0dXJlKTsK
QEAgLTU3LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGltZW5zaW9ucyhJbnRTaXpl
LCBHQzNEZW51bSBmb3JtYXQpOwogICAgIEdDM0RlbnVtIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZm9ybWF0OyB9CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
Ci0gICAgc2l6ZV90IG1lbW9yeVNpemVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5U2l6
ZUJ5dGVzOyB9CisgICAgc2l6ZV90IGJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlczsgfQog
CiAgICAgLy8gU2V0IHByaW9yaXR5IGZvciB0aGUgcmVxdWVzdGVkIHRleHR1cmUuIAogICAgIHZv
aWQgc2V0UmVxdWVzdFByaW9yaXR5KGludCBwcmlvcml0eSkgeyBtX3ByaW9yaXR5ID0gcHJpb3Jp
dHk7IH0KQEAgLTY4LDEyICs2OSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5BY3F1aXJlQmFj
a2luZ1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2lzQWJvdmVQcmlvcml0eUN1dG9mZjsgfQog
CiAgICAgLy8gVGhpcyByZXR1cm5zIHdoZXRoZXIgd2Ugc3RpbGwgaGF2ZSBhIGJhY2tpbmcgdGV4
dHVyZS4gVGhpcyBjYW4gY29udGludWUKLSAgICAvLyB0byBiZSB0cnVlIGV2ZW4gYWZ0ZXIgY2Fu
QXF1aXJlQmFja2luZ1RleHR1cmUoKSBiZWNvbWVzIGZhbHNlLiBJbiB0aGlzCisgICAgLy8gdG8g
YmUgdHJ1ZSBldmVuIGFmdGVyIGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIGJlY29tZXMgZmFs
c2UuIEluIHRoaXMKICAgICAvLyBjYXNlIHRoZSB0ZXh0dXJlIGNhbiBiZSB1c2VkIGJ1dCBzaG91
bGRuJ3QgYmUgdXBkYXRlZCBzaW5jZSBpdCB3aWxsIGdldAogICAgIC8vIHRha2VuIGF3YXkgInNv
b24iLgotICAgIGJvb2wgaGF2ZUJhY2tpbmdUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gISFjdXJy
ZW50QmFja2luZygpOyB9CisgICAgYm9vbCBoYXZlQmFja2luZ1RleHR1cmUoKSBjb25zdCB7IHJl
dHVybiAhIWJhY2tpbmcoKTsgfQogCi0gICAgLy8gSWYgY2FuQXF1aXJlQmFja2luZ1RleHR1cmUo
KSBpcyB0cnVlIGFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIHdpbGwgYWNxdWlyZQorICAgIC8vIElm
IGNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIGlzIHRydWUgYWNxdWlyZUJhY2tpbmdUZXh0dXJl
KCkgd2lsbCBhY3F1aXJlCiAgICAgLy8gYSBiYWNraW5nIHRleHR1cmUgZm9yIHVzZS4gQ2FsbCB0
aGlzIHdoZW5ldmVyIHRoZSB0ZXh0dXJlIGlzIGFjdHVhbGx5IG5lZWRlZC4KICAgICB2b2lkIGFj
cXVpcmVCYWNraW5nVGV4dHVyZShUZXh0dXJlQWxsb2NhdG9yKik7CiAKQEAgLTgxLDEzICs4Miwx
MyBAQCBwdWJsaWM6CiAgICAgLy8gICAgICAgIChhbGwgdGV4dHVyZXMgYXJlIHZpc2libGUpIGJ1
dCB3ZSBjYW4gc3RpbGwgc3F1ZWV6ZSBpbnRvIHRoZSBsaW1pdAogICAgIC8vICAgICAgICBieSBu
b3QgcGFpbnRpbmcgb2NjbHVkZWQgdGV4dHVyZXMuIEluIHRoaXMgY2FzZSB0aGUgbWFuYWdlcgog
ICAgIC8vICAgICAgICByZWZ1c2VzIGFsbCB2aXNpYmxlIHRleHR1cmVzIGFuZCByZXF1ZXN0TGF0
ZSgpIHdpbGwgZW5hYmxlCi0gICAgLy8gICAgICAgIGNhbkFxdWlyZUJhY2tpbmdUZXh0dXJlKCkg
b24gYSBjYWxsLW9yZGVyIGJhc2lzLiBXZSBtaWdodCB3YW50IHRvCisgICAgLy8gICAgICAgIGNh
bkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpIG9uIGEgY2FsbC1vcmRlciBiYXNpcy4gV2UgbWlnaHQg
d2FudCB0bwogICAgIC8vICAgICAgICBqdXN0IHJlbW92ZSB0aGlzIGluIHRoZSBmdXR1cmUgKGNh
cmVmdWxseSkgYW5kIGp1c3QgbWFrZSBzdXJlIHdlIGRvbid0CiAgICAgLy8gICAgICAgIHJlZ3Jl
c3MgT09NcyBzaXR1YXRpb25zLgogICAgIGJvb2wgcmVxdWVzdExhdGUoKTsKIAotICAgIC8vIFRo
ZXNlIGZ1bmN0aW9ucyB3aWxsIGFxdWlyZSB0aGUgdGV4dHVyZSBpZiBwb3NzaWJsZS4gSWYgbmVp
dGhlciBoYXZlQmFja2luZ1RleHR1cmUoKQotICAgIC8vIG5vciBjYW5BcXVpcmVCYWNraW5nVGV4
dHVyZSgpIGlzIHRydWUsIGFuIElEIG9mIHplcm8gd2lsbCBiZSB1c2VkL3JldHVybmVkLgorICAg
IC8vIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFjcXVpcmUgdGhlIHRleHR1cmUgaWYgcG9zc2libGUu
IElmIG5laXRoZXIgaGF2ZUJhY2tpbmdUZXh0dXJlKCkKKyAgICAvLyBub3IgY2FuQWNxdWlyZUJh
Y2tpbmdUZXh0dXJlKCkgaXMgdHJ1ZSwgYW4gSUQgb2YgemVybyB3aWxsIGJlIHVzZWQvcmV0dXJu
ZWQuCiAgICAgdm9pZCBiaW5kVGV4dHVyZShDQ0dyYXBoaWNzQ29udGV4dCosIFRleHR1cmVBbGxv
Y2F0b3IqKTsKICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKENDR3JhcGhpY3NDb250ZXh0
KiwgVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpOwpAQCAtOTUs
MzQgKzk2LDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjsKIAotICAgIGNsYXNzIEJhY2tpbmcgeworICAgIGNsYXNzIEJh
Y2tpbmcgOiBwdWJsaWMgQ0NUZXh0dXJlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QmFja2luZyk7CiAgICAgcHVibGljOgotICAgICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3NpemU7IH0KLSAgICAgICAgR0MzRGVudW0gZm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXQ7IH0KLSAgICAgICAgc2l6ZV90IG1lbW9yeVNpemVCeXRlcygpIGNvbnN0IHsgcmV0
dXJuIG1fbWVtb3J5U2l6ZUJ5dGVzOyB9Ci0gICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9Ci0gICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJl
KiBjdXJyZW50VGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFRleHR1cmU7IH0KLSAg
ICAgICAgdm9pZCBzZXRDdXJyZW50VGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogY3VycmVu
dCkgeyBtX2N1cnJlbnRUZXh0dXJlID0gY3VycmVudDsgfQorICAgICAgICBCYWNraW5nKHVuc2ln
bmVkIGlkLCBJbnRTaXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKKyAgICAgICAgICAgIDogQ0NU
ZXh0dXJlKGlkLCBzaXplLCBmb3JtYXQpLCBtX293bmVyKDApIHsgfQorICAgICAgICB+QmFja2lu
ZygpIHsgQVNTRVJUKCFtX293bmVyKTsgfQogCisgICAgICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJl
KiBvd25lcigpIHsgcmV0dXJuIG1fb3duZXI7IH0KICAgICBwcml2YXRlOgotICAgICAgICBmcmll
bmQgY2xhc3MgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOwotCi0gICAgICAgIEJhY2tpbmco
SW50U2l6ZSBzaXplLCBHQzNEZW51bSBmb3JtYXQsIHVuc2lnbmVkIHRleHR1cmVJZCkKLSAgICAg
ICAgICAgIDogbV9zaXplKHNpemUpCi0gICAgICAgICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKLSAg
ICAgICAgICAgICwgbV9tZW1vcnlTaXplQnl0ZXMoVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5
dGVzKHNpemUsIGZvcm1hdCkpCi0gICAgICAgICAgICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkK
LSAgICAgICAgICAgICwgbV9wcmlvcml0eShDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJp
b3JpdHkoKSkKLSAgICAgICAgICAgICwgbV9jdXJyZW50VGV4dHVyZSgwKSB7IH0KLSAgICAgICAg
fkJhY2tpbmcoKSB7IEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZSk7IH0KLQotICAgICAgICBJbnRT
aXplIG1fc2l6ZTsKLSAgICAgICAgR0MzRGVudW0gbV9mb3JtYXQ7Ci0gICAgICAgIHNpemVfdCBt
X21lbW9yeVNpemVCeXRlczsKLSAgICAgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7Ci0gICAgICAg
IGludCBtX3ByaW9yaXR5OwotICAgICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZSogbV9jdXJyZW50
VGV4dHVyZTsKKyAgICAgICAgZnJpZW5kIGNsYXNzIENDUHJpb3JpdGl6ZWRUZXh0dXJlOworICAg
ICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZSogbV9vd25lcjsKICAgICB9OwogCiAgICAgQ0NQcmlv
cml0aXplZFRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiwgSW50U2l6ZSwgR0Mz
RGVudW0gZm9ybWF0KTsKQEAgLTEzMSwxNyArMTE1LDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRBYm92ZVByaW9yaXR5Q3V0b2ZmKGJvb2wgaXNBYm92ZVByaW9yaXR5Q3V0b2ZmKSB7IG1faXNB
Ym92ZVByaW9yaXR5Q3V0b2ZmID0gaXNBYm92ZVByaW9yaXR5Q3V0b2ZmOyB9CiAgICAgdm9pZCBz
ZXRNYW5hZ2VySW50ZXJuYWwoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7
IG1fbWFuYWdlciA9IG1hbmFnZXI7IH0KIAotICAgIEJhY2tpbmcqIGN1cnJlbnRCYWNraW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50QmFja2luZzsgfQotICAgIHZvaWQgc2V0Q3VycmVudEJh
Y2tpbmcoQmFja2luZyopOworICAgIEJhY2tpbmcqIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tpbmc7IH0KKyAgICB2b2lkIGxpbmsoQmFja2luZyopOworICAgIHZvaWQgdW5saW5rKCk7
CiAKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBHQzNEZW51bSBtX2Zvcm1hdDsKLSAgICBzaXpl
X3QgbV9tZW1vcnlTaXplQnl0ZXM7CisgICAgc2l6ZV90IG1fYnl0ZXM7CiAKICAgICBzaXplX3Qg
bV9wcmlvcml0eTsKICAgICBib29sIG1faXNBYm92ZVByaW9yaXR5Q3V0b2ZmOwogCi0gICAgQmFj
a2luZyogbV9jdXJyZW50QmFja2luZzsKKyAgICBCYWNraW5nKiBtX2JhY2tpbmc7CiAgICAgQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBtX21hbmFnZXI7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcAppbmRleCA1YWY1M2RmMDRi
ZGViNjdlMmEwZWNjMWEzNGE5ZWE2YmNlOTlmMzI1Li4wMTk1YjZmMWNkZWFiNTA2ZjAzMzI3ODU2
ODM5OGRiNjg0MTc3ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4
dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyhzaXplX3QgcmVuZGVyU3VyZmFjZXNNZW1v
cnkKICAgICAgICAgICAgIHJlc2VydmVkUmVuZGVyU3VyZmFjZXMgPSB0cnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgc2l6ZV90IG5ld01lbW9yeUJ5dGVzID0gbWVtb3J5Qnl0ZXMgKyAoKml0KS0+
bWVtb3J5U2l6ZUJ5dGVzKCk7CisgICAgICAgIHNpemVfdCBuZXdNZW1vcnlCeXRlcyA9IG1lbW9y
eUJ5dGVzICsgKCppdCktPmJ5dGVzKCk7CiAgICAgICAgIGlmIChuZXdNZW1vcnlCeXRlcyA+IG1f
bWVtb3J5QXZhaWxhYmxlQnl0ZXMpIHsKICAgICAgICAgICAgIG1fcHJpb3JpdHlDdXRvZmYgPSAo
Kml0KS0+cmVxdWVzdFByaW9yaXR5KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExNCw3ICsx
MTQsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cHJpb3JpdGl6ZVRleHR1
cmVzKHNpemVfdCByZW5kZXJTdXJmYWNlc01lbW9yeQogICAgICAgICBib29sIGlzQWJvdmVQcmlv
cml0eUN1dG9mZiA9IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpwcmlvcml0eUlzSGlnaGVyKCgqaXQp
LT5yZXF1ZXN0UHJpb3JpdHkoKSwgbV9wcmlvcml0eUN1dG9mZik7CiAgICAgICAgICgqaXQpLT5z
ZXRBYm92ZVByaW9yaXR5Q3V0b2ZmKGlzQWJvdmVQcmlvcml0eUN1dG9mZik7CiAgICAgICAgIGlm
IChpc0Fib3ZlUHJpb3JpdHlDdXRvZmYpCi0gICAgICAgICAgICBtX21lbW9yeUFib3ZlQ3V0b2Zm
Qnl0ZXMgKz0gKCppdCktPm1lbW9yeVNpemVCeXRlcygpOworICAgICAgICAgICAgbV9tZW1vcnlB
Ym92ZUN1dG9mZkJ5dGVzICs9ICgqaXQpLT5ieXRlcygpOwogICAgIH0KICAgICBBU1NFUlQobV9t
ZW1vcnlBYm92ZUN1dG9mZkJ5dGVzIDw9IG1fbWVtb3J5QXZhaWxhYmxlQnl0ZXMpOwogCkBAIC0x
NTcsMTUgKzE1NywxNSBAQCBib29sIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVxdWVz
dExhdGUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUpCiAgICAgaWYgKENDUHJpb3JpdHlD
YWxjdWxhdG9yOjpwcmlvcml0eUlzTG93ZXIodGV4dHVyZS0+cmVxdWVzdFByaW9yaXR5KCksIG1f
cHJpb3JpdHlDdXRvZmYpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzaXplX3QgbmV3
TWVtb3J5Qnl0ZXMgPSBtX21lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMgKyB0ZXh0dXJlLT5tZW1vcnlT
aXplQnl0ZXMoKTsKKyAgICBzaXplX3QgbmV3TWVtb3J5Qnl0ZXMgPSBtX21lbW9yeUFib3ZlQ3V0
b2ZmQnl0ZXMgKyB0ZXh0dXJlLT5ieXRlcygpOwogICAgIGlmIChuZXdNZW1vcnlCeXRlcyA+IG1f
bWVtb3J5QXZhaWxhYmxlQnl0ZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fbWVt
b3J5QWJvdmVDdXRvZmZCeXRlcyA9IG5ld01lbW9yeUJ5dGVzOwogICAgIHRleHR1cmUtPnNldEFi
b3ZlUHJpb3JpdHlDdXRvZmYodHJ1ZSk7Ci0gICAgaWYgKHRleHR1cmUtPmN1cnJlbnRCYWNraW5n
KCkpIHsKLSAgICAgICAgbV9iYWNraW5ncy5yZW1vdmUodGV4dHVyZS0+Y3VycmVudEJhY2tpbmco
KSk7Ci0gICAgICAgIG1fYmFja2luZ3MuYWRkKHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpOwor
ICAgIGlmICh0ZXh0dXJlLT5iYWNraW5nKCkpIHsKKyAgICAgICAgbV9iYWNraW5ncy5yZW1vdmUo
dGV4dHVyZS0+YmFja2luZygpKTsKKyAgICAgICAgbV9iYWNraW5ncy5hZGQodGV4dHVyZS0+YmFj
a2luZygpKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNzMsNyArMTczLDcgQEAg
Ym9vbCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RMYXRlKENDUHJpb3JpdGl6
ZWRUZXh0dXJlKiB0ZXh0dXJlKQogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFj
cXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJl
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAgQVNTRVJUKHRleHR1cmUtPmlz
QWJvdmVQcmlvcml0eUN1dG9mZigpKTsKLSAgICBpZiAodGV4dHVyZS0+Y3VycmVudEJhY2tpbmco
KSB8fCAhdGV4dHVyZS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCisgICAgaWYgKHRleHR1cmUt
PmJhY2tpbmcoKSB8fCAhdGV4dHVyZS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIEZpbmQgYSBiYWNraW5nIGJlbG93LCBieSBlaXRoZXIgcmVjeWNs
aW5nIG9yIGFsbG9jYXRpbmcuCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVk
VGV4dHVyZU1hbmFnZXI6OmFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKENDUHJpb3JpdGl6
ZWRUZXgKIAogICAgIC8vIEZpcnN0IHRyeSB0byByZWN5Y2xlCiAgICAgZm9yIChCYWNraW5nU2V0
OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQo
KTsgKytpdCkgewotICAgICAgICBpZiAoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkgJiYgKCppdCkt
PmN1cnJlbnRUZXh0dXJlKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQorICAgICAgICBpZiAo
KCppdCktPm93bmVyKCkgJiYgKCppdCktPm93bmVyKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICgoKml0KS0+c2l6ZSgpID09IHRleHR1
cmUtPnNpemUoKSAmJiAoKml0KS0+Zm9ybWF0KCkgPT0gdGV4dHVyZS0+Zm9ybWF0KCkpIHsKICAg
ICAgICAgICAgIGJhY2tpbmcgPSAoKml0KTsKQEAgLTE5MSwxNCArMTkxLDE0IEBAIHZvaWQgQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChD
Q1ByaW9yaXRpemVkVGV4CiAKICAgICAvLyBPdGhlcndpc2UgcmVkdWNlIG1lbW9yeSBhbmQganVz
dCBhbGxvY2F0ZSBhIG5ldyBiYWNraW5nIHRleHVyZXMuCiAgICAgaWYgKCFiYWNraW5nKSB7Ci0g
ICAgICAgIHJlZHVjZU1lbW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+bWVt
b3J5U2l6ZUJ5dGVzKCksIGFsbG9jYXRvcik7CisgICAgICAgIHJlZHVjZU1lbW9yeShtX21lbW9y
eUF2YWlsYWJsZUJ5dGVzIC0gdGV4dHVyZS0+Ynl0ZXMoKSwgYWxsb2NhdG9yKTsKICAgICAgICAg
YmFja2luZyA9IGNyZWF0ZUJhY2tpbmcodGV4dHVyZS0+c2l6ZSgpLCB0ZXh0dXJlLT5mb3JtYXQo
KSwgYWxsb2NhdG9yKTsKICAgICB9CiAKICAgICAvLyBNb3ZlIHRoZSB1c2VkIGJhY2tpbmcgdGV4
dHVyZSB0byB0aGUgZW5kIG9mIHRoZSBldmljdGlvbiBsaXN0LgotICAgIGlmIChiYWNraW5nLT5j
dXJyZW50VGV4dHVyZSgpKQotICAgICAgICB1bmxpbmsoYmFja2luZy0+Y3VycmVudFRleHR1cmUo
KSwgYmFja2luZyk7Ci0gICAgbGluayh0ZXh0dXJlLCBiYWNraW5nKTsKKyAgICBpZiAoYmFja2lu
Zy0+b3duZXIoKSkKKyAgICAgICAgYmFja2luZy0+b3duZXIoKS0+dW5saW5rKCk7CisgICAgdGV4
dHVyZS0+bGluayhiYWNraW5nKTsKICAgICBtX2JhY2tpbmdzLnJlbW92ZShiYWNraW5nKTsKICAg
ICBtX2JhY2tpbmdzLmFkZChiYWNraW5nKTsKIH0KQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVkdWNlTWVtb3J5KHNpemVfdCBsaW1pdEJ5dGVz
LCBUZXh0dXJlQWxsb2NhdAogICAgIC8vIG9yIHVudGlsIGFsbCBiYWNraW5ncyByZW1haW5pbmcg
YXJlIGFib3ZlIHRoZSBjdXRvZmYuCiAgICAgd2hpbGUgKG1lbW9yeVVzZUJ5dGVzKCkgPiBsaW1p
dEJ5dGVzICYmIG1fYmFja2luZ3Muc2l6ZSgpID4gMCkgewogICAgICAgICBCYWNraW5nU2V0Ojpp
dGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsKLSAgICAgICAgaWYgKCgqaXQpLT5jdXJy
ZW50VGV4dHVyZSgpICYmICgqaXQpLT5jdXJyZW50VGV4dHVyZSgpLT5pc0Fib3ZlUHJpb3JpdHlD
dXRvZmYoKSkKKyAgICAgICAgaWYgKCgqaXQpLT5vd25lcigpICYmICgqaXQpLT5vd25lcigpLT5p
c0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZXN0
cm95QmFja2luZygoKml0KSwgYWxsb2NhdG9yKTsKICAgICB9CkBAIC0yMjksOSArMjI5LDkgQEAg
dm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZHVjZU1lbW9yeShUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IpCiAgICAgLy8gYmFja2luZyB0ZXh0dXJlcyAoYW55IG1vcmUgdGhh
biAxMCUpLgogICAgIHNpemVfdCB3YXN0ZWRNZW1vcnkgPSAwOwogICAgIGZvciAoQmFja2luZ1Nl
dDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7IGl0ICE9IG1fYmFja2luZ3MuZW5k
KCk7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpKQorICAgICAg
ICBpZiAoKCppdCktPm93bmVyKCkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgd2FzdGVk
TWVtb3J5ICs9ICgqaXQpLT5tZW1vcnlTaXplQnl0ZXMoKTsKKyAgICAgICAgd2FzdGVkTWVtb3J5
ICs9ICgqaXQpLT5ieXRlcygpOwogICAgIH0KICAgICBzaXplX3QgdGVuUGVyY2VudE9mTWVtb3J5
ID0gbV9tZW1vcnlBdmFpbGFibGVCeXRlcyAvIDEwOwogICAgIGlmICh3YXN0ZWRNZW1vcnkgPD0g
dGVuUGVyY2VudE9mTWVtb3J5KQpAQCAtMjQ0LDggKzI0NCw4IEBAIHZvaWQgQ0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9yeShUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IpCiAgICAgLy8gVW5saW5rIGFuZCBkZXN0cm95IGFsbCBiYWNraW5nIHRleHR1cmVzLgogICAg
IHdoaWxlIChtX2JhY2tpbmdzLnNpemUoKSA+IDApIHsKICAgICAgICAgQmFja2luZ1NldDo6aXRl
cmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7Ci0gICAgICAgIGlmICgoKml0KS0+Y3VycmVu
dFRleHR1cmUoKSkKLSAgICAgICAgICAgIHVubGluaygoKml0KS0+Y3VycmVudFRleHR1cmUoKSwg
KCppdCkpOworICAgICAgICBpZiAoKCppdCktPm93bmVyKCkpCisgICAgICAgICAgICAoKml0KS0+
b3duZXIoKS0+dW5saW5rKCk7CiAgICAgICAgIGRlc3Ryb3lCYWNraW5nKCgqaXQpLCBhbGxvY2F0
b3IpOwogICAgIH0KIH0KQEAgLTI1OCwzMiArMjU4LDExIEBAIHZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjphbGxCYWNraW5nVGV4dHVyZXNXZXJlRGVsZXRlZCgpCiAgICAgY2xlYXJB
bGxNZW1vcnkoMCk7CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjp1bmxp
bmsoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUsIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpC
YWNraW5nKiBiYWNraW5nKQotewotICAgIEFTU0VSVCh0ZXh0dXJlICYmIGJhY2tpbmcpOwotICAg
IEFTU0VSVCh0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpID09IGJhY2tpbmcpOwotICAgIEFTU0VS
VChiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgpID09IHRleHR1cmUpOwotCi0gICAgdGV4dHVyZS0+
c2V0Q3VycmVudEJhY2tpbmcoMCk7Ci0gICAgYmFja2luZy0+c2V0Q3VycmVudFRleHR1cmUoMCk7
Ci19Ci0KLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpsaW5rKENDUHJpb3JpdGl6
ZWRUZXh0dXJlKiB0ZXh0dXJlLCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2lu
ZykKLXsKLSAgICBBU1NFUlQodGV4dHVyZSAmJiBiYWNraW5nKTsKLSAgICBBU1NFUlQoIXRleHR1
cmUtPmN1cnJlbnRCYWNraW5nKCkpOwotICAgIEFTU0VSVCghYmFja2luZy0+Y3VycmVudFRleHR1
cmUoKSk7Ci0KLSAgICB0ZXh0dXJlLT5zZXRDdXJyZW50QmFja2luZyhiYWNraW5nKTsKLSAgICBi
YWNraW5nLT5zZXRDdXJyZW50VGV4dHVyZSh0ZXh0dXJlKTsKLX0KLQotCiB2b2lkIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVnaXN0ZXJUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJl
KiB0ZXh0dXJlKQogewogICAgIEFTU0VSVCh0ZXh0dXJlKTsKICAgICBBU1NFUlQoIXRleHR1cmUt
PnRleHR1cmVNYW5hZ2VyKCkpOwotICAgIEFTU0VSVCghdGV4dHVyZS0+Y3VycmVudEJhY2tpbmco
KSk7CisgICAgQVNTRVJUKCF0ZXh0dXJlLT5iYWNraW5nKCkpOwogICAgIEFTU0VSVChtX3RleHR1
cmVzLmZpbmQodGV4dHVyZSkgPT0gbV90ZXh0dXJlcy5lbmQoKSk7CiAKICAgICB0ZXh0dXJlLT5z
ZXRNYW5hZ2VySW50ZXJuYWwodGhpcyk7CkBAIC0zMDUsMTEgKzI4NCwxMSBAQCB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6dW5yZWdpc3RlclRleHR1cmUoQ0NQcmlvcml0aXplZFRl
eHR1cmUqIHRleHR1cgogCiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmV0dXJu
QmFja2luZ1RleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUpCiB7Ci0gICAgaWYg
KHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpIHsKKyAgICBpZiAodGV4dHVyZS0+YmFja2luZygp
KSB7CiAgICAgICAgIC8vIE1vdmUgdGhlIGJhY2tpbmcgdGV4dHVyZSB0byB0aGUgZnJvbnQgZm9y
IGV2aWN0aW9uL3JlY3ljbGluZyBhbmQgdW5saW5rIGl0LgotICAgICAgICBtX2JhY2tpbmdzLnJl
bW92ZSh0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKTsKLSAgICAgICAgbV9iYWNraW5ncy5pbnNl
cnRCZWZvcmUobV9iYWNraW5ncy5iZWdpbigpLCB0ZXh0dXJlLT5jdXJyZW50QmFja2luZygpKTsK
LSAgICAgICAgdW5saW5rKHRleHR1cmUsIHRleHR1cmUtPmN1cnJlbnRCYWNraW5nKCkpOworICAg
ICAgICBtX2JhY2tpbmdzLnJlbW92ZSh0ZXh0dXJlLT5iYWNraW5nKCkpOworICAgICAgICBtX2Jh
Y2tpbmdzLmluc2VydEJlZm9yZShtX2JhY2tpbmdzLmJlZ2luKCksIHRleHR1cmUtPmJhY2tpbmco
KSk7CisgICAgICAgIHRleHR1cmUtPnVubGluaygpOwogICAgIH0KIH0KIApAQCAtMzE3LDkgKzI5
Niw4IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZUJhY2tpbmcoSW50U2l6CiB7CiAgICAgQVNTRVJUKGFsbG9jYXRvcik7
CiAKLSAgICB1bnNpZ25lZCB0ZXh0dXJlSWQgPSBhbGxvY2F0b3ItPmNyZWF0ZVRleHR1cmUoc2l6
ZSwgZm9ybWF0KTsKLSAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZyA9
IG5ldyBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyhzaXplLCBmb3JtYXQsIHRleHR1cmVJ
ZCk7Ci0gICAgbV9tZW1vcnlVc2VCeXRlcyArPSBiYWNraW5nLT5tZW1vcnlTaXplQnl0ZXMoKTsK
KyAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYmFja2luZyA9IG5ldyBDQ1ByaW9y
aXRpemVkVGV4dHVyZTo6QmFja2luZyhhbGxvY2F0b3ItPmNyZWF0ZVRleHR1cmUoc2l6ZSwgZm9y
bWF0KSwgc2l6ZSwgZm9ybWF0KTsKKyAgICBtX21lbW9yeVVzZUJ5dGVzICs9IGJhY2tpbmctPmJ5
dGVzKCk7CiAgICAgLy8gUHV0IGJhY2tpbmcgdGV4dHVyZSBhdCB0aGUgZnJvbnQgZm9yIGV2aWN0
aW9uLCBzaW5jZSBpdCBpc24ndCBpbiB1c2UgeWV0LgogICAgIG1fYmFja2luZ3MuaW5zZXJ0QmVm
b3JlKG1fYmFja2luZ3MuYmVnaW4oKSwgYmFja2luZyk7CiAgICAgcmV0dXJuIGJhY2tpbmc7CkBA
IC0zMjgsMTQgKzMwNiwxNCBAQCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVCYWNraW5nKEludFNpegogdm9pZCBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlc3Ryb3lCYWNraW5nKENDUHJpb3JpdGl6ZWRUZXh0dXJl
OjpCYWNraW5nKiBiYWNraW5nLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAg
QVNTRVJUKGJhY2tpbmcpOwotICAgIEFTU0VSVCghYmFja2luZy0+Y3VycmVudFRleHR1cmUoKSB8
fCAhYmFja2luZy0+Y3VycmVudFRleHR1cmUoKS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkpOwor
ICAgIEFTU0VSVCghYmFja2luZy0+b3duZXIoKSB8fCAhYmFja2luZy0+b3duZXIoKS0+aXNBYm92
ZVByaW9yaXR5Q3V0b2ZmKCkpOwogICAgIEFTU0VSVChtX2JhY2tpbmdzLmZpbmQoYmFja2luZykg
IT0gbV9iYWNraW5ncy5lbmQoKSk7CiAKICAgICBpZiAoYWxsb2NhdG9yKQotICAgICAgICBhbGxv
Y2F0b3ItPmRlbGV0ZVRleHR1cmUoYmFja2luZy0+dGV4dHVyZUlkKCksIGJhY2tpbmctPnNpemUo
KSwgYmFja2luZy0+Zm9ybWF0KCkpOwotICAgIGlmIChiYWNraW5nLT5jdXJyZW50VGV4dHVyZSgp
KQotICAgICAgICB1bmxpbmsoYmFja2luZy0+Y3VycmVudFRleHR1cmUoKSwgYmFja2luZyk7Ci0g
ICAgbV9tZW1vcnlVc2VCeXRlcyAtPSBiYWNraW5nLT5tZW1vcnlTaXplQnl0ZXMoKTsKKyAgICAg
ICAgYWxsb2NhdG9yLT5kZWxldGVUZXh0dXJlKGJhY2tpbmctPmlkKCksIGJhY2tpbmctPnNpemUo
KSwgYmFja2luZy0+Zm9ybWF0KCkpOworICAgIGlmIChiYWNraW5nLT5vd25lcigpKQorICAgICAg
ICBiYWNraW5nLT5vd25lcigpLT51bmxpbmsoKTsKKyAgICBtX21lbW9yeVVzZUJ5dGVzIC09IGJh
Y2tpbmctPmJ5dGVzKCk7CiAgICAgbV9iYWNraW5ncy5yZW1vdmUoYmFja2luZyk7CiAKICAgICBk
ZWxldGUgYmFja2luZzsKQEAgLTM1MSwxNSArMzI5LDE1IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyOjphc3NlcnRJbnZhcmlhbnRzKCkKIAogICAgIC8vIEJhY2tpbmdzL3RleHR1
cmVzIG11c3QgYmUgZG91Ymx5LWxpbmtlZCBhbmQgb25seSB0byBvdGhlciBiYWNraW5ncy90ZXh0
dXJlcyBpbiB0aGlzIG1hbmFnZXIuCiAgICAgZm9yIChCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9
IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQoKTsgKytpdCkgewotICAg
ICAgICBpZiAoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCht
X3RleHR1cmVzLmZpbmQoKCppdCktPmN1cnJlbnRUZXh0dXJlKCkpICE9IG1fdGV4dHVyZXMuZW5k
KCkpOwotICAgICAgICAgICAgQVNTRVJUKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpLT5jdXJyZW50
QmFja2luZygpID09ICgqaXQpKTsKKyAgICAgICAgaWYgKCgqaXQpLT5vd25lcigpKSB7CisgICAg
ICAgICAgICBBU1NFUlQobV90ZXh0dXJlcy5maW5kKCgqaXQpLT5vd25lcigpKSAhPSBtX3RleHR1
cmVzLmVuZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCgoKml0KS0+b3duZXIoKS0+YmFja2luZygp
ID09ICgqaXQpKTsKICAgICAgICAgfQogICAgIH0KICAgICBmb3IgKFRleHR1cmVTZXQ6Oml0ZXJh
dG9yIGl0ID0gbV90ZXh0dXJlcy5iZWdpbigpOyBpdCAhPSBtX3RleHR1cmVzLmVuZCgpOyArK2l0
KSB7Ci0gICAgICAgIGlmICgoKml0KS0+Y3VycmVudEJhY2tpbmcoKSkgewotICAgICAgICAgICAg
QVNTRVJUKG1fYmFja2luZ3MuZmluZCgoKml0KS0+Y3VycmVudEJhY2tpbmcoKSkgIT0gbV9iYWNr
aW5ncy5lbmQoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoKCppdCktPmN1cnJlbnRCYWNraW5nKCkt
PmN1cnJlbnRUZXh0dXJlKCkgPT0gKCppdCkpOworICAgICAgICBpZiAoKCppdCktPmJhY2tpbmco
KSkgeworICAgICAgICAgICAgQVNTRVJUKG1fYmFja2luZ3MuZmluZCgoKml0KS0+YmFja2luZygp
KSAhPSBtX2JhY2tpbmdzLmVuZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCgoKml0KS0+YmFja2lu
ZygpLT5vd25lcigpID09ICgqaXQpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzY4LDEwICsz
NDYsMTAgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFzc2VydEludmFyaWFu
dHMoKQogICAgIC8vIHJlZHVjZU1lbW9yeSB3aWxsIG5vdCBmaW5kIGFsbCB0ZXh0dXJlcyBhdmFp
bGFibGUgZm9yIGV2aWN0aW9uL3JlY3ljbGluZykuCiAgICAgYm9vbCByZWFjaGVkUHJvdGVjdGVk
ID0gZmFsc2U7CiAgICAgZm9yIChCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3Mu
YmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoKCpp
dCktPmN1cnJlbnRUZXh0dXJlKCkgJiYgKCppdCktPmN1cnJlbnRUZXh0dXJlKCktPmlzQWJvdmVQ
cmlvcml0eUN1dG9mZigpKQorICAgICAgICBpZiAoKCppdCktPm93bmVyKCkgJiYgKCppdCktPm93
bmVyKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQogICAgICAgICAgICAgcmVhY2hlZFByb3Rl
Y3RlZCA9IHRydWU7CiAgICAgICAgIGlmIChyZWFjaGVkUHJvdGVjdGVkKQotICAgICAgICAgICAg
QVNTRVJUKCgqaXQpLT5jdXJyZW50VGV4dHVyZSgpICYmICgqaXQpLT5jdXJyZW50VGV4dHVyZSgp
LT5pc0Fib3ZlUHJpb3JpdHlDdXRvZmYoKSk7CisgICAgICAgICAgICBBU1NFUlQoKCppdCktPm93
bmVyKCkgJiYgKCppdCktPm93bmVyKCktPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKTsKICAgICB9
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyLmgKaW5kZXggM2M3MGIyYjJhMDIzMDljYTE2NGQ2ZGNhOTFjZDkwYmM0MmFmZTZlZC4uOTgw
MjkxYWRiODdiMjhkYWQ1ZGM4MjNmNjc2M2I0ODYwZWViYTJmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKQEAgLTI3LDEwICsyNywxMCBAQAog
CiAjaW5jbHVkZSAiQ0NQcmlvcml0aXplZFRleHR1cmUuaCIKICNpbmNsdWRlICJDQ1ByaW9yaXR5
Q2FsY3VsYXRvci5oIgorI2luY2x1ZGUgIkNDVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIK
LSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTUwLDYgKzUwLDEzIEBAIHB1YmxpYzoKICAgICB9CiAgICAgfkNDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcigpOwogCisgICAgLy8gRklYTUUgKGh0dHA6Ly9jcmJ1Zy5jb20vMTM3MDk0KTogVGhp
cyA2NE1CIGRlZmF1bHQgaXMgYSBzdHJhZ2dsZXIgZnJvbSB0aGUKKyAgICAvLyBvbGQgdGV4dHVy
ZSBtYW5hZ2VyIGFuZCBpcyBqdXN0IHRvIGdpdmUgdXMgYSBkZWZhdWx0IG1lbW9yeSBhbGxvY2F0
aW9uIGJlZm9yZQorICAgIC8vIHdlIGdldCBhIGNhbGxiYWNrIGZyb20gdGhlIEdQVSBtZW1vcnkg
bWFuYWdlci4gV2Ugc2hvdWxkIHByb2JhYnkgZWl0aGVyOgorICAgIC8vIC0gd2FpdCBmb3IgdGhl
IGNhbGxiYWNrIGJlZm9yZSByZW5kZXJpbmcgYW55dGhpbmcgaW5zdGVhZAorICAgIC8vIC0gcHVz
aCB0aGlzIGludG8gdGhlIEdQVSBtZW1vcnkgbWFuYWdlciBzb21laG93LgorICAgIHN0YXRpYyBz
aXplX3QgZGVmYXVsdE1lbW9yeUFsbG9jYXRpb25MaW1pdCgpIHsgcmV0dXJuIDY0ICogMTAyNCAq
IDEwMjQ7IH0KKwogICAgIC8vIG1lbW9yeVVzZUJ5dGVzKCkgZGVzY3JpYmVzIHRoZSBudW1iZXIg
b2YgYnl0ZXMgdXNlZCBieSBleGlzdGluZyBhbGxvY2F0ZWQgdGV4dHVyZXMuCiAgICAgLy8gbWVt
b3J5QWJvdmVDdXRvZmZCeXRlcygpIGRlc2NyaWJlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQg
d291bGQgYmUgdXNlZCBpZiBhbGwKICAgICAvLyB0ZXh0dXJlcyB0aGF0IGFyZSBhYm92ZSB0aGUg
Y3V0b2ZmIHdlcmUgYWxsb2NhdGVkLgpAQCAtOTEsOCArOTgsOCBAQCBwcml2YXRlOgogICAgIC8v
IENvbXBhcmUgYmFja2luZ3MuIExvd2VzdCBwcmlvcml0eSBmaXJzdC4KICAgICBzdGF0aWMgaW5s
aW5lIGJvb2wgY29tcGFyZUJhY2tpbmdzKENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBh
LCBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogYikKICAgICB7Ci0gICAgICAgIGludCBw
cmlvcml0eUEgPSBhLT5jdXJyZW50VGV4dHVyZSgpID8gYS0+Y3VycmVudFRleHR1cmUoKS0+cmVx
dWVzdFByaW9yaXR5KCkgOiBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJpb3JpdHkoKTsK
LSAgICAgICAgaW50IHByaW9yaXR5QiA9IGItPmN1cnJlbnRUZXh0dXJlKCkgPyBiLT5jdXJyZW50
VGV4dHVyZSgpLT5yZXF1ZXN0UHJpb3JpdHkoKSA6IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dl
c3RQcmlvcml0eSgpOworICAgICAgICBpbnQgcHJpb3JpdHlBID0gYS0+b3duZXIoKSA/IGEtPm93
bmVyKCktPnJlcXVlc3RQcmlvcml0eSgpIDogQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFBy
aW9yaXR5KCk7CisgICAgICAgIGludCBwcmlvcml0eUIgPSBiLT5vd25lcigpID8gYi0+b3duZXIo
KS0+cmVxdWVzdFByaW9yaXR5KCkgOiBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJpb3Jp
dHkoKTsKICAgICAgICAgaWYgKHByaW9yaXR5QSA9PSBwcmlvcml0eUIpCiAgICAgICAgICAgICBy
ZXR1cm4gYSA8IGI7CiAgICAgICAgIHJldHVybiBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6cHJpb3Jp
dHlJc0xvd2VyKHByaW9yaXR5QSwgcHJpb3JpdHlCKTsKQEAgLTEwMiw5ICsxMDksNiBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCByZWR1Y2VNZW1vcnkoc2l6ZV90IGxpbWl0LCBUZXh0dXJlQWxsb2Nh
dG9yKik7CiAKLSAgICB2b2lkIGxpbmsoQ0NQcmlvcml0aXplZFRleHR1cmUqLCBDQ1ByaW9yaXRp
emVkVGV4dHVyZTo6QmFja2luZyopOwotICAgIHZvaWQgdW5saW5rKENDUHJpb3JpdGl6ZWRUZXh0
dXJlKiwgQ0NQcmlvcml0aXplZFRleHR1cmU6OkJhY2tpbmcqKTsKLQogICAgIENDUHJpb3JpdGl6
ZWRUZXh0dXJlOjpCYWNraW5nKiBjcmVhdGVCYWNraW5nKEludFNpemUsIEdDM0RlbnVtIGZvcm1h
dCwgVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZvaWQgZGVzdHJveUJhY2tpbmcoQ0NQcmlvcml0
aXplZFRleHR1cmU6OkJhY2tpbmcqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdHlD
YWxjdWxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ByaW9yaXR5Q2FsY3VsYXRvci5oCmluZGV4IDY4YTIyNWJlMGI5ZWYzMjY1ZjBmODk4YTYy
ZmRjNThkY2NlZmI3YTYuLmE5MGEwNzM5MDJiMmM3NjhiYmNhNzkyN2RjMDIyOGExOTM2YThlNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJpb3JpdHlDYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0eUNhbGN1bGF0b3IuaApAQCAtMjgsNyArMjgsNiBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3BwCmluZGV4IDgw
ZjgzMTU0MTFiZTU1MWVhNmRjYTQwMzZlY2I5YmViN2Q2NTY3ZjAuLmI5Zjc1ZDE4NGMzYTY4MDFm
YmJlOGZkZmJhNDFlNDMzNjhmYTMzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNw
cApAQCAtMjQsMTAgKzI0LDkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNs
dWRlICJjYy9DQ1Njb3BlZFRleHR1cmUuaCIKIAotI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgi
IC8vIEZvciBUZXh0dXJlQWxsb2NhdG9yCisjaW5jbHVkZSAiVGV4dHVyZUFsbG9jYXRvci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmgKaW5kZXgg
NWEzYzRlOTY0ZGQyYzZjZWU1YTc0MWRmMzFmM2NmZTZiZDFlMjRjMC4uOWY3MjQxZjUxN2Y0YTQw
ZWRiMmFjOGM0MThhZjhiNzExZmU0ZDAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ0NTY29wZWRUZXh0dXJlX2gKICNkZWZpbmUgQ0NT
Y29wZWRUZXh0dXJlX2gKIAorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJjYy9DQ1RleHR1cmUuaCIKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTM0LDcgKzM1LDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiBj
bGFzcyBDQ1Njb3BlZFRleHR1cmUgOiBwcm90ZWN0ZWQgQ0NUZXh0dXJlIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShDQ1Njb3BlZFRleHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUuaAppbmRleCBhMjk2
MTA0NjkzZGQ0NTJmMmI5ODU3ODIwNDVlZjBjYTc2YzEyZTgyLi4wZDVkOWY3NjgzZTU2OWVjNmRi
NDc4MmQ2ODcxOWFhZThhM2Q5NzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmUuaApAQCAtMzUsNiArMzUsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NUZXh0dXJlIHsKIHB1YmxpYzoKICAgICBD
Q1RleHR1cmUoKSA6IG1faWQoMCkgeyB9CisgICAgQ0NUZXh0dXJlKHVuc2lnbmVkIGlkLCBJbnRT
aXplIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKKyAgICAgICAgOiBtX2lkKGlkKQorICAgICAgICAs
IG1fc2l6ZShzaXplKQorICAgICAgICAsIG1fZm9ybWF0KGZvcm1hdCkgeyB9CiAKICAgICB1bnNp
Z25lZCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBJbnRTaXplJiBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
Y3BwCmluZGV4IGNjNzkwZTU1MzlhZDgzNjMwYmRiNGRlMTE1MzBhYTM3YzUyNzcxZjMuLjFiMjEw
ODkxMmY3OTg5NzAyNGU0ZTIyNjBlZWU5MWYwMmUwNTVhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuY3BwCkBAIC01NCw4ICs1NCw2IEBAIHN0YXRpYyBjb25zdCBpbnQgZGVidWdU
aWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvclJlZCA9IDI1NTsKIHN0YXRpYyBjb25zdCBpbnQgZGVi
dWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvckdyZWVuID0gMDsKIHN0YXRpYyBjb25zdCBpbnQg
ZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvckJsdWUgPSAwOwogCi1jbGFzcyBNYW5hZ2Vk
VGV4dHVyZTsKLQogY2xhc3MgRHJhd2FibGVUaWxlIDogcHVibGljIENDTGF5ZXJUaWxpbmdEYXRh
OjpUaWxlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcmF3YWJsZVRpbGUpOwogcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCAzZTFmNTgxMzUzZjAyY2Fi
M2ExNTYwNDNlMDI5ZjE4ZjNkZTQwMmU2Li5jYzM0OWM4ZTVkMTdlMWRkYmNhZTk2NTkwZTliYWE5
YzczZjEzMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMzUsNyAr
MzUsNyBAQAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCi0jaW5jbHVkZSAiVGV4dHVy
ZU1hbmFnZXIuaCIgLy8gRm9yIFRleHR1cmVBbGxvY2F0b3IKKyNpbmNsdWRlICJUZXh0dXJlQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggYmVkZTJiMWUzMWRjMGNiZWM5OGFkMjkyMjlmNGJk
ZWIwNzc3MDE5Yy4uM2Y5MDVhN2FiNDIzZTkxMWFhN2MwYzc5NjAwMWY4NjVhMDU5MDFhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xMzgsNyArMTM4LDYgQEAKICAgICAgICAg
ICAgICd0ZXN0cy9TY3JvbGxiYXJMYXllckNocm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAg
J3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvVGV4dHVy
ZUxheWVyQ2hyb21pdW1UZXN0LmNwcCcsCi0gICAgICAgICAgICAndGVzdHMvVGV4dHVyZU1hbmFn
ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVy
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9UaWxpbmdEYXRhVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNw
cAppbmRleCBhYmYxZWZmOGUxMTEzNGEwMzI3MmQ2NWY1OTA3MjA3MGQ0NDVkMDk4Li4xMTg0YjIy
YTBkMzdhNDgxNzY0MzA0ZTFiYmU5ZTIyNWMwNjdlMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNDVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VX
ZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5o
IgotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VM
YXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUaWxpbmdEYXRhLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAKaW5kZXggNDY4YWYzNmJiYTUwZTNl
ZTgxNjVmM2FjYWM3NGUxZTQ5ZjZmOTU1OS4uYThiOTYyNzg3ZDhmMjNmZWI2OGZkNzJiYzVmNjc5
NTJhNWE2NjBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1By
aW9yaXRpemVkVGV4dHVyZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlci5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZS5oIgogI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTAsNyArNTEs
NyBAQCBwdWJsaWM6CiAKICAgICBzaXplX3QgdGV4dHVyZXNNZW1vcnlTaXplKHNpemVfdCB0ZXh0
dXJlQ291bnQpCiAgICAgewotICAgICAgICByZXR1cm4gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVz
ZUJ5dGVzKG1fdGV4dHVyZVNpemUsIG1fdGV4dHVyZUZvcm1hdCkgKiB0ZXh0dXJlQ291bnQ7Cisg
ICAgICAgIHJldHVybiBDQ1RleHR1cmU6Om1lbW9yeVNpemVCeXRlcyhtX3RleHR1cmVTaXplLCBt
X3RleHR1cmVGb3JtYXQpICogdGV4dHVyZUNvdW50OwogICAgIH0KIAogICAgIFBhc3NPd25QdHI8
Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyPiBjcmVhdGVNYW5hZ2VyKHNpemVfdCBtYXhUZXh0
dXJlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRl
ZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5j
cHAKaW5kZXggNDBkM2NlNWU2ZmY5NDNiY2QwZTk0ZTc1YWIzMGJlNmM4MDZlZGQxOS4uMmUyYzFh
MDZmNGIwZmY1YzBjZWYxZDNkNTI3OWVkODI2ZTljOWU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAi
VGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAi
V2ViS2l0LmgiCiAjaW5jbHVkZSAiY2MvQ0NBY3RpdmVBbmltYXRpb24uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKaW5k
ZXggZGZkNDZkOWMyM2I0NDQ4ZTQ2ZGU5ZjM4YzE4NmRmNjI1N2M1ZDM0OS4uOTUwMWNhYmE5YWFj
ODBjNDQ5YzJhZjNlMGJkODUxNzNiMTgyYTkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IgogI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlRleHR1cmVBbGxvY2F0b3IuaCIKICNp
bmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCiAj
aW5jbHVkZSAiVGlsZWRMYXllckNocm9taXVtLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJCcmlkZ2VUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwCmluZGV4IDQzNTkw
N2M5NDM3OGFiYmNkY2I5MDk0MzBlZDdjMDJkYzc5MTg4OWMuLmMyMDZkZGE1ZTc1YTEyNTk1YjUx
ZmM4ZWQ0ZjA1MTdjZmU3MjZkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckJyaWRnZVRlc3QuY3BwCkBAIC0zMCw3ICszMCw2IEBA
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1h
bmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyUmVuZGVyZXJDaHJvbWl1bVRlc3QuY3BwCmlu
ZGV4IDljOWVjMjViMDNlZDEwYjUyOTExOGZlN2NlMTBiYzNkMTRlMWU0NzEuLjdjZGJhODA5Y2Uy
YjY3OTBiMzJmYzliOTk1MDgyM2RiNDBkMDk5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTGF5ZXJSZW5kZXJlckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclJlbmRlcmVyQ2hyb21pdW1UZXN0LmNwcApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
V2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJj
Yy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NldHRpbmdz
LmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogCkBAIC03Niw3ICs3Nyw3
IEBAIHB1YmxpYzoKICAgICBGYWtlQ0NSZW5kZXJlckNsaWVudCgpCiAgICAgICAgIDogbV9zZXRG
dWxsUm9vdExheWVyRGFtYWdlQ291bnQoMCkKICAgICAgICAgLCBtX3Jvb3RMYXllcihDQ0xheWVy
SW1wbDo6Y3JlYXRlKDEpKQotICAgICAgICAsIG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMo
MCkKKyAgICAgICAgLCBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKENDUHJpb3JpdGl6ZWRU
ZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdE1lbW9yeUFsbG9jYXRpb25MaW1pdCgpKQogICAgIHsKICAg
ICAgICAgbV9yb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICAgICAgbV9yb290
UmVuZGVyUGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKG1fcm9vdExheWVyLT5yZW5kZXJTdXJm
YWNlKCksIG1fcm9vdExheWVyLT5pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGV4dHVyZU1hbmFnZXJUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDUzMTNmNWRjMjM1MGExZTg4ODk2NGUxMmRlZWI1NTgzMmYyZjg3MC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RleHR1cmVNYW5hZ2VyVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAi
Q0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCi0j
aW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwot
dXNpbmcgbmFtZXNwYWNlIFdURjsKLQotbmFtZXNwYWNlIHsKLQotY2xhc3MgVGV4dHVyZU1hbmFn
ZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewotcHVibGljOgotICAgIFRleHR1cmVNYW5h
Z2VyVGVzdCgpCi0gICAgICAgIDogbV90ZXh0dXJlU2l6ZSgyNTYsIDI1NikKLSAgICAgICAgLCBt
X3RleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpCi0gICAgewotICAgIH0KLQot
ICAgIHZpcnR1YWwgflRleHR1cmVNYW5hZ2VyVGVzdCgpCi0gICAgewotICAgIH0KLQotICAgIHNp
emVfdCB0ZXh0dXJlc01lbW9yeVNpemUoc2l6ZV90IHRleHR1cmVDb3VudCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMobV90ZXh0dXJlU2l6ZSwg
bV90ZXh0dXJlRm9ybWF0KSAqIHRleHR1cmVDb3VudDsKLSAgICB9Ci0KLSAgICBQYXNzT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiBjcmVhdGVUZXh0dXJlTWFuYWdlcihzaXplX3QgbWF4VGV4dHVyZXMs
IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVz
TWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIDEwMjQpOwotICAgIH0KLQotICAgIGJvb2wg
cmVxdWVzdFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIsIFRleHR1cmVUb2tlbiB0b2tl
bikKLSAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbWFuYWdlci0+cmVxdWVzdFRleHR1cmUo
dG9rZW4sIG1fdGV4dHVyZVNpemUsIG1fdGV4dHVyZUZvcm1hdCk7Ci0gICAgICAgIGlmIChyZXN1
bHQpCi0gICAgICAgICAgICBtYW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUoJm1fZmFrZVRleHR1cmVB
bGxvY2F0b3IsIHRva2VuKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgbV9mYWtlVGV4dHVyZUFsbG9jYXRvcjsKLSAg
ICBjb25zdCBJbnRTaXplIG1fdGV4dHVyZVNpemU7Ci0gICAgY29uc3QgR0MzRGVudW0gbV90ZXh0
dXJlRm9ybWF0OwotfTsKLQotVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgcmVxdWVzdFRleHR1
cmVJblByZWZlcnJlZExpbWl0KQotewotICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJl
cyA9IDg7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0
ZVRleHR1cmVNYW5hZ2VyKHByZWZlcnJlZFRleHR1cmVzICogMiwgcHJlZmVycmVkVGV4dHVyZXMp
OwotICAgIFRleHR1cmVUb2tlbiB0b2tlbnNbcHJlZmVycmVkVGV4dHVyZXNdOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkVGV4dHVyZXM7ICsraSkgewotICAgICAgICB0b2tl
bnNbaV0gPSB0ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKTsKLSAgICAgICAgaWYgKGkpCi0gICAg
ICAgICAgICBFWFBFQ1RfR1QodG9rZW5zW2ldLCB0b2tlbnNbaSAtIDFdKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUocmVxdWVzdFRleHR1cmUodGV4dHVyZU1hbmFnZXIuZ2V0KCksIHRva2Vuc1tpXSkp
OwotICAgICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbnNb
aV0pKTsKLSAgICAgICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKHRv
a2Vuc1tpXSkpOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVk
VGV4dHVyZXM7ICsraSkKLSAgICAgICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1Rl
eHR1cmUodG9rZW5zW2ldKSk7Ci0KLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKHBy
ZWZlcnJlZFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygp
KTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRp
bmdQcmVmZXJyZWRMaW1pdCkKLXsKLSAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4Owot
ICAgIGNvbnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDQ7Ci0gICAgT3duUHRyPFRleHR1
cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRleHR1
cmVzLCBwcmVmZXJyZWRUZXh0dXJlcyk7Ci0gICAgVGV4dHVyZVRva2VuIHRva2Vuc1ttYXhUZXh0
dXJlc107Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVmZXJyZWRUZXh0dXJlczsgKytp
KSB7Ci0gICAgICAgIHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotICAg
ICAgICBFWFBFQ1RfVFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdG9r
ZW5zW2ldKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJl
KHRva2Vuc1tpXSkpOwotICAgIH0KLQotICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0
dXJlKHRva2Vuc1swXSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUodG9r
ZW5zWzJdKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSBwcmVmZXJyZWRUZXh0dXJlczsgaSA8IG1h
eFRleHR1cmVzOyArK2kpIHsKLSAgICAgICAgdG9rZW5zW2ldID0gdGV4dHVyZU1hbmFnZXItPmdl
dFRva2VuKCk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5h
Z2VyLmdldCgpLCB0b2tlbnNbaV0pKTsKLSAgICAgICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFn
ZXItPmhhc1RleHR1cmUodG9rZW5zW2ldKSk7Ci0gICAgfQotCi0gICAgdGV4dHVyZU1hbmFnZXIt
PnVucHJvdGVjdFRleHR1cmUodG9rZW5zWzRdKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90
ZWN0VGV4dHVyZSh0b2tlbnNbNV0pOwotCi0gICAgLy8gVGhlc2UgdGV4dHVyZXMgc2hvdWxkIGJl
IHZhbGlkIGJlZm9yZSB0aGUgcmVkdWNlTWVtb3J5VG9MaW1pdCBjYWxsLgotICAgIEVYUEVDVF9U
UlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1swXSkpOwotICAgIEVYUEVDVF9U
UlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1syXSkpOwotCi0gICAgdGV4dHVy
ZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJl
ZFRleHR1cmVzKSk7Ci0KLSAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1
cmUodG9rZW5zWzBdKSk7Ci0gICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmhhc1RleHR1
cmUodG9rZW5zWzFdKSk7Ci0gICAgRVhQRUNUX1RSVUUodGV4dHVyZU1hbmFnZXItPmlzUHJvdGVj
dGVkKHRva2Vuc1sxXSkpOwotICAgIEVYUEVDVF9GQUxTRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4
dHVyZSh0b2tlbnNbMl0pKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4
dHVyZSh0b2tlbnNbM10pKTsKLSAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlTWFuYWdlci0+aXNQcm90
ZWN0ZWQodG9rZW5zWzNdKSk7Ci0KLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKHBy
ZWZlcnJlZFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygp
KTsKLX0KLQotVEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgcmVxdWVzdFRleHR1cmVFeGNlZWRp
bmdNYXhMaW1pdCkKLXsKLSAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZXMgPSA4OwotICAgIGNv
bnN0IHNpemVfdCBwcmVmZXJyZWRUZXh0dXJlcyA9IDQ7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlciA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKG1heFRleHR1cmVzLCBw
cmVmZXJyZWRUZXh0dXJlcyk7Ci0gICAgVGV4dHVyZVRva2VuIHRva2Vuc1ttYXhUZXh0dXJlc107
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKSB7Ci0gICAgICAg
IHRva2Vuc1tpXSA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShyZXF1ZXN0VGV4dHVyZSh0ZXh0dXJlTWFuYWdlci5nZXQoKSwgdG9rZW5zW2ldKSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKHRleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKHRva2Vuc1tpXSkp
OwotICAgIH0KLQotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMp
LCB0ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkpOwotCi0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKSB7Ci0gICAgICAgIFRleHR1cmVUb2tl
biB0b2tlbiA9IHRleHR1cmVNYW5hZ2VyLT5nZXRUb2tlbigpOwotICAgICAgICBFWFBFQ1RfRkFM
U0UocmVxdWVzdFRleHR1cmUodGV4dHVyZU1hbmFnZXIuZ2V0KCksIHRva2VuKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRSh0ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSh0b2tlbikpOwotICAgIH0K
LQotICAgIEVYUEVDVF9FUSh0ZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCks
IHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcykpOwotCi0gICAgdGV4dHVyZU1hbmFnZXIt
PnVucHJvdGVjdFRleHR1cmUodG9rZW5zWzFdKTsKLSAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90
ZWN0VGV4dHVyZSh0b2tlbnNbM10pOwotICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRl
eHR1cmVNYW5hZ2VyLmdldCgpLCB0ZXh0dXJlTWFuYWdlci0+Z2V0VG9rZW4oKSkpOwotICAgIEVY
UEVDVF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0ZXh0dXJlTWFu
YWdlci0+Z2V0VG9rZW4oKSkpOwotICAgIEVYUEVDVF9GQUxTRShyZXF1ZXN0VGV4dHVyZSh0ZXh0
dXJlTWFuYWdlci5nZXQoKSwgdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCkpKTsKLSAgICBFWFBF
Q1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1
cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAgICBFWFBFQ1RfRkFMU0UodGV4dHVyZU1hbmFnZXIt
Pmhhc1RleHR1cmUodG9rZW5zWzFdKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVNYW5hZ2Vy
LT5oYXNUZXh0dXJlKHRva2Vuc1szXSkpOwotfQotCi1URVNUX0YoVGV4dHVyZU1hbmFnZXJUZXN0
LCByZWR1Y2VNZW1vcnlUb0xpbWl0KQotewotICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlcyA9
IDg7Ci0gICAgY29uc3Qgc2l6ZV90IHByZWZlcnJlZFRleHR1cmVzID0gNDsKLSAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIobWF4
VGV4dHVyZXMsIHByZWZlcnJlZFRleHR1cmVzKTsKLSAgICBUZXh0dXJlVG9rZW4gdG9rZW5zW21h
eFRleHR1cmVzXTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kp
IHsKLSAgICAgICAgdG9rZW5zW2ldID0gdGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tl
bnNbaV0pKTsKLSAgICB9Ci0KLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRl
eHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAgICB0
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUobWF4
VGV4dHVyZXMpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVz
KSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAgICB0ZXh0dXJl
TWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVk
VGV4dHVyZXMpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVz
KSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLQotICAgIGNvbnN0
IHNpemVfdCB1bnByb3RlY3RlZFRleHR1cmVzID0gcHJlZmVycmVkVGV4dHVyZXMgKyAxOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlZmVycmVkVGV4dHVyZXMgKyAxOyArK2kpCi0gICAg
ICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0dXJlKHRva2Vuc1tpXSk7Ci0KLSAgICB0
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUobWF4
VGV4dHVyZXMpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1cmVz
KSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAgICB0ZXh0dXJl
TWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVk
VGV4dHVyZXMpKTsKLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRl
eHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKLSAgICB0
ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlc01lbW9yeVNpemUoMSkp
OwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMgLSB1bnByb3Rl
Y3RlZFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsK
LQotICAgIC8vIHJlZHVjZU1lbW9yeVRvTGltaXQgZG9lc24ndCBjaGFuZ2UgdGhlIGN1cnJlbnQg
bWVtb3J5IGxpbWl0cy4KLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKG1heFRleHR1
cmVzKSwgdGV4dHVyZU1hbmFnZXItPm1heE1lbW9yeUxpbWl0Qnl0ZXMoKSk7Ci0gICAgRVhQRUNU
X0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2Vy
LT5wcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKCkpOwotfQotCi1URVNUX0YoVGV4dHVyZU1hbmFn
ZXJUZXN0LCBzZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKQotewotICAgIGNvbnN0IHNpemVfdCBtYXhU
ZXh0dXJlcyA9IDg7Ci0gICAgY29uc3Qgc2l6ZV90IHByZWZlcnJlZFRleHR1cmVzID0gNDsKLSAg
ICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gY3JlYXRlVGV4dHVyZU1h
bmFnZXIobWF4VGV4dHVyZXMsIHByZWZlcnJlZFRleHR1cmVzKTsKLSAgICBUZXh0dXJlVG9rZW4g
dG9rZW5zW21heFRleHR1cmVzXTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heFRleHR1
cmVzOyArK2kpIHsKLSAgICAgICAgdG9rZW5zW2ldID0gdGV4dHVyZU1hbmFnZXItPmdldFRva2Vu
KCk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RUZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdl
dCgpLCB0b2tlbnNbaV0pKTsKLSAgICB9Ci0KLSAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlT
aXplKG1heFRleHR1cmVzKSwgdGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygp
KTsKLQotICAgIGNvbnN0IHNpemVfdCB1bnByb3RlY3RlZFRleHR1cmVzID0gcHJlZmVycmVkVGV4
dHVyZXMgKyAxOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW5wcm90ZWN0ZWRUZXh0dXJl
czsgKytpKQotICAgICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVyZSh0b2tlbnNb
aV0pOwotCi0gICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVy
ZXNNZW1vcnlTaXplKG1heFRleHR1cmVzKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5
U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMo
KSk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNN
ZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVt
b3J5U2l6ZShwcmVmZXJyZWRUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5
VXNlQnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShwcmVmZXJyZWRU
ZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwotfQotCi1U
RVNUX0YoVGV4dHVyZU1hbmFnZXJUZXN0LCBzZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKQot
ewotICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlcyA9IDg7Ci0gICAgY29uc3Qgc2l6ZV90IHBy
ZWZlcnJlZFRleHR1cmVzID0gNDsKLSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVN
YW5hZ2VyID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIobWF4VGV4dHVyZXMsIHByZWZlcnJlZFRleHR1
cmVzKTsKLSAgICBUZXh0dXJlVG9rZW4gdG9rZW5zW21heFRleHR1cmVzXTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1heFRleHR1cmVzOyArK2kpIHsKLSAgICAgICAgdG9rZW5zW2ldID0g
dGV4dHVyZU1hbmFnZXItPmdldFRva2VuKCk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHJlcXVlc3RU
ZXh0dXJlKHRleHR1cmVNYW5hZ2VyLmdldCgpLCB0b2tlbnNbaV0pKTsKLSAgICB9Ci0KLSAgICBj
b25zdCBzaXplX3QgdW5wcm90ZWN0ZWRUZXh0dXJlcyA9IHByZWZlcnJlZFRleHR1cmVzICsgMTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVucHJvdGVjdGVkVGV4dHVyZXM7ICsraSkKLSAg
ICAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUodG9rZW5zW2ldKTsKLQotICAg
IEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdl
ci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9y
eVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+bWF4TWVtb3J5TGltaXRCeXRlcygp
KTsKLQotICAgIC8vIFNldHRpbmcgcHJlZmVycmVkIG1lbW9yeSBsaW1pdCBvbmx5IHdvbid0IGZv
cmNlIHJlZHVjZU1lbW9yeVRvTGltaXQuCi0gICAgdGV4dHVyZU1hbmFnZXItPnNldFByZWZlcnJl
ZE1lbW9yeUxpbWl0Qnl0ZXModGV4dHVyZXNNZW1vcnlTaXplKHByZWZlcnJlZFRleHR1cmVzKSk7
Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVzTWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVN
YW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSk7Ci0gICAgRVhQRUNUX0VRKHRleHR1cmVz
TWVtb3J5U2l6ZShtYXhUZXh0dXJlcyksIHRleHR1cmVNYW5hZ2VyLT5tYXhNZW1vcnlMaW1pdEJ5
dGVzKCkpOwotICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUocHJlZmVycmVkVGV4dHVy
ZXMpLCB0ZXh0dXJlTWFuYWdlci0+cHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcygpKTsKLX0KLQot
VEVTVF9GKFRleHR1cmVNYW5hZ2VyVGVzdCwgdGV4dHVyZU1hbmFnZXJEZXN0cm95ZWRCZWZvcmVN
YW5hZ2VkVGV4dHVyZSkKLXsKLSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIoMSwgMSk7Ci0gICAgT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiBtYW5hZ2VkVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpOwotCi0gICAgSW50U2l6ZSBzaXplKDUwLCA1MCk7Ci0gICAgdW5zaWduZWQgZm9y
bWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7Ci0KLSAgICAvLyBUZXh0dXJlIGlzIGluaXRp
YWxseSBpbnZhbGlkLCBidXQgd2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVzZXJ2ZS4KLSAgICBFWFBF
Q1RfRkFMU0UobWFuYWdlZFRleHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0gICAgRVhQ
RUNUX1RSVUUobWFuYWdlZFRleHR1cmUtPnJlc2VydmUoc2l6ZSwgZm9ybWF0KSk7Ci0gICAgRVhQ
RUNUX1RSVUUobWFuYWdlZFRleHR1cmUtPmlzVmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0KLSAgICB0
ZXh0dXJlTWFuYWdlci5jbGVhcigpOwotCi0gICAgLy8gRGVsZXRpbmcgdGhlIG1hbmFnZXIgc2hv
dWxkIGludmFsaWRhdGUgdGhlIHRleHR1cmUgYW5kIHJlc2VydmF0aW9uIGF0dGVtcHRzIHNob3Vs
ZCBmYWlsLgotICAgIEVYUEVDVF9GQUxTRShtYW5hZ2VkVGV4dHVyZS0+aXNWYWxpZChzaXplLCBm
b3JtYXQpKTsKLSAgICBFWFBFQ1RfRkFMU0UobWFuYWdlZFRleHR1cmUtPnJlc2VydmUoc2l6ZSwg
Zm9ybWF0KSk7Ci19Ci0KLVRFU1RfRihUZXh0dXJlTWFuYWdlclRlc3QsIHRleHR1cmVNb3ZlZFRv
TmV3TWFuYWdlcikKLXsKLSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
T25lID0gY3JlYXRlVGV4dHVyZU1hbmFnZXIoMSwgMSk7Ci0gICAgT3duUHRyPFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlclR3byA9IGNyZWF0ZVRleHR1cmVNYW5hZ2VyKDEsIDEpOwotICAg
IE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbWFuYWdlZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6
Y3JlYXRlKHRleHR1cmVNYW5hZ2VyT25lLmdldCgpKTsKLQotICAgIEludFNpemUgc2l6ZSg1MCwg
NTApOwotICAgIHVuc2lnbmVkIGZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwotCi0g
ICAgLy8gVGV4dHVyZSBpcyBpbml0aWFsbHkgaW52YWxpZCwgYnV0IHdlIHNob3VsZCBiZSBhYmxl
IHRvIHJlc2VydmUuCi0gICAgRVhQRUNUX0ZBTFNFKG1hbmFnZWRUZXh0dXJlLT5pc1ZhbGlkKHNp
emUsIGZvcm1hdCkpOwotICAgIEVYUEVDVF9UUlVFKG1hbmFnZWRUZXh0dXJlLT5yZXNlcnZlKHNp
emUsIGZvcm1hdCkpOwotICAgIEVYUEVDVF9UUlVFKG1hbmFnZWRUZXh0dXJlLT5pc1ZhbGlkKHNp
emUsIGZvcm1hdCkpOwotCi0gICAgLy8gU2V0dGluZyB0byB0aGUgc2FtZSBtYW5hZ2VyIHNob3Vs
ZCBiZSBhIG5vLW9wLgotICAgIG1hbmFnZWRUZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdlcih0ZXh0
dXJlTWFuYWdlck9uZS5nZXQoKSk7Ci0gICAgRVhQRUNUX1RSVUUobWFuYWdlZFRleHR1cmUtPmlz
VmFsaWQoc2l6ZSwgZm9ybWF0KSk7Ci0KLSAgICAvLyBTZXR0aW5nIHRvIGEgZGlmZmVyZW50IG1h
bmFnZXIgc2hvdWxkIGludmFsaWRhdGUgdGhlIHRleHR1cmUuCi0gICAgbWFuYWdlZFRleHR1cmUt
PnNldFRleHR1cmVNYW5hZ2VyKHRleHR1cmVNYW5hZ2VyVHdvLmdldCgpKTsKLQotICAgIEVYUEVD
VF9GQUxTRShtYW5hZ2VkVGV4dHVyZS0+aXNWYWxpZChzaXplLCBmb3JtYXQpKTsKLSAgICBFWFBF
Q1RfVFJVRShtYW5hZ2VkVGV4dHVyZS0+cmVzZXJ2ZShzaXplLCBmb3JtYXQpKTsKLSAgICBFWFBF
Q1RfVFJVRShtYW5hZ2VkVGV4dHVyZS0+aXNWYWxpZChzaXplLCBmb3JtYXQpKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>