<?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>224345</bug_id>
          
          <creation_ts>2021-04-08 15:43:39 -0700</creation_ts>
          <short_desc>Need to propagate and use &apos;canShowWhileLocked&apos; in the GPU Process</short_desc>
          <delta_ts>2021-04-13 15:14:34 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=198819</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>224513</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ggaren</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1748516</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-08 15:43:39 -0700</bug_when>
    <thetext>The visibility propagation view in the GPUProcess is currently always using canShowWhileLocked=false, no matter what the value is on the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748518</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-08 15:43:54 -0700</bug_when>
    <thetext>&lt;rdar://76011262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748549</commentid>
    <comment_count>2</comment_count>
      <attachid>425559</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-08 16:51:22 -0700</bug_when>
    <thetext>Created attachment 425559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748551</commentid>
    <comment_count>3</comment_count>
      <attachid>425560</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-08 16:56:39 -0700</bug_when>
    <thetext>Created attachment 425560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748625</commentid>
    <comment_count>4</comment_count>
      <attachid>425560</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-04-09 00:38:26 -0700</bug_when>
    <thetext>Comment on attachment 425560
Patch

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

&gt; Source/WebKit/GPUProcess/GPUProcess.cpp:164
&gt;  

Would it instead make sense here to create one for secure and one insecure and send both to UI process.
Then the UI process could select which one to parent based on which canShowWhileLocked the page in the view has?
(This is assuming that the &quot;secure&quot; applies only when the layer is parented)

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:84
&gt; +    m_contextForVisibilityPropagation = LayerHostingContext::createForExternalHostingProcess({

Is there a race for the UI process to parent this vs the first canvas command to be rasterised?

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:86
&gt; +    });

Fwiw, previously GPU Process had a visibility propagation layer always.

After this modification, GPU Process has visibility propagation layer only if the page has created an canvas.

Not sure how relevant this is, e.g. does lack of visibity propagation correctness affect only canvas rendering, or does it affect other APIs too..

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackendCreationParameters.h:42
&gt; +#if PLATFORM(IOS_FAMILY)

For whatever it is worth: 
if I understand correctly, this ifdef  is the reason you want to add this file.
I think adding this kind of intermediary struct is a bit cumbersome, as it creates:
 - maintenance burden: you have to manually type up repetitive code that we have a generator already
 - cognitive burden: why is this struct needed, why is it being stored as a member variable, etc.

I wonder if the IPC generator could be improved so that this sort of stuff was not needed or was generated automatically? It actually, exactly is generated already, it&apos;s perhaps just problematic to use.
(Does not help this patch, though)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748630</commentid>
    <comment_count>5</comment_count>
      <attachid>425560</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-09 00:45:52 -0700</bug_when>
    <thetext>Comment on attachment 425560
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/GPUProcess.cpp:164
&gt;&gt;  
&gt; 
&gt; Would it instead make sense here to create one for secure and one insecure and send both to UI process.
&gt; Then the UI process could select which one to parent based on which canShowWhileLocked the page in the view has?
&gt; (This is assuming that the &quot;secure&quot; applies only when the layer is parented)

It seems slightly odd to do *both* when in the 99.999999% case, canShowWhileLocked will be false.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:84
&gt;&gt; +    m_contextForVisibilityPropagation = LayerHostingContext::createForExternalHostingProcess({
&gt; 
&gt; Is there a race for the UI process to parent this vs the first canvas command to be rasterised?

I don&apos;t think it matters. It&apos;s OK to do work before you&apos;ve got this parented... if you can (i.e. as long as you don&apos;t get suspended).

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:86
&gt;&gt; +    });
&gt; 
&gt; Fwiw, previously GPU Process had a visibility propagation layer always.
&gt; 
&gt; After this modification, GPU Process has visibility propagation layer only if the page has created an canvas.
&gt; 
&gt; Not sure how relevant this is, e.g. does lack of visibity propagation correctness affect only canvas rendering, or does it affect other APIs too..

Check out the FIXME + added code in WebPage below. FWIW, we always need the visibility propagation view if we need the GPU process to stay awake and do *any* work.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3940
&gt; +    // For now, it is possible to use the GPUProcess for media playback only. Because media does not
&gt; +    // use the RemoteRenderingBackend, we need to force the creation of a RemoteRenderingBackend in
&gt; +    // the GPUProcess so that the page gets a visibility propagation view.

What about WebGL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748631</commentid>
    <comment_count>6</comment_count>
      <attachid>425560</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-04-09 00:50:22 -0700</bug_when>
    <thetext>Comment on attachment 425560
Patch

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

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackendCreationParameters.h:44
&gt; +#endif

IIRC this file almost could replaced by just doing
using RemoteRenderingBackendCreationParameters = WebKit::Messages::GPUConnectionToWebProcess::CreateRenderingBackend;
It does not fix the other shortcomings like holding m_parameters, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748638</commentid>
    <comment_count>7</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-04-09 01:06:16 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #5)
&gt; It seems slightly odd to do *both* when in the 99.999999% case, canShowWhileLocked will be false.

But does creating 2 sound odd really? I mean this alternative is that if you have 70 pages, you create 70?


&gt; &gt; Is there a race for the UI process to parent this vs the first canvas command to be rasterised?
&gt; 
&gt; I don&apos;t think it matters. It&apos;s OK to do work before you&apos;ve got this
&gt; parented... if you can (i.e. as long as you don&apos;t get suspended).

But does that matter? What if the first canvas is created while suspended without visibility layer?

 
&gt; &gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:86
&gt; &gt;&gt; +    });
&gt; &gt; 
&gt; &gt; Fwiw, previously GPU Process had a visibility propagation layer always.
&gt; &gt; 
&gt; &gt; After this modification, GPU Process has visibility propagation layer only if the page has created an canvas.
&gt; &gt; 
&gt; &gt; Not sure how relevant this is, e.g. does lack of visibity propagation correctness affect only canvas rendering, or does it affect other APIs too..
&gt; 
&gt; Check out the FIXME + added code in WebPage below. FWIW, we always need the
&gt; visibility propagation view if we need the GPU process to stay awake and do
&gt; *any* work.
&gt; 
&gt; 
&gt; What about WebGL?

Right, missed that. So this patch forces RRB instantiatation by default, so in practice it does not matter if some specific API not related to RRB needs the visibility propagation (like WebGL).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748674</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-09 02:52:06 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #7)
&gt; (In reply to Tim Horton from comment #5)
&gt; &gt; It seems slightly odd to do *both* when in the 99.999999% case, canShowWhileLocked will be false.
&gt; 
&gt; But does creating 2 sound odd really? I mean this alternative is that if you
&gt; have 70 pages, you create 70?

I don&apos;t think there&apos;s any version of this that doesn&apos;t involve &gt;=1 per page (at least, not without a lot of extra logic, keeping track of view/window/etc visibility ourselves), because you need a visibility propagation view per WKWebView, and I don&apos;t believe a CAContext can be hosted in more than one place (so you can&apos;t have many visibility propagation views hosting the same CAContext from the GPUP).

&gt; 
&gt; &gt; &gt; Is there a race for the UI process to parent this vs the first canvas command to be rasterised?
&gt; &gt; 
&gt; &gt; I don&apos;t think it matters. It&apos;s OK to do work before you&apos;ve got this
&gt; &gt; parented... if you can (i.e. as long as you don&apos;t get suspended).
&gt; 
&gt; But does that matter? What if the first canvas is created while suspended
&gt; without visibility layer?

You can&apos;t create things while you&apos;re suspended :) If you don&apos;t have the visibility propagation view installed, your process might go to sleep, but whenever the UI process installs it you&apos;ll wake back up.

The visibility propagation context is just about forwarding &quot;should I be runnable now?&quot; state for each WKWebView to the GPU process, nothing more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748735</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-09 08:51:02 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #5)
&gt; Comment on attachment 425560 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425560&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/GPUProcess/GPUProcess.cpp:164
&gt; &gt;&gt;  
&gt; &gt; 
&gt; &gt; Would it instead make sense here to create one for secure and one insecure and send both to UI process.
&gt; &gt; Then the UI process could select which one to parent based on which canShowWhileLocked the page in the view has?
&gt; &gt; (This is assuming that the &quot;secure&quot; applies only when the layer is parented)
&gt; 
&gt; It seems slightly odd to do *both* when in the 99.999999% case,
&gt; canShowWhileLocked will be false.
&gt; 
&gt; &gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:84
&gt; &gt;&gt; +    m_contextForVisibilityPropagation = LayerHostingContext::createForExternalHostingProcess({
&gt; &gt; 
&gt; &gt; Is there a race for the UI process to parent this vs the first canvas command to be rasterised?
&gt; 
&gt; I don&apos;t think it matters. It&apos;s OK to do work before you&apos;ve got this
&gt; parented... if you can (i.e. as long as you don&apos;t get suspended).
&gt; 
&gt; &gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:86
&gt; &gt;&gt; +    });
&gt; &gt; 
&gt; &gt; Fwiw, previously GPU Process had a visibility propagation layer always.
&gt; &gt; 
&gt; &gt; After this modification, GPU Process has visibility propagation layer only if the page has created an canvas.
&gt; &gt; 
&gt; &gt; Not sure how relevant this is, e.g. does lack of visibity propagation correctness affect only canvas rendering, or does it affect other APIs too..
&gt; 
&gt; Check out the FIXME + added code in WebPage below. FWIW, we always need the
&gt; visibility propagation view if we need the GPU process to stay awake and do
&gt; *any* work.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3940
&gt; &gt; +    // For now, it is possible to use the GPUProcess for media playback only. Because media does not
&gt; &gt; +    // use the RemoteRenderingBackend, we need to force the creation of a RemoteRenderingBackend in
&gt; &gt; +    // the GPUProcess so that the page gets a visibility propagation view.
&gt; 
&gt; What about WebGL?

I assumed WebGL was using RemoteRenderingBackend in some way. If it&apos;s not, then I can update my FIXME code to create a RemoteRenderingBackend if WebGL in GPUProcess is enabled (but not DOM rendering in GPUProcess).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748742</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-09 08:58:08 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; (In reply to Tim Horton from comment #5)
&gt; &gt; Comment on attachment 425560 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=425560&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/GPUProcess/GPUProcess.cpp:164
&gt; &gt; &gt;&gt;  
&gt; &gt; &gt; 
&gt; &gt; &gt; Would it instead make sense here to create one for secure and one insecure and send both to UI process.
&gt; &gt; &gt; Then the UI process could select which one to parent based on which canShowWhileLocked the page in the view has?
&gt; &gt; &gt; (This is assuming that the &quot;secure&quot; applies only when the layer is parented)
&gt; &gt; 
&gt; &gt; It seems slightly odd to do *both* when in the 99.999999% case,
&gt; &gt; canShowWhileLocked will be false.
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:84
&gt; &gt; &gt;&gt; +    m_contextForVisibilityPropagation = LayerHostingContext::createForExternalHostingProcess({
&gt; &gt; &gt; 
&gt; &gt; &gt; Is there a race for the UI process to parent this vs the first canvas command to be rasterised?
&gt; &gt; 
&gt; &gt; I don&apos;t think it matters. It&apos;s OK to do work before you&apos;ve got this
&gt; &gt; parented... if you can (i.e. as long as you don&apos;t get suspended).
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:86
&gt; &gt; &gt;&gt; +    });
&gt; &gt; &gt; 
&gt; &gt; &gt; Fwiw, previously GPU Process had a visibility propagation layer always.
&gt; &gt; &gt; 
&gt; &gt; &gt; After this modification, GPU Process has visibility propagation layer only if the page has created an canvas.
&gt; &gt; &gt; 
&gt; &gt; &gt; Not sure how relevant this is, e.g. does lack of visibity propagation correctness affect only canvas rendering, or does it affect other APIs too..
&gt; &gt; 
&gt; &gt; Check out the FIXME + added code in WebPage below. FWIW, we always need the
&gt; &gt; visibility propagation view if we need the GPU process to stay awake and do
&gt; &gt; *any* work.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3940
&gt; &gt; &gt; +    // For now, it is possible to use the GPUProcess for media playback only. Because media does not
&gt; &gt; &gt; +    // use the RemoteRenderingBackend, we need to force the creation of a RemoteRenderingBackend in
&gt; &gt; &gt; +    // the GPUProcess so that the page gets a visibility propagation view.
&gt; &gt; 
&gt; &gt; What about WebGL?
&gt; 
&gt; I assumed WebGL was using RemoteRenderingBackend in some way. If it&apos;s not,
&gt; then I can update my FIXME code to create a RemoteRenderingBackend if WebGL
&gt; in GPUProcess is enabled (but not DOM rendering in GPUProcess).

I have no idea how WebGL in GPUProcess is implementation so Kimmo can be of help here. From my quick look of the code, RemoteGraphicsContextGL requires a RemoteRenderingBackend. Is there any case where WebGL can be used in the GPUProcess without a RemoteRenderingBackend being created?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748748</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-09 09:04:01 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #4)
&gt; Comment on attachment 425560 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425560&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/GPUProcess.cpp:164
&gt; &gt;  
&gt; 
&gt; Would it instead make sense here to create one for secure and one insecure
&gt; and send both to UI process.
&gt; Then the UI process could select which one to parent based on which
&gt; canShowWhileLocked the page in the view has?
&gt; (This is assuming that the &quot;secure&quot; applies only when the layer is parented)
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:84
&gt; &gt; +    m_contextForVisibilityPropagation = LayerHostingContext::createForExternalHostingProcess({
&gt; 
&gt; Is there a race for the UI process to parent this vs the first canvas
&gt; command to be rasterised?
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:86
&gt; &gt; +    });
&gt; 
&gt; Fwiw, previously GPU Process had a visibility propagation layer always.
&gt; 
&gt; After this modification, GPU Process has visibility propagation layer only
&gt; if the page has created an canvas.
&gt; 
&gt; Not sure how relevant this is, e.g. does lack of visibity propagation
&gt; correctness affect only canvas rendering, or does it affect other APIs too..
&gt; 
&gt; &gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackendCreationParameters.h:42
&gt; &gt; +#if PLATFORM(IOS_FAMILY)
&gt; 
&gt; For whatever it is worth: 
&gt; if I understand correctly, this ifdef  is the reason you want to add this
&gt; file.
&gt; I think adding this kind of intermediary struct is a bit cumbersome, as it
&gt; creates:
&gt;  - maintenance burden: you have to manually type up repetitive code that we
&gt; have a generator already
&gt;  - cognitive burden: why is this struct needed, why is it being stored as a
&gt; member variable, etc.
&gt; 
&gt; I wonder if the IPC generator could be improved so that this sort of stuff
&gt; was not needed or was generated automatically? It actually, exactly is
&gt; generated already, it&apos;s perhaps just problematic to use.
&gt; (Does not help this patch, though)

I think that similarly to regular code, you wouldn&apos;t want a function to take too many parameters and at some point, you&apos;d switch to a struct. I also think that the struct help abstract away some of the platform-specificities (here one of the data members is iOS-only). I did not come up with this pattern, it is used throughout WebKit. I don&apos;t like that the struct is stored as a data member here either. It is only because of how weird IPC::Semaphore is and it not being copyable. I&apos;d be happy to not store the struct as a data member and store a MachPort for the semaphore in the struct (which I think is that I used to do). I actually did this because you did some work to add an IPC encoder / decoder for IPC::Semaphore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748799</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-09 11:32:07 -0700</bug_when>
    <thetext>Committed r275768 (236344@main): &lt;https://commits.webkit.org/236344@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425560.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425559</attachid>
            <date>2021-04-08 16:51:22 -0700</date>
            <delta_ts>2021-04-08 17:12:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224345-20210408165121.patch</filename>
            <type>text/plain</type>
            <size>79402</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQyZTEwMjIyMjljZTAxMmM1
NzIxMzdiNzVmMmQ5M2U2MTFlNTczZGQuLjQ2MjlmNzY5MTI4Njk5NDRkMjJjMTU0MGZhNmY5OTIx
NGRkNzQ1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2IEBACisyMDIxLTA0LTA4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTmVlZCB0byBwcm9wYWdhdGUgYW5k
IHVzZSAnY2FuU2hvd1doaWxlTG9ja2VkJyBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDM0NQorICAgICAgICA8cmRh
cjovLzc2MDExMjYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBHUFVQcm9jZXNzIHdhcyBwcmV2aW91c2x5IGNyZWF0aW5nIGEgc2luZ2xlIHZp
c2liaWxpdHkgcHJvcGFnYXRpb24gdmlldyBldmVuIHRob3VnaAorICAgICAgICBpdCB3YXMgcG90
ZW50aWFsbHkgc2VydmluZyBzZXZlcmFsIHdlYiB2aWV3cy4gQWxzbywgaXQgd291bGQgYWxzbyBw
YXNzCisgICAgICAgIGBjYW5TaG93V2hpbGVMb2NrZWQ9ZmFsc2VgIHdoZW4gY29uc3RydWN0aW5n
IHRoZSB2aXNpYmlsaXR5IHByb3BhZ2F0aW9uIHZpZXcsIGlnbm9yaW5nCisgICAgICAgIHRoZSB2
YWx1ZSBvZiBXS1dlYlZpZXdDb25maWd1cmF0aW9uLl9jYW5TaG93V2hpbGVMb2NrZWQuIFRoaXMg
d291bGQgbGVhZCB0byBpc3N1ZXMgZm9yCisgICAgICAgIGFwcHMgcmVseWluZyBvbiBXS1dlYlZp
ZXcgdG8gc2hvdyBjb250ZW50IG9uIHRoZSBsb2NrIHNjcmVlbi4KKworICAgICAgICBUbyBhZGRy
ZXNzIHRoZSBpc3N1ZSwgd2Ugbm93IGhhdmUgdGhlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgY29u
c3RydWN0IGl0cyBvd24KKyAgICAgICAgdmlzaWJpbGl0eSBwcm9wYWdhdGlvbiB2aWV3IGluIHRo
ZSBHUFVQcm9jZXNzLiBUaGUgR1BVUHJvY2VzcyBjb25zdHJ1Y3RzIGEKKyAgICAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCBwZXIgV2ViUGFnZSBiZWluZyBzZXJ2ZWQgc28gdGhpcyBpcyBjb252
ZW5pZW50LiBXaGVuIHNlbmRpbmcgdGhlCisgICAgICAgIElQQyB0byB0aGUgR1BVUHJvY2VzcyB0
byBjb25zdHJ1Y3QgdGhlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIHRoZSBXZWJQcm9jZXNzIG5v
dyBzZW5kcworICAgICAgICB0aGUgcGFnZSBpZGVudGlmaWVyIGFzIHdlbGwgYXMgdGhlIHZhbHVl
IG9mIHRoZSBjYW5TaG93V2hpbGVMb2NrZWQgZmxhZyBzbyB0aGF0IHdlCisgICAgICAgIGNhbiB1
c2UgdGhlIGNvcnJlY3QgY2FuU2hvd1doaWxlTG9ja2VkIGZsYWcgd2hlbiBjb25zdHJ1Y3Rpbmcg
dGhlIHZpc2liaWxpdHkgcHJvcGFnYXRpb24KKyAgICAgICAgdmlldy4KKworICAgICAgICBUaGUg
bG9naWMgaW4gdGhlIFVJUHJvY2VzcyBmb3IgZGVhbGluZyB3aXRoIEdQVVByb2Nlc3MgdmlzaWJp
bGl0eSBwcm9wYWdhdGlvbiB2aWV3cworICAgICAgICBpcyBub3cgYWxtb3N0IGlkZW50aWNhbCB0
byBXZWJQcm9jZXNzIHZpc2liaWxpdHkgcHJvcGFnYXRpb24gdmlld3MuIFRoZXkgYXJlIHN0b3Jl
ZCBvbgorICAgICAgICB0aGUgV2ViUGFnZVByb3h5IGFuZCBnZXQgc3dhcHBlZCBvbiBwcm9jZXNz
LXN3YXAgKHNpbmNlIGEgbmV3IFdlYlBhZ2UgZ2V0cyBjcmVhdGVkKS4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9j
ZXNzOjppbml0aWFsaXplR1BVUHJvY2Vzcyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5XZWJQ
cm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzUHJveHk6OmRpZENyZWF0ZUNvbnRleHRGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudDo6ZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9w
YWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFnZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZUNv
bnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0Zv
clZpc2liaWxpdHlQcm9wYWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5Ojpj
b250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbldlYlByb2Nlc3MgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6Y29udGV4dElERm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5
OjpTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdwdVByb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRDcmVhdGVDb250ZXh0SW5X
ZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0
aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X3NldHVwVmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvcldlYlByb2Nlc3NdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfc2V0dXBWaXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3Rm9yR1BVUHJv
Y2Vzc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9yZW1vdmVWaXNpYmlsaXR5UHJvcGFn
YXRpb25WaWV3Rm9yV2ViUHJvY2Vzc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcm9j
ZXNzRGlkRXhpdF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9ncHVQcm9jZXNzQ3Jhc2hl
ZF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRSZWxhdW5jaFByb2Nlc3NdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfd2ViUHJvY2Vzc0RpZENyZWF0ZUNvbnRleHRGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb25dKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0
VG9HUFVQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpyZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2Fp
dEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZEZsdXNoKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2hhcmVkTWVtb3J5Rm9y
R2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpkZXN0cm95R2V0SW1hZ2VEYXRhU2hhcmVkTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldERhdGFGb3JJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Z2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0U2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZUZvbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRlbGV0ZUFsbEZvbnRz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNl
UmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OnNlbmRXYWtldXBNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSk6CisKIDIwMjEt
MDQtMDggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
Y29hXSBUZW1wb3JhcmlseSByZXRhaW4gc29tZSBtZWRpYSBzZXJ2aWNlcyB3aGVuIEdQVSBQcm9j
ZXNzIGFjdGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDQxNjhkYWQ5YzEyZDhkOTAwZGZjOGM5NGNmNjc1
NjM3Yzg2ODk2NjQuLmFlZDc0OTQ3NWNkMmNiMjY4MDIwYmNiMzI3MDRjNGQyNzViMTEzY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJSZW1vdGVSZW1vdGVDb21t
YW5kTGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
clByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgiCisj
aW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNsdWRl
ICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgpAQCAtMzM5LDEw
ICszNDAsMTAgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmltYWdlRGVjb2RlckFWRlByb3h5KCkKIH0KICNlbmRpZgogCi12b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZSkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVu
ZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
Y3JlYXRpb25QYXJhbWV0ZXJzKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVy
biBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxp
c3RTZW1hcGhvcmUpKSB9OworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWFwLmVuc3VyZShjcmVhdGlvblBhcmFtZXRlcnMuaWRlbnRpZmllciwgWyZdKCkgewor
ICAgICAgICByZXR1cm4gSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1l
dGVycykpIH07CiAgICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDZjMDEwNTgwMmFmYzk4YTg0Y2RjNWI1MzRj
ZGY0ZjY4ZTM0ZTAwMTMuLmU4NjViNmU3YmRlOTE5YTRkZTJmYmI3NzE3ZTE3ZWEyYjRlY2ZlOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaApAQCAtNzcsNiArNzcsNyBAQCBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5Owogc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBN
ZWRpYU92ZXJyaWRlc0ZvclRlc3Rpbmc7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmln
dXJhdGlvbjsKK3N0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OwogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGOjpEZXN0cnVjdGlv
blRocmVhZDo6TWFpbj4KQEAgLTE1OSw3ICsxNjAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjZW5k
aWYKIAotICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7Cisg
ICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDMyMDI0ZmI3ZjNmMmMyOTFkMmQ5MjQ5NTcxNTJjMGM2OTg4
NGM0ODYuLjg4NjVkMzgxOTAzZTQ0MjNlMWM0MzhjNWNhNDBiOTIwNjUwYjNkNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlz
cGF0Y2hNZXNzYWdlIHsKLSAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSByZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQo
c3RydWN0IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBj
cmVhdGlvblBhcmFtZXRlcnMpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFja2VuZChXZWJL
aXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KQogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0
cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2Vi
S2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCmluZGV4IDRlMThmMTg2OTNmNTQ5MWMxOThkYWZh
YjE3MTIxZWVmNjJiNzU0MGMuLmI2OWQ0ZTQ2NTA1N2JlMDNkZTM5N2JiNjUwNTQyMGZmZDdlZmE2
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKQEAgLTE2MSwxMyAr
MTYxLDYgQEAgdm9pZCBHUFVQcm9jZXNzOjppbml0aWFsaXplR1BVUHJvY2VzcyhHUFVQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
b25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShw
YXJhbWV0ZXJzLmNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAj
ZW5kaWYKLSAgICAKLSNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLSAgICBt
X2NvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24gPSBMYXllckhvc3RpbmdDb250ZXh0Ojpj
cmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKHsKLSAgICAgICAgbV9jYW5TaG93V2hpbGVM
b2NrZWQKLSAgICB9KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpHUFVQcm9jZXNzUHJveHk6OkRpZENy
ZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24obV9jb250ZXh0Rm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uLT5jb250ZXh0SUQoKSkpOwotI2VuZGlmCiAKICNpZiBIQVZFKENHSU1BR0VT
T1VSQ0VfV0lUSF9TRVRfQUxMT1dBQkxFX1RZUEVTKQogICAgIGF1dG8gZW1wdHlBcnJheSA9IGFk
b3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCAwLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaApp
bmRleCAwZTI1NWE4OWQ4NTIyYmZjMmFmZDEyNDMzNjdmNzU4MjRkZmQyOTAxLi4zNTlhM2M1Mjkx
MGMzMTE4OTc2MGVhODQyNzM1YzFkMjA0MDM4NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVQcm9jZXNzLmgKQEAgLTUwLDcgKzUwLDYgQEAgY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgR1BV
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBHUFVQcm9jZXNzU2Vzc2lvblBhcmFt
ZXRlcnM7Ci1jbGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwogY2xhc3MgUmVtb3RlQXVkaW9TZXNz
aW9uUHJveHlNYW5hZ2VyOwogCiBjbGFzcyBHUFVQcm9jZXNzIDogcHVibGljIEF1eGlsaWFyeVBy
b2Nlc3MsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxHUFVQcm9jZXNzPiB7CkBAIC0xNzAs
MTAgKzE2OSw2IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB9OwogICAgIEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIEdQVVNlc3Npb24+IG1fc2Vzc2lvbnM7Ci0jaWYgSEFWRShWSVNJQklMSVRZX1BS
T1BBR0FUSU9OX1ZJRVcpCi0gICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+
IG1fY29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbjsKLSAgICBib29sIG1fY2FuU2hvd1do
aWxlTG9ja2VkIHsgZmFsc2UgfTsKLSNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpOb3dQbGF5aW5nTWFuYWdlcj4gbV9ub3dQbGF5aW5nTWFuYWdlcjsKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIFVTRShBVURJT19TRVNTSU9OKQogICAgIG11dGFibGUgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcj4gbV9hdWRpb1Nlc3Npb25NYW5hZ2Vy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDJiZmM5M2E3M2Y0YzZjY2Q5NzQ3Mjc5ZTVk
OTlkMDQ3NjcxYzM5ODUuLjEyNmZlMmNmZWFjZmI2OTM0YzJmNDhmZmU1NjM2NTY2NDJhZGQ0YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMwLDEwICszMCwxMiBAQAogCiAjaW5jbHVk
ZSAiRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC02MywyMCArNjUsMjggQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZSkKK1JlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYm
IGNyZWF0aW9uUGFyYW1ldGVycykKIHsKLSAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5l
dyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50
aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgYXV0byBp
bnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycykpKTsKICAgICBpbnN0
YW5jZS0+c3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAK
LVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZSkKK1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFy
YW1ldGVycykKICAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kIHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1
ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkpCiAgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICAsIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUoV1RGTW92ZShyZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpCisgICAgLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKGNyZWF0aW9uUGFyYW1ldGVycy5pZGVudGlmaWVyKQorICAgICwg
bV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycy5y
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKworI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQorICAgIG1fY29u
dGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbiA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0
ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoeworICAgICAgICBjcmVhdGlvblBhcmFtZXRlcnMu
Y2FuU2hvd1doaWxlTG9ja2VkCisgICAgfSk7CisgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6IENyZWF0ZWQgY29udGV4dCB3aXRoIElEICV1IGZvciB2aXNp
YmlsaXR5IHByb3BhZ2F0aW9uIGZyb20gVUlQcm9jZXNzIiwgbV9jb250ZXh0Rm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uLT5jb250ZXh0SUQoKSk7CisgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT5ncHVQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6R1BVUHJvY2Vzc1Byb3h5OjpEaWRDcmVh
dGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKGNyZWF0aW9uUGFyYW1ldGVycy5wYWdl
UHJveHlJRCwgY3JlYXRpb25QYXJhbWV0ZXJzLnBhZ2VJRCwgbV9jb250ZXh0Rm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uLT5jb250ZXh0SUQoKSkpOworI2VuZGlmCiB9CiAKIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6c3RhcnRMaXN0ZW5pbmdGb3JJUEMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgK
aW5kZXggNDYwY2JmMmJjZDgzMjg2NGFmYjEwYWY3MzVhODJiMTM4OWFlNTA4YS4uOGM1ODZkNGRk
NThlY2IwM2E5MzcyOTRjN2Y4MjU2NzZjYzE4NzdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBA
IC01OCw2ICs1OCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZTsKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBMYXll
ckhvc3RpbmdDb250ZXh0Oworc3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnM7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKICAgICA6IHByaXZhdGUg
SVBDOjpNZXNzYWdlU2VuZGVyCkBAIC02NSw3ICs2Nyw3IEBAIGNsYXNzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQgewogcHVibGljOgogCi0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycyYmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CiAgICAgdm9p
ZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKQEAgLTg2LDcgKzg4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7CisgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7
CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlv
bikgb3ZlcnJpZGU7CkBAIC0xNjEsNiArMTYzLDkgQEAgcHJpdmF0ZToKICAgICBJUEM6OlNlbWFw
aG9yZSBtX2dldEltYWdlRGF0YVNlbWFwaG9yZTsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBt
X2dldEltYWdlRGF0YVNoYXJlZE1lbW9yeTsKICAgICBTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0IG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDsKKyNpZiBIQVZFKFZJU0lCSUxJVFlf
UFJPUEFHQVRJT05fVklFVykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4
dD4gbV9jb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyZmFhMzc2MmJlYjY3NjkzODU3MDNjZmM1ZjIy
NzY3NTU4MDQzM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0w
LDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklQQ1Nl
bWFwaG9yZS5oIgorI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHsKKyAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciBpZGVudGlmaWVyOworICAgIElQQzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlOworICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQ7CisgICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQgeyBmYWxzZSB9OworI2VuZGlmCisKKyAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNv
ZGVyIDw8IGlkZW50aWZpZXIgPDwgcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUgPDwgcGFnZVBy
b3h5SUQgPDwgcGFnZUlEOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgIGVuY29k
ZXIgPDwgY2FuU2hvd1doaWxlTG9ja2VkOworI2VuZGlmCisgICAgfQorCisgICAgc3RhdGljIE9w
dGlvbmFsPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM+IGRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBPcHRpb25hbDxSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcj4gaWRlbnRpZmllcjsKKyAgICAgICAgZGVjb2RlciA+PiBpZGVudGlm
aWVyOworICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPElQQzo6U2VtYXBob3JlPiByZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZTsKKyAgICAgICAgZGVjb2RlciA+PiByZXN1bWVEaXNwbGF5TGlzdFNlbWFw
aG9yZTsKKyAgICAgICAgaWYgKCFyZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5
SWRlbnRpZmllcj4gcGFnZVByb3h5SUQ7CisgICAgICAgIGRlY29kZXIgPj4gcGFnZVByb3h5SUQ7
CisgICAgICAgIGlmICghcGFnZVByb3h5SUQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7
CisgICAgICAgIGRlY29kZXIgPj4gcGFnZUlEOworICAgICAgICBpZiAoIXBhZ2VJRCkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gY2Fu
U2hvd1doaWxlTG9ja2VkOworICAgICAgICBkZWNvZGVyID4+IGNhblNob3dXaGlsZUxvY2tlZDsK
KyAgICAgICAgaWYgKCFjYW5TaG93V2hpbGVMb2NrZWQpCisgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eyAqaWRlbnRpZmllciwgV1RGTW92ZSgqcmVz
dW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpLCAqcGFnZVByb3h5SUQsICpwYWdlSUQsICpjYW5TaG93
V2hpbGVMb2NrZWQgfX07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmlu
ZGV4IGEyOWQxNzNiZmZhNGNiZDQ4N2VhODdhYzdhMDMyYzY5ODgxOWVmNzcuLjgzZjlkNjVjOWUw
NmE2ZWY1NWEzZjU0M2IxMzk4YjY0MDFjNGY3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0zOTcsMTcgKzM5NywyMCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dm9pY2VzRGlkQ2hhbmdlKCkKICNlbmRpZiAvLyBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVX
KQotdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFn
YXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExh
eWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpCiB7Ci0gICAgbV9jb250ZXh0SURGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb24gPSBjb250ZXh0SUQ7Ci0gICAgcGFnZUNsaWVudCgpLmRpZENyZWF0
ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oY29udGV4dElEKTsKKyAgICBtX2NvbnRl
eHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluV2ViUHJvY2VzcyA9IGNvbnRleHRJRDsKKyAg
ICBwYWdlQ2xpZW50KCkuZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQ
cm9wYWdhdGlvbihjb250ZXh0SUQpOwogfQogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZUNvbnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5
UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkKIHsKKyAgICBtX2Nv
bnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluR1BVUHJvY2VzcyA9IGNvbnRleHRJRDsK
ICAgICBwYWdlQ2xpZW50KCkuZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0ZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbihjb250ZXh0SUQpOwogfQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEdQ
VV9QUk9DRVNTKQorI2VuZGlmIC8vIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Z3JhbnRBY2Nlc3NUb1ByZWZlcmVuY2VTZXJ2aWNlKCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKaW5k
ZXggYjUxOTc1NWM0ZThmYjZmZjQ5NjI1ZTZhOTI5ZWU1N2VhODQ3ZGI1Ni4uYWQ1OGM5NGYxMDhi
OWM4MWI0NGZlNTRmNDlhZmY4Mzk5MDQzOWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJHUFVQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NTZXNzaW9u
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQcm92aXNpb25h
bFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBh
Z2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgpAQCAtMjU5LDEyICsyNjAs
NiBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCiB2b2lkIEdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIGNvbnN0IEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewog
ICAgIGFkZFNlc3Npb24od2ViUHJvY2Vzc1Byb3h5LndlYnNpdGVEYXRhU3RvcmUoKSk7Ci0jaWYg
SEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgaWYgKG1fY29udGV4dElERm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uKQotICAgICAgICB3ZWJQcm9jZXNzUHJveHkuZGlkQ3JlYXRl
Q29udGV4dEluR1BVUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihtX2NvbnRleHRJREZv
clZpc2liaWxpdHlQcm9wYWdhdGlvbik7Ci0gICAgZWxzZQotICAgICAgICBtX3Byb2Nlc3Nlc1Bl
bmRpbmdWaXNpYmlsaXR5UHJvcGFnYXRpb25Ob3RpZmljYXRpb24uYXBwZW5kKG1ha2VXZWFrUHRy
KHdlYlByb2Nlc3NQcm94eSkpOwotI2VuZGlmCiAKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgIiVwIC0gR1BVUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNz
ZXJ0aW9uIGJlY2F1c2UgYSB3ZWIgcHJvY2VzcyBpcyByZXF1ZXN0aW5nIGEgY29ubmVjdGlvbiIs
IHRoaXMpOwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6R1BVUHJvY2Vzczo6Q3Jl
YXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vz
c0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpLCBwYXJhbWV0ZXJzIH0s
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJl
cGx5KV0oYXV0byYmIGlkZW50aWZpZXIpIG11dGFibGUgewpAQCAtNDIzLDIwICs0MTgsMjQgQEAg
dm9pZCBHUFVQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgd2ViUHJvY2Vzc0kKIH0KIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdB
VElPTl9WSUVXKQotdm9pZCBHUFVQcm9jZXNzUHJveHk6OmRpZENyZWF0ZUNvbnRleHRGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkKK3ZvaWQg
R1BVUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9u
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkKIHsKLSAgICBt
X2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbiA9IGNvbnRleHRJRDsKLQotICAgIGF1
dG8gcHJvY2Vzc2VzID0gV1RGTW92ZShtX3Byb2Nlc3Nlc1BlbmRpbmdWaXNpYmlsaXR5UHJvcGFn
YXRpb25Ob3RpZmljYXRpb24pOwotICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3Nlcykg
ewotICAgICAgICBpZiAocHJvY2VzcykKLSAgICAgICAgICAgIHByb2Nlc3MtPmRpZENyZWF0ZUNv
bnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oY29udGV4dElEKTsKKyAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiR1BVUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVDb250ZXh0
Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOiB3ZWJQYWdlUHJveHlJRDogJSIgUFJJdTY0ICIsIHBh
Z2VQSUQ6ICUiIFBSSXU2NCAiLCBjb250ZXh0SUQ6ICVkIiwgd2ViUGFnZVByb3h5SUQudG9VSW50
NjQoKSwgcGFnZUlELnRvVUludDY0KCksIGNvbnRleHRJRCk7CisgICAgYXV0byogcGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZSh3ZWJQYWdlUHJveHlJRCk7CisgICAgaWYgKCFwYWdlKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICJHUFVQcm9jZXNzUHJveHk6OmRpZENyZWF0
ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oKSBObyBXZWJQYWdlUHJveHkgd2l0aCB0
aGlzIGlkZW50aWZpZXIiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLX0KLQotTGF5ZXJIb3N0
aW5nQ29udGV4dElEIEdQVVByb2Nlc3NQcm94eTo6Y29udGV4dElERm9yVmlzaWJpbGl0eVByb3Bh
Z2F0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJv
cGFnYXRpb247CisgICAgaWYgKHBhZ2UtPndlYlBhZ2VJRCgpID09IHBhZ2VJRCkgeworICAgICAg
ICBwYWdlLT5kaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0
aW9uKGNvbnRleHRJRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byogcHJvdmlz
aW9uYWxQYWdlID0gcGFnZS0+cHJvdmlzaW9uYWxQYWdlUHJveHkoKTsKKyAgICBpZiAocHJvdmlz
aW9uYWxQYWdlICYmIHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCkgPT0gcGFnZUlEKSB7Cisg
ICAgICAgIHByb3Zpc2lvbmFsUGFnZS0+ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0ZvclZp
c2liaWxpdHlQcm9wYWdhdGlvbihjb250ZXh0SUQpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICJHUFVQcm9jZXNzUHJveHk6OmRpZENyZWF0ZUNvbnRl
eHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oKSBUaGVyZSB3YXMgYSBXZWJQYWdlUHJveHkgZm9y
IHRoaXMgaWRlbnRpZmllciwgYnV0IGl0IGhhZCB0aGUgd3JvbmcgV2ViUGFnZSBpZGVudGlmaWVy
LiIpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzUHJveHkuaAppbmRleCA4ZjVlYWZlYzkxNzdiZjBiOGQ5NjMwYTBhYjdhZjkxNWQ5NzU5YTkz
Li5lNDNmMzRmODdiOGUzYTA3N2I3MTQxMDg0MTExYTRiYjFmZGE1ZGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCkBAIC04MywxMCArODMsNiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCi0j
aWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgTGF5ZXJIb3N0aW5nQ29u
dGV4dElEIGNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpIGNvbnN0OwotI2VuZGlm
Ci0KICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBkaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5n
ZWQoQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyk7CiAjZW5k
aWYKQEAgLTEyMyw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdGVybWluYXRlV2ViUHJv
Y2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlf
UFJPUEFHQVRJT05fVklFVykKLSAgICB2b2lkIGRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5
UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsKKyAgICB2b2lkIGRpZENyZWF0ZUNv
bnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIExheWVySG9zdGluZ0NvbnRleHRJRCk7CiAjZW5kaWYKIAog
ICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CkBAIC0xMzMsMTEgKzEyOSw2IEBAIHBy
aXZhdGU6CiAgICAgdWludDY0X3QgbV9vcmllbnRhdGlvbiB7IDAgfTsKICNlbmRpZgogICAgIEhh
c2hTZXQ8UEFMOjpTZXNzaW9uSUQ+IG1fc2Vzc2lvbklEczsKLQotI2lmIEhBVkUoVklTSUJJTElU
WV9QUk9QQUdBVElPTl9WSUVXKQotICAgIExheWVySG9zdGluZ0NvbnRleHRJRCBtX2NvbnRleHRJ
REZvclZpc2liaWxpdHlQcm9wYWdhdGlvbiB7IDAgfTsKLSAgICBWZWN0b3I8V2Vha1B0cjxXZWJQ
cm9jZXNzUHJveHk+PiBtX3Byb2Nlc3Nlc1BlbmRpbmdWaXNpYmlsaXR5UHJvcGFnYXRpb25Ob3Rp
ZmljYXRpb247Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggYmQzN2FhNWU4MDg4MzNiMjQxNzAwMjc4MmVjZDg2N2EzMDdmZGQ1Zi4uYWZhMWZi
NjQzYWRhNTAxNTA2MjM3NDFiYjllNDczYjQyZjUwYjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0y
NSw3ICsyNSw3IEBACiBtZXNzYWdlcyAtPiBHUFVQcm9jZXNzUHJveHkgTm90UmVmQ291bnRlZCB7
CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLSAgICBEaWRDcmVhdGVD
b250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4
dElEIGNvbnRleHRJRCkKKyAgICBEaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0
aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCBjb250
ZXh0SUQpCiAjZW5kaWYKIAogICAgIFRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKaW5kZXggZGM5NTQzMGE4YWI1ZjFlYzc4OWI1NDAwYWYwMDU1NTNjNzAyM2Y5YS4u
NzlmZTA1MDU1OGRhY2RiMmI0N2JlNzMxMGUxNDMzNmVhNmViZmVkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzM1LDkgKzMzNSwxMSBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0Nv
bnRleHRJRCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nl
c3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKSB7IH0KKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUNvbnRleHRJ
bkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElE
KSB7IH0KICNlbmRpZgorI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgdmly
dHVhbCB2b2lkIGdwdVByb2Nlc3NDcmFzaGVkKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggNDQzMmViZmNjNTRhYzUzNTA2
MmZjODA1NDQ1YzQ5M2YzZGMzZTBmNy4uMTIxMmVmYmQxMTNlMzUyMWMzZTM1MGU4YTkxYmVhY2Y2
ODY3MjNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcApAQCAtNjgsNyArNjgsMTAgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zp
c2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm8KICAg
ICAsIG1fcHJvdmlzaW9uYWxMb2FkQWN0aXZpdHkobV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3Jl
Z3JvdW5kQWN0aXZpdHkoIlByb3Zpc2lvbmFsIExvYWQiX3MpKQogI2VuZGlmCiAjaWYgSEFWRShW
SVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgLCBtX2NvbnRleHRJREZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbihzdXNwZW5kZWRQYWdlID8gc3VzcGVuZGVkUGFnZS0+Y29udGV4dElERm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uKCkgOiAwKQorICAgICwgbV9jb250ZXh0SURGb3JWaXNpYmls
aXR5UHJvcGFnYXRpb25JbldlYlByb2Nlc3Moc3VzcGVuZGVkUGFnZSA/IHN1c3BlbmRlZFBhZ2Ut
PmNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluV2ViUHJvY2VzcygpIDogMCkKKyNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgLCBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9w
YWdhdGlvbkluR1BVUHJvY2VzcyhzdXNwZW5kZWRQYWdlID8gc3VzcGVuZGVkUGFnZS0+Y29udGV4
dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNzKCkgOiAwKQorI2VuZGlmCiAj
ZW5kaWYKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlBy
b3Zpc2lvbmFsUGFnZVByb3h5OiBzdXNwZW5kZWRQYWdlPSVwIiwgc3VzcGVuZGVkUGFnZS5nZXQo
KSk7CkBAIC0zOTMsMTIgKzM5NiwyMCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpjb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkRm9yRnJhbWUoY29uc3QgV2ViQ29yZTo6Q29udAogI2VuZGlm
CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLXZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5
ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5
ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFn
YXRpb246IGNvbnRleHRJRD0ldSIsIGNvbnRleHRJRCk7Ci0gICAgbV9jb250ZXh0SURGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb24gPSBjb250ZXh0SUQ7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJp
bGl0eVByb3BhZ2F0aW9uOiBjb250ZXh0SUQ9JXUiLCBjb250ZXh0SUQpOworICAgIG1fY29udGV4
dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzID0gY29udGV4dElEOwogfQot
I2VuZGlmCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9u
KExheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpCit7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uOiBjb250ZXh0SUQ9JXUiLCBjb250ZXh0SUQpOworICAgIG1f
Y29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNzID0gY29udGV4dElE
OworfQorI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNlbmRpZiAvLyBIQVZFKFZJU0lC
SUxJVFlfUFJPUEFHQVRJT05fVklFVykKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6dW5m
cmVlemVMYXllclRyZWVEdWVUb1N3aXBlQW5pbWF0aW9uKCkKIHsKQEAgLTUxNCw4ICs1MjUsOCBA
QCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RAogI2VuZGlmCiAKICNpZiBIQVZFKFZJU0lCSUxJVFlf
UFJPUEFHQVRJT05fVklFVykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRp
b246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbj4oZGVjb2Rl
ciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJp
bGl0eVByb3BhZ2F0aW9uKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmls
aXR5UHJvcGFnYXRpb246Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2li
aWxpdHlQcm9wYWdhdGlvbj4oZGVjb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggZWU5ZGQzYWQ3ODc0ODBkNTkxMWIzNDFmMjAw
YTg5Y2MwNGUyZTI1My4uNDkyYTQ4NWZmZTA5ZTMwODA1MDQzMGIyMTU5NTM4ZWRmOWI5MzRjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBA
IC05MSw3ICs5MSwxMSBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VBY2Nlc3Np
YmlsaXR5VG9rZW4oKSB7IHJldHVybiBXVEZNb3ZlKG1fYWNjZXNzaWJpbGl0eVRva2VuKTsgfQog
I2VuZGlmCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgTGF5ZXJI
b3N0aW5nQ29udGV4dElEIGNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOyB9CisgICAgTGF5
ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluV2Vi
UHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0
aW9uSW5XZWJQcm9jZXNzOyB9CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIHZvaWQgZGlk
Q3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhv
c3RpbmdDb250ZXh0SUQpOworICAgIExheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SURGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
eHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluR1BVUHJvY2VzczsgfQorI2VuZGlmCiAjZW5k
aWYKIAogICAgIHZvaWQgbG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiA9IFdURjo6bnVsbG9wdCk7CkBAIC0xNDIsNyArMTQ2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFtZShjb25zdCBXZWJDb3JlOjpDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogI2Vu
ZGlmCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgdm9pZCBkaWRD
cmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJ
RCk7CisgICAgdm9pZCBkaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVBy
b3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgaW5p
dGlhbGl6ZVdlYlBhZ2UoUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmKTsKQEAgLTE2Nyw3
ICsxNzEsMTAgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8UHJvY2Vzc1Rocm90dGxlcjo6Rm9y
ZWdyb3VuZEFjdGl2aXR5PiBtX3Byb3Zpc2lvbmFsTG9hZEFjdGl2aXR5OwogI2VuZGlmCiAjaWYg
SEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgTGF5ZXJIb3N0aW5nQ29udGV4
dElEIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uIHsgMCB9OworICAgIExheWVy
SG9zdGluZ0NvbnRleHRJRCBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluV2Vi
UHJvY2VzcyB7IDAgfTsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgTGF5ZXJIb3N0aW5n
Q29udGV4dElEIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNz
IHsgMCB9OworI2VuZGlmCiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDQ2NGZiNzU3ZDIyYTZmOGRiZDYyZjc5NDk2
OWNjYzQxNTk5NGYwYWIuLmM3YzFjYWM5ZDVhODE0MWU1ZWFiODNiNWVkYTQ0ZDFjYjlkZmViMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApA
QCAtMTA1LDcgKzEwNSwxMCBAQCBTdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94
eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JgogICAgICwgbV9zdXNw
ZW5zaW9uQWN0aXZpdHkobV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IlBhZ2Ugc3VzcGVuc2lvbiBmb3IgYmFjay9mb3J3YXJkIGNhY2hlIl9zKS5tb3ZlVG9VbmlxdWVQ
dHIoKSkKICNlbmRpZgogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQotICAg
ICwgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24ocGFnZS5jb250ZXh0SURGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb24oKSkKKyAgICAsIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVBy
b3BhZ2F0aW9uSW5XZWJQcm9jZXNzKHBhZ2UuY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0
aW9uSW5XZWJQcm9jZXNzKCkpCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgICwgbV9jb250
ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3MocGFnZS5jb250ZXh0SURG
b3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3MoKSkKKyNlbmRpZgogI2VuZGlmCiB7
CiAgICAgYWxsU3VzcGVuZGVkUGFnZXMoKS5hZGQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCmluZGV4IDY1ZDY3MTliN2Q0OTE0ZWQyOGExM2Q1
Y2I0OTQyNTBiNjVjYzQ4YjYuLmU4YzA5NTMzMTY1ZDdjZGVlOWI4ZTlkMDg4OTE4MGNmYWJmYzE5
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCkBA
IC03Niw3ICs3NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZVdpdGhvdXRGbGFzaGluZygp
OwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgTGF5ZXJIb3N0
aW5nQ29udGV4dElEIGNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOyB9CisgICAgTGF5ZXJI
b3N0aW5nQ29udGV4dElEIGNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluV2ViUHJv
Y2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9u
SW5XZWJQcm9jZXNzOyB9CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIExheWVySG9zdGlu
Z0NvbnRleHRJRCBjb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluR1BV
UHJvY2VzczsgfQorI2VuZGlmCiAjZW5kaWYKIAogI2lmICFMT0dfRElTQUJMRUQKQEAgLTExNCw3
ICsxMTcsMTAgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxl
cjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX3N1c3BlbnNpb25BY3Rpdml0eTsKICNlbmRpZgogI2lm
IEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQotICAgIExheWVySG9zdGluZ0NvbnRl
eHRJRCBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbiB7IDAgfTsKKyAgICBMYXll
ckhvc3RpbmdDb250ZXh0SUQgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25Jbldl
YlByb2Nlc3MgeyAwIH07CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIExheWVySG9zdGlu
Z0NvbnRleHRJRCBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluR1BVUHJvY2Vz
cyB7IDAgfTsKKyNlbmRpZgogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA5OTA5MDBkNmExMzEyZGUxMmRiNzIxOWQxYWQ1OGFkM2ZmN2Vk
MzIyLi42NTQwZmYzYTU5M2ZhOTcxOGFkN2Q2NTM3OGIwNzMwNmYxMjIxN2VmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTkzNiw3ICs5MzYsMTAgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJv
dmlzaW9uYWxQYWdlUHJveHk+IHAKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nlc3Mt
PndlYnNpdGVEYXRhU3RvcmUoKTsKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9W
SUVXKQotICAgIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uID0gcHJvdmlzaW9u
YWxQYWdlLT5jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oKTsKKyAgICBtX2NvbnRl
eHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluV2ViUHJvY2VzcyA9IHByb3Zpc2lvbmFsUGFn
ZS0+Y29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzKCk7CisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0
aW9uSW5HUFVQcm9jZXNzID0gcHJvdmlzaW9uYWxQYWdlLT5jb250ZXh0SURGb3JWaXNpYmlsaXR5
UHJvcGFnYXRpb25JbkdQVVByb2Nlc3MoKTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBpZiAobV9s
b2dnZXIpCkBAIC03NDkyLDcgKzc0OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0
ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAKICNpZiBIQVZFKFZJU0lCSUxJ
VFlfUFJPUEFHQVRJT05fVklFVykKICAgICBpZiAocmVzZXRTdGF0ZVJlYXNvbiAhPSBSZXNldFN0
YXRlUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCkKLSAgICAgICAgbV9jb250ZXh0SURGb3JWaXNpYmls
aXR5UHJvcGFnYXRpb24gPSAwOworICAgICAgICBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9w
YWdhdGlvbkluV2ViUHJvY2VzcyA9IDA7CiAjZW5kaWYKIAogICAgIGlmIChtX29wZW5QYW5lbFJl
c3VsdExpc3RlbmVyKSB7CkBAIC0xMDMzMiw2ICsxMDMzNSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKQogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIHZvaWQgV2ViUGFnZVByb3h5OjpncHVQcm9jZXNzQ3Jhc2hlZCgpCiB7CisjaWYgSEFWRShW
SVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCisgICAgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5
UHJvcGFnYXRpb25JbkdQVVByb2Nlc3MgPSAwOworI2VuZGlmCisKICAgICBwYWdlQ2xpZW50KCku
Z3B1UHJvY2Vzc0NyYXNoZWQoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDU5MjhkMDVmYmJkOTdmNDM2NGM0Yjc3
NTgyNjA0NThlMzc5ZTJjZDguLjM0OTExYzFhNjJiNzZkYWJjYzNmMDM1NTAyYmFhYzQ0YTg1MjQ1
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjI0LDkgKzEy
MjQsMTIgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJ
T05fVklFVykKLSAgICB2b2lkIGRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRp
b24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsKKyAgICB2b2lkIGRpZENyZWF0ZUNvbnRleHRJbldl
YlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsK
KyAgICBMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0
aW9uSW5XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5
UHJvcGFnYXRpb25JbldlYlByb2Nlc3M7IH0KKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAg
dm9pZCBkaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9u
KExheWVySG9zdGluZ0NvbnRleHRJRCk7Ci0gICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRl
eHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dElE
Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOyB9CisgICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNv
bnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluR1BVUHJvY2VzcygpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNzOyB9Cisj
ZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpAQCAtMjkxOCw3ICsyOTIx
LDEwIEBAIHByaXZhdGU6CiAgICAgVGV4dE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayBtX3RleHRN
YW5pcHVsYXRpb25JdGVtQ2FsbGJhY2s7CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJ
T05fVklFVykKLSAgICBMYXllckhvc3RpbmdDb250ZXh0SUQgbV9jb250ZXh0SURGb3JWaXNpYmls
aXR5UHJvcGFnYXRpb24geyAwIH07CisgICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIG1fY29udGV4
dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzIHsgMCB9OworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKyAgICBMYXllckhvc3RpbmdDb250ZXh0SUQgbV9jb250ZXh0SURGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3MgeyAwIH07CisjZW5kaWYKICNlbmRpZgog
CiAgICAgSGFzaE1hcDxXZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXIqLCBXZWFrUHRyPFdl
YlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlcj4+IG1fd2ViVmlld0RpZE1vdmVUb1dpbmRvd09i
c2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBmZjZiYjY4YTkyZDVhNTFjMGUzMTliODI2MThjMDFmODRkY2I4MDNjLi5m
MDFkOGEwNWRiYTBjZTc2MmNjMzBkODhkMGFiNmViZjcxMTU2MTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01NTksNyArNTU5
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAjaWYgSEFWRShWSVNJ
QklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgRGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbihXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpOwor
ICAgIERpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24o
V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElEKTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IDMzNDk0MjJhMmY4YmRiOTdkNGQ5ZWQ5Nzk4NmNkOWU1MzVlMjVjZTEuLjM2
ZjhiOThlNmI2YTU0M2ViYjViNmY0ZmI3YTY4YzU0NTY0MzU5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTk1NywxNCArMTk1Nyw2IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyCiAjZW5kaWYKIH0KIAotI2lmIEhBVkUoVklTSUJJTElUWV9Q
Uk9QQUdBVElPTl9WSUVXKQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZUNvbnRleHRJ
bkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElE
IGNvbnRleHRJRCkKLXsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBjb3B5VG9WZWN0b3JPZjxSZWZQ
dHI8V2ViUGFnZVByb3h5Pj4obV9wYWdlTWFwLnZhbHVlcygpKSkKLSAgICAgICAgcGFnZS0+ZGlk
Q3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihjb250ZXh0
SUQpOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTbGVlcERp
c2FibGVyKFNsZWVwRGlzYWJsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
cmVhc29uLCBib29sIGRpc3BsYXkpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyghcmVhc29uLmlzTnVs
bCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTY4
YTljMTUxYjNjMmQwMTdiZjBkN2ZkMGFiNGY2YWIzMjg0OTk0ZS4uYzc2YzgxNTM1MjQyZjljNTcx
ZjUxMmM1ZGQ0NWJmZDMzMjI4NjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKQEAgLTYyLDEwICs2Miw2IEBACiAjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAotI2lmIEhBVkUoVklTSUJJ
TElUWV9QUk9QQUdBVElPTl9WSUVXKQotI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIK
LSNlbmRpZgotCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBQYWdl
Q29uZmlndXJhdGlvbjsKQEAgLTM3OSwxMCArMzc1LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
SGFzSXNzdWVkQXR0YWNobWVudEVsZW1lbnRSZWxhdGVkU2FuZGJveEV4dGVuc2lvbnMoKSB7IG1f
aGFzSXNzdWVkQXR0YWNobWVudEVsZW1lbnRSZWxhdGVkU2FuZGJveEV4dGVuc2lvbnMgPSB0cnVl
OyB9CiAjZW5kaWYKIAotI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQotICAg
IHZvaWQgZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlv
bihMYXllckhvc3RpbmdDb250ZXh0SUQpOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAgICAgdm9pZCBncHVQcm9jZXNzQ3Jhc2hlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IGM4MzkzMjIwNjVm
NTkwZjU0MGMyMGM1YzI1NDk1NDVmNjYxMTA2ZTMuLmNkMWNkMGI0ZmUxNDhjZDk0MjQ5NWQ0MzM4
OTYzYmJhZTM3NTMyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCkBAIC03MiwxMCArNzIsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBy
b2Nlc3NEaWRFeGl0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwcm9jZXNzV2lsbFN3YXAoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpIG92ZXJyaWRlOworCiAjaWYgSEFW
RShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgdm9pZCBkaWRDcmVhdGVDb250ZXh0
Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3Bh
Z2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCkgb3ZlcnJpZGU7CisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0ZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpIG92ZXJyaWRlOwotI2VuZGlmCisj
ZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQorI2VuZGlmIC8vIEhBVkUoVklTSUJJTElUWV9Q
Uk9QQUdBVElPTl9WSUVXKQorCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIHZvaWQgZ3B1
UHJvY2Vzc0NyYXNoZWQoKSBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDMyODQ0NDA2ZmExOWI5ZmUz
NjZiYmE2MDAyYjcwYzY4Mjg4ZDJkZWMuLmIyMWQ4YmNmOGYzMjc2OWY2ZWM4MTNjNDg0NDc1Njdj
ZmY1ZmVjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MubW0KQEAgLTE5OCwxNiArMTk4LDE4IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRp
ZFJlbGF1bmNoUHJvY2VzcygpCiB9CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05f
VklFVykKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5
UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXll
ckhvc3RpbmdDb250ZXh0SUQpCiB7Ci0gICAgW21fY29udGVudFZpZXcgX3Byb2Nlc3NEaWRDcmVh
dGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uXTsKKyAgICBbbV9jb250ZW50VmlldyBf
d2ViUHJvY2Vzc0RpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25dOwogfQog
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ3JlYXRl
Q29udGV4dEluR1BVUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdD
b250ZXh0SUQpCiB7CiAgICAgW21fY29udGVudFZpZXcgX2dwdVByb2Nlc3NEaWRDcmVhdGVDb250
ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uXTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKKyNlbmRpZiAvLyBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklF
VykKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIHZvaWQgUGFnZUNsaWVudEltcGw6OmdwdVBy
b2Nlc3NDcmFzaGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
dy5oCmluZGV4IGM5NGM5YjFlOTUyZjVmOWUyMjE5MTM0ZTRmMzAzMGM5NjQwNDkzODMuLjNmNzA5
NTdjODIyYjUwZDUxM2ViYmM4YjJhOGE2ZjBiZDM3N2VjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaApAQCAtMTAzLDEwICsxMDMsMTQgQEAgZW51bSBj
bGFzcyBWaWV3U3RhYmlsaXR5RmxhZyA6IHVpbnQ4X3Q7CiAjZW5kaWYKIC0gKHZvaWQpX3Byb2Nl
c3NXaWxsU3dhcDsKIC0gKHZvaWQpX2RpZFJlbGF1bmNoUHJvY2VzczsKKwogI2lmIEhBVkUoVklT
SUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQotLSAodm9pZClfcHJvY2Vzc0RpZENyZWF0ZUNvbnRl
eHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb247CistICh2b2lkKV93ZWJQcm9jZXNzRGlkQ3JlYXRl
Q29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbjsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAtICh2b2lkKV9ncHVQcm9jZXNzRGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbjsKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKKyNlbmRpZiAvLyBI
QVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKKwogLSAodm9pZClfc2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ1Jvb3RWaWV3OihVSVZpZXcgKilyb290VmlldzsKIAogLSAodm9pZClfc2hv
d0luc3BlY3RvckhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SGln
aGxpZ2h0JiloaWdobGlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tCmluZGV4IDEyNjZkOTAwYjkxM2NiZTVmNjdhNzMwM2Y4ZjcyYjhiODk4NWFlMWQu
LmNhNGY4NTNiNDhkYmI4ZjNiMDA1NWVjZjljNjhiY2ExYmI2ZjQxZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC0xMzUsOSArMTM1LDExIEBA
IEBpbXBsZW1lbnRhdGlvbiBXS0NvbnRlbnRWaWV3IHsKICAgICBSZXRhaW5QdHI8V0tJbnNwZWN0
b3JIaWdobGlnaHRWaWV3PiBfaW5zcGVjdG9ySGlnaGxpZ2h0VmlldzsKIAogI2lmIEhBVkUoVklT
SUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQotICAgIFJldGFpblB0cjxfVUlMYXllckhvc3RWaWV3
PiBfdmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlldzsKKyAgICBSZXRhaW5QdHI8X1VJTGF5ZXJIb3N0
Vmlldz4gX3Zpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JXZWJQcm9jZXNzOworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKICAgICBSZXRhaW5QdHI8X1VJTGF5ZXJIb3N0Vmlldz4gX3Zpc2liaWxp
dHlQcm9wYWdhdGlvblZpZXdGb3JHUFVQcm9jZXNzOwotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxF
KEdQVV9QUk9DRVNTKQorI2VuZGlmIC8vIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVX
KQogCiAgICAgV2ViQ29yZTo6SGlzdG9yaWNhbFZlbG9jaXR5RGF0YSBfaGlzdG9yaWNhbEtpbmVt
YXRpY0RhdGE7CiAKQEAgLTIwNCw4ICsyMDYsMTAgQEAgLSAoaW5zdGFuY2V0eXBlKV9jb21tb25J
bml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHIK
ICNlbmRpZgogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgW3Nl
bGYgX3NldHVwVmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld107CisgICAgW3NlbGYgX3NldHVwVmlz
aWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvcldlYlByb2Nlc3NdOworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKICAgICBbc2VsZiBfc2V0dXBWaXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3Rm9yR1BVUHJv
Y2Vzc107CisjZW5kaWYKICNlbmRpZgogCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfYXBwbGljYXRp
b25XaWxsUmVzaWduQWN0aXZlOikgbmFtZTpVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5v
dGlmaWNhdGlvbiBvYmplY3Q6W1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dXTsKQEAg
LTIyMywyNyArMjI3LDI4IEBAIC0gKGluc3RhbmNldHlwZSlfY29tbW9uSW5pdGlhbGl6YXRpb25X
aXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByCiB9CiAKICNpZiBIQVZF
KFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLS0gKHZvaWQpX3NldHVwVmlzaWJpbGl0eVBy
b3BhZ2F0aW9uVmlldworLSAodm9pZClfc2V0dXBWaXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3Rm9y
V2ViUHJvY2VzcwogewogICAgIGF1dG8gcHJvY2Vzc0lkZW50aWZpZXIgPSBfcGFnZS0+cHJvY2Vz
cygpLnByb2Nlc3NJZGVudGlmaWVyKCk7Ci0gICAgYXV0byBjb250ZXh0SUQgPSBfcGFnZS0+Y29u
dGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKCk7CisgICAgYXV0byBjb250ZXh0SUQgPSBf
cGFnZS0+Y29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzKCk7CiAg
ICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllciB8fCAhY29udGV4dElEKQogICAgICAgICByZXR1cm47
CiAKLSAgICBBU1NFUlQoIV92aXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3KTsKKyAgICBBU1NFUlQo
IV92aXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3Rm9yV2ViUHJvY2Vzcyk7CiAgICAgLy8gUHJvcGFn
YXRlIHRoZSB2aWV3J3MgdmlzaWJpbGl0eSBzdGF0ZSB0byB0aGUgV2ViQ29udGVudCBwcm9jZXNz
IHNvIHRoYXQgaXQgaXMgbWFya2VkIGFzICJGb3JlZ3JvdW5kIFJ1bm5pbmciIHdoZW4gbmVjZXNz
YXJ5LgotICAgIF92aXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3ID0gYWRvcHROUyhbW19VSUxheWVy
SG9zdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBwaWQ6cHJvY2Vzc0lkZW50
aWZpZXIgY29udGV4dElEOmNvbnRleHRJRF0pOwotICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICJD
cmVhdGVkIHZpc2liaWxpdHkgcHJvcGFnYXRpb24gdmlldyAlcCAoY29udGV4dElEPSV1KSBmb3Ig
V2ViQ29udGVudCBwcm9jZXNzIHdpdGggUElEPSVkIiwgX3Zpc2liaWxpdHlQcm9wYWdhdGlvblZp
ZXcuZ2V0KCksIGNvbnRleHRJRCwgcHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIFtzZWxmIGFkZFN1
YnZpZXc6X3Zpc2liaWxpdHlQcm9wYWdhdGlvblZpZXcuZ2V0KCldOworICAgIF92aXNpYmlsaXR5
UHJvcGFnYXRpb25WaWV3Rm9yV2ViUHJvY2VzcyA9IGFkb3B0TlMoW1tfVUlMYXllckhvc3RWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gcGlkOnByb2Nlc3NJZGVudGlmaWVyIGNv
bnRleHRJRDpjb250ZXh0SURdKTsKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiQ3JlYXRlZCB2
aXNpYmlsaXR5IHByb3BhZ2F0aW9uIHZpZXcgJXAgKGNvbnRleHRJRD0ldSkgZm9yIFdlYkNvbnRl
bnQgcHJvY2VzcyB3aXRoIFBJRD0lZCIsIF92aXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3Rm9yV2Vi
UHJvY2Vzcy5nZXQoKSwgY29udGV4dElELCBwcm9jZXNzSWRlbnRpZmllcik7CisgICAgW3NlbGYg
YWRkU3VidmlldzpfdmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvcldlYlByb2Nlc3MuZ2V0KCld
OwogfQogCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogLSAodm9pZClfc2V0dXBWaXNpYmlsaXR5
UHJvcGFnYXRpb25WaWV3Rm9yR1BVUHJvY2VzcwogewogICAgIGF1dG8qIGdwdVByb2Nlc3MgPSBf
cGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuZ3B1UHJvY2VzcygpOwogICAgIGlmICghZ3B1
UHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gcHJvY2Vzc0lkZW50aWZpZXIgPSBn
cHVQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpOwotICAgIGF1dG8gY29udGV4dElEID0gZ3B1
UHJvY2Vzcy0+Y29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKCk7CisgICAgYXV0byBj
b250ZXh0SUQgPSBfcGFnZS0+Y29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5HUFVQ
cm9jZXNzKCk7CiAgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllciB8fCAhY29udGV4dElEKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTI1NSwxNSArMjYwLDE2IEBAIC0gKHZvaWQpX3NldHVwVmlzaWJp
bGl0eVByb3BhZ2F0aW9uVmlld0ZvckdQVVByb2Nlc3MKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
LCAiQ3JlYXRlZCB2aXNpYmlsaXR5IHByb3BhZ2F0aW9uIHZpZXcgJXAgKGNvbnRleHRJRD0ldSkg
Zm9yIEdQVSBwcm9jZXNzIHdpdGggUElEPSVkIiwgX3Zpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdG
b3JHUFVQcm9jZXNzLmdldCgpLCBjb250ZXh0SUQsIHByb2Nlc3NJZGVudGlmaWVyKTsKICAgICBb
c2VsZiBhZGRTdWJ2aWV3Ol92aXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3Rm9yR1BVUHJvY2Vzcy5n
ZXQoKV07CiB9CisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0tICh2b2lkKV9yZW1v
dmVWaXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3CistICh2b2lkKV9yZW1vdmVWaXNpYmlsaXR5UHJv
cGFnYXRpb25WaWV3Rm9yV2ViUHJvY2VzcwogewotICAgIGlmICghX3Zpc2liaWxpdHlQcm9wYWdh
dGlvblZpZXcpCisgICAgaWYgKCFfdmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvcldlYlByb2Nl
c3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICJSZW1vdmlu
ZyB2aXNpYmlsaXR5IHByb3BhZ2F0aW9uIHZpZXcgJXAiLCBfdmlzaWJpbGl0eVByb3BhZ2F0aW9u
Vmlldy5nZXQoKSk7Ci0gICAgW192aXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3IHJlbW92ZUZyb21T
dXBlcnZpZXddOwotICAgIF92aXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3ID0gbnVsbHB0cjsKKyAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzLCAiUmVtb3ZpbmcgdmlzaWJpbGl0eSBwcm9wYWdhdGlvbiB2
aWV3ICVwIiwgX3Zpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JXZWJQcm9jZXNzLmdldCgpKTsK
KyAgICBbX3Zpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JXZWJQcm9jZXNzIHJlbW92ZUZyb21T
dXBlcnZpZXddOworICAgIF92aXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3Rm9yV2ViUHJvY2VzcyA9
IG51bGxwdHI7CiB9CiAKIC0gKHZvaWQpX3JlbW92ZVZpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdG
b3JHUFVQcm9jZXNzCkBAIC0yNzUsNyArMjgxLDcgQEAgLSAodm9pZClfcmVtb3ZlVmlzaWJpbGl0
eVByb3BhZ2F0aW9uVmlld0ZvckdQVVByb2Nlc3MKICAgICBbX3Zpc2liaWxpdHlQcm9wYWdhdGlv
blZpZXdGb3JHUFVQcm9jZXNzIHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIF92aXNpYmlsaXR5
UHJvcGFnYXRpb25WaWV3Rm9yR1BVUHJvY2VzcyA9IG51bGxwdHI7CiB9Ci0jZW5kaWYKKyNlbmRp
ZiAvLyBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKIAogLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooTmFrZWRSZWY8V2ViS2l0
OjpXZWJQcm9jZXNzUG9vbD4pcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3CiB7CkBAIC02MzUsNyArNjQxLDcgQEAgLSAodm9pZClfcHJvY2Vzc0RpZEV4aXQKICAgICBb
c2VsZiBfaGlkZUluc3BlY3RvckhpZ2hsaWdodF07CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJP
UEFHQVRJT05fVklFVykKLSAgICBbc2VsZiBfcmVtb3ZlVmlzaWJpbGl0eVByb3BhZ2F0aW9uVmll
d107CisgICAgW3NlbGYgX3JlbW92ZVZpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JXZWJQcm9j
ZXNzXTsKICNlbmRpZgogCiAgICAgX3BkZlByaW50Q2FsbGJhY2tJRCA9IDA7CkBAIC02NDQsNyAr
NjUwLDkgQEAgLSAodm9pZClfcHJvY2Vzc0RpZEV4aXQKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAtICh2b2lkKV9ncHVQcm9jZXNzQ3Jhc2hlZAogeworI2lmIEhBVkUoVklTSUJJTElUWV9QUk9Q
QUdBVElPTl9WSUVXKQogICAgIFtzZWxmIF9yZW1vdmVWaXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3
Rm9yR1BVUHJvY2Vzc107CisjZW5kaWYKIH0KICNlbmRpZgogCkBAIC02NTksMTQgKzY2NywxNyBA
QCAtICh2b2lkKV9kaWRSZWxhdW5jaFByb2Nlc3MKICAgICBbc2VsZiBfYWNjZXNzaWJpbGl0eVJl
Z2lzdGVyVUlQcm9jZXNzVG9rZW5zXTsKICAgICBbc2VsZiBzZXRVcEludGVyYWN0aW9uXTsKICNp
ZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLSAgICBbc2VsZiBfc2V0dXBWaXNp
YmlsaXR5UHJvcGFnYXRpb25WaWV3XTsKKyAgICBbc2VsZiBfc2V0dXBWaXNpYmlsaXR5UHJvcGFn
YXRpb25WaWV3Rm9yV2ViUHJvY2Vzc107CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIFtz
ZWxmIF9zZXR1cFZpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JHUFVQcm9jZXNzXTsKKyNlbmRp
ZgogI2VuZGlmCiB9CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLS0g
KHZvaWQpX3Byb2Nlc3NEaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uCist
ICh2b2lkKV93ZWJQcm9jZXNzRGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlv
bgogewotICAgIFtzZWxmIF9zZXR1cFZpc2liaWxpdHlQcm9wYWdhdGlvblZpZXddOworICAgIFtz
ZWxmIF9zZXR1cFZpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JXZWJQcm9jZXNzXTsKIH0KIAog
LSAodm9pZClfZ3B1UHJvY2Vzc0RpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDlmZTlhMjlkYTg2YWY1ZDRiYTkyY2E0NjY5NmM4MTViNWEwNjAzNDcuLjBjZTZmYzcwMTM2
ZjU4MTI0MzA5MTQ3Y2YxMWYzZmVlNjYzN2IwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTQ2LDYgKzk0Niw4IEBACiAJCTQ0OUQ5
MERBMjFGREMzMEIwMEY2NzdDMCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDlEOTBEODIxRkQ2
M0ZFMDBGNjc3QzAgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLm1tICovOyB9OwogCQk0
NEU5MzZGRDI0NDdDMkQ4MDA5RkEzRTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFOTM2RkMyNDQ3QzI1
NjAwOUZBM0UzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sSUQuaCAqLzsgfTsKIAkJNDRFQzNFQTky
NDdGNUMwOTAwNTk0ODlDIC8qIF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0RUMzRUE4MjQ3RjVDMDgwMDU5NDg5
QyAvKiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggKi87IH07CisJCTQ2MDg4QTAwMjYxRkE4QkMw
MEUyNTAwRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTA2NDBBMzI0MDcxQTYxMDBBQUUwNDUgLyogUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oICovOyB9OworCQk0NjA4OEEwMTI2MUZBOEM0MDBFMjUwMEQg
LyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYwODg5RkYyNjFGQThBOTAwRTI1
MDBEIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsK
IAkJNDYwRjQ4OEYxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTQ2MEY0ODkwMUY5OTZG
NzEwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBGNDg4RTFGOTk2
RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICov
OyB9OwogCQk0NjE0RjEzMjI1REVEODc1MDA3MDA2RTcgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Q
YXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkFDNTMyNDI1REVEODFFMDAzQjU3RUMgLyogR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0
ZXJzLmggKi87IH07CkBAIC0zODU0LDYgKzM4NTYsNyBAQAogCQk0NEVDM0VBODI0N0Y1QzA4MDA1
OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2MDMwMTFBMjM0QkUzMUQwMDlDODIxNyAvKiBXZWJCYWNrRm9yd2FyZENhY2hl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJk
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjAzMDExQjIzNEJFMzFF
MDA5QzgyMTcgLyogV2ViQmFja0ZvcndhcmRDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2MDg4OUZGMjYxRkE4QTkwMEUyNTAwRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Q3JlYXRpb25QYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYw
RjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0NjBG
NDg4RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNDYyMTA3RDcxRjM4REJEMzAwREQ3ODEwIC8qIFBpbmdMb2Fk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpbmdMb2FkLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4MTUsNiArODgxOCw3IEBACiAJCQkJNTUw
NjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLAog
CQkJCTU1MDY0MEEzMjQwNzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgg
Ki8sCiAJCQkJNTUwNjQwQTQyNDA3MUMyMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW4gKi8sCisJCQkJNDYwODg5RkYyNjFGQThBOTAwRTI1MDBEIC8qIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywKIAkJCQk3MjZENTZERDI1
M0E2NDgxMDAwMkVGOTAgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgKi8sCiAJCQkJNzI2RDU2
REUyNTNBNjQ4MTAwMDJFRjkwIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuaCAqLywKIAkJCQk3QkNG
NzBDQTI2MTQ5MzVFMDBFNEZCNzAgLyogU2NvcGVkUmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdC5j
cHAgKi8sCkBAIC0xMjE2NSw2ICsxMjE2OSw4IEBACiAJCQkJMUE1NzA0RkMxQkUxNzUxMTAwODc0
QUYxIC8qIFJlbW90ZU9iamVjdEludm9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEz
MzgwMTg1OTBBRTQwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFDMTMzODYxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MDg4QTAwMjYxRkE4QkMwMEUyNTAwRCAv
KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjA4OEEwMTI2
MUZBOEM0MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3OTAxODdCM0IzQTAwNDM3ODU3IC8qIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU5NDdBODE4N0I1
MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY1OTQ3OUIxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDJkM2UzNzY5ZjdhMjc0N2M4ZGY1OTk4YzZkZTIzZGU0
YjA2YzllOGQuLjAwNTQ2MWQ0YmJjMjcxODZlNTdmMDIxMmIyZTUxNWRmYzA5MzhiZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTM1LDE4ICszNSwyOCBA
QAogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmNyZWF0ZSgpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
PiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlKQog
ewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
PihuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkpOworICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PihuZXcgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KHdlYlBhZ2UpKTsKIH0KIAotUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKQorUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoV2ViUGFnZSYgd2ViUGFnZSkKKyAgICA6
IG1fcGFyYW1ldGVycyB7CisgICAgICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpLAorICAgICAgICBJUEM6OlNlbWFwaG9yZSB7IH0sCisgICAgICAgIHdlYlBhZ2Uud2Vi
UGFnZVByb3h5SWRlbnRpZmllcigpLAorICAgICAgICB3ZWJQYWdlLmlkZW50aWZpZXIoKSwKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICB3ZWJQYWdlLmNhblNob3dXaGlsZUxvY2tl
ZCgpCisjZW5kaWYKKyAgICB9CiB7CiAgICAgY29ubmVjdFRvR1BVUHJvY2VzcygpOwogfQpAQCAt
NTgsMTUgKzY4LDE1IEBAIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6flJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSgpCiAgICAgbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcigqdGhpcyk7CiAKICAgICAvLyBSZWxlYXNlIHRoZSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLgotICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbGVh
c2VSZW5kZXJpbmdCYWNrZW5kKG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpLCAwLCBJUEM6
OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7
CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZVJl
bmRlcmluZ0JhY2tlbmQocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSksIDAsIElQQzo6U2Vu
ZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3Mo
KQogewogICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlz
KTsKLSAgICBjb25uZWN0aW9uLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwot
ICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRl
cmluZ0JhY2tlbmQobV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgbV9yZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBjb25uZWN0aW9uLm1lc3NhZ2VSZWNlaXZlck1h
cCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgKnRoaXMpOworICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9wYXJhbWV0ZXJzKSwgMCwgSVBDOjpT
ZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVlc3RhYmxpc2hHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpCkBAIC03Niw3ICs4Niw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpyZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKCkKICAgICBmb3IgKGF1
dG8mIGltYWdlQnVmZmVyIDogbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaW1hZ2VCdWZmZXJz
KCkudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpD
cmVhdGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSwgaW1hZ2VCdWZmZXIt
PnJlbmRlcmluZ01vZGUoKSwgaW1hZ2VCdWZmZXItPnJlc29sdXRpb25TY2FsZSgpLCBpbWFnZUJ1
ZmZlci0+Y29sb3JTcGFjZSgpLCBpbWFnZUJ1ZmZlci0+cGl4ZWxGb3JtYXQoKSwgaW1hZ2VCdWZm
ZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSwgaW1hZ2VC
dWZmZXItPnJlbmRlcmluZ01vZGUoKSwgaW1hZ2VCdWZmZXItPnJlc29sdXRpb25TY2FsZSgpLCBp
bWFnZUJ1ZmZlci0+Y29sb3JTcGFjZSgpLCBpbWFnZUJ1ZmZlci0+cGl4ZWxGb3JtYXQoKSwgaW1h
Z2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkpOwogICAgICAgICBpbWFnZUJ1ZmZlci0+Y2xlYXJCYWNrZW5kKCk7
CiAgICAgfQogfQpAQCAtMTAxLDEzICsxMTEsMTMgQEAgSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAog
dWludDY0X3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIudG9VSW50NjQoKTsKKyAgICByZXR1cm4gcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKS50
b1VJbnQ2NCgpOwogfQogCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRpZFJlY2VpdmVC
YWNrZW5kQ3JlYXRpb25SZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9y
RGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCkKIHsKICAgICBSZWY8SVBDOjpDb25uZWN0aW9u
PiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgaWYgKCFjb25uZWN0aW9uLT53YWl0Rm9yQW5k
RGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQ+KG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2Fn
ZUFycml2ZXMpKQorICAgIGlmICghY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRp
YXRlbHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkQ3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kPihyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCAxX3MsIElQQzo6
V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkKICAg
ICAgICAgcmV0dXJuIERpZFJlY2VpdmVCYWNrZW5kQ3JlYXRpb25SZXN1bHQ6OlRpbWVvdXRPcklQ
Q0ZhaWx1cmU7CiAgICAgcmV0dXJuIERpZFJlY2VpdmVCYWNrZW5kQ3JlYXRpb25SZXN1bHQ6OlJl
Y2VpdmVkQW55UmVzcG9uc2U7CiB9CkBAIC0xMTUsNyArMTI1LDcgQEAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpEaWRSZWNlaXZlQmFja2VuZENyZWF0aW9uUmVzdWx0IFJlbW90ZVJlbmRl
cmluZ0JhY2sKIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9yRGlkRmx1
c2goKQogewogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsK
LSAgICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkRmx1c2g+KG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIsIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0
aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAgIHJldHVybiBjb25uZWN0aW9uLT53YWl0Rm9y
QW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpEaWRGbHVzaD4ocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgMV9zLCBJUEM6Oldh
aXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAK
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCkBAIC0xMzYsNyArMTQ2LDcgQEAgUmVmUHRy
PEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2kKICAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQsICp0aGlzKTsKIAogICAgIGlmIChpbWFnZUJ1ZmZlcikgewotICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1
ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0LCBpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVz
c2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmlu
Z01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGltYWdlQnVm
ZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSksIHJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KTsKICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogICAgIH0KIApAQCAt
MTU3LDExICsxNjcsMTEgQEAgU2hhcmVkTWVtb3J5KiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OnNoYXJlZE1lbW9yeUZvckdldEltYWdlRGF0YShzaXplX3QgZGEKICAgICBJUEM6OlNlbWFw
aG9yZSBzZW1hcGhvcmU7CiAKICAgICBpZiAobmVlZHNTaGFyZWRNZW1vcnkgJiYgbmVlZHNTZW1h
cGhvcmUpCi0gICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpVcGRhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVGb3JHZXRJbWFnZURhdGEoZGF0YVNpemUp
LCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6VXBkYXRlU2hhcmVkTWVtb3J5QW5k
U2VtYXBob3JlRm9yR2V0SW1hZ2VEYXRhOjpSZXBseShoYW5kbGUsIHNlbWFwaG9yZSksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIHRpbWVvdXQsIElQQzo6U2VuZFN5bmNPcHRpb246Ok1h
aW50YWluT3JkZXJpbmdXaXRoQXN5bmNNZXNzYWdlcyk7CisgICAgICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpVcGRhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhv
cmVGb3JHZXRJbWFnZURhdGEoZGF0YVNpemUpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6VXBkYXRlU2hhcmVkTWVtb3J5QW5kU2VtYXBob3JlRm9yR2V0SW1hZ2VEYXRhOjpSZXBs
eShoYW5kbGUsIHNlbWFwaG9yZSksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIHRpbWVv
dXQsIElQQzo6U2VuZFN5bmNPcHRpb246Ok1haW50YWluT3JkZXJpbmdXaXRoQXN5bmNNZXNzYWdl
cyk7CiAgICAgZWxzZSBpZiAobmVlZHNTaGFyZWRNZW1vcnkpCi0gICAgICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpVcGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRJ
bWFnZURhdGEoZGF0YVNpemUpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6VXBk
YXRlU2hhcmVkTWVtb3J5Rm9yR2V0SW1hZ2VEYXRhOjpSZXBseShoYW5kbGUpLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLCB0aW1lb3V0LCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpNYWludGFp
bk9yZGVyaW5nV2l0aEFzeW5jTWVzc2FnZXMpOworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6VXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0SW1hZ2VEYXRh
KGRhdGFTaXplKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlVwZGF0ZVNoYXJl
ZE1lbW9yeUZvckdldEltYWdlRGF0YTo6UmVwbHkoaGFuZGxlKSwgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIoKSwgdGltZW91dCwgSVBDOjpTZW5kU3luY09wdGlvbjo6TWFpbnRhaW5PcmRlcmlu
Z1dpdGhBc3luY01lc3NhZ2VzKTsKICAgICBlbHNlIGlmIChuZWVkc1NlbWFwaG9yZSkKLSAgICAg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlNlbWFwaG9yZUZv
ckdldEltYWdlRGF0YSgpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6U2VtYXBo
b3JlRm9yR2V0SW1hZ2VEYXRhOjpSZXBseShzZW1hcGhvcmUpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLCB0aW1lb3V0KTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OlNlbWFwaG9yZUZvckdldEltYWdlRGF0YSgpLCBNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6U2VtYXBob3JlRm9yR2V0SW1hZ2VEYXRhOjpSZXBseShzZW1h
cGhvcmUpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCB0aW1lb3V0KTsKIAogICAgIGlm
ICghaGFuZGxlLmhhbmRsZS5pc051bGwoKSkgewogICAgICAgICBtX2dldEltYWdlRGF0YVNoYXJl
ZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwpAQCAtMTg2LDcgKzE5Niw3IEBAIGJvb2wgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9yR2V0SW1hZ2VEYXRhVG9Db21wbGV0ZShJUEM6OlRp
bWVvdXQgdGltCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGVzdHJveUdldElt
YWdlRGF0YVNoYXJlZE1lbW9yeSgpCiB7CiAgICAgbV9nZXRJbWFnZURhdGFTaGFyZWRNZW1vcnkg
PSBudWxscHRyOwotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkRl
c3Ryb3lHZXRJbWFnZURhdGFTaGFyZWRNZW1vcnkoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkRl
c3Ryb3lHZXRJbWFnZURhdGFTaGFyZWRNZW1vcnkoKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkpOwogfQogCiBTdHJpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRE
YXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAt
MTk0LDcgKzIwNCw3IEBAIFN0cmluZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldERh
dGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUCiAgICAgc2VuZERlZmVycmVk
V2FrZXVwTWVzc2FnZUlmTmVlZGVkKCk7CiAKICAgICBTdHJpbmcgdXJsU3RyaW5nOwotICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXREYXRhVVJMRm9ySW1h
Z2VCdWZmZXIobWltZVR5cGUsIHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbiwgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Okdl
dERhdGFVUkxGb3JJbWFnZUJ1ZmZlcjo6UmVwbHkodXJsU3RyaW5nKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciwgMV9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6R2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKG1pbWVUeXBlLCBxdWFsaXR5LCBw
cmVzZXJ2ZVJlc29sdXRpb24sIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXI6OlJlcGx5
KHVybFN0cmluZyksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFfcyk7CiAgICAgcmV0
dXJuIHVybFN0cmluZzsKIH0KIApAQCAtMjAzLDcgKzIxMyw3IEBAIFZlY3Rvcjx1aW50OF90PiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25zdCBT
dHJpbmcmCiAgICAgc2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKCk7CiAKICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6R2V0RGF0YUZvckltYWdlQnVmZmVyKG1pbWVUeXBlLCBxdWFsaXR5LCByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6R2V0RGF0YUZvckltYWdlQnVmZmVyOjpSZXBseShkYXRhKSwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciwgMV9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6R2V0RGF0YUZvckltYWdlQnVmZmVyKG1pbWVUeXBlLCBxdWFsaXR5LCByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
R2V0RGF0YUZvckltYWdlQnVmZmVyOjpSZXBseShkYXRhKSwgcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIoKSwgMV9zKTsKICAgICByZXR1cm4gZGF0YTsKIH0KIApAQCAtMjEyLDcgKzIyMiw3IEBA
IFZlY3Rvcjx1aW50OF90PiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEJHUkFEYXRh
Rm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nCiAgICAgc2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlm
TmVlZGVkKCk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZlcihy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6R2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZlcjo6UmVwbHkoZGF0YSksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIsIDFfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OkdldEJHUkFEYXRhRm9ySW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldEJHUkFE
YXRhRm9ySW1hZ2VCdWZmZXI6OlJlcGx5KGRhdGEpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cigpLCAxX3MpOwogICAgIHJldHVybiBkYXRhOwogfQogCkBAIC0yMjEsNyArMjMxLDcgQEAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRTaGFy
ZWFibGVCaXRtYXAoUmVuZGVyaW4KICAgICBzZW5kRGVmZXJyZWRXYWtldXBNZXNzYWdlSWZOZWVk
ZWQoKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0
U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHByZXNlcnZlUmVzb2x1
dGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRTaGFyZWFibGVCaXRt
YXBGb3JJbWFnZUJ1ZmZlcjo6UmVwbHkoaGFuZGxlKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciwgMV9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIsIHByZXNlcnZlUmVzb2x1dGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpHZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcjo6UmVwbHkoaGFuZGxlKSwg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgMV9zKTsKICAgICBpZiAoaGFuZGxlLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm4geyB9OwogICAgIEFTU0VSVF9VTlVTRUQoc2VuZFJlc3VsdCwg
c2VuZFJlc3VsdCk7CkBAIC0yMzAsMTcgKzI0MCwxNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldFNoYXJlYWJsZUJpdG1hcChSZW5kZXJp
bgogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlTmF0aXZlSW1hZ2UoaGFuZGxlLCByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVOYXRp
dmVJbWFnZShoYW5kbGUsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIHJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmNhY2hlRm9udChSZWY8V2ViQ29yZTo6Rm9udD4mJiBmb250KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlRm9udChXVEZNb3ZlKGZvbnQp
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRj
aE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlRm9udChXVEZNb3ZlKGZvbnQpKSwgcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VF
dmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6ZGVsZXRlQWxsRm9udHMoKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OkRlbGV0ZUFsbEZvbnRzKCksIG1fcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpEZWxldGVBbGxGb250cygpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCBJUEM6OlNl
bmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9
CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKQEAgLTI0OCw3ICsyNTgsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZgogICAgIGlmIChy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPT0gbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1
ZmZlcklkZW50aWZpZXIpCiAgICAgICAgIG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OwogCi0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U2VuZE9wdGlvbjo6
RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwg
SVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQ3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0yOTks
NyArMzA5LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndpbGxBcHBlbmRJ
dGVtKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBuZXcKIAogdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OnNlbmRXYWtldXBNZXNzYWdlKGNvbnN0IEdQVVByb2Nlc3NXYWtldXBN
ZXNzYWdlQXJndW1lbnRzJiBhcmd1bWVudHMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChhcmd1bWVudHMpLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVz
c2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6V2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChhcmd1bWVudHMp
LCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNo
TWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpzZW5kRGVmZXJyZWRXYWtldXBNZXNzYWdlSWZOZWVkZWQoKQpA
QCAtMzIyLDcgKzMzMiw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRB
cHBlbmREYXRhKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuCiAgICAgaWYgKCF3YXNF
bXB0eSB8fCBkaWRDaGFuZ2VJdGVtQnVmZmVyID09IERpc3BsYXlMaXN0OjpEaWRDaGFuZ2VJdGVt
QnVmZmVyOjpZZXMpIHsKICAgICAgICAgaWYgKG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1l
bnRzKSB7CiAgICAgICAgICAgICBpZiAoc2hhcmVkSGFuZGxlLT50cnlUb1Jlc3VtZSh7IG1fZGVm
ZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLT5vZmZzZXQsIG1fZGVmZXJyZWRXYWtldXBNZXNz
YWdlQXJndW1lbnRzLT5kZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgp
IH0pKSB7Ci0gICAgICAgICAgICAgICAgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS5zaWdu
YWwoKTsKKyAgICAgICAgICAgICAgICBtX3BhcmFtZXRlcnMucmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUuc2lnbmFsKCk7CiAgICAgICAgICAgICAgICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VB
cmd1bWVudHMgPSBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAgbV9yZW1haW5pbmdJdGVt
c1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCA9IDA7CiAgICAgICAgICAgICB9IGVsc2UgaWYg
KCEtLW1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXApIHsKQEAgLTMz
Nyw3ICszNDcsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGlkQXBwZW5k
RGF0YShjb25zdCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbgogCiAgICAgYXV0byBvZmZzZXRU
b1JlYWQgPSBzaGFyZWRIYW5kbGUtPndyaXRhYmxlT2Zmc2V0KCkgLSBudW1iZXJPZkJ5dGVzOwog
ICAgIGlmIChzaGFyZWRIYW5kbGUtPnRyeVRvUmVzdW1lKHsgb2Zmc2V0VG9SZWFkLCBkZXN0aW5h
dGlvbkltYWdlQnVmZmVyLnRvVUludDY0KCkgfSkpIHsKLSAgICAgICAgbV9yZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZS5zaWduYWwoKTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzLnJlc3VtZURpc3Bs
YXlMaXN0U2VtYXBob3JlLnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0z
OTYsNyArNDA2LDcgQEAgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKHNpemUKICAgICBzaGFyZWRNZW1vcnkt
PmNyZWF0ZUhhbmRsZShzaGFyZWRNZW1vcnlIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
bjo6UmVhZFdyaXRlKTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IERpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShpZGVudGlm
aWVyLCB7IFdURk1vdmUoc2hhcmVkTWVtb3J5SGFuZGxlKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkg
fSwgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkRp
ZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZpZXIsIHsgV1RGTW92ZShzaGFy
ZWRNZW1vcnlIYW5kbGUpLCBzaGFyZWRNZW1vcnktPnNpemUoKSB9LCBkZXN0aW5hdGlvbkJ1ZmZl
cklkZW50aWZpZXIpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCBJUEM6OlNlbmRPcHRp
b246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiAKICAgICBh
dXRvIG5ld0hhbmRsZSA9IERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOjpjcmVhdGUoaWRlbnRpZmll
ciwgc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGF1dG8gZGlzcGxheUxpc3RI
YW5kbGUgPSBuZXdIYW5kbGUtPmNyZWF0ZUhhbmRsZSgpOwpAQCAtNDA3LDYgKzQxNywxMSBAQCBE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZQogICAgIHJldHVybiBkaXNwbGF5TGlzdEhhbmRsZTsKIH0K
IAorUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oCmluZGV4IDMzNjdmMDE0ZTZmMWQ0YmIzYTlmM2FhNjI1NzI0MjkxZjkyYTczOGUuLjg1ZWJm
YjliODU1ZjVmYmY5MmY1YWRhNjQxYmJiYjQ1YmQxNGQ5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0Rpc3BsYXlMaXN0Lmg+CkBAIC01NiwxMyArNTcsMTQgQEAgZW51bSBjbGFzcyBSZW5kZXJp
bmdNb2RlIDogYm9vbDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEaXNwbGF5TGlzdFdy
aXRlckhhbmRsZTsKK2NsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eQogICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgICwgcHVibGljIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpD
bGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gY3JlYXRlKFdlYlBhZ2UmKTsKIAogICAgIH5SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIApAQCAtMTA2LDkgKzEwOCwxMCBAQCBwdWJsaWM6
CiAgICAgRGlkUmVjZWl2ZUJhY2tlbmRDcmVhdGlvblJlc3VsdCB3YWl0Rm9yRGlkQ3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kKCk7CiAgICAgYm9vbCB3YWl0Rm9yRGlkRmx1c2goKTsKIAotICAgIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjsgfQorICAgIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3Q7CisK
IHByaXZhdGU6Ci0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CisgICAgZXhwbGlj
aXQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KFdlYlBhZ2UmKTsKIAogICAgIC8vIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlk
Q2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKQEAgLTEyNSwxNCArMTI4LDEzIEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRXYWtldXBNZXNzYWdlKGNvbnN0IEdQVVByb2Nlc3NX
YWtldXBNZXNzYWdlQXJndW1lbnRzJik7CiAKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwogICAgIEhhc2hNYXA8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8RGlzcGxheUxp
c3RXcml0ZXJIYW5kbGU+PiBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlczsKICAgICBEZXF1ZTxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+IG1faWRlbnRpZmllcnNP
ZlJldXNhYmxlSGFuZGxlczsKLSAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIHsgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI6OmdlbmVy
YXRlKCkgfTsKICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+IG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyOwogICAgIE9wdGlv
bmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBtX2RlZmVycmVkV2FrZXVwTWVz
c2FnZUFyZ3VtZW50czsKICAgICB1bnNpZ25lZCBtX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRCZWZv
cmVTZW5kaW5nV2FrZXVwIHsgMCB9OwotICAgIElQQzo6U2VtYXBob3JlIG1fcmVzdW1lRGlzcGxh
eUxpc3RTZW1hcGhvcmU7CiAgICAgT3B0aW9uYWw8SVBDOjpTZW1hcGhvcmU+IG1fZ2V0SW1hZ2VE
YXRhU2VtYXBob3JlOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fZ2V0SW1hZ2VEYXRhU2hh
cmVkTWVtb3J5OwogICAgIHVpbnQ2NF90IG1fZ2V0SW1hZ2VEYXRhU2hhcmVkTWVtb3J5TGVuZ3Ro
IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBjODZjY2ZlNDU4ZjBhZDQwNDNjYWY3YWQ3NDlmZTlkN2I0M2Q4YmQ2Li4wOGFiZjI3Mzgz
ZDdjMjk5N2YzYWIwN2RjOGZiZjM3ODUwMmE1YTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtODQ3LDggKzg0Nyw4IEBAIFdlYlBhZ2U6Oldl
YlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKICAgICBtX2NvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24gPSBMYXll
ckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKHsKICAgICAg
ICAgbV9jYW5TaG93V2hpbGVMb2NrZWQKICAgICB9KTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3MsICJXZWJQYWdlOiBDcmVhdGVkIGNvbnRleHQgd2l0aCBJRCAlZCBmb3Igdmlz
aWJpbGl0eSBwcm9wYWdhdGlvbiBmcm9tIFVJUHJvY2VzcyIsIG1fY29udGV4dEZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbi0+Y29udGV4dElEKCkpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihtX2NvbnRleHRG
b3JWaXNpYmlsaXR5UHJvcGFnYXRpb24tPmNvbnRleHRJRCgpKSk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChQcm9jZXNzLCAiV2ViUGFnZTogQ3JlYXRlZCBjb250ZXh0IHdpdGggSUQgJXUg
Zm9yIHZpc2liaWxpdHkgcHJvcGFnYXRpb24gZnJvbSBVSVByb2Nlc3MiLCBtX2NvbnRleHRGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb24tPmNvbnRleHRJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJv
cGFnYXRpb24obV9jb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uLT5jb250ZXh0SUQoKSkp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCkBAIC0zOTI3LDExICszOTI3LDE5
IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYgc3RvcmUpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyPigpLT5zZXRVc2VHUFVQcm9jZXNzKG1fc2hvdWxkUGxh
eU1lZGlhSW5HUFVQcm9jZXNzKTsKICNlbmRpZgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnNldFVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmcobV9zaG91bGRSZW5kZXJDYW52YXNJ
bkdQVVByb2Nlc3MpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nl
c3NGb3JET01SZW5kZXJpbmcobV9zaG91bGRSZW5kZXJET01JbkdQVVByb2Nlc3MgJiYgRHJhd2lu
Z0FyZWE6OnN1cHBvcnRzR1BVUHJvY2Vzc1JlbmRlcmluZyhtX2RyYXdpbmdBcmVhVHlwZSkpOwor
ICAgIGJvb2wgdXNpbmdHUFVQcm9jZXNzRm9yRE9NUmVuZGVyaW5nID0gbV9zaG91bGRSZW5kZXJE
T01JbkdQVVByb2Nlc3MgJiYgRHJhd2luZ0FyZWE6OnN1cHBvcnRzR1BVUHJvY2Vzc1JlbmRlcmlu
ZyhtX2RyYXdpbmdBcmVhVHlwZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNl
R1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyh1c2luZ0dQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcp
OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYSht
X3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2Vzcyk7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnNldFVzZUdQVVByb2Nlc3NGb3JXZWJHTChtX3Nob3VsZFJl
bmRlcldlYkdMSW5HUFVQcm9jZXNzKTsKICNlbmRpZgorCisgICAgLy8gRklYTUU6IFRoaXMgd2ls
bCBubyBsb25nZXIgYmUgbmVlZGVkIG9uY2Ugd2UgdXNlIHRoZSBHUFVQcm9jZXNzIGZvciBET00g
cmVuZGVyaW5nLgorICAgIC8vIEZvciBub3csIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB0aGUgR1BV
UHJvY2VzcyBmb3IgbWVkaWEgcGxheWJhY2sgb25seS4gQmVjYXVzZSBtZWRpYSBkb2VzIG5vdAor
ICAgIC8vIHVzZSB0aGUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgd2UgbmVlZCB0byBmb3JjZSB0
aGUgY3JlYXRpb24gb2YgYSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGluCisgICAgLy8gdGhlIEdQ
VVByb2Nlc3Mgc28gdGhhdCB0aGUgcGFnZSBnZXRzIGEgdmlzaWJpbGl0eSBwcm9wYWdhdGlvbiB2
aWV3LgorICAgIGlmIChtX3Nob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcyAmJiAhdXNpbmdHUFVQ
cm9jZXNzRm9yRE9NUmVuZGVyaW5nKQorICAgICAgICBlbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQSSkKQEAgLTcz
NTUsNyArNzM2Myw3IEBAIHZvaWQgV2ViUGFnZTo6bm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlv
cigpCiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIFdlYlBhZ2U6OmVuc3VyZVJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSgpCiB7CiAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSkKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgPSBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZSgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlKCp0aGlz
KTsKICAgICByZXR1cm4gKm1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfQogI2VuZGlm
Cg==
</data>
<flag name="commit-queue"
          id="445552"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425560</attachid>
            <date>2021-04-08 16:56:39 -0700</date>
            <delta_ts>2021-04-09 11:32:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224345-20210408165638.patch</filename>
            <type>text/plain</type>
            <size>79566</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQyZTEwMjIyMjljZTAxMmM1
NzIxMzdiNzVmMmQ5M2U2MTFlNTczZGQuLjQ2MjlmNzY5MTI4Njk5NDRkMjJjMTU0MGZhNmY5OTIx
NGRkNzQ1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2IEBACisyMDIxLTA0LTA4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTmVlZCB0byBwcm9wYWdhdGUgYW5k
IHVzZSAnY2FuU2hvd1doaWxlTG9ja2VkJyBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDM0NQorICAgICAgICA8cmRh
cjovLzc2MDExMjYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBHUFVQcm9jZXNzIHdhcyBwcmV2aW91c2x5IGNyZWF0aW5nIGEgc2luZ2xlIHZp
c2liaWxpdHkgcHJvcGFnYXRpb24gdmlldyBldmVuIHRob3VnaAorICAgICAgICBpdCB3YXMgcG90
ZW50aWFsbHkgc2VydmluZyBzZXZlcmFsIHdlYiB2aWV3cy4gQWxzbywgaXQgd291bGQgYWxzbyBw
YXNzCisgICAgICAgIGBjYW5TaG93V2hpbGVMb2NrZWQ9ZmFsc2VgIHdoZW4gY29uc3RydWN0aW5n
IHRoZSB2aXNpYmlsaXR5IHByb3BhZ2F0aW9uIHZpZXcsIGlnbm9yaW5nCisgICAgICAgIHRoZSB2
YWx1ZSBvZiBXS1dlYlZpZXdDb25maWd1cmF0aW9uLl9jYW5TaG93V2hpbGVMb2NrZWQuIFRoaXMg
d291bGQgbGVhZCB0byBpc3N1ZXMgZm9yCisgICAgICAgIGFwcHMgcmVseWluZyBvbiBXS1dlYlZp
ZXcgdG8gc2hvdyBjb250ZW50IG9uIHRoZSBsb2NrIHNjcmVlbi4KKworICAgICAgICBUbyBhZGRy
ZXNzIHRoZSBpc3N1ZSwgd2Ugbm93IGhhdmUgdGhlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgY29u
c3RydWN0IGl0cyBvd24KKyAgICAgICAgdmlzaWJpbGl0eSBwcm9wYWdhdGlvbiB2aWV3IGluIHRo
ZSBHUFVQcm9jZXNzLiBUaGUgR1BVUHJvY2VzcyBjb25zdHJ1Y3RzIGEKKyAgICAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCBwZXIgV2ViUGFnZSBiZWluZyBzZXJ2ZWQgc28gdGhpcyBpcyBjb252
ZW5pZW50LiBXaGVuIHNlbmRpbmcgdGhlCisgICAgICAgIElQQyB0byB0aGUgR1BVUHJvY2VzcyB0
byBjb25zdHJ1Y3QgdGhlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIHRoZSBXZWJQcm9jZXNzIG5v
dyBzZW5kcworICAgICAgICB0aGUgcGFnZSBpZGVudGlmaWVyIGFzIHdlbGwgYXMgdGhlIHZhbHVl
IG9mIHRoZSBjYW5TaG93V2hpbGVMb2NrZWQgZmxhZyBzbyB0aGF0IHdlCisgICAgICAgIGNhbiB1
c2UgdGhlIGNvcnJlY3QgY2FuU2hvd1doaWxlTG9ja2VkIGZsYWcgd2hlbiBjb25zdHJ1Y3Rpbmcg
dGhlIHZpc2liaWxpdHkgcHJvcGFnYXRpb24KKyAgICAgICAgdmlldy4KKworICAgICAgICBUaGUg
bG9naWMgaW4gdGhlIFVJUHJvY2VzcyBmb3IgZGVhbGluZyB3aXRoIEdQVVByb2Nlc3MgdmlzaWJp
bGl0eSBwcm9wYWdhdGlvbiB2aWV3cworICAgICAgICBpcyBub3cgYWxtb3N0IGlkZW50aWNhbCB0
byBXZWJQcm9jZXNzIHZpc2liaWxpdHkgcHJvcGFnYXRpb24gdmlld3MuIFRoZXkgYXJlIHN0b3Jl
ZCBvbgorICAgICAgICB0aGUgV2ViUGFnZVByb3h5IGFuZCBnZXQgc3dhcHBlZCBvbiBwcm9jZXNz
LXN3YXAgKHNpbmNlIGEgbmV3IFdlYlBhZ2UgZ2V0cyBjcmVhdGVkKS4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9j
ZXNzOjppbml0aWFsaXplR1BVUHJvY2Vzcyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5XZWJQ
cm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzUHJveHk6OmRpZENyZWF0ZUNvbnRleHRGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudDo6ZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9w
YWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFnZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZUNv
bnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0Zv
clZpc2liaWxpdHlQcm9wYWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5Ojpj
b250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbldlYlByb2Nlc3MgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6Y29udGV4dElERm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5
OjpTdXNwZW5kZWRQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmdwdVByb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRDcmVhdGVDb250ZXh0SW5X
ZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0
aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X3NldHVwVmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvcldlYlByb2Nlc3NdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfc2V0dXBWaXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3Rm9yR1BVUHJv
Y2Vzc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9yZW1vdmVWaXNpYmlsaXR5UHJvcGFn
YXRpb25WaWV3Rm9yV2ViUHJvY2Vzc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcm9j
ZXNzRGlkRXhpdF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9ncHVQcm9jZXNzQ3Jhc2hl
ZF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRSZWxhdW5jaFByb2Nlc3NdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfd2ViUHJvY2Vzc0RpZENyZWF0ZUNvbnRleHRGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb25dKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpjb25uZWN0
VG9HUFVQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpyZWVzdGFibGlzaEdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2Fp
dEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZEZsdXNoKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2hhcmVkTWVtb3J5Rm9y
R2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpkZXN0cm95R2V0SW1hZ2VEYXRhU2hhcmVkTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldERhdGFGb3JJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Z2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0U2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZUZvbnQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRlbGV0ZUFsbEZvbnRz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNl
UmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OnNlbmRXYWtldXBNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJdGVtQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSk6CisKIDIwMjEt
MDQtMDggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0Nv
Y29hXSBUZW1wb3JhcmlseSByZXRhaW4gc29tZSBtZWRpYSBzZXJ2aWNlcyB3aGVuIEdQVSBQcm9j
ZXNzIGFjdGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDQxNjhkYWQ5YzEyZDhkOTAwZGZjOGM5NGNmNjc1
NjM3Yzg2ODk2NjQuLmFlZDc0OTQ3NWNkMmNiMjY4MDIwYmNiMzI3MDRjNGQyNzViMTEzY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJSZW1vdGVSZW1vdGVDb21t
YW5kTGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5l
clByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgiCisj
aW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKICNpbmNsdWRl
ICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgpAQCAtMzM5LDEw
ICszNDAsMTAgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmltYWdlRGVjb2RlckFWRlByb3h5KCkKIH0KICNlbmRpZgogCi12b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZSkKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVu
ZGVyaW5nQmFja2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
Y3JlYXRpb25QYXJhbWV0ZXJzKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVy
biBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxp
c3RTZW1hcGhvcmUpKSB9OworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWFwLmVuc3VyZShjcmVhdGlvblBhcmFtZXRlcnMuaWRlbnRpZmllciwgWyZdKCkgewor
ICAgICAgICByZXR1cm4gSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1l
dGVycykpIH07CiAgICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDZjMDEwNTgwMmFmYzk4YTg0Y2RjNWI1MzRj
ZGY0ZjY4ZTM0ZTAwMTMuLmU4NjViNmU3YmRlOTE5YTRkZTJmYmI3NzE3ZTE3ZWEyYjRlY2ZlOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaApAQCAtNzcsNiArNzcsNyBAQCBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5Owogc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBN
ZWRpYU92ZXJyaWRlc0ZvclRlc3Rpbmc7CiBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmln
dXJhdGlvbjsKK3N0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
OwogCiBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGOjpEZXN0cnVjdGlv
blRocmVhZDo6TWFpbj4KQEAgLTE1OSw3ICsxNjAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjZW5k
aWYKIAotICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7Cisg
ICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVh
dGlvblBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDMyMDI0ZmI3ZjNmMmMyOTFkMmQ5MjQ5NTcxNTJjMGM2OTg4
NGM0ODYuLjg4NjVkMzgxOTAzZTQ0MjNlMWM0MzhjNWNhNDBiOTIwNjUwYjNkNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlz
cGF0Y2hNZXNzYWdlIHsKLSAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSByZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQo
c3RydWN0IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBj
cmVhdGlvblBhcmFtZXRlcnMpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFja2VuZChXZWJL
aXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KQogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0
cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2Vi
S2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCmluZGV4IDRlMThmMTg2OTNmNTQ5MWMxOThkYWZh
YjE3MTIxZWVmNjJiNzU0MGMuLmI2OWQ0ZTQ2NTA1N2JlMDNkZTM5N2JiNjUwNTQyMGZmZDdlZmE2
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKQEAgLTE2MSwxMyAr
MTYxLDYgQEAgdm9pZCBHUFVQcm9jZXNzOjppbml0aWFsaXplR1BVUHJvY2VzcyhHUFVQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
b25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShw
YXJhbWV0ZXJzLmNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAj
ZW5kaWYKLSAgICAKLSNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLSAgICBt
X2NvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24gPSBMYXllckhvc3RpbmdDb250ZXh0Ojpj
cmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKHsKLSAgICAgICAgbV9jYW5TaG93V2hpbGVM
b2NrZWQKLSAgICB9KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpHUFVQcm9jZXNzUHJveHk6OkRpZENy
ZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24obV9jb250ZXh0Rm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uLT5jb250ZXh0SUQoKSkpOwotI2VuZGlmCiAKICNpZiBIQVZFKENHSU1BR0VT
T1VSQ0VfV0lUSF9TRVRfQUxMT1dBQkxFX1RZUEVTKQogICAgIGF1dG8gZW1wdHlBcnJheSA9IGFk
b3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCAwLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaApp
bmRleCAwZTI1NWE4OWQ4NTIyYmZjMmFmZDEyNDMzNjdmNzU4MjRkZmQyOTAxLi4zNTlhM2M1Mjkx
MGMzMTE4OTc2MGVhODQyNzM1YzFkMjA0MDM4NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVQcm9jZXNzLmgKQEAgLTUwLDcgKzUwLDYgQEAgY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgR1BV
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBHUFVQcm9jZXNzU2Vzc2lvblBhcmFt
ZXRlcnM7Ci1jbGFzcyBMYXllckhvc3RpbmdDb250ZXh0OwogY2xhc3MgUmVtb3RlQXVkaW9TZXNz
aW9uUHJveHlNYW5hZ2VyOwogCiBjbGFzcyBHUFVQcm9jZXNzIDogcHVibGljIEF1eGlsaWFyeVBy
b2Nlc3MsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxHUFVQcm9jZXNzPiB7CkBAIC0xNzAs
MTAgKzE2OSw2IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB9OwogICAgIEhhc2hNYXA8UEFMOjpT
ZXNzaW9uSUQsIEdQVVNlc3Npb24+IG1fc2Vzc2lvbnM7Ci0jaWYgSEFWRShWSVNJQklMSVRZX1BS
T1BBR0FUSU9OX1ZJRVcpCi0gICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+
IG1fY29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbjsKLSAgICBib29sIG1fY2FuU2hvd1do
aWxlTG9ja2VkIHsgZmFsc2UgfTsKLSNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpOb3dQbGF5aW5nTWFuYWdlcj4gbV9ub3dQbGF5aW5nTWFuYWdlcjsKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIFVTRShBVURJT19TRVNTSU9OKQogICAgIG11dGFibGUgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlcj4gbV9hdWRpb1Nlc3Npb25NYW5hZ2Vy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDJiZmM5M2E3M2Y0YzZjY2Q5NzQ3Mjc5ZTVk
OTlkMDQ3NjcxYzM5ODUuLjEyNmZlMmNmZWFjZmI2OTM0YzJmNDhmZmU1NjM2NTY2NDJhZGQ0YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTMwLDEwICszMCwxMiBAQAogCiAjaW5jbHVk
ZSAiRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC02MywyMCArNjUsMjggQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZSkKK1JlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYm
IGNyZWF0aW9uUGFyYW1ldGVycykKIHsKLSAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5l
dyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50
aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgYXV0byBp
bnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZChncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycykpKTsKICAgICBpbnN0
YW5jZS0+c3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAK
LVJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZSkKK1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIGNyZWF0aW9uUGFy
YW1ldGVycykKICAgICA6IG1fd29ya1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kIHdvcmsgcXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1
ZXVlOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSkpCiAgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKLSAgICAsIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1fcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUoV1RGTW92ZShyZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpCisgICAgLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKGNyZWF0aW9uUGFyYW1ldGVycy5pZGVudGlmaWVyKQorICAgICwg
bV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZShXVEZNb3ZlKGNyZWF0aW9uUGFyYW1ldGVycy5y
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKworI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQorICAgIG1fY29u
dGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbiA9IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0
ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoeworICAgICAgICBjcmVhdGlvblBhcmFtZXRlcnMu
Y2FuU2hvd1doaWxlTG9ja2VkCisgICAgfSk7CisgICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6IENyZWF0ZWQgY29udGV4dCB3aXRoIElEICV1IGZvciB2aXNp
YmlsaXR5IHByb3BhZ2F0aW9uIGZyb20gVUlQcm9jZXNzIiwgbV9jb250ZXh0Rm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uLT5jb250ZXh0SUQoKSk7CisgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT5ncHVQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6R1BVUHJvY2Vzc1Byb3h5OjpEaWRDcmVh
dGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKGNyZWF0aW9uUGFyYW1ldGVycy5wYWdl
UHJveHlJRCwgY3JlYXRpb25QYXJhbWV0ZXJzLnBhZ2VJRCwgbV9jb250ZXh0Rm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uLT5jb250ZXh0SUQoKSkpOworI2VuZGlmCiB9CiAKIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6c3RhcnRMaXN0ZW5pbmdGb3JJUEMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgK
aW5kZXggNDYwY2JmMmJjZDgzMjg2NGFmYjEwYWY3MzVhODJiMTM4OWFlNTA4YS4uOGM1ODZkNGRk
NThlY2IwM2E5MzcyOTRjN2Y4MjU2NzZjYzE4NzdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBA
IC01OCw2ICs1OCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEaXNwbGF5TGlzdFJl
YWRlckhhbmRsZTsKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBMYXll
ckhvc3RpbmdDb250ZXh0Oworc3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnM7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQKICAgICA6IHByaXZhdGUg
SVBDOjpNZXNzYWdlU2VuZGVyCkBAIC02NSw3ICs2Nyw3IEBAIGNsYXNzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlclJl
YWRpbmdDbGllbnQgewogcHVibGljOgogCi0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycyYmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CiAgICAgdm9p
ZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKQEAgLTg2LDcgKzg4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKLSAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7CisgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9ySVBDKCk7
CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9V
TlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0
aCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlv
bikgb3ZlcnJpZGU7CkBAIC0xNjEsNiArMTYzLDkgQEAgcHJpdmF0ZToKICAgICBJUEM6OlNlbWFw
aG9yZSBtX2dldEltYWdlRGF0YVNlbWFwaG9yZTsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBt
X2dldEltYWdlRGF0YVNoYXJlZE1lbW9yeTsKICAgICBTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNS
ZXF1ZXN0IG1fcmVuZGVyaW5nUmVzb3VyY2VzUmVxdWVzdDsKKyNpZiBIQVZFKFZJU0lCSUxJVFlf
UFJPUEFHQVRJT05fVklFVykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4
dD4gbV9jb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjY2UwZWY5ZmZiNjEwMjRiZDBhOWM4ZTkwNzdl
NWM4NjZmZGM0N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0w
LDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKKworI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIlJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3N0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
KyAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgIElQQzo6U2Vt
YXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOworICAgIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZVByb3h5SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQgeyBm
YWxzZSB9OworI2VuZGlmCisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgcmVzdW1lRGlz
cGxheUxpc3RTZW1hcGhvcmUgPDwgcGFnZVByb3h5SUQgPDwgcGFnZUlEOworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgICAgIGVuY29kZXIgPDwgY2FuU2hvd1doaWxlTG9ja2VkOworI2Vu
ZGlmCisgICAgfQorCisgICAgc3RhdGljIE9wdGlvbmFsPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnM+IGRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCisgICAgewor
ICAgICAgICBPcHRpb25hbDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcj4gaWRlbnRpZmllcjsK
KyAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOworICAgICAgICBpZiAoIWlkZW50aWZpZXIp
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPElQ
Qzo6U2VtYXBob3JlPiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKKyAgICAgICAgZGVjb2Rl
ciA+PiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKKyAgICAgICAgaWYgKCFyZXN1bWVEaXNw
bGF5TGlzdFNlbWFwaG9yZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICAgICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gcGFnZVByb3h5SUQ7CisgICAg
ICAgIGRlY29kZXIgPj4gcGFnZVByb3h5SUQ7CisgICAgICAgIGlmICghcGFnZVByb3h5SUQpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgICAgIGRlY29kZXIgPj4gcGFnZUlEOwor
ICAgICAgICBpZiAoIXBhZ2VJRCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBPcHRpb25hbDxib29sPiBjYW5TaG93
V2hpbGVMb2NrZWQ7CisgICAgICAgIGRlY29kZXIgPj4gY2FuU2hvd1doaWxlTG9ja2VkOworICAg
ICAgICBpZiAoIWNhblNob3dXaGlsZUxvY2tlZCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisjZW5kaWYKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgICppZGVudGlm
aWVyLCBXVEZNb3ZlKCpyZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSksICpwYWdlUHJveHlJRCwg
KnBhZ2VJRAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgICAgICAgICAsICpjYW5TaG93
V2hpbGVMb2NrZWQKKyNlbmRpZgorICAgICAgICB9fTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggYTI5
ZDE3M2JmZmE0Y2JkNDg3ZWE4N2FjN2EwMzJjNjk4ODE5ZWY3Ny4uODNmOWQ2NWM5ZTA2YTZlZjU1
YTNmNTQzYjEzOThiNjQwMWM0ZjdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTM5NywxNyArMzk3LDIwIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp2b2ljZXNEaWRDaGFuZ2UoKQogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hf
U1lOVEhFU0lTKQogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihM
YXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElEKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENy
ZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0
aW5nQ29udGV4dElEIGNvbnRleHRJRCkKIHsKLSAgICBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQ
cm9wYWdhdGlvbiA9IGNvbnRleHRJRDsKLSAgICBwYWdlQ2xpZW50KCkuZGlkQ3JlYXRlQ29udGV4
dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihjb250ZXh0SUQpOworICAgIG1fY29udGV4dElERm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzID0gY29udGV4dElEOworICAgIHBhZ2VD
bGllbnQoKS5kaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0
aW9uKGNvbnRleHRJRCk7CiB9CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElEKQogeworICAgIG1fY29udGV4dElE
Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNzID0gY29udGV4dElEOwogICAgIHBh
Z2VDbGllbnQoKS5kaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3Bh
Z2F0aW9uKGNvbnRleHRJRCk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NF
U1MpCisjZW5kaWYgLy8gSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvUHJlZmVyZW5jZVNlcnZpY2UoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBiNTE5
NzU1YzRlOGZiNmZmNDk2MjVlNmE5MjllZTU3ZWE4NDdkYjU2Li5hZDU4Yzk0ZjEwOGI5YzgxYjQ0
ZmU1NGY0OWFmZjgzOTkwNDM5YjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkdQVVBy
b2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCkBAIC0yNTksMTIgKzI2MCw2IEBAIHZv
aWQgR1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKIHZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlv
bihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgY29uc3QgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgYWRk
U2Vzc2lvbih3ZWJQcm9jZXNzUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpKTsKLSNpZiBIQVZFKFZJ
U0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLSAgICBpZiAobV9jb250ZXh0SURGb3JWaXNpYmls
aXR5UHJvcGFnYXRpb24pCi0gICAgICAgIHdlYlByb2Nlc3NQcm94eS5kaWRDcmVhdGVDb250ZXh0
SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKG1fY29udGV4dElERm9yVmlzaWJp
bGl0eVByb3BhZ2F0aW9uKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcHJvY2Vzc2VzUGVuZGluZ1Zp
c2liaWxpdHlQcm9wYWdhdGlvbk5vdGlmaWNhdGlvbi5hcHBlbmQobWFrZVdlYWtQdHIod2ViUHJv
Y2Vzc1Byb3h5KSk7Ci0jZW5kaWYKIAogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAiJXAgLSBHUFVQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24g
YmVjYXVzZSBhIHdlYiBwcm9jZXNzIGlzIHJlcXVlc3RpbmcgYSBjb25uZWN0aW9uIiwgdGhpcyk7
CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVhdGVHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRp
ZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCksIHBhcmFtZXRlcnMgfSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXShh
dXRvJiYgaWRlbnRpZmllcikgbXV0YWJsZSB7CkBAIC00MjMsMjAgKzQxOCwyNCBAQCB2b2lkIEdQ
VVByb2Nlc3NQcm94eTo6dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSQogfQogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJ
RVcpCi12b2lkIEdQVVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQ
cm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElEKQordm9pZCBHUFVQcm9j
ZXNzUHJveHk6OmRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElEKQogewotICAgIG1fY29udGV4
dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uID0gY29udGV4dElEOwotCi0gICAgYXV0byBwcm9j
ZXNzZXMgPSBXVEZNb3ZlKG1fcHJvY2Vzc2VzUGVuZGluZ1Zpc2liaWxpdHlQcm9wYWdhdGlvbk5v
dGlmaWNhdGlvbik7Ci0gICAgZm9yIChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc2VzKSB7Ci0gICAg
ICAgIGlmIChwcm9jZXNzKQotICAgICAgICAgICAgcHJvY2Vzcy0+ZGlkQ3JlYXRlQ29udGV4dElu
R1BVUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihjb250ZXh0SUQpOworICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3MsICJHUFVQcm9jZXNzUHJveHk6OmRpZENyZWF0ZUNvbnRleHRGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb246IHdlYlBhZ2VQcm94eUlEOiAlIiBQUkl1NjQgIiwgcGFnZVBJRDog
JSIgUFJJdTY0ICIsIGNvbnRleHRJRDogJWQiLCB3ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBw
YWdlSUQudG9VSW50NjQoKSwgY29udGV4dElEKTsKKyAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vz
c1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VQcm94eUlEKTsKKyAgICBpZiAoIXBhZ2UpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIkdQVVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlQ29udGV4
dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpIE5vIFdlYlBhZ2VQcm94eSB3aXRoIHRoaXMgaWRl
bnRpZmllciIpOworICAgICAgICByZXR1cm47CiAgICAgfQotfQotCi1MYXllckhvc3RpbmdDb250
ZXh0SUQgR1BVUHJvY2Vzc1Byb3h5Ojpjb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24o
KSBjb25zdAotewotICAgIHJldHVybiBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlv
bjsKKyAgICBpZiAocGFnZS0+d2ViUGFnZUlEKCkgPT0gcGFnZUlEKSB7CisgICAgICAgIHBhZ2Ut
PmRpZENyZWF0ZUNvbnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oY29u
dGV4dElEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvKiBwcm92aXNpb25hbFBh
Z2UgPSBwYWdlLT5wcm92aXNpb25hbFBhZ2VQcm94eSgpOworICAgIGlmIChwcm92aXNpb25hbFBh
Z2UgJiYgcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKSA9PSBwYWdlSUQpIHsKKyAgICAgICAg
cHJvdmlzaW9uYWxQYWdlLT5kaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uKGNvbnRleHRJRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVM
RUFTRV9MT0coUHJvY2VzcywgIkdQVVByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEZvclZp
c2liaWxpdHlQcm9wYWdhdGlvbigpIFRoZXJlIHdhcyBhIFdlYlBhZ2VQcm94eSBmb3IgdGhpcyBp
ZGVudGlmaWVyLCBidXQgaXQgaGFkIHRoZSB3cm9uZyBXZWJQYWdlIGlkZW50aWZpZXIuIik7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5oCmluZGV4IDhmNWVhZmVjOTE3N2JmMGI4ZDk2MzBhMGFiN2FmOTE1ZDk3NTlhOTMuLmU0M2Yz
NGY4N2I4ZTNhMDc3YjcxNDEwODQxMTFhNGJiMWZkYTVkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKQEAgLTgzLDEwICs4Myw2IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAKLSNpZiBIQVZF
KFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLSAgICBMYXllckhvc3RpbmdDb250ZXh0SUQg
Y29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKCkgY29uc3Q7Ci0jZW5kaWYKLQogI2lm
IFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGRpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZChDR0Rp
cmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzKTsKICNlbmRpZgpAQCAt
MTIzLDcgKzExOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdB
VElPTl9WSUVXKQotICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpOworICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEZv
clZpc2liaWxpdHlQcm9wYWdhdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsKICNlbmRpZgogCiAgICAgUHJv
Y2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKQEAgLTEzMywxMSArMTI5LDYgQEAgcHJpdmF0ZToK
ICAgICB1aW50NjRfdCBtX29yaWVudGF0aW9uIHsgMCB9OwogI2VuZGlmCiAgICAgSGFzaFNldDxQ
QUw6OlNlc3Npb25JRD4gbV9zZXNzaW9uSURzOwotCi0jaWYgSEFWRShWSVNJQklMSVRZX1BST1BB
R0FUSU9OX1ZJRVcpCi0gICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIG1fY29udGV4dElERm9yVmlz
aWJpbGl0eVByb3BhZ2F0aW9uIHsgMCB9OwotICAgIFZlY3RvcjxXZWFrUHRyPFdlYlByb2Nlc3NQ
cm94eT4+IG1fcHJvY2Vzc2VzUGVuZGluZ1Zpc2liaWxpdHlQcm9wYWdhdGlvbk5vdGlmaWNhdGlv
bjsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBiZDM3YWE1ZTgwODgzM2IyNDE3MDAyNzgyZWNkODY3YTMwN2ZkZDVmLi5hZmExZmI2NDNhZGE1
MDE1MDYyMzc0MWJiOWU0NzNiNDJmNTBiNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1
LDcgQEAKIG1lc3NhZ2VzIC0+IEdQVVByb2Nlc3NQcm94eSBOb3RSZWZDb3VudGVkIHsKIAogI2lm
IEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQotICAgIERpZENyZWF0ZUNvbnRleHRG
b3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQgY29u
dGV4dElEKQorICAgIERpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkK
ICNlbmRpZgogCiAgICAgVGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAppbmRleCBkYzk1NDMwYThhYjVmMWVjNzg5YjU0MDBhZjAwNTU1M2M3MDIzZjlhLi43OWZlMDUw
NTU4ZGFjZGIyYjQ3YmU3MzEwZTE0MzM2ZWE2ZWJmZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC0zMzUsOSArMzM1LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYg
SEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElE
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZp
c2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpIHsgfQorI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJv
Y2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpIHsgfQog
I2VuZGlmCisjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB2aXJ0dWFsIHZv
aWQgZ3B1UHJvY2Vzc0NyYXNoZWQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA0NDMyZWJmY2M1NGFjNTM1MDYyZmM4MDU0
NDVjNDkzZjNkYzNlMGY3Li4xMjEyZWZiZDExM2UzNTIxYzNlMzUwZThhOTFiZWFjZjY4NjcyM2Rh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCkBAIC02OCw3ICs2OCwxMCBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQ
YWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1BybwogICAgICwgbV9w
cm92aXNpb25hbExvYWRBY3Rpdml0eShtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91bmRB
Y3Rpdml0eSgiUHJvdmlzaW9uYWwgTG9hZCJfcykpCiAjZW5kaWYKICNpZiBIQVZFKFZJU0lCSUxJ
VFlfUFJPUEFHQVRJT05fVklFVykKLSAgICAsIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3Bh
Z2F0aW9uKHN1c3BlbmRlZFBhZ2UgPyBzdXNwZW5kZWRQYWdlLT5jb250ZXh0SURGb3JWaXNpYmls
aXR5UHJvcGFnYXRpb24oKSA6IDApCisgICAgLCBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9w
YWdhdGlvbkluV2ViUHJvY2VzcyhzdXNwZW5kZWRQYWdlID8gc3VzcGVuZGVkUGFnZS0+Y29udGV4
dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzKCkgOiAwKQorI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKyAgICAsIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9u
SW5HUFVQcm9jZXNzKHN1c3BlbmRlZFBhZ2UgPyBzdXNwZW5kZWRQYWdlLT5jb250ZXh0SURGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3MoKSA6IDApCisjZW5kaWYKICNlbmRpZgog
ewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9u
YWxQYWdlUHJveHk6IHN1c3BlbmRlZFBhZ2U9JXAiLCBzdXNwZW5kZWRQYWdlLmdldCgpKTsKQEAg
LTM5MywxMiArMzk2LDIwIEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNvbnRlbnRGaWx0
ZXJEaWRCbG9ja0xvYWRGb3JGcmFtZShjb25zdCBXZWJDb3JlOjpDb250CiAjZW5kaWYKIAogI2lm
IEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQotdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6ZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3Rp
bmdDb250ZXh0SUQgY29udGV4dElEKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3Jl
YXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3Rp
bmdDb250ZXh0SUQgY29udGV4dElEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbjog
Y29udGV4dElEPSV1IiwgY29udGV4dElEKTsKLSAgICBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQ
cm9wYWdhdGlvbiA9IGNvbnRleHRJRDsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgImRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJv
cGFnYXRpb246IGNvbnRleHRJRD0ldSIsIGNvbnRleHRJRCk7CisgICAgbV9jb250ZXh0SURGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb25JbldlYlByb2Nlc3MgPSBjb250ZXh0SUQ7CiB9Ci0jZW5kaWYK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRp
ZENyZWF0ZUNvbnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJI
b3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCkKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZUNvbnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmls
aXR5UHJvcGFnYXRpb246IGNvbnRleHRJRD0ldSIsIGNvbnRleHRJRCk7CisgICAgbV9jb250ZXh0
SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3MgPSBjb250ZXh0SUQ7Cit9Cisj
ZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQorI2VuZGlmIC8vIEhBVkUoVklTSUJJTElUWV9Q
Uk9QQUdBVElPTl9WSUVXKQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp1bmZyZWV6ZUxh
eWVyVHJlZUR1ZVRvU3dpcGVBbmltYXRpb24oKQogewpAQCAtNTE0LDggKzUyNSw4IEBAIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpECiAjZW5kaWYKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdB
VElPTl9WSUVXKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbjo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uPihkZWNvZGVyLCB0aGlz
LCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJv
cGFnYXRpb24pOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9w
YWdhdGlvbjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVBy
b3BhZ2F0aW9uPihkZWNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0
ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaAppbmRleCBlZTlkZDNhZDc4NzQ4MGQ1OTExYjM0MWYyMDBhODljYzA0
ZTJlMjUzLi40OTJhNDg1ZmZlMDllMzA4MDUwNDMwYjIxNTk1MzhlZGY5YjkzNGNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTkxLDcg
KzkxLDExIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8dWludDhfdD4gdGFrZUFjY2Vzc2liaWxpdHlU
b2tlbigpIHsgcmV0dXJuIFdURk1vdmUobV9hY2Nlc3NpYmlsaXR5VG9rZW4pOyB9CiAjZW5kaWYK
ICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLSAgICBMYXllckhvc3RpbmdD
b250ZXh0SUQgY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb247IH0KKyAgICBMYXllckhvc3Rp
bmdDb250ZXh0SUQgY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25Jbldl
YlByb2Nlc3M7IH0KKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgdm9pZCBkaWRDcmVhdGVD
b250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0Nv
bnRleHRJRCk7CisgICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJREZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbkluR1BVUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dElERm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNzOyB9CisjZW5kaWYKICNlbmRpZgogCiAg
ICAgdm9pZCBsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0g
V1RGOjpudWxsb3B0KTsKQEAgLTE0Miw3ICsxNDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29u
dGVudEZpbHRlckRpZEJsb2NrTG9hZEZvckZyYW1lKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAjZW5kaWYKICNp
ZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLSAgICB2b2lkIGRpZENyZWF0ZUNv
bnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsKKyAg
ICB2b2lkIGRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRp
b24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsKICNlbmRpZgogCiAgICAgdm9pZCBpbml0aWFsaXpl
V2ViUGFnZShSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYpOwpAQCAtMTY3LDcgKzE3MSwx
MCBAQCBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5k
QWN0aXZpdHk+IG1fcHJvdmlzaW9uYWxMb2FkQWN0aXZpdHk7CiAjZW5kaWYKICNpZiBIQVZFKFZJ
U0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLSAgICBMYXllckhvc3RpbmdDb250ZXh0SUQgbV9j
b250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24geyAwIH07CisgICAgTGF5ZXJIb3N0aW5n
Q29udGV4dElEIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNz
IHsgMCB9OworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBMYXllckhvc3RpbmdDb250ZXh0
SUQgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3MgeyAwIH07
CisjZW5kaWYKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggNDY0ZmI3NTdkMjJhNmY4ZGJkNjJmNzk0OTY5Y2NjNDE1
OTk0ZjBhYi4uYzdjMWNhYzlkNWE4MTQxZTVlYWI4M2I1ZWRhNDRkMWNiOWRmZWIxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0xMDUs
NyArMTA1LDEwIEBAIFN1c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBh
Z2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mCiAgICAgLCBtX3N1c3BlbnNpb25B
Y3Rpdml0eShtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiUGFnZSBz
dXNwZW5zaW9uIGZvciBiYWNrL2ZvcndhcmQgY2FjaGUiX3MpLm1vdmVUb1VuaXF1ZVB0cigpKQog
I2VuZGlmCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgLCBtX2Nv
bnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihwYWdlLmNvbnRleHRJREZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbigpKQorICAgICwgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRp
b25JbldlYlByb2Nlc3MocGFnZS5jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25Jbldl
YlByb2Nlc3MoKSkKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgLCBtX2NvbnRleHRJREZv
clZpc2liaWxpdHlQcm9wYWdhdGlvbkluR1BVUHJvY2VzcyhwYWdlLmNvbnRleHRJREZvclZpc2li
aWxpdHlQcm9wYWdhdGlvbkluR1BVUHJvY2VzcygpKQorI2VuZGlmCiAjZW5kaWYKIHsKICAgICBh
bGxTdXNwZW5kZWRQYWdlcygpLmFkZCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXggNjVkNjcxOWI3ZDQ5MTRlZDI4YTEzZDVjYjQ5NDI1
MGI2NWNjNDhiNi4uZThjMDk1MzMxNjVkN2NkZWU5YjhlOWQwODg5MTgwY2ZhYmZjMTk2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTc2LDcg
Kzc2LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlV2l0aG91dEZsYXNoaW5nKCk7CiAKICNp
ZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLSAgICBMYXllckhvc3RpbmdDb250
ZXh0SUQgY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb247IH0KKyAgICBMYXllckhvc3RpbmdD
b250ZXh0SUQgY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbldlYlBy
b2Nlc3M7IH0KKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgTGF5ZXJIb3N0aW5nQ29udGV4
dElEIGNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluR1BVUHJvY2VzcygpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNz
OyB9CisjZW5kaWYKICNlbmRpZgogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtMTE0LDcgKzExNywx
MCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNr
Z3JvdW5kQWN0aXZpdHk+IG1fc3VzcGVuc2lvbkFjdGl2aXR5OwogI2VuZGlmCiAjaWYgSEFWRShW
SVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIG1f
Y29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uIHsgMCB9OworICAgIExheWVySG9zdGlu
Z0NvbnRleHRJRCBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluV2ViUHJvY2Vz
cyB7IDAgfTsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgTGF5ZXJIb3N0aW5nQ29udGV4
dElEIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNzIHsgMCB9
OworI2VuZGlmCiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDk5MDkwMGQ2YTEzMTJkZTEyZGI3MjE5ZDFhZDU4YWQzZmY3ZWQzMjIuLjY1
NDBmZjNhNTkzZmE5NzE4YWQ3ZDY1Mzc4YjA3MzA2ZjEyMjE3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTM2LDcgKzkzNiwxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQYWdlKHN0ZDo6dW5pcXVlX3B0cjxQcm92aXNpb25h
bFBhZ2VQcm94eT4gcAogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vzcy0+d2Vic2l0
ZURhdGFTdG9yZSgpOwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0g
ICAgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24gPSBwcm92aXNpb25hbFBhZ2Ut
PmNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpOworICAgIG1fY29udGV4dElERm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzID0gcHJvdmlzaW9uYWxQYWdlLT5jb250
ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbldlYlByb2Nlc3MoKTsKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisgICAgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQ
VVByb2Nlc3MgPSBwcm92aXNpb25hbFBhZ2UtPmNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbkluR1BVUHJvY2VzcygpOworI2VuZGlmCiAjZW5kaWYKIAogICAgIGlmIChtX2xvZ2dlcikK
QEAgLTc0OTIsNyArNzQ5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0
U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9Q
QUdBVElPTl9WSUVXKQogICAgIGlmIChyZXNldFN0YXRlUmVhc29uICE9IFJlc2V0U3RhdGVSZWFz
b246Ok5hdmlnYXRpb25Td2FwKQotICAgICAgICBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9w
YWdhdGlvbiA9IDA7CisgICAgICAgIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9u
SW5XZWJQcm9jZXNzID0gMDsKICNlbmRpZgogCiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIpIHsKQEAgLTEwMzMyLDYgKzEwMzM1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVh
ckxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogdm9p
ZCBXZWJQYWdlUHJveHk6OmdwdVByb2Nlc3NDcmFzaGVkKCkKIHsKKyNpZiBIQVZFKFZJU0lCSUxJ
VFlfUFJPUEFHQVRJT05fVklFVykKKyAgICBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbkluR1BVUHJvY2VzcyA9IDA7CisjZW5kaWYKKwogICAgIHBhZ2VDbGllbnQoKS5ncHVQcm9j
ZXNzQ3Jhc2hlZCgpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNTkyOGQwNWZiYmQ5N2Y0MzY0YzRiNzc1ODI2MDQ1
OGUzNzllMmNkOC4uMzQ5MTFjMWE2MmI3NmRhYmNjM2YwMzU1MDJiYWFjNDRhODUyNDU1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyMjQsOSArMTIyNCwxMiBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVX
KQotICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXll
ckhvc3RpbmdDb250ZXh0SUQpOworICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vz
c0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpOworICAgIExh
eWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25Jbldl
YlByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbkluV2ViUHJvY2VzczsgfQorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB2b2lkIGRp
ZENyZWF0ZUNvbnRleHRJbkdQVVByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJI
b3N0aW5nQ29udGV4dElEKTsKLSAgICBMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElERm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0SURGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb247IH0KKyAgICBMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElE
Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5HUFVQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3M7IH0KKyNlbmRpZgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCkBAIC0yOTE4LDcgKzI5MjEsMTAgQEAg
cHJpdmF0ZToKICAgICBUZXh0TWFuaXB1bGF0aW9uSXRlbUNhbGxiYWNrIG1fdGV4dE1hbmlwdWxh
dGlvbkl0ZW1DYWxsYmFjazsKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVX
KQotICAgIExheWVySG9zdGluZ0NvbnRleHRJRCBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9w
YWdhdGlvbiB7IDAgfTsKKyAgICBMYXllckhvc3RpbmdDb250ZXh0SUQgbV9jb250ZXh0SURGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb25JbldlYlByb2Nlc3MgeyAwIH07CisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorICAgIExheWVySG9zdGluZ0NvbnRleHRJRCBtX2NvbnRleHRJREZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbkluR1BVUHJvY2VzcyB7IDAgfTsKKyNlbmRpZgogI2VuZGlmCiAKICAgICBI
YXNoTWFwPFdlYlZpZXdEaWRNb3ZlVG9XaW5kb3dPYnNlcnZlciosIFdlYWtQdHI8V2ViVmlld0Rp
ZE1vdmVUb1dpbmRvd09ic2VydmVyPj4gbV93ZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IGZmNmJiNjhhOTJkNWE1MWMwZTMxOWI4MjYxOGMwMWY4NGRjYjgwM2MuLmYwMWQ4YTA1
ZGJhMGNlNzYyY2MzMGQ4OGQwYWI2ZWJmNzExNTYxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTU1OSw3ICs1NTksNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICNpZiBIQVZFKFZJU0lCSUxJVFlf
UFJPUEFHQVRJT05fVklFVykKLSAgICBEaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3Bh
Z2F0aW9uKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJRCk7CisgICAgRGlk
Q3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihXZWJLaXQ6
OkxheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SUQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
V0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
aW5kZXggMzM0OTQyMmEyZjhiZGI5N2Q0ZDllZDk3OTg2Y2Q5ZTUzNWUyNWNlMS4uMzZmOGI5OGU2
YjZhNTQzZWJiNWI2ZjRmYjdhNjhjNTQ1NjQzNTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xOTU3LDE0ICsxOTU3LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKGNvbnN0IFVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXIKICNlbmRpZgogfQogCi0jaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FU
SU9OX1ZJRVcpCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlQ29udGV4dEluR1BVUHJv
Y2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4
dElEKQotewotICAgIGZvciAoYXV0byYgcGFnZSA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxXZWJQ
YWdlUHJveHk+PihtX3BhZ2VNYXAudmFsdWVzKCkpKQotICAgICAgICBwYWdlLT5kaWRDcmVhdGVD
b250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKGNvbnRleHRJRCk7Ci19
Ci0jZW5kaWYKLQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVwRGlzYWJsZXIo
U2xlZXBEaXNhYmxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZWFzb24s
IGJvb2wgZGlzcGxheSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKCFyZWFzb24uaXNOdWxsKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBhNjhhOWMxNTFi
M2MyZDAxN2JmMGQ3ZmQwYWI0ZjZhYjMyODQ5OTRlLi5jNzZjODE1MzUyNDJmOWM1NzFmNTEyYzVk
ZDQ1YmZkMzMyMjg2NWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaApAQCAtNjIsMTAgKzYyLDYgQEAKICNpbmNsdWRlIDx3dGYvUm9iaW5Ib29kSGFzaFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCi0jaWYgSEFWRShWSVNJQklMSVRZX1BS
T1BBR0FUSU9OX1ZJRVcpCi0jaW5jbHVkZSAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgTmF2aWdhdGlvbjsKIGNsYXNzIFBhZ2VDb25maWd1
cmF0aW9uOwpAQCAtMzc5LDEwICszNzUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNJc3N1
ZWRBdHRhY2htZW50RWxlbWVudFJlbGF0ZWRTYW5kYm94RXh0ZW5zaW9ucygpIHsgbV9oYXNJc3N1
ZWRBdHRhY2htZW50RWxlbWVudFJlbGF0ZWRTYW5kYm94RXh0ZW5zaW9ucyA9IHRydWU7IH0KICNl
bmRpZgogCi0jaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgdm9pZCBk
aWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVy
SG9zdGluZ0NvbnRleHRJRCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAg
ICB2b2lkIGdwdVByb2Nlc3NDcmFzaGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggYzgzOTMyMjA2NWY1OTBmNTQw
YzIwYzVjMjU0OTU0NWY2NjExMDZlMy4uY2QxY2QwYjRmZTE0OGNkOTQyNDk1ZDQzMzg5NjNiYmFl
Mzc1MzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKQEAgLTcyLDEwICs3MiwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc0Rp
ZEV4aXQoKSBvdmVycmlkZTsKICAgICB2b2lkIHByb2Nlc3NXaWxsU3dhcCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCkgb3ZlcnJpZGU7CisKICNpZiBIQVZFKFZJU0lC
SUxJVFlfUFJPUEFHQVRJT05fVklFVykKLSAgICB2b2lkIGRpZENyZWF0ZUNvbnRleHRGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZENyZWF0ZUNvbnRleHRJbldlYlByb2Nlc3NGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24o
TGF5ZXJIb3N0aW5nQ29udGV4dElEKSBvdmVycmlkZTsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAgICAgdm9pZCBkaWRDcmVhdGVDb250ZXh0SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3Bh
Z2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJRCkgb3ZlcnJpZGU7Ci0jZW5kaWYKKyNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCisjZW5kaWYgLy8gSEFWRShWSVNJQklMSVRZX1BST1BBR0FU
SU9OX1ZJRVcpCisKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgdm9pZCBncHVQcm9jZXNz
Q3Jhc2hlZCgpIG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggMzI4NDQ0MDZmYTE5YjlmZTM2NmJiYTYw
MDJiNzBjNjgyODhkMmRlYy4uYjIxZDhiY2Y4ZjMyNzY5ZjZlYzgxM2M0ODQ0NzU2N2NmZjVmZWMx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQpAQCAtMTk4LDE2ICsxOTgsMTggQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVu
Y2hQcm9jZXNzKCkKIH0KIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQot
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDcmVh
dGVDb250ZXh0SW5XZWJQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGlu
Z0NvbnRleHRJRCkKIHsKLSAgICBbbV9jb250ZW50VmlldyBfcHJvY2Vzc0RpZENyZWF0ZUNvbnRl
eHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25dOworICAgIFttX2NvbnRlbnRWaWV3IF93ZWJQcm9j
ZXNzRGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbl07CiB9CiAKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDcmVhdGVDb250ZXh0
SW5HUFVQcm9jZXNzRm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExheWVySG9zdGluZ0NvbnRleHRJ
RCkKIHsKICAgICBbbV9jb250ZW50VmlldyBfZ3B1UHJvY2Vzc0RpZENyZWF0ZUNvbnRleHRGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb25dOwogfQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorI2VuZGlmIC8vIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogdm9pZCBQYWdlQ2xpZW50SW1wbDo6Z3B1UHJvY2Vzc0Ny
YXNoZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKaW5k
ZXggYzk0YzliMWU5NTJmNWY5ZTIyMTkxMzRlNGYzMDMwYzk2NDA0OTM4My4uM2Y3MDk1N2M4MjJi
NTBkNTEzZWJiYzhiMmE4YTZmMGJkMzc3ZWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5oCkBAIC0xMDMsMTAgKzEwMywxNCBAQCBlbnVtIGNsYXNzIFZp
ZXdTdGFiaWxpdHlGbGFnIDogdWludDhfdDsKICNlbmRpZgogLSAodm9pZClfcHJvY2Vzc1dpbGxT
d2FwOwogLSAodm9pZClfZGlkUmVsYXVuY2hQcm9jZXNzOworCiAjaWYgSEFWRShWSVNJQklMSVRZ
X1BST1BBR0FUSU9OX1ZJRVcpCi0tICh2b2lkKV9wcm9jZXNzRGlkQ3JlYXRlQ29udGV4dEZvclZp
c2liaWxpdHlQcm9wYWdhdGlvbjsKKy0gKHZvaWQpX3dlYlByb2Nlc3NEaWRDcmVhdGVDb250ZXh0
Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIC0gKHZv
aWQpX2dwdVByb2Nlc3NEaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOwot
I2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQorI2VuZGlmIC8vIEhBVkUoVklT
SUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQorCiAtICh2b2lkKV9zZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nUm9vdFZpZXc6KFVJVmlldyAqKXJvb3RWaWV3OwogCiAtICh2b2lkKV9zaG93SW5zcGVj
dG9ySGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQm
KWhpZ2hsaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
bW0KaW5kZXggMTI2NmQ5MDBiOTEzY2JlNWY2N2E3MzAzZjhmNzJiOGI4OTg1YWUxZC4uY2E0Zjg1
M2I0OGRiYjhmM2IwMDU1ZWNmOWM2OGJjYTFiYjZmNDFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTEzNSw5ICsxMzUsMTEgQEAgQGltcGxl
bWVudGF0aW9uIFdLQ29udGVudFZpZXcgewogICAgIFJldGFpblB0cjxXS0luc3BlY3RvckhpZ2hs
aWdodFZpZXc+IF9pbnNwZWN0b3JIaWdobGlnaHRWaWV3OwogCiAjaWYgSEFWRShWSVNJQklMSVRZ
X1BST1BBR0FUSU9OX1ZJRVcpCi0gICAgUmV0YWluUHRyPF9VSUxheWVySG9zdFZpZXc+IF92aXNp
YmlsaXR5UHJvcGFnYXRpb25WaWV3OworICAgIFJldGFpblB0cjxfVUlMYXllckhvc3RWaWV3PiBf
dmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvcldlYlByb2Nlc3M7CisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogICAgIFJldGFpblB0cjxfVUlMYXllckhvc3RWaWV3PiBfdmlzaWJpbGl0eVByb3Bh
Z2F0aW9uVmlld0ZvckdQVVByb2Nlc3M7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BS
T0NFU1MpCisjZW5kaWYgLy8gSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiAKICAg
ICBXZWJDb3JlOjpIaXN0b3JpY2FsVmVsb2NpdHlEYXRhIF9oaXN0b3JpY2FsS2luZW1hdGljRGF0
YTsKIApAQCAtMjA0LDggKzIwNiwxMCBAQCAtIChpbnN0YW5jZXR5cGUpX2NvbW1vbkluaXRpYWxp
emF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcgogI2VuZGlm
CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKLSAgICBbc2VsZiBfc2V0
dXBWaXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3XTsKKyAgICBbc2VsZiBfc2V0dXBWaXNpYmlsaXR5
UHJvcGFnYXRpb25WaWV3Rm9yV2ViUHJvY2Vzc107CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
ICAgIFtzZWxmIF9zZXR1cFZpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JHUFVQcm9jZXNzXTsK
KyNlbmRpZgogI2VuZGlmCiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9hcHBsaWNhdGlvbldpbGxS
ZXNpZ25BY3RpdmU6KSBuYW1lOlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0
aW9uIG9iamVjdDpbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl1dOwpAQCAtMjIzLDI3
ICsyMjcsMjggQEAgLSAoaW5zdGFuY2V0eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9j
ZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHIKIH0KIAogI2lmIEhBVkUoVklTSUJJ
TElUWV9QUk9QQUdBVElPTl9WSUVXKQotLSAodm9pZClfc2V0dXBWaXNpYmlsaXR5UHJvcGFnYXRp
b25WaWV3CistICh2b2lkKV9zZXR1cFZpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JXZWJQcm9j
ZXNzCiB7CiAgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IF9wYWdlLT5wcm9jZXNzKCkucHJv
Y2Vzc0lkZW50aWZpZXIoKTsKLSAgICBhdXRvIGNvbnRleHRJRCA9IF9wYWdlLT5jb250ZXh0SURG
b3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oKTsKKyAgICBhdXRvIGNvbnRleHRJRCA9IF9wYWdlLT5j
b250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbldlYlByb2Nlc3MoKTsKICAgICBpZiAo
IXByb2Nlc3NJZGVudGlmaWVyIHx8ICFjb250ZXh0SUQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEFTU0VSVCghX3Zpc2liaWxpdHlQcm9wYWdhdGlvblZpZXcpOworICAgIEFTU0VSVCghX3Zpc2li
aWxpdHlQcm9wYWdhdGlvblZpZXdGb3JXZWJQcm9jZXNzKTsKICAgICAvLyBQcm9wYWdhdGUgdGhl
IHZpZXcncyB2aXNpYmlsaXR5IHN0YXRlIHRvIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mgc28gdGhh
dCBpdCBpcyBtYXJrZWQgYXMgIkZvcmVncm91bmQgUnVubmluZyIgd2hlbiBuZWNlc3NhcnkuCi0g
ICAgX3Zpc2liaWxpdHlQcm9wYWdhdGlvblZpZXcgPSBhZG9wdE5TKFtbX1VJTGF5ZXJIb3N0Vmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIHBpZDpwcm9jZXNzSWRlbnRpZmllciBj
b250ZXh0SUQ6Y29udGV4dElEXSk7Ci0gICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIkNyZWF0ZWQg
dmlzaWJpbGl0eSBwcm9wYWdhdGlvbiB2aWV3ICVwIChjb250ZXh0SUQ9JXUpIGZvciBXZWJDb250
ZW50IHByb2Nlc3Mgd2l0aCBQSUQ9JWQiLCBfdmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlldy5nZXQo
KSwgY29udGV4dElELCBwcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgW3NlbGYgYWRkU3Vidmlldzpf
dmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlldy5nZXQoKV07CisgICAgX3Zpc2liaWxpdHlQcm9wYWdh
dGlvblZpZXdGb3JXZWJQcm9jZXNzID0gYWRvcHROUyhbW19VSUxheWVySG9zdFZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBwaWQ6cHJvY2Vzc0lkZW50aWZpZXIgY29udGV4dElE
OmNvbnRleHRJRF0pOworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICJDcmVhdGVkIHZpc2liaWxp
dHkgcHJvcGFnYXRpb24gdmlldyAlcCAoY29udGV4dElEPSV1KSBmb3IgV2ViQ29udGVudCBwcm9j
ZXNzIHdpdGggUElEPSVkIiwgX3Zpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JXZWJQcm9jZXNz
LmdldCgpLCBjb250ZXh0SUQsIHByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBbc2VsZiBhZGRTdWJ2
aWV3Ol92aXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3Rm9yV2ViUHJvY2Vzcy5nZXQoKV07CiB9CiAK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAtICh2b2lkKV9zZXR1cFZpc2liaWxpdHlQcm9wYWdh
dGlvblZpZXdGb3JHUFVQcm9jZXNzCiB7CiAgICAgYXV0byogZ3B1UHJvY2VzcyA9IF9wYWdlLT5w
cm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5ncHVQcm9jZXNzKCk7CiAgICAgaWYgKCFncHVQcm9jZXNz
KQogICAgICAgICByZXR1cm47CiAgICAgYXV0byBwcm9jZXNzSWRlbnRpZmllciA9IGdwdVByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCk7Ci0gICAgYXV0byBjb250ZXh0SUQgPSBncHVQcm9jZXNz
LT5jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oKTsKKyAgICBhdXRvIGNvbnRleHRJ
RCA9IF9wYWdlLT5jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbkdQVVByb2Nlc3Mo
KTsKICAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVyIHx8ICFjb250ZXh0SUQpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMjU1LDE1ICsyNjAsMTYgQEAgLSAodm9pZClfc2V0dXBWaXNpYmlsaXR5UHJv
cGFnYXRpb25WaWV3Rm9yR1BVUHJvY2VzcwogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3MsICJDcmVh
dGVkIHZpc2liaWxpdHkgcHJvcGFnYXRpb24gdmlldyAlcCAoY29udGV4dElEPSV1KSBmb3IgR1BV
IHByb2Nlc3Mgd2l0aCBQSUQ9JWQiLCBfdmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvckdQVVBy
b2Nlc3MuZ2V0KCksIGNvbnRleHRJRCwgcHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIFtzZWxmIGFk
ZFN1YnZpZXc6X3Zpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JHUFVQcm9jZXNzLmdldCgpXTsK
IH0KKyNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLS0gKHZvaWQpX3JlbW92ZVZpc2li
aWxpdHlQcm9wYWdhdGlvblZpZXcKKy0gKHZvaWQpX3JlbW92ZVZpc2liaWxpdHlQcm9wYWdhdGlv
blZpZXdGb3JXZWJQcm9jZXNzCiB7Ci0gICAgaWYgKCFfdmlzaWJpbGl0eVByb3BhZ2F0aW9uVmll
dykKKyAgICBpZiAoIV92aXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3Rm9yV2ViUHJvY2VzcykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0coUHJvY2VzcywgIlJlbW92aW5nIHZpc2li
aWxpdHkgcHJvcGFnYXRpb24gdmlldyAlcCIsIF92aXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3Lmdl
dCgpKTsKLSAgICBbX3Zpc2liaWxpdHlQcm9wYWdhdGlvblZpZXcgcmVtb3ZlRnJvbVN1cGVydmll
d107Ci0gICAgX3Zpc2liaWxpdHlQcm9wYWdhdGlvblZpZXcgPSBudWxscHRyOworICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3MsICJSZW1vdmluZyB2aXNpYmlsaXR5IHByb3BhZ2F0aW9uIHZpZXcgJXAi
LCBfdmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvcldlYlByb2Nlc3MuZ2V0KCkpOworICAgIFtf
dmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvcldlYlByb2Nlc3MgcmVtb3ZlRnJvbVN1cGVydmll
d107CisgICAgX3Zpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JXZWJQcm9jZXNzID0gbnVsbHB0
cjsKIH0KIAogLSAodm9pZClfcmVtb3ZlVmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvckdQVVBy
b2Nlc3MKQEAgLTI3NSw3ICsyODEsNyBAQCAtICh2b2lkKV9yZW1vdmVWaXNpYmlsaXR5UHJvcGFn
YXRpb25WaWV3Rm9yR1BVUHJvY2VzcwogICAgIFtfdmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0Zv
ckdQVVByb2Nlc3MgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgX3Zpc2liaWxpdHlQcm9wYWdh
dGlvblZpZXdGb3JHUFVQcm9jZXNzID0gbnVsbHB0cjsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEhB
VkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihOYWtlZFJlZjxXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sPilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4mJiljb25maWd1cmF0aW9uIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsK
QEAgLTYzNSw3ICs2NDEsNyBAQCAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdAogICAgIFtzZWxmIF9o
aWRlSW5zcGVjdG9ySGlnaGxpZ2h0XTsKIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElP
Tl9WSUVXKQotICAgIFtzZWxmIF9yZW1vdmVWaXNpYmlsaXR5UHJvcGFnYXRpb25WaWV3XTsKKyAg
ICBbc2VsZiBfcmVtb3ZlVmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvcldlYlByb2Nlc3NdOwog
I2VuZGlmCiAKICAgICBfcGRmUHJpbnRDYWxsYmFja0lEID0gMDsKQEAgLTY0NCw3ICs2NTAsOSBA
QCAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIC0gKHZv
aWQpX2dwdVByb2Nlc3NDcmFzaGVkCiB7CisjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9O
X1ZJRVcpCiAgICAgW3NlbGYgX3JlbW92ZVZpc2liaWxpdHlQcm9wYWdhdGlvblZpZXdGb3JHUFVQ
cm9jZXNzXTsKKyNlbmRpZgogfQogI2VuZGlmCiAKQEAgLTY1OSwxNCArNjY3LDE3IEBAIC0gKHZv
aWQpX2RpZFJlbGF1bmNoUHJvY2VzcwogICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UmVnaXN0ZXJV
SVByb2Nlc3NUb2tlbnNdOwogICAgIFtzZWxmIHNldFVwSW50ZXJhY3Rpb25dOwogI2lmIEhBVkUo
VklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQotICAgIFtzZWxmIF9zZXR1cFZpc2liaWxpdHlQ
cm9wYWdhdGlvblZpZXddOworICAgIFtzZWxmIF9zZXR1cFZpc2liaWxpdHlQcm9wYWdhdGlvblZp
ZXdGb3JXZWJQcm9jZXNzXTsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgW3NlbGYgX3Nl
dHVwVmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvckdQVVByb2Nlc3NdOworI2VuZGlmCiAjZW5k
aWYKIH0KIAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQotLSAodm9pZClf
cHJvY2Vzc0RpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24KKy0gKHZvaWQp
X3dlYlByb2Nlc3NEaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uCiB7Ci0g
ICAgW3NlbGYgX3NldHVwVmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld107CisgICAgW3NlbGYgX3Nl
dHVwVmlzaWJpbGl0eVByb3BhZ2F0aW9uVmlld0ZvcldlYlByb2Nlc3NdOwogfQogCiAtICh2b2lk
KV9ncHVQcm9jZXNzRGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWZl
OWEyOWRhODZhZjVkNGJhOTJjYTQ2Njk2YzgxNWI1YTA2MDM0Ny4uMGNlNmZjNzAxMzZmNTgxMjQz
MDkxNDdjZjExZjNmZWU2NjM3YjA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NDYsNiArOTQ2LDggQEAKIAkJNDQ5RDkwREEyMUZE
QzMwQjAwRjY3N0MwIC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OUQ5MEQ4MjFGRDYzRkUwMEY2
NzdDMCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW0gKi87IH07CiAJCTQ0RTkzNkZE
MjQ0N0MyRDgwMDlGQTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU5MzZGQzI0NDdDMjU2MDA5RkEz
RTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oICovOyB9OwogCQk0NEVDM0VBOTI0N0Y1QzA5
MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFQzNFQTgyNDdGNUMwODAwNTk0ODlDIC8qIF9X
S0RyYWdBY3Rpb25zSW50ZXJuYWwuaCAqLzsgfTsKKwkJNDYwODhBMDAyNjFGQThCQzAwRTI1MDBE
IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1MDY0MEEzMjQwNzFBNjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmggKi87IH07CisJCTQ2MDg4QTAxMjYxRkE4QzQwMEUyNTAwRCAvKiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjA4ODlGRjI2MUZBOEE5MDBFMjUwMEQgLyog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQk0NjBG
NDg4RjFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNDYwRjQ4OTAxRjk5NkY3MTAwQ0Y0
Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MEY0ODhFMUY5OTZGNkMwMENG
NEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CiAJ
CTQ2MTRGMTMyMjVERUQ4NzUwMDcwMDZFNyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QUM1
MzI0MjVERUQ4MUUwMDNCNTdFQyAvKiBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCAq
LzsgfTsKQEAgLTM4NTQsNiArMzg1Niw3IEBACiAJCTQ0RUMzRUE4MjQ3RjVDMDgwMDU5NDg5QyAv
KiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDYwMzAxMUEyMzRCRTMxRDAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MDMwMTFCMjM0QkUzMUUwMDlDODIx
NyAvKiBXZWJCYWNrRm9yd2FyZENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDYwODg5RkYyNjFGQThBOTAwRTI1MDBEIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlv
blBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFG
OTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQ2MEY0ODhFMUY5
OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQk0NjIxMDdENzFGMzhEQkQzMDBERDc4MTAgLyogUGluZ0xvYWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODgxNSw2ICs4ODE4LDcgQEAKIAkJCQk1NTA2NDBBMjI0
MDcxQTYxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgKi8sCiAJCQkJNTUw
NjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCAqLywKIAkJ
CQk1NTA2NDBBNDI0MDcxQzIxMDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbiAqLywKKwkJCQk0NjA4ODlGRjI2MUZBOEE5MDBFMjUwMEQgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCTcyNkQ1NkREMjUzQTY0ODEw
MDAyRUY5MCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmNwcCAqLywKIAkJCQk3MjZENTZERTI1M0E2
NDgxMDAwMkVGOTAgLyogUmVtb3RlUmVzb3VyY2VDYWNoZS5oICovLAogCQkJCTdCQ0Y3MENBMjYx
NDkzNUUwMEU0RkI3MCAvKiBTY29wZWRSZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0LmNwcCAqLywK
QEAgLTEyMTY1LDYgKzEyMTY5LDggQEAKIAkJCQkxQTU3MDRGQzFCRTE3NTExMDA4NzRBRjEgLyog
UmVtb3RlT2JqZWN0SW52b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzODAxODU5
MEFFNDAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUMxMzM4NjE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYwODhBMDAyNjFGQThCQzAwRTI1MDBEIC8qIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MDg4QTAxMjYxRkE4QzQw
MEUyNTAwRCAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjU5NDc5MDE4N0IzQjNBMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTk0N0E4MTg3QjUxNzYwMDQz
Nzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjU5NDc5QjE4N0IzQjYwMDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKaW5kZXggMmQzZTM3NjlmN2EyNzQ3YzhkZjU5OThjNmRlMjNkZTRiMDZjOWU4
ZC4uMDA1NDYxZDRiYmMyNzE4NmU1N2YwMjEyYjJlNTE1ZGZjMDkzOGJlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMzUsMTggKzM1LDI4IEBACiAjaW5j
bHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJT
aGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNs
dWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3Jl
YXRlKCkKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+KG5ldyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+KG5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkod2ViUGFnZSkpOwogfQogCi1SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShXZWJQYWdlJiB3ZWJQYWdlKQorICAgIDogbV9wYXJh
bWV0ZXJzIHsKKyAgICAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI6OmdlbmVyYXRlKCks
CisgICAgICAgIElQQzo6U2VtYXBob3JlIHsgfSwKKyAgICAgICAgd2ViUGFnZS53ZWJQYWdlUHJv
eHlJZGVudGlmaWVyKCksCisgICAgICAgIHdlYlBhZ2UuaWRlbnRpZmllcigpLAorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgICAgIHdlYlBhZ2UuY2FuU2hvd1doaWxlTG9ja2VkKCkKKyNl
bmRpZgorICAgIH0KIHsKICAgICBjb25uZWN0VG9HUFVQcm9jZXNzKCk7CiB9CkBAIC01OCwxNSAr
NjgsMTUgQEAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp+UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KCkKICAgICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KCp0aGlzKTsKIAogICAgIC8vIFJlbGVhc2UgdGhlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuCi0g
ICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZVJlbmRl
cmluZ0JhY2tlbmQobV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciksIDAsIElQQzo6U2VuZE9w
dGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlUmVuZGVyaW5n
QmFja2VuZChyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKSwgMCwgSVBDOjpTZW5kT3B0aW9u
OjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCiB2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y29ubmVjdFRvR1BVUHJvY2VzcygpCiB7CiAg
ICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOwotICAg
IGNvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFj
a2VuZChtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBtX3Jlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHkpOworICAgIGNvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKS50b1VJbnQ2
NCgpLCAqdGhpcyk7CisgICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q3JlYXRlUmVuZGVyaW5nQmFja2VuZChtX3BhcmFtZXRlcnMpLCAwLCBJUEM6OlNlbmRPcHRp
b246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWVzdGFibGlzaEdQVVByb2Nlc3NDb25u
ZWN0aW9uKCkKQEAgLTc2LDcgKzg2LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OnJlZXN0YWJsaXNoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIGZvciAoYXV0byYgaW1h
Z2VCdWZmZXIgOiBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5pbWFnZUJ1ZmZlcnMoKS52YWx1
ZXMoKSkgewogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUlt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+cmVuZGVy
aW5nTW9kZSgpLCBpbWFnZUJ1ZmZlci0+cmVzb2x1dGlvblNjYWxlKCksIGltYWdlQnVmZmVyLT5j
b2xvclNwYWNlKCksIGltYWdlQnVmZmVyLT5waXhlbEZvcm1hdCgpLCBpbWFnZUJ1ZmZlci0+cmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNy
ZWF0ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+
cmVuZGVyaW5nTW9kZSgpLCBpbWFnZUJ1ZmZlci0+cmVzb2x1dGlvblNjYWxlKCksIGltYWdlQnVm
ZmVyLT5jb2xvclNwYWNlKCksIGltYWdlQnVmZmVyLT5waXhlbEZvcm1hdCgpLCBpbWFnZUJ1ZmZl
ci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllcigpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0Zv
clN5bmNSZXBseSk7CiAgICAgICAgIGltYWdlQnVmZmVyLT5jbGVhckJhY2tlbmQoKTsKICAgICB9
CiB9CkBAIC0xMDEsMTMgKzExMSwxMyBAQCBJUEM6OkNvbm5lY3Rpb24qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogCiB1aW50NjRf
dCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJ
bnQ2NCgpOworICAgIHJldHVybiByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLnRvVUludDY0
KCk7CiB9CiAKIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkUmVjZWl2ZUJhY2tlbmRD
cmVhdGlvblJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JEaWRDcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmQoKQogewogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5l
Y3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKTsKLSAgICBpZiAoIWNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRj
aEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRpZENy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZD4obV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9z
LCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZl
cykpCisgICAgaWYgKCFjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRDcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQ+KHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFfcywgSVBDOjpXYWl0Rm9y
T3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKQogICAgICAgICBy
ZXR1cm4gRGlkUmVjZWl2ZUJhY2tlbmRDcmVhdGlvblJlc3VsdDo6VGltZW91dE9ySVBDRmFpbHVy
ZTsKICAgICByZXR1cm4gRGlkUmVjZWl2ZUJhY2tlbmRDcmVhdGlvblJlc3VsdDo6UmVjZWl2ZWRB
bnlSZXNwb25zZTsKIH0KQEAgLTExNSw3ICsxMjUsNyBAQCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OkRpZFJlY2VpdmVCYWNrZW5kQ3JlYXRpb25SZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFj
awogYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JEaWRGbHVzaCgpCiB7
CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIHJl
dHVybiBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRGbHVzaD4obV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciwgMV9zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5
bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgcmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNw
YXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRp
ZEZsdXNoPihyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCAxX3MsIElQQzo6V2FpdEZvck9w
dGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKIH0KIAogUmVmUHRy
PEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKQEAgLTEzNiw3ICsxNDYsNyBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaQogICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgKnRoaXMpOwogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7Ci0gICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKHNp
emUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQsIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaW1hZ2VCdWZmZXItPnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIo
KSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5j
UmVwbHkpOwogICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC0xNTcsMTEg
KzE2NywxMSBAQCBTaGFyZWRNZW1vcnkqIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2hh
cmVkTWVtb3J5Rm9yR2V0SW1hZ2VEYXRhKHNpemVfdCBkYQogICAgIElQQzo6U2VtYXBob3JlIHNl
bWFwaG9yZTsKIAogICAgIGlmIChuZWVkc1NoYXJlZE1lbW9yeSAmJiBuZWVkc1NlbWFwaG9yZSkK
LSAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlVwZGF0
ZVNoYXJlZE1lbW9yeUFuZFNlbWFwaG9yZUZvckdldEltYWdlRGF0YShkYXRhU2l6ZSksIE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpVcGRhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhv
cmVGb3JHZXRJbWFnZURhdGE6OlJlcGx5KGhhbmRsZSwgc2VtYXBob3JlKSwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciwgdGltZW91dCwgSVBDOjpTZW5kU3luY09wdGlvbjo6TWFpbnRhaW5P
cmRlcmluZ1dpdGhBc3luY01lc3NhZ2VzKTsKKyAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlVwZGF0ZVNoYXJlZE1lbW9yeUFuZFNlbWFwaG9yZUZvckdl
dEltYWdlRGF0YShkYXRhU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpV
cGRhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVGb3JHZXRJbWFnZURhdGE6OlJlcGx5KGhhbmRs
ZSwgc2VtYXBob3JlKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgdGltZW91dCwgSVBD
OjpTZW5kU3luY09wdGlvbjo6TWFpbnRhaW5PcmRlcmluZ1dpdGhBc3luY01lc3NhZ2VzKTsKICAg
ICBlbHNlIGlmIChuZWVkc1NoYXJlZE1lbW9yeSkKLSAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlVwZGF0ZVNoYXJlZE1lbW9yeUZvckdldEltYWdlRGF0
YShkYXRhU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpVcGRhdGVTaGFy
ZWRNZW1vcnlGb3JHZXRJbWFnZURhdGE6OlJlcGx5KGhhbmRsZSksIG1fcmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIsIHRpbWVvdXQsIElQQzo6U2VuZFN5bmNPcHRpb246Ok1haW50YWluT3JkZXJp
bmdXaXRoQXN5bmNNZXNzYWdlcyk7CisgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpVcGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRJbWFnZURhdGEoZGF0YVNp
emUpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6VXBkYXRlU2hhcmVkTWVtb3J5
Rm9yR2V0SW1hZ2VEYXRhOjpSZXBseShoYW5kbGUpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cigpLCB0aW1lb3V0LCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpNYWludGFpbk9yZGVyaW5nV2l0aEFz
eW5jTWVzc2FnZXMpOwogICAgIGVsc2UgaWYgKG5lZWRzU2VtYXBob3JlKQotICAgICAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6U2VtYXBob3JlRm9yR2V0SW1h
Z2VEYXRhKCksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpTZW1hcGhvcmVGb3JH
ZXRJbWFnZURhdGE6OlJlcGx5KHNlbWFwaG9yZSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIsIHRpbWVvdXQpOworICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6U2VtYXBob3JlRm9yR2V0SW1hZ2VEYXRhKCksIE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpTZW1hcGhvcmVGb3JHZXRJbWFnZURhdGE6OlJlcGx5KHNlbWFwaG9yZSks
IHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIHRpbWVvdXQpOwogCiAgICAgaWYgKCFoYW5k
bGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIG1fZ2V0SW1hZ2VEYXRhU2hhcmVkTWVtb3J5
ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7CkBAIC0xODYsNyArMTk2LDcgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OndhaXRGb3JHZXRJbWFnZURhdGFUb0NvbXBsZXRlKElQQzo6VGltZW91dCB0
aW0KIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkZXN0cm95R2V0SW1hZ2VEYXRh
U2hhcmVkTWVtb3J5KCkKIHsKICAgICBtX2dldEltYWdlRGF0YVNoYXJlZE1lbW9yeSA9IG51bGxw
dHI7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6RGVzdHJveUdl
dEltYWdlRGF0YVNoYXJlZE1lbW9yeSgpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6RGVzdHJveUdl
dEltYWdlRGF0YVNoYXJlZE1lbW9yeSgpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CiB9CiAKIFN0cmluZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldERhdGFVUkxG
b3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24sIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xOTQsNyAr
MjA0LDcgQEAgU3RyaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0RGF0YVVSTEZv
ckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVQKICAgICBzZW5kRGVmZXJyZWRXYWtldXBN
ZXNzYWdlSWZOZWVkZWQoKTsKIAogICAgIFN0cmluZyB1cmxTdHJpbmc7Ci0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldERhdGFVUkxGb3JJbWFnZUJ1ZmZl
cihtaW1lVHlwZSwgcXVhbGl0eSwgcHJlc2VydmVSZXNvbHV0aW9uLCByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0RGF0YVVS
TEZvckltYWdlQnVmZmVyOjpSZXBseSh1cmxTdHJpbmcpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyLCAxX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpHZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIobWltZVR5cGUsIHF1YWxpdHksIHByZXNlcnZl
UmVzb2x1dGlvbiwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcjo6UmVwbHkodXJsU3Ry
aW5nKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgMV9zKTsKICAgICByZXR1cm4gdXJs
U3RyaW5nOwogfQogCkBAIC0yMDMsNyArMjEzLDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYK
ICAgICBzZW5kRGVmZXJyZWRXYWtldXBNZXNzYWdlSWZOZWVkZWQoKTsKIAogICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhOwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpHZXREYXRhRm9ySW1hZ2VCdWZmZXIobWltZVR5cGUsIHF1YWxpdHksIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRE
YXRhRm9ySW1hZ2VCdWZmZXI6OlJlcGx5KGRhdGEpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLCAxX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpHZXREYXRhRm9ySW1hZ2VCdWZmZXIobWltZVR5cGUsIHF1YWxpdHksIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXREYXRh
Rm9ySW1hZ2VCdWZmZXI6OlJlcGx5KGRhdGEpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigp
LCAxX3MpOwogICAgIHJldHVybiBkYXRhOwogfQogCkBAIC0yMTIsNyArMjIyLDcgQEAgVmVjdG9y
PHVpbnQ4X3Q+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0QkdSQURhdGFGb3JJbWFn
ZUJ1ZmZlcihSZW5kZXJpbmcKICAgICBzZW5kRGVmZXJyZWRXYWtldXBNZXNzYWdlSWZOZWVkZWQo
KTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRCR1JBRGF0YUZvckltYWdlQnVmZmVyKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpH
ZXRCR1JBRGF0YUZvckltYWdlQnVmZmVyOjpSZXBseShkYXRhKSwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciwgMV9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6R2V0QkdSQURhdGFGb3JJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6R2V0QkdSQURhdGFGb3JJ
bWFnZUJ1ZmZlcjo6UmVwbHkoZGF0YSksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFf
cyk7CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKQEAgLTIyMSw3ICsyMzEsNyBAQCBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldFNoYXJlYWJsZUJp
dG1hcChSZW5kZXJpbgogICAgIHNlbmREZWZlcnJlZFdha2V1cE1lc3NhZ2VJZk5lZWRlZCgpOwog
CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpHZXRTaGFyZWFi
bGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgcHJlc2VydmVSZXNvbHV0aW9uKSwg
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldFNoYXJlYWJsZUJpdG1hcEZvcklt
YWdlQnVmZmVyOjpSZXBseShoYW5kbGUpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCAx
X3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpHZXRTaGFyZWFibGVCaXRtYXBGb3JJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
ciwgcHJlc2VydmVSZXNvbHV0aW9uKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OkdldFNoYXJlYWJsZUJpdG1hcEZvckltYWdlQnVmZmVyOjpSZXBseShoYW5kbGUpLCByZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcigpLCAxX3MpOwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgQVNTRVJUX1VOVVNFRChzZW5kUmVzdWx0LCBzZW5kUmVz
dWx0KTsKQEAgLTIzMCwxNyArMjQwLDE3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0U2hhcmVhYmxlQml0bWFwKFJlbmRlcmluCiAKIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVOYXRpdmVJbWFnZShoYW5kbGUsIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U2Vu
ZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdl
KGhhbmRsZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHkpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y2FjaGVGb250KFJlZjxXZWJDb3JlOjpGb250PiYmIGZvbnQpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVGb250KFdURk1vdmUoZm9udCkpLCBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2Fn
ZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVGb250KFdURk1vdmUoZm9udCkpLCByZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcigpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpkZWxldGVBbGxGb250cygpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6RGVsZXRlQWxsRm9udHMoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5j
UmVwbHkpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkRlbGV0
ZUFsbEZvbnRzKCksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6U2VuZE9wdGlv
bjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpAQCAt
MjQ4LDcgKzI1OCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNl
UmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmCiAgICAgaWYgKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciA9PSBtX2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRl
bnRpZmllcikKICAgICAgICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZp
ZXIgPSBXVEY6Om51bGxvcHQ7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRj
aE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCBJUEM6OlNl
bmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9
CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRDcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKQEAgLTI5OSw3ICszMDks
NyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2lsbEFwcGVuZEl0ZW0oUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG5ldwogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6c2VuZFdha2V1cE1lc3NhZ2UoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VB
cmd1bWVudHMmIGFyZ3VtZW50cykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGFyZ3VtZW50cyksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpXYWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGFyZ3VtZW50cyksIHJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdl
RXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OnNlbmREZWZlcnJlZFdha2V1cE1lc3NhZ2VJZk5lZWRlZCgpCkBAIC0zMjIs
NyArMzMyLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFwcGVuZERh
dGEoY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW4KICAgICBpZiAoIXdhc0VtcHR5IHx8
IGRpZENoYW5nZUl0ZW1CdWZmZXIgPT0gRGlzcGxheUxpc3Q6OkRpZENoYW5nZUl0ZW1CdWZmZXI6
OlllcykgewogICAgICAgICBpZiAobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMpIHsK
ICAgICAgICAgICAgIGlmIChzaGFyZWRIYW5kbGUtPnRyeVRvUmVzdW1lKHsgbV9kZWZlcnJlZFdh
a2V1cE1lc3NhZ2VBcmd1bWVudHMtPm9mZnNldCwgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1
bWVudHMtPmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCkgfSkpIHsK
LSAgICAgICAgICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlLnNpZ25hbCgpOwor
ICAgICAgICAgICAgICAgIG1fcGFyYW1ldGVycy5yZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZS5z
aWduYWwoKTsKICAgICAgICAgICAgICAgICBtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50
cyA9IFdURjo6bnVsbG9wdDsKICAgICAgICAgICAgICAgICBtX3JlbWFpbmluZ0l0ZW1zVG9BcHBl
bmRCZWZvcmVTZW5kaW5nV2FrZXVwID0gMDsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIS0tbV9y
ZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCkgewpAQCAtMzM3LDcgKzM0
Nyw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKGNv
bnN0IERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuCiAKICAgICBhdXRvIG9mZnNldFRvUmVhZCA9
IHNoYXJlZEhhbmRsZS0+d3JpdGFibGVPZmZzZXQoKSAtIG51bWJlck9mQnl0ZXM7CiAgICAgaWYg
KHNoYXJlZEhhbmRsZS0+dHJ5VG9SZXN1bWUoeyBvZmZzZXRUb1JlYWQsIGRlc3RpbmF0aW9uSW1h
Z2VCdWZmZXIudG9VSW50NjQoKSB9KSkgewotICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlLnNpZ25hbCgpOworICAgICAgICBtX3BhcmFtZXRlcnMucmVzdW1lRGlzcGxheUxpc3RT
ZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM5Niw3ICs0
MDYsNyBAQCBEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZQogICAgIHNoYXJlZE1lbW9yeS0+Y3JlYXRl
SGFuZGxlKHNoYXJlZE1lbW9yeUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
V3JpdGUpOwogCiAgICAgYXV0byBpZGVudGlmaWVyID0gRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OkRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKGlkZW50aWZpZXIsIHsg
V1RGTW92ZShzaGFyZWRNZW1vcnlIYW5kbGUpLCBzaGFyZWRNZW1vcnktPnNpemUoKSB9LCBkZXN0
aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6RGlkQ3JlYXRl
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoaWRlbnRpZmllciwgeyBXVEZNb3ZlKHNoYXJlZE1lbW9y
eUhhbmRsZSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpIH0sIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRp
ZmllciksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6U2VuZE9wdGlvbjo6RGlz
cGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIAogICAgIGF1dG8gbmV3
SGFuZGxlID0gRGlzcGxheUxpc3RXcml0ZXJIYW5kbGU6OmNyZWF0ZShpZGVudGlmaWVyLCBzaGFy
ZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgYXV0byBkaXNwbGF5TGlzdEhhbmRsZSA9
IG5ld0hhbmRsZS0+Y3JlYXRlSGFuZGxlKCk7CkBAIC00MDcsNiArNDE3LDExIEBAIERpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySGFuZGxlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRl
SXRlbUJ1ZmZlcihzaXplCiAgICAgcmV0dXJuIGRpc3BsYXlMaXN0SGFuZGxlOwogfQogCitSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5k
ZXggMzM2N2YwMTRlNmYxZDRiYjNhOWYzYWE2MjU3MjQyOTFmOTJhNzM4ZS4uODVlYmZiOWI4NTVm
NWZiZjkyZjVhZGE2NDFiYmJiNDViZDE0ZDk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNs
dWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlz
cGxheUxpc3QuaD4KQEAgLTU2LDEzICs1NywxNCBAQCBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUg
OiBib29sOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERpc3BsYXlMaXN0V3JpdGVySGFu
ZGxlOworY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
CiAgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5PiBjcmVhdGUoV2ViUGFnZSYpOwogCiAgICAgflJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSgpOwogCkBAIC0xMDYsOSArMTA4LDEwIEBAIHB1YmxpYzoKICAgICBE
aWRSZWNlaXZlQmFja2VuZENyZWF0aW9uUmVzdWx0IHdhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmQoKTsKICAgICBib29sIHdhaXRGb3JEaWRGbHVzaCgpOwogCi0gICAgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOyB9CisgICAgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSBjb25zdDsKKwogcHJpdmF0
ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKKyAgICBleHBsaWNpdCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoV2ViUGFnZSYpOwogCiAgICAgLy8gR1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShH
UFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwpAQCAtMTI1LDE0ICsxMjgsMTMgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc2VuZFdha2V1cE1lc3NhZ2UoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1l
c3NhZ2VBcmd1bWVudHMmKTsKIAorICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAgIERlcXVlPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mUmV1c2Fi
bGVIYW5kbGVzOwotICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgeyBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9
OwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbV9j
dXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgT3B0aW9uYWw8R1BV
UHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHM+IG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJn
dW1lbnRzOwogICAgIHVuc2lnbmVkIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRp
bmdXYWtldXAgeyAwIH07Ci0gICAgSVBDOjpTZW1hcGhvcmUgbV9yZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZTsKICAgICBPcHRpb25hbDxJUEM6OlNlbWFwaG9yZT4gbV9nZXRJbWFnZURhdGFTZW1h
cGhvcmU7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9nZXRJbWFnZURhdGFTaGFyZWRNZW1v
cnk7CiAgICAgdWludDY0X3QgbV9nZXRJbWFnZURhdGFTaGFyZWRNZW1vcnlMZW5ndGggeyAwIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGM4
NmNjZmU0NThmMGFkNDA0M2NhZjdhZDc0OWZlOWQ3YjQzZDhiZDYuLjA4YWJmMjczODNkN2MyOTk3
ZjNhYjA3ZGM4ZmJmMzc4NTAyYTVhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC04NDcsOCArODQ3LDggQEAgV2ViUGFnZTo6V2ViUGFnZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogICAgIG1fY29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbiA9IExheWVySG9zdGlu
Z0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoewogICAgICAgICBtX2Nh
blNob3dXaGlsZUxvY2tlZAogICAgIH0pOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2VzcywgIldlYlBhZ2U6IENyZWF0ZWQgY29udGV4dCB3aXRoIElEICVkIGZvciB2aXNpYmlsaXR5
IHByb3BhZ2F0aW9uIGZyb20gVUlQcm9jZXNzIiwgbV9jb250ZXh0Rm9yVmlzaWJpbGl0eVByb3Bh
Z2F0aW9uLT5jb250ZXh0SUQoKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKG1fY29udGV4dEZvclZpc2li
aWxpdHlQcm9wYWdhdGlvbi0+Y29udGV4dElEKCkpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3MsICJXZWJQYWdlOiBDcmVhdGVkIGNvbnRleHQgd2l0aCBJRCAldSBmb3Igdmlz
aWJpbGl0eSBwcm9wYWdhdGlvbiBmcm9tIFVJUHJvY2VzcyIsIG1fY29udGV4dEZvclZpc2liaWxp
dHlQcm9wYWdhdGlvbi0+Y29udGV4dElEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkQ3JlYXRlQ29udGV4dEluV2ViUHJvY2Vzc0ZvclZpc2liaWxpdHlQcm9wYWdhdGlv
bihtX2NvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24tPmNvbnRleHRJRCgpKSk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKQEAgLTM5MjcsMTEgKzM5MjcsMTkgQEAgdm9p
ZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBz
dG9yZSkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXI+KCktPnNldFVzZUdQVVByb2Nlc3MobV9zaG91bGRQbGF5TWVkaWFJ
bkdQVVByb2Nlc3MpOwogI2VuZGlmCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNl
R1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZyhtX3Nob3VsZFJlbmRlckNhbnZhc0luR1BVUHJv
Y2Vzcyk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvckRP
TVJlbmRlcmluZyhtX3Nob3VsZFJlbmRlckRPTUluR1BVUHJvY2VzcyAmJiBEcmF3aW5nQXJlYTo6
c3VwcG9ydHNHUFVQcm9jZXNzUmVuZGVyaW5nKG1fZHJhd2luZ0FyZWFUeXBlKSk7CisgICAgYm9v
bCB1c2luZ0dQVVByb2Nlc3NGb3JET01SZW5kZXJpbmcgPSBtX3Nob3VsZFJlbmRlckRPTUluR1BV
UHJvY2VzcyAmJiBEcmF3aW5nQXJlYTo6c3VwcG9ydHNHUFVQcm9jZXNzUmVuZGVyaW5nKG1fZHJh
d2luZ0FyZWFUeXBlKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRVc2VHUFVQcm9j
ZXNzRm9yRE9NUmVuZGVyaW5nKHVzaW5nR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZyk7CiAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlhKG1fc2hvdWxk
UGxheU1lZGlhSW5HUFVQcm9jZXNzKTsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuc2V0VXNlR1BVUHJvY2Vzc0ZvcldlYkdMKG1fc2hvdWxkUmVuZGVyV2Vi
R0xJbkdQVVByb2Nlc3MpOwogI2VuZGlmCisKKyAgICAvLyBGSVhNRTogVGhpcyB3aWxsIG5vIGxv
bmdlciBiZSBuZWVkZWQgb25jZSB3ZSB1c2UgdGhlIEdQVVByb2Nlc3MgZm9yIERPTSByZW5kZXJp
bmcuCisgICAgLy8gRm9yIG5vdywgaXQgaXMgcG9zc2libGUgdG8gdXNlIHRoZSBHUFVQcm9jZXNz
IGZvciBtZWRpYSBwbGF5YmFjayBvbmx5LiBCZWNhdXNlIG1lZGlhIGRvZXMgbm90CisgICAgLy8g
dXNlIHRoZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCB3ZSBuZWVkIHRvIGZvcmNlIHRoZSBjcmVh
dGlvbiBvZiBhIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgaW4KKyAgICAvLyB0aGUgR1BVUHJvY2Vz
cyBzbyB0aGF0IHRoZSBwYWdlIGdldHMgYSB2aXNpYmlsaXR5IHByb3BhZ2F0aW9uIHZpZXcuCisg
ICAgaWYgKG1fc2hvdWxkUGxheU1lZGlhSW5HUFVQcm9jZXNzICYmICF1c2luZ0dQVVByb2Nlc3NG
b3JET01SZW5kZXJpbmcpCisgICAgICAgIGVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJKQpAQCAtNzM1NSw3ICs3
MzYzLDcgQEAgdm9pZCBXZWJQYWdlOjpub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCkKIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgV2ViUGFnZTo6ZW5zdXJlUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KCkKIHsKICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSA9IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Y3JlYXRlKCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5ID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGUoKnRoaXMpOwogICAg
IHJldHVybiAqbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>