<?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>218251</bug_id>
          
          <creation_ts>2020-10-27 11:55:41 -0700</creation_ts>
          <short_desc>[GPUProcess] Use async IPC for RemoteAudioDestinationManager&apos;s StartAudioDestination / StopAudioDestination</short_desc>
          <delta_ts>2020-10-27 14:47:21 -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>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>212611</blocked>
    
    <blocked>217606</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1702010</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-27 11:55:41 -0700</bug_when>
    <thetext>Use async IPC for RemoteAudioDestinationManager&apos;s StartAudioDestination / StopAudioDestination.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702021</commentid>
    <comment_count>1</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-27 12:16:00 -0700</bug_when>
    <thetext>*** Bug 217990 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702042</commentid>
    <comment_count>2</comment_count>
      <attachid>412454</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-27 12:59:21 -0700</bug_when>
    <thetext>Created attachment 412454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702057</commentid>
    <comment_count>3</comment_count>
      <attachid>412454</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-27 13:38:32 -0700</bug_when>
    <thetext>Comment on attachment 412454
Patch

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

&gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:132
&gt; +            completionHandler(Exception { InvalidStateError, &quot;Failed to start the audio device&quot;_s });

Nit. Can be done in one line as in DefaultAudioDestinationNode::resume().

&gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:148
&gt; +        completionHandler(success ? WTF::nullopt : makeOptional(Exception { InvalidStateError, &quot;Failed to start audio device&quot;_s }));

Nit. Maybe we can use the same error message as in DefaultAudioDestinationNode::startRendering()?
s/&quot;Failed to start audio device&quot;_s/&quot;Failed to start the audio device&quot;_s/

&gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:163
&gt; +        completionHandler(success ? WTF::nullopt : makeOptional(Exception { InvalidStateError, &quot;Failed to stop audio device&quot;_s }));

Ditto. s/&quot;Failed to stop audio device&quot;_s/&quot;Failed to stop the audio device&quot;_s/

&gt; Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.cpp:106
&gt; +    auto success = !m_audioOutputUnitAdaptor.start();

Nit. OK as it is. Maybe &quot;auto success = m_audioOutputUnitAdaptor.start() == noErr&quot; is better?

&gt; Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.cpp:118
&gt; +    auto success = !m_audioOutputUnitAdaptor.stop();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702058</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-27 13:43:29 -0700</bug_when>
    <thetext>(In reply to Peng Liu from comment #3)
&gt; Comment on attachment 412454 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412454&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:132
&gt; &gt; +            completionHandler(Exception { InvalidStateError, &quot;Failed to start the audio device&quot;_s });
&gt; 
&gt; Nit. Can be done in one line as in DefaultAudioDestinationNode::resume().
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:148
&gt; &gt; +        completionHandler(success ? WTF::nullopt : makeOptional(Exception { InvalidStateError, &quot;Failed to start audio device&quot;_s }));
&gt; 
&gt; Nit. Maybe we can use the same error message as in
&gt; DefaultAudioDestinationNode::startRendering()?
&gt; s/&quot;Failed to start audio device&quot;_s/&quot;Failed to start the audio device&quot;_s/
&gt; 
&gt; &gt; Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp:163
&gt; &gt; +        completionHandler(success ? WTF::nullopt : makeOptional(Exception { InvalidStateError, &quot;Failed to stop audio device&quot;_s }));
&gt; 
&gt; Ditto. s/&quot;Failed to stop audio device&quot;_s/&quot;Failed to stop the audio device&quot;_s/
&gt; 
&gt; &gt; Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.cpp:106
&gt; &gt; +    auto success = !m_audioOutputUnitAdaptor.start();
&gt; 
&gt; Nit. OK as it is. Maybe &quot;auto success = m_audioOutputUnitAdaptor.start() ==
&gt; noErr&quot; is better?
&gt; 
&gt; &gt; Source/WebCore/platform/audio/cocoa/AudioDestinationCocoa.cpp:118
&gt; &gt; +    auto success = !m_audioOutputUnitAdaptor.stop();
&gt; 
&gt; Ditto.

Thanks for looking. I will fix all these shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702060</commentid>
    <comment_count>5</comment_count>
      <attachid>412460</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-27 13:46:03 -0700</bug_when>
    <thetext>Created attachment 412460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702066</commentid>
    <comment_count>6</comment_count>
      <attachid>412460</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-10-27 13:54:33 -0700</bug_when>
    <thetext>Comment on attachment 412460
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702104</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-27 14:46:26 -0700</bug_when>
    <thetext>Committed r269073: &lt;https://trac.webkit.org/changeset/269073&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412460.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702105</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-27 14:47:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/70739259&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412454</attachid>
            <date>2020-10-27 12:59:21 -0700</date>
            <delta_ts>2020-10-27 13:46:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218251-20201027125921.patch</filename>
            <type>text/plain</type>
            <size>35702</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODk1MjlkNGM2OWE2MTc1
MDkwYzE4MGI1ZGI3YmI0M2Q0NzczOTBiZi4uM2YyOWJiMGZiZGZiNzEwNGE1YzZjN2U1ZTM5ZGEy
YWY2ZWNhM2ViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTEwLTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIFVzZSBh
c3luYyBJUEMgZm9yIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyJ3MgU3RhcnRBdWRpb0Rl
c3RpbmF0aW9uIC8gU3RvcEF1ZGlvRGVzdGluYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODI1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVz
dW1lKCkgLyBzdXNwZW5kKCkgd2VyZSBhbHJlYWR5IGFzeW5jaHJvbm91cyBvcGVyYXRpb25zLiBI
b3dldmVyLCB0aGV5IGV4cGVjdGVkCisgICAgICAgIEF1ZGlvRGVzdGluYXRpb246OnN0YXJ0KCkg
LyBzdG9wKCkgdG8gZmluaXNoIHN5bmNocm9ub3VzbHkgYW5kIHdvdWxkIHNpbXBseSBjYWxsIHRo
ZWlyIGNvbXBsZXRpb24gaGFuZGxlcgorICAgICAgICBhc3luY2hyb25vdXNseS4gSW5zdGVhZCwg
d2Ugbm93IG1ha2UgQXVkaW9EZXN0aW5hdGlvbjo6c3RhcnQoKSAvIHN0b3AoKSBhc3luY2hyb25v
dXMgYXMgd2VsbC4gVGhpcyBhbGxvd3MgdXMKKyAgICAgICAgdG8gdXNlIGFzeW5jaHJvbm91cyBJ
UEMgZm9yIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyJ3MgU3RhcnRBdWRpb0Rlc3RpbmF0
aW9uIC8gU3RvcEF1ZGlvRGVzdGluYXRpb24uCisKKyAgICAgICAgQXMgYSByZXN1bHQgb2YgdGhp
cyBjaGFuZ2UsIEkgaGFkIHRvIG1ha2UgQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVy
aW5nKCkgYXN5bmNocm9ub3VzIGFzIHdlbGwgc2luY2UKKyAgICAgICAgaXQgdXNlcyBBdWRpb0Rl
c3RpbmF0aW9uOjpzdGFydCgpIGludGVybmFsbHkuCisKKyAgICAgICAgQXMgYW4gaW1wcm92ZW1l
bnQsIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gQXVkaW9EZXN0aW5hdGlvbk5vZGUncyBzdGFy
dFJlbmRlcmluZygpIC8gcmVzdW1lKCkgLyBzdXNwZW5kKCkKKyAgICAgICAgaXMgbm93IHByb3Zp
ZGVkIHdpdGggYW4gZXhjZXB0aW9uIGluIGNhc2VzIHdoZXJlIHRoZXkgZmFpbC4gVGhpcyBhbGxv
d3MgdGhlIGNhbGwgc2l0ZXMgdG8gcHJvcGVybHkgZGVhbAorICAgICAgICB3aXRoIHN1Y2ggZXJy
b3JzIGluc3RlYWQgb2YgYXNzdW1pbmcgdGhpbmdzIHdlcmUgc3VjY2Vzc3NmdWwuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBubyBXZWItZmFjaW5nIGJlYWh2aW9yIGNoYW5nZS4KKworICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6c3VzcGVuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NvbnRleHQ6OnJlc3VtZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRl
eHQ6OnN0YXJ0UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF5
UmVzdW1lUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdXNwZW5k
UGxheWJhY2spOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZXN1bWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN1c3BlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpPZmZsaW5lQXVkaW9Db250ZXh0OjpzdGFydE9mZmxpbmVSZW5kZXJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvQ29udGV4dDo6cmVzdW1lT2ZmbGluZVJl
bmRlcmluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlOjpzdGFydFJlbmRlcmluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0Rl
c3RpbmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpzdG9wKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oOgorCiAyMDIwLTEwLTI3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGluZyBBdWRpb0NvbnRleHQuc3Vz
cGVuZCgpIC8gcmVzdW1lKCkgd2hpbGUgYWxyZWFkeSBzdXNwZW5kZWQgLyBydW5uaW5nIHNob3Vs
ZCByZXNvbHZlIHRoZSBwcm9taXNlIHJpZ2h0IGF3YXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGZhZjI3N2NiMWFh
MzY1MzFhOTJlYzY4NTI4M2FlODhjZmQ2MTQwNi4uMTYyN2NhMWY0MmM3NWFiZDY0YzUwY2U0YTMw
MmJlODcxNDc2NzhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMC0yNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQcm9jZXNzXSBVc2Ug
YXN5bmMgSVBDIGZvciBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcidzIFN0YXJ0QXVkaW9E
ZXN0aW5hdGlvbiAvIFN0b3BBdWRpb0Rlc3RpbmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgyNTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYXN5bmMgSVBDIGZvciBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcidzIFN0YXJ0QXVkaW9EZXN0aW5hdGlvbiAvIFN0b3BBdWRpb0Rlc3Rp
bmF0aW9uLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5OjpzdG9wKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaDoKKwogMjAyMC0xMC0yNyAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViRHJpdmVyOiBz
ZXF1ZW5jZSBvZiBjaGFyIGtleSBwcmVzcyBpcyBub3Qgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggNjk0ZTRhMzM0
Mjg4NzA4NDBhNTg4ZTE3MGM1MTA3OGI3Y2VmZGI2NC4uOWQ2NDNjMTlhZWZjZDIxZTc1MTI2ZTY2
N2Q2Mjg4ZmE2ZTc2MjEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMjIzLDcgKzIyMywxMSBAQCB2b2lkIEF1ZGlvQ29udGV4
dDo6c3VzcGVuZFJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQog
CiAgICAgbGF6eUluaXRpYWxpemUoKTsKIAotICAgIGRlc3RpbmF0aW9uTm9kZSgpLT5zdXNwZW5k
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXSgpIG11dGFibGUgeworICAgIGRlc3RpbmF0aW9uTm9kZSgpLT5zdXNwZW5kKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZSgq
ZXhjZXB0aW9uKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgc2V0
U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CiAgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOwogICAg
IH0pOwpAQCAtMjUwLDcgKzI1NCwxMiBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1lUmVuZGVy
aW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAKICAgICBsYXp5SW5pdGlh
bGl6ZSgpOwogCi0gICAgZGVzdGluYXRpb25Ob2RlKCktPnJlc3VtZShbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRh
YmxlIHsKKyAgICBkZXN0aW5hdGlvbk5vZGUoKS0+cmVzdW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxF
eGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikg
eworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZSgqZXhjZXB0aW9uKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICAvLyBTaW5jZSB3ZSB1cGRhdGUg
dGhlIHN0YXRlIGFzeW5jaHJvbm91c2x5LCB3ZSBtYXkgaGF2ZSBiZWVuIGludGVycnVwdGVkIGFm
dGVyIHRoZQogICAgICAgICAvLyBjYWxsIHRvIHJlc3VtZSgpIGFuZCBiZWZvcmUgdGhpcyBsYW1i
ZGEgcnVucy4gSW4gdGhpcyBjYXNlLCB3ZSBkb24ndCB3YW50IHRvCiAgICAgICAgIC8vIHJlc2V0
IHRoZSBzdGF0ZSB0byBydW5uaW5nLgpAQCAtMjg2LDEwICsyOTUsMTEgQEAgdm9pZCBBdWRpb0Nv
bnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkKIAogICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKIAot
ICAgIHNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKLQogICAgIGxhenlJbml0aWFsaXplKCk7Ci0g
ICAgZGVzdGluYXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoKTsKKyAgICBkZXN0aW5hdGlvbigpLT5z
dGFydFJlbmRlcmluZyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShPcHRp
b25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7CisgICAgICAgIGlmICghZXhjZXB0aW9uKQor
ICAgICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAgIH0pOwogfQogCiB2b2lk
IEF1ZGlvQ29udGV4dDo6bGF6eUluaXRpYWxpemUoKQpAQCAtMzU3LDggKzM2Nyw4IEBAIHZvaWQg
QXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKIAogICAg
IGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBkZXN0aW5hdGlvbk5vZGUoKS0+cmVzdW1lKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgc2V0U3RhdGUoU3Rh
dGU6OlJ1bm5pbmcpOworICAgIGRlc3RpbmF0aW9uTm9kZSgpLT5yZXN1bWUoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlv
bikgeworICAgICAgICBzZXRTdGF0ZShleGNlcHRpb24gPyBTdGF0ZTo6U3VzcGVuZGVkIDogU3Rh
dGU6OlJ1bm5pbmcpOwogICAgIH0pOwogfQogCkBAIC00MzYsNyArNDQ2LDEwIEBAIHZvaWQgQXVk
aW9Db250ZXh0OjpzdXNwZW5kUGxheWJhY2soKQogCiAgICAgbGF6eUluaXRpYWxpemUoKTsKIAot
ICAgIGRlc3RpbmF0aW9uTm9kZSgpLT5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKKyAgICBkZXN0aW5hdGlvbk5vZGUoKS0+c3VzcGVuZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0
aW9uKSB7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm47CisKICAg
ICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9IG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZDsKICAgICAgICAgc2V0U3RhdGUoaW50ZXJydXB0
ZWQgPyBTdGF0ZTo6SW50ZXJydXB0ZWQgOiBTdGF0ZTo6U3VzcGVuZGVkKTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaAppbmRleCBjNTY3MGMzNjQ4NTc1ZTg4MGViNjg1ZTBhM2ExMzVjMjkyNDM3NWJiLi41
ZWNiYzU1YzY5MjdiZGJlNGVjMzk1OWY0N2IxNTJmMDBmMDU5Mjc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBA
IC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
QXVkaW9Ob2RlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC01MywxMCArNTMsMTAgQEAgcHVibGljOgogICAgIC8vIEVuYWJsZSBs
b2NhbC9saXZlIGlucHV0IGZvciB0aGUgc3BlY2lmaWVkIGRldmljZS4KICAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0UmVuZGVyaW5nKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCByZXN1bWUoV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc3VzcGVuZChXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBjbG9zZShXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzdGFydFJlbmRlcmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlv
bj4mJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOyB9CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgY2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlp
bmcoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgaXNQbGF5aW5nRGlkQ2hhbmdlKCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggM2IxOTE2NWVhMGIzNjI4
OTlkMWIxMzA4NTU4N2YyYjk0NmIwOWRkNC4uZWI3MmI4YjQwMTI2ZDFmMjNmMzExZTMwYjVkMDli
YjM1YzZmYzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMTE5LDM3ICsx
MTksNTYgQEAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiBEZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmRpc3BhdGNoVG9SZW5kZXIKICAgICByZXR1cm4geyB9OwogfQogCi1F
eGNlcHRpb25Pcjx2b2lkPiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVy
aW5nKCkKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgaWYgKCFpc0lu
aXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkF1ZGlvRGVzdGluYXRpb25Ob2RlIGlzIG5vdCBpbml0aWFsaXplZCJfcyB9OworICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJBdWRpb0Rlc3RpbmF0aW9uTm9kZSBpcyBub3QgaW5pdGlhbGl6ZWQiX3MgfSk7CiAKLSAgICBt
X2Rlc3RpbmF0aW9uLT5zdGFydChkaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24oKSk7Ci0g
ICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIGlubmVyQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzdWNjZXNzKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0byBzdGFydCB0
aGUgYXVkaW8gZGV2aWNlIl9zIH0pOworICAgIH07CisKKyAgICBtX2Rlc3RpbmF0aW9uLT5zdGFy
dChkaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24oKSwgV1RGTW92ZShpbm5lckNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZXN1
bWUoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpyZXN1bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRp
b24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc0luaXRpYWxpemVk
KCkpOwotICAgIGlmIChpc0luaXRpYWxpemVkKCkpCi0gICAgICAgIG1fZGVzdGluYXRpb24tPnN0
YXJ0KGRpc3BhdGNoVG9SZW5kZXJUaHJlYWRGdW5jdGlvbigpKTsKLSAgICBjb250ZXh0KCkucG9z
dFRhc2soV1RGTW92ZShmdW5jdGlvbikpOworICAgIGlmICghaXNJbml0aWFsaXplZCgpKSB7Cisg
ICAgICAgIGNvbnRleHQoKS5wb3N0VGFzayhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQXVkaW9EZXN0aW5hdGlvbk5vZGUg
aXMgbm90IGluaXRpYWxpemVkIl9zIH0pOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBtX2Rlc3RpbmF0aW9uLT5zdGFydChkaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVu
Y3Rpb24oKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nl
c3MgPyBXVEY6Om51bGxvcHQgOiBtYWtlT3B0aW9uYWwoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJGYWlsZWQgdG8gc3RhcnQgYXVkaW8gZGV2aWNlIl9zIH0pKTsKKyAgICB9KTsKIH0K
IAotdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN1c3BlbmQoRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdXNw
ZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKLSAgICBpZiAo
aXNJbml0aWFsaXplZCgpKQotICAgICAgICBtX2Rlc3RpbmF0aW9uLT5zdG9wKCk7Ci0gICAgY29u
dGV4dCgpLnBvc3RUYXNrKFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICBpZiAoIWlzSW5pdGlhbGl6
ZWQoKSkgeworICAgICAgICBjb250ZXh0KCkucG9zdFRhc2soW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkF1ZGlvRGVzdGlu
YXRpb25Ob2RlIGlzIG5vdCBpbml0aWFsaXplZCJfcyB9KTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2Rlc3RpbmF0aW9uLT5zdG9wKFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIG11dGFibGUg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzID8gV1RGOjpudWxsb3B0IDogbWFr
ZU9wdGlvbmFsKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIHN0b3Ag
YXVkaW8gZGV2aWNlIl9zIH0pKTsKKyAgICB9KTsKIH0KIAotdm9pZCBEZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGU6OmNsb3NlKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3ZvaWQgRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAg
ICAgdW5pbml0aWFsaXplKCk7Ci0gICAgY29udGV4dCgpLnBvc3RUYXNrKFdURk1vdmUoZnVuY3Rp
b24pKTsKKyAgICBjb250ZXh0KCkucG9zdFRhc2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB1bnNpZ25lZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6Om1heENoYW5uZWxD
b3VudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBjOGU5MjY3OTBiZWMw
NmQyMTM4NDhhMTY4YmZkZjgzMWUzMDgzMTg3Li41NGQ2OTVmOTUzNGNkYmIwNzc3ODk3MDAxNTU0
M2NjN2QzMmE4ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZlcigpIGNvbnN0OwogICAgIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KICAg
ICAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydFJlbmRlcmluZygpIGZpbmFsOworICAgIHZv
aWQgc3RhcnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRp
b24+JiYpPiYmKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYsIE9wdGlvbmFsPGZsb2F0Pik7CkBAIC01
OCw5ICs1OCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJlc1RhaWxQcm9jZXNzaW5nKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgZW5hYmxlSW5wdXQoY29u
c3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSBmaW5hbDsKLSAgICB2b2lkIHJlc3VtZShGdW5jdGlv
bjx2b2lkICgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmQoRnVuY3Rpb248dm9pZCAoKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBjbG9zZShGdW5jdGlvbjx2b2lkICgpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlc3VtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4m
Jik+JiYpIGZpbmFsOworICAgIHZvaWQgc3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgY2xvc2UoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB1bnNpZ25lZCBtYXhDaGFubmVsQ291bnQo
KSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzUGxheWluZygpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmNw
cAppbmRleCAyYmYyZTU4ZDRkN2IyYjhiMWIxMGU3Y2YwZGFiNDY4YmI1NGQ0NzQ4Li5mODM2NTJl
NzZjZTBkOTY0M2E0N2ZkZTg3ZjUyZmQwMjQ2OWQ4ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTEw
NSwxNiArMTA1LDE3IEBAIHZvaWQgT2ZmbGluZUF1ZGlvQ29udGV4dDo6c3RhcnRPZmZsaW5lUmVu
ZGVyaW5nKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIAogICAgIGxhenlJbml0aWFs
aXplKCk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IGRlc3RpbmF0aW9uKCktPnN0YXJ0UmVuZGVyaW5n
KCk7Ci0gICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICBwcm9taXNlLT5y
ZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7Ci0gICAgbV9wZW5kaW5nT2ZmbGluZVJlbmRl
cmluZ1Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwotICAgIG1fZGlkU3RhcnRPZmZsaW5lUmVu
ZGVyaW5nID0gdHJ1ZTsKLSAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgZGVzdGlu
YXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCBwZW5kaW5nQWN0aXZpdHkgPSBBY3RpdmVET01PYmplY3Q6Om1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFdURk1vdmUo
KmV4Y2VwdGlvbikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
bWFrZVBlbmRpbmdBY3Rpdml0eSgpOworICAgICAgICBtX3BlbmRpbmdPZmZsaW5lUmVuZGVyaW5n
UHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisgICAgICAgIG1fZGlkU3RhcnRPZmZsaW5lUmVu
ZGVyaW5nID0gdHJ1ZTsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAgIH0p
OwogfQogCiB2b2lkIE9mZmxpbmVBdWRpb0NvbnRleHQ6OnN1c3BlbmRPZmZsaW5lUmVuZGVyaW5n
KGRvdWJsZSBzdXNwZW5kVGltZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAt
MTY2LDE1ICsxNjcsMTYgQEAgdm9pZCBPZmZsaW5lQXVkaW9Db250ZXh0OjpyZXN1bWVPZmZsaW5l
UmVuZGVyaW5nKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICB9CiAgICAgQVNT
RVJUKHN0YXRlKCkgPT0gQXVkaW9Db250ZXh0U3RhdGU6OlN1c3BlbmRlZCk7CiAKLSAgICBhdXRv
IHJlc3VsdCA9IGRlc3RpbmF0aW9uKCktPnN0YXJ0UmVuZGVyaW5nKCk7Ci0gICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVh
c2VFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgZGVzdGluYXRpb24o
KS0+c3RhcnRSZW5kZXJpbmcoW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwZW5k
aW5nQWN0aXZpdHkgPSBBY3RpdmVET01PYmplY3Q6Om1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMp
XShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KGV4Y2VwdGlvbikgeworICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFdURk1vdmUoKmV4Y2Vw
dGlvbikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBtYWtlUGVuZGlu
Z0FjdGl2aXR5KCk7Ci0gICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOwotICAgIHByb21pc2Ut
PnJlc29sdmUoKTsKKyAgICAgICAgbWFrZVBlbmRpbmdBY3Rpdml0eSgpOworICAgICAgICBzZXRT
dGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKKyAgICB9
KTsKIH0KIAogYm9vbCBPZmZsaW5lQXVkaW9Db250ZXh0OjpzaG91bGRTdXNwZW5kKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA4ZTE0OTE5NWE3ZjI4NjZmNjAwZDUyZTE5ZDE5
OTFiMDRjZTFhMTk1Li40NTJlNmZiODY3YzcxNTRlZjE2YzNkZjM3NzM3Y2M3Y2Y1NTNkYjdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC04NCwxNyArODQsMTcgQEAgdm9pZCBP
ZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnVuaW5pdGlhbGl6ZSgpCiAgICAgQXVkaW9Ob2Rl
Ojp1bmluaXRpYWxpemUoKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gT2ZmbGluZUF1ZGlvRGVz
dGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZygpCit2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxF
eGNlcHRpb24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CiAKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCht
X3JlbmRlclRhcmdldC5nZXQoKSk7CiAgICAgaWYgKCFtX3JlbmRlclRhcmdldC5nZXQoKSkKLSAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiT2ZmbGluZUF1ZGlv
Q29udGV4dE5vZGUgaGFzIG5vIHJlbmRlcmluZyBidWZmZXIiX3MgfTsKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiT2ZmbGlu
ZUF1ZGlvQ29udGV4dE5vZGUgaGFzIG5vIHJlbmRlcmluZyBidWZmZXIiX3MgfSk7CiAgICAgCiAg
ICAgaWYgKG1fc3RhcnRlZFJlbmRlcmluZykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiQWxyZWFkeSBzdGFydGVkIHJlbmRlcmluZyJfcyB9OworICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJBbHJlYWR5IHN0YXJ0ZWQgcmVuZGVyaW5nIl9zIH0pOwogCiAgICAgbV9zdGFydGVkUmVuZGVy
aW5nID0gdHJ1ZTsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKQEAg
LTEyMSwxMiArMTIxLDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE9mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcoKQogICAgICAgICB3b3JrbGV0UHJveHktPnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2xldEdsb2JhbFNjb3BlKFtvZmZUaHJlYWRSZW5kZXJpbmcgPSBXVEZNb3Zl
KG9mZlRocmVhZFJlbmRlcmluZyldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIG9mZlRocmVhZFJlbmRlcmluZygpOwogICAgICAgICB9LCBXb3JrZXJSdW5M
b29wOjpkZWZhdWx0TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBwcm9iYWJseSBsaW1pdCB0aGUgbnVtYmVyIG9mIHRocmVhZHMgd2UgY3JlYXRl
IGZvciBvZmZsaW5lIGF1ZGlvLgogICAgIG1fcmVuZGVyVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUo
Im9mZmxpbmUgcmVuZGVyZXIiLCBXVEZNb3ZlKG9mZlRocmVhZFJlbmRlcmluZyksIFRocmVhZFR5
cGU6OkF1ZGlvKTsKLSAgICByZXR1cm4geyB9OworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6
bnVsbG9wdCk7CiB9CiAKIGF1dG8gT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpvZmZsaW5l
UmVuZGVyKCkgLT4gT2ZmbGluZVJlbmRlclJlc3VsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgK
aW5kZXggNmU0OTY3ZTc2YTM2Yzk0MDZjYjIxZGZiZjE2YzE4Yjc1ZTg2OTNhOS4uNmYzYjBjMTll
Zjk0MmYyZTIxZjRjMjg5NTFjMWY2MGMwM2I5MWZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEF1ZGlvRGVzdGluYXRpb25O
b2RlCiAgICAgdm9pZCBlbmFibGVJbnB1dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KLSAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydFJlbmRlcmluZygpIGZpbmFsOworICAgIHZvaWQgc3Rh
cnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYp
PiYmKSBmaW5hbDsKIAogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3JlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAppbmRleCA0MTk2NTUyZDkxNWE4OWI0
YTA1Zjg0NzY0ZDVmZWFjMDU2NjI0OTVmLi4zOGNlOGQxNmUxODQzZTRlNDdiMGM1ZjVkNzNlODVm
NzIwNTY3MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0Rlc3RpbmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIEF1ZGlvRGVzdGluYXRpb25f
aAogCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC01MCw4ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgfkF1ZGlvRGVzdGluYXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJU
aHJlYWQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9S
ZW5kZXJUaHJlYWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgPSBbXShib29sKSB7
IH0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmID0gW10oYm9vbCkgeyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZygp
ID0gMDsKIAogICAgIC8vIFNhbXBsZS1yYXRlIGNvbnZlcnNpb24gbWF5IGhhcHBlbiBpbiBBdWRp
b0Rlc3RpbmF0aW9uIHRvIHRoZSBoYXJkd2FyZSBzYW1wbGUtcmF0ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25D
b2NvYS5jcHAKaW5kZXggMzMzODMyYzJiNGNhYTJjYWM1M2ZlZGU0ZGIwMTFhOWI3ZDc4MzRkNi4u
ZjJlNDFmYWVmYjJjYzZkZDc1NWZjYjRiMWU3N2UxNDQyY2NhMmFjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0
aW9uQ29jb2EuY3BwCkBAIC05OSwyNCArOTksMzAgQEAgdW5zaWduZWQgQXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpmcmFtZXNQZXJCdWZmZXIoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlckJ1cy0+
bGVuZ3RoKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydChGdW5jdGlv
bjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRlclRocmVhZCkKK3Zv
aWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZv
aWQoKT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRlclRocmVhZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBMT0coTWVkaWEsICJBdWRpb0Rl
c3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0g
V1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKTsKLSAgICBPU1N0YXR1cyByZXN1bHQgPSBt
X2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iuc3RhcnQoKTsKLQotICAgIGlmICghcmVzdWx0KQorICAg
IGF1dG8gc3VjY2VzcyA9ICFtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iuc3RhcnQoKTsKKyAgICBp
ZiAoc3VjY2VzcykKICAgICAgICAgc2V0SXNQbGF5aW5nKHRydWUpOworCisgICAgY2FsbE9uTWFp
blRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
c3VjY2Vzc10oKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7
CisgICAgfSk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wKCkKK3ZvaWQg
QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzdG9wIik7Ci0gICAgT1NTdGF0dXMgcmVzdWx0ID0gbV9hdWRpb091dHB1dFVuaXRB
ZGFwdG9yLnN0b3AoKTsKKyAgICBhdXRvIHN1Y2Nlc3MgPSAhbV9hdWRpb091dHB1dFVuaXRBZGFw
dG9yLnN0b3AoKTsKICAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQgPSBudWxscHRyOwotCi0g
ICAgaWYgKCFyZXN1bHQpCisgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgIHNldElzUGxheWluZyhm
YWxzZSk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdWNjZXNzXSgpIG11dGFibGUgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKKyAgICB9KTsKIH0KIAogdm9pZCBBdWRpb0Rlc3RpbmF0
aW9uQ29jb2E6OnNldElzUGxheWluZyhib29sIGlzUGxheWluZykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29h
LmgKaW5kZXggY2E0ZWViZmQwM2M5YmUwZTVhY2ZmY2M3YjU3NDg3NGQzMGE0ZDY2OC4uMmRjMjhm
YTNmMWVmYTdlYzIzMjA3OGE5ZGNlNmUzMjM1MmVkM2Q5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29h
LmgKQEAgLTcwLDggKzcwLDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBmcmllbmQgUmVm
PEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJh
Y2smLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCwgdW5zaWduZWQsIGZsb2F0KTsKIAotICAgIHZv
aWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSBvdmVycmlkZTsK
LSAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9uPHZvaWQo
RnVuY3Rpb248dm9pZCgpPiYmKT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
IG92ZXJyaWRlOwogCiAgICAgLy8gQXVkaW9Tb3VyY2VQcm92aWRlci4KICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IDFi
MGM1NGUxYjk5OTUxOWI2YTdkNmQxYWVmY2E2MWIzMDhmZGQ2YWYuLjJkMTIyNzc1Nzc1MzNkZmEy
ZTk1YTE0ZmRmODc1YjJmNWRiZGVjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lci5jcHAKQEAgLTIxNywzMyArMjE3LDQyIEBAIGdib29sZWFuIEF1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICByZXR1
cm4gVFJVRTsKIH0KIAotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdGFydChGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRlclRocmVhZCkK
K3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RhcnQoRnVuY3Rpb248dm9pZChGdW5j
dGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fYXVk
aW9TaW5rQXZhaWxhYmxlKTsKLSAgICBpZiAoIW1fYXVkaW9TaW5rQXZhaWxhYmxlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoZGlzcGF0Y2hUb1JlbmRlclRocmVhZCkKLSAgICAgICAgd2Vi
a2l0V2ViQXVkaW9Tb3VyY2VTZXREaXNwYXRjaFRvUmVuZGVyVGhyZWFkQ2FsbGJhY2soV0VCS0lU
X1dFQl9BVURJT19TUkMobV9zcmMuZ2V0KCkpLCBXVEZNb3ZlKGRpc3BhdGNoVG9SZW5kZXJUaHJl
YWQpKTsKLQotICAgIEdTVF9ERUJVRygiU3RhcnRpbmciKTsKLSAgICBpZiAoZ3N0X2VsZW1lbnRf
c2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1RfU1RB
VEVfQ0hBTkdFX0ZBSUxVUkUpIHsKLSAgICAgICAgZ193YXJuaW5nKCJFcnJvcjogRmFpbGVkIHRv
IHNldCBwaXBlbGluZSB0byBwbGF5aW5nIik7Ci0gICAgICAgIG1faXNQbGF5aW5nID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybjsKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAobV9h
dWRpb1NpbmtBdmFpbGFibGUpIHsKKyAgICAgICAgaWYgKGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQp
CisgICAgICAgICAgICB3ZWJraXRXZWJBdWRpb1NvdXJjZVNldERpc3BhdGNoVG9SZW5kZXJUaHJl
YWRDYWxsYmFjayhXRUJLSVRfV0VCX0FVRElPX1NSQyhtX3NyYy5nZXQoKSksIFdURk1vdmUoZGlz
cGF0Y2hUb1JlbmRlclRocmVhZCkpOworCisgICAgICAgIEdTVF9ERUJVRygiU3RhcnRpbmciKTsK
KyAgICAgICAgaWYgKGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1Rf
U1RBVEVfUExBWUlORykgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7CisgICAgICAgICAg
ICBnX3dhcm5pbmcoIkVycm9yOiBGYWlsZWQgdG8gc2V0IHBpcGVsaW5lIHRvIHBsYXlpbmciKTsK
KyAgICAgICAgICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtX2lzUGxheWluZyA9IHRydWU7CisgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsK
KyAgICAgICAgfQogICAgIH0KLSAgICBtX2lzUGxheWluZyA9IHRydWU7CisKKyAgICBjYWxsT25N
YWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBzdWNjZXNzXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNz
KTsKKyAgICB9KTsKIH0KIAotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdG9wKCkK
K3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RvcChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChtX2F1ZGlvU2lu
a0F2YWlsYWJsZSk7Ci0gICAgaWYgKCFtX2F1ZGlvU2lua0F2YWlsYWJsZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgR1NUX0RFQlVHKCJTdG9wcGluZyIpOwotICAgIGdzdF9lbGVtZW50X3NldF9z
dGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUEFVU0VEKTsKLSAgICBtX2lzUGxheWlu
ZyA9IGZhbHNlOworICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOworICAgIGlmIChtX2F1ZGlvU2lu
a0F2YWlsYWJsZSkgeworICAgICAgICBHU1RfREVCVUcoIlN0b3BwaW5nIik7CisgICAgICAgIGdz
dF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdldCgpLCBHU1RfU1RBVEVfUEFVU0VEKTsK
KyAgICAgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKyAgICAgICAgc3VjY2VzcyA9IHRydWU7Cisg
ICAgfQorICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN1Y2Nlc3MpOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaAppbmRleCA3OTYwMDQ2MWIzZmQz
ZWQ5ODkwMmVkZWE4OTRhMDQ1NDE0YTI3MGJiLi41ZDVmNGRkYmQwZTU4ZTZiMjQxYWNhYmVkMzQy
MWM0YjVmN2ExNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKQEAg
LTM0LDggKzM0LDggQEAgcHVibGljOgogICAgIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVk
aW9JT0NhbGxiYWNrJiwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKCk7
CiAKLSAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBk
aXNwYXRjaFRvUmVuZGVyVGhyZWFkKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3AoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBk
aXNwYXRjaFRvUmVuZGVyVGhyZWFkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHN0b3AoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikg
b3ZlcnJpZGU7CiAKICAgICBib29sIGlzUGxheWluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQ
bGF5aW5nOyB9CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2FtcGxlUmF0ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggOTlhNmMyNjdjNDVhYjQ2
NDI1OTE3MjU3YTBjMDJkZTEzYTY0Y2FjNS4uNWZiY2Y5NjE1MDZhNDU0MzAxZDM5NzUyZjRkMjg0
N2EyNTJjMmZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
QXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC00NSwyMyArNDUsMjcgQEAgTW9j
a0F1ZGlvRGVzdGluYXRpb25Db2NvYTo6TW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYShBdWRpb0lP
Q2FsbGJhY2smIGNhbGxiYWNrLAogCiBNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp+TW9ja0F1
ZGlvRGVzdGluYXRpb25Db2NvYSgpID0gZGVmYXVsdDsKIAotdm9pZCBNb2NrQXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlz
cGF0Y2hUb1JlbmRlclRocmVhZCkKK3ZvaWQgTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3Rh
cnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJU
aHJlYWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVu
ZGVyVGhyZWFkKTsKICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKFNlY29uZHMgeyBtX251bWJl
ck9mRnJhbWVzVG9Qcm9jZXNzIC8gc2FtcGxlUmF0ZSgpIH0pOwogICAgIHNldElzUGxheWluZyh0
cnVlKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHRydWUpOworICAgIH0pOwogfQogCi12b2lkIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
OnN0b3AoKQordm9pZCBNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV90aW1lci5z
dG9wKCk7CiAgICAgc2V0SXNQbGF5aW5nKGZhbHNlKTsKIAotICAgIEJpbmFyeVNlbWFwaG9yZSBz
ZW1hcGhvcmU7Ci0gICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFsmc2VtYXBob3JlXSB7Ci0gICAg
ICAgIHNlbWFwaG9yZS5zaWduYWwoKTsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih0cnVlKTsKKyAgICAgICAgfSk7CiAgICAgfSk7Ci0gICAgc2VtYXBob3JlLndhaXQoKTsKIH0K
IAogdm9pZCBNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hOjp0aWNrKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgK
aW5kZXggYThkMjhjNGVkMWJiZWZmZDMzMDk0NTBkYWFmMzI5ZWJhMjUzNGMxNS4uYjM3ZjliYTcx
YmEwNDQ0MGU4YjRlNzliNDQ5MThhNDE2NjQ3MTY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmgKQEAgLTQ3
LDggKzQ3LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfk1vY2tBdWRp
b0Rlc3RpbmF0aW9uQ29jb2EoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9u
PHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBzdG9wKCkgZmlu
YWw7CisgICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgc3RvcChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgdGljaygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXgg
MmJjOWVkYzcxYjk0ZTg2NzljYzIwYjYyZDgxYTkzMmNlMzE1NWIwMy4uOGM2YmRlN2EyYmRjNmZh
NWQ5NmYwYTUzMmUyMWMxYjI1N2FiNDI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjcsOCArMjcsOCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAgICBDcmVhdGVBdWRpb0Rl
c3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUs
IGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMKICAgICBEZWxldGVBdWRpb0Rl
c3RpbmF0aW9uKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRp
ZmllcikgLT4gKCkgQXN5bmMKIAotICAgIFN0YXJ0QXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxh
eWluZykgU3luY2hyb25vdXMKLSAgICBTdG9wQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChib29sIGlzUGxheWlu
ZykgU3luY2hyb25vdXMKKyAgICBTdGFydEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcp
IEFzeW5jCisgICAgU3RvcEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIEFzeW5jCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgQXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQoV2ViS2l0
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0b3JhZ2VIYW5kbGUsIFdlYkNvcmU6OkNBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgdWludDY0X3QgbnVtYmVyT2ZGcmFtZXMpCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAppbmRleCAxMDhhZjU0Mzg5MjFl
YTFhZDdkNDVkYjlmMjJkODA1Yjk1ZDgxZDUzLi5kYWMxMmIyZjNjODgzZGM1YTA5ZTIzOGE0MjMx
NjAyN2NmNDI3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCkBAIC0x
MDIsMjQgKzEwMiwyMiBAQCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6On5SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkoKQogICAgIG1fcmVuZGVyVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlv
bigpOwogfQogCi12b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RhcnQoRnVuY3Rp
b248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpCit2
b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RhcnQoRnVuY3Rpb248dm9pZChGdW5j
dGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9kaXNwYXRjaFRv
UmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKTsKLSAgICBib29s
IGlzUGxheWluZzsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKLSAgICAgICAgTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdGFydEF1ZGlvRGVzdGluYXRpb24obV9kZXN0
aW5hdGlvbklEKSwKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyOjpTdGFydEF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGlzUGxheWluZyksIDApOwotICAgIHNl
dElzUGxheWluZyhpc1BsYXlpbmcpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0YXJ0QXVkaW9EZXN0aW5h
dGlvbihtX2Rlc3RpbmF0aW9uSUQpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkaXNw
YXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKV0oYm9v
bCBpc1BsYXlpbmcpIG11dGFibGUgeworICAgICAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQg
PSBXVEZNb3ZlKGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpOworICAgICAgICBzZXRJc1BsYXlpbmco
aXNQbGF5aW5nKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQbGF5aW5nKTsKKyAgICB9
KTsKIH0KIAotdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3AoKQordm9pZCBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3AoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBib29sIGlzUGxheWluZzsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYygKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyOjpTdG9wQXVkaW9EZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uSUQpLAotICAgICAg
ICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0b3BBdWRpb0Rlc3Rp
bmF0aW9uOjpSZXBseShpc1BsYXlpbmcpLCAwKTsKLSAgICBzZXRJc1BsYXlpbmcoaXNQbGF5aW5n
KTsKLSAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQgPSBudWxscHRyOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OlN0b3BBdWRpb0Rlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25JRCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGJvb2wgaXNQbGF5aW5nKSBtdXRhYmxlIHsKKyAgICAgICAgc2V0SXNQ
bGF5aW5nKGlzUGxheWluZyk7CisgICAgICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51
bGxwdHI7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCFpc1BsYXlpbmcpOworICAgIH0pOwog
fQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaApp
bmRleCA4NzI1MmNmNDQ0ZjVlZmU4N2RjODhjNGE3OTU2Yjg2ZDdjOGYzN2Y0Li5lMjhmMWUyY2Yz
ZTc3N2UzY2Y1MjczZWQ4ZmZjMWM1YWE5MDEzMmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5LmgKQEAgLTc1LDggKzc1LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0
Y2hUb1JlbmRlclRocmVhZCkgZmluYWw7Ci0gICAgdm9pZCBzdG9wKCkgZmluYWw7CisgICAgdm9p
ZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUb1Jl
bmRlclRocmVhZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAg
dm9pZCBzdG9wKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgaXNQbGF5aW5nKCkgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBlNzhjODdlYjMxNGE3ZDc4MDNmOWUwMWU3MGQ5ZGY1YTQ2YTU2MGE0Li5i
MmZlMzNlNDVhNTA4MzhmNjFlNzMyY2FkMzFjNjVhNmJlZWI2NGQ0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMjAtMTAtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBbR1BVUHJvY2Vzc10gVXNlIGFzeW5jIElQQyBmb3IgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIncyBTdGFydEF1ZGlvRGVzdGluYXRpb24gLyBTdG9wQXVkaW9EZXN0aW5hdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MjUxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJhdWRp
by9hdWRpb2NvbnRleHQtc3RhdGUuaHRtbDoKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIHRlc3Qg
d2hpY2ggaW5jb3JyZWN0bHkgZXhwZWN0ZWQgdGhlIEF1ZGlvQ29udGV4dCdzIHN0YXRlIHRvIGJl
Y29tZSAicnVubmluZyIgc3luY2hyb25vdXNseQorICAgICAgICBhZnRlciBjb25uZWN0aW5nIGEg
c291cmNlIG5vZGUuIFRoZSBzdGF0ZSBzd2l0Y2hlcyB0byAicnVubmluZyIgYXN5bmNocm9ub3Vz
bHkgbm93LiBJdCBpcyB1cCB0byB0aGUgdXNlcgorICAgICAgICBhZ2VudCBpZiBhbmQgd2hlbiB0
aGUgYXVkaW8gY29udGV4dCBzdGFydHMgYXV0b3BsYXlpbmcgc28gdGhpcyBzaG91bGQgYmUgYW4g
YWNjZXB0YWJsZSBiZWhhdmlvciBjaGFuZ2UuCisKIDIwMjAtMTAtMjcgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsaW5nIEF1ZGlvQ29udGV4dC5zdXNwZW5k
KCkgLyByZXN1bWUoKSB3aGlsZSBhbHJlYWR5IHN1c3BlbmRlZCAvIHJ1bm5pbmcgc2hvdWxkIHJl
c29sdmUgdGhlIHByb21pc2UgcmlnaHQgYXdheQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRp
b2NvbnRleHQtc3RhdGUuaHRtbAppbmRleCBkMzk1NmZiZTYxNDc3ZDY3MDhlM2NjMmNiODUyMDg3
YTVkMDY1YmM0Li42OGFiYjk0ZjI4OWE5MGJmODI5NjA4NWIzZWViZDU2YWRhMGZiMWNkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUuaHRtbApAQCAtMTYsMjAg
KzE2LDI1IEBAIGRlc2NyaXB0aW9uKCdCYXNpYyB0ZXN0cyBmb3IgQXVkaW9Ob2RlIEFQSS4nKTsK
IHZhciBjb250ZXh0ID0gbnVsbDsKIHZhciBub2RlID0gbnVsbDsKIAorZnVuY3Rpb24gb25BdWRp
b0NvbnRleHRBdXRvU3RhcnQoKQoreworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IG51bGw7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjb250ZXh0LnN0YXRlJywgJ3J1bm5pbmcnKTsK
KworICAgIGRlYnVnKCdDYWxsaW5nIGNvbnRleHQuc3VzcGVuZCgpJyk7CisgICAgY29udGV4dC5z
dXNwZW5kKCkudGhlbihzdXNwZW5kU3VjY2VlZGVkLCBzdXNwZW5kRmFpbGVkKTsKK30KKwogZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKICAg
ICBjb250ZXh0ID0gbmV3IEF1ZGlvQ29udGV4dCgpOworICAgIGNvbnRleHQub25zdGF0ZWNoYW5n
ZSA9IG9uQXVkaW9Db250ZXh0QXV0b1N0YXJ0OwogCi0gICAgc2hvdWxkQmUoJ2NvbnRleHQuc3Rh
dGUnLCAnInN1c3BlbmRlZCInKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2NvbnRleHQu
c3RhdGUnLCAnc3VzcGVuZGVkJyk7CiAKICAgICBub2RlID0gY29udGV4dC5jcmVhdGVCdWZmZXJT
b3VyY2UoKTsKICAgICBldmFsQW5kTG9nKCdub2RlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlv
biknKTsKLQotICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJydW5uaW5nIicpOwotCi0g
ICAgZGVidWcoJ0NhbGxpbmcgY29udGV4dC5zdXNwZW5kKCknKTsKLSAgICBjb250ZXh0LnN1c3Bl
bmQoKS50aGVuKHN1c3BlbmRTdWNjZWVkZWQsIHN1c3BlbmRGYWlsZWQpOwogfQogCiBmdW5jdGlv
biBzdXNwZW5kRmFpbGVkKCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412460</attachid>
            <date>2020-10-27 13:46:03 -0700</date>
            <delta_ts>2020-10-27 14:46:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218251-20201027134602.patch</filename>
            <type>text/plain</type>
            <size>35679</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODk1MjlkNGM2OWE2MTc1
MDkwYzE4MGI1ZGI3YmI0M2Q0NzczOTBiZi4uM2YyOWJiMGZiZGZiNzEwNGE1YzZjN2U1ZTM5ZGEy
YWY2ZWNhM2ViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTEwLTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIFVzZSBh
c3luYyBJUEMgZm9yIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyJ3MgU3RhcnRBdWRpb0Rl
c3RpbmF0aW9uIC8gU3RvcEF1ZGlvRGVzdGluYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODI1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVz
dW1lKCkgLyBzdXNwZW5kKCkgd2VyZSBhbHJlYWR5IGFzeW5jaHJvbm91cyBvcGVyYXRpb25zLiBI
b3dldmVyLCB0aGV5IGV4cGVjdGVkCisgICAgICAgIEF1ZGlvRGVzdGluYXRpb246OnN0YXJ0KCkg
LyBzdG9wKCkgdG8gZmluaXNoIHN5bmNocm9ub3VzbHkgYW5kIHdvdWxkIHNpbXBseSBjYWxsIHRo
ZWlyIGNvbXBsZXRpb24gaGFuZGxlcgorICAgICAgICBhc3luY2hyb25vdXNseS4gSW5zdGVhZCwg
d2Ugbm93IG1ha2UgQXVkaW9EZXN0aW5hdGlvbjo6c3RhcnQoKSAvIHN0b3AoKSBhc3luY2hyb25v
dXMgYXMgd2VsbC4gVGhpcyBhbGxvd3MgdXMKKyAgICAgICAgdG8gdXNlIGFzeW5jaHJvbm91cyBJ
UEMgZm9yIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyJ3MgU3RhcnRBdWRpb0Rlc3RpbmF0
aW9uIC8gU3RvcEF1ZGlvRGVzdGluYXRpb24uCisKKyAgICAgICAgQXMgYSByZXN1bHQgb2YgdGhp
cyBjaGFuZ2UsIEkgaGFkIHRvIG1ha2UgQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVy
aW5nKCkgYXN5bmNocm9ub3VzIGFzIHdlbGwgc2luY2UKKyAgICAgICAgaXQgdXNlcyBBdWRpb0Rl
c3RpbmF0aW9uOjpzdGFydCgpIGludGVybmFsbHkuCisKKyAgICAgICAgQXMgYW4gaW1wcm92ZW1l
bnQsIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gQXVkaW9EZXN0aW5hdGlvbk5vZGUncyBzdGFy
dFJlbmRlcmluZygpIC8gcmVzdW1lKCkgLyBzdXNwZW5kKCkKKyAgICAgICAgaXMgbm93IHByb3Zp
ZGVkIHdpdGggYW4gZXhjZXB0aW9uIGluIGNhc2VzIHdoZXJlIHRoZXkgZmFpbC4gVGhpcyBhbGxv
d3MgdGhlIGNhbGwgc2l0ZXMgdG8gcHJvcGVybHkgZGVhbAorICAgICAgICB3aXRoIHN1Y2ggZXJy
b3JzIGluc3RlYWQgb2YgYXNzdW1pbmcgdGhpbmdzIHdlcmUgc3VjY2Vzc3NmdWwuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBubyBXZWItZmFjaW5nIGJlYWh2aW9yIGNoYW5nZS4KKworICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6c3VzcGVuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NvbnRleHQ6OnJlc3VtZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRl
eHQ6OnN0YXJ0UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF5
UmVzdW1lUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdXNwZW5k
UGxheWJhY2spOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZXN1bWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN1c3BlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpPZmZsaW5lQXVkaW9Db250ZXh0OjpzdGFydE9mZmxpbmVSZW5kZXJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvQ29udGV4dDo6cmVzdW1lT2ZmbGluZVJl
bmRlcmluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlOjpzdGFydFJlbmRlcmluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0Rl
c3RpbmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpzdG9wKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3ApOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oOgorCiAyMDIwLTEwLTI3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbGluZyBBdWRpb0NvbnRleHQuc3Vz
cGVuZCgpIC8gcmVzdW1lKCkgd2hpbGUgYWxyZWFkeSBzdXNwZW5kZWQgLyBydW5uaW5nIHNob3Vs
ZCByZXNvbHZlIHRoZSBwcm9taXNlIHJpZ2h0IGF3YXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGZhZjI3N2NiMWFh
MzY1MzFhOTJlYzY4NTI4M2FlODhjZmQ2MTQwNi4uMTYyN2NhMWY0MmM3NWFiZDY0YzUwY2U0YTMw
MmJlODcxNDc2NzhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMC0yNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQcm9jZXNzXSBVc2Ug
YXN5bmMgSVBDIGZvciBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcidzIFN0YXJ0QXVkaW9E
ZXN0aW5hdGlvbiAvIFN0b3BBdWRpb0Rlc3RpbmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgyNTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYXN5bmMgSVBDIGZvciBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcidzIFN0YXJ0QXVkaW9EZXN0aW5hdGlvbiAvIFN0b3BBdWRpb0Rlc3Rp
bmF0aW9uLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5OjpzdG9wKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaDoKKwogMjAyMC0xMC0yNyAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViRHJpdmVyOiBz
ZXF1ZW5jZSBvZiBjaGFyIGtleSBwcmVzcyBpcyBub3Qgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggNjk0ZTRhMzM0
Mjg4NzA4NDBhNTg4ZTE3MGM1MTA3OGI3Y2VmZGI2NC4uOWQ2NDNjMTlhZWZjZDIxZTc1MTI2ZTY2
N2Q2Mjg4ZmE2ZTc2MjEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMjIzLDcgKzIyMywxMSBAQCB2b2lkIEF1ZGlvQ29udGV4
dDo6c3VzcGVuZFJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQog
CiAgICAgbGF6eUluaXRpYWxpemUoKTsKIAotICAgIGRlc3RpbmF0aW9uTm9kZSgpLT5zdXNwZW5k
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXSgpIG11dGFibGUgeworICAgIGRlc3RpbmF0aW9uTm9kZSgpLT5zdXNwZW5kKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZSgq
ZXhjZXB0aW9uKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgc2V0
U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CiAgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOwogICAg
IH0pOwpAQCAtMjUwLDcgKzI1NCwxMiBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1lUmVuZGVy
aW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAKICAgICBsYXp5SW5pdGlh
bGl6ZSgpOwogCi0gICAgZGVzdGluYXRpb25Ob2RlKCktPnJlc3VtZShbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRh
YmxlIHsKKyAgICBkZXN0aW5hdGlvbk5vZGUoKS0+cmVzdW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxF
eGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikg
eworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZSgqZXhjZXB0aW9uKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICAvLyBTaW5jZSB3ZSB1cGRhdGUg
dGhlIHN0YXRlIGFzeW5jaHJvbm91c2x5LCB3ZSBtYXkgaGF2ZSBiZWVuIGludGVycnVwdGVkIGFm
dGVyIHRoZQogICAgICAgICAvLyBjYWxsIHRvIHJlc3VtZSgpIGFuZCBiZWZvcmUgdGhpcyBsYW1i
ZGEgcnVucy4gSW4gdGhpcyBjYXNlLCB3ZSBkb24ndCB3YW50IHRvCiAgICAgICAgIC8vIHJlc2V0
IHRoZSBzdGF0ZSB0byBydW5uaW5nLgpAQCAtMjg2LDEwICsyOTUsMTEgQEAgdm9pZCBBdWRpb0Nv
bnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkKIAogICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKIAot
ICAgIHNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKLQogICAgIGxhenlJbml0aWFsaXplKCk7Ci0g
ICAgZGVzdGluYXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoKTsKKyAgICBkZXN0aW5hdGlvbigpLT5z
dGFydFJlbmRlcmluZyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShPcHRp
b25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSB7CisgICAgICAgIGlmICghZXhjZXB0aW9uKQor
ICAgICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAgIH0pOwogfQogCiB2b2lk
IEF1ZGlvQ29udGV4dDo6bGF6eUluaXRpYWxpemUoKQpAQCAtMzU3LDggKzM2Nyw4IEBAIHZvaWQg
QXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKIAogICAg
IGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBkZXN0aW5hdGlvbk5vZGUoKS0+cmVzdW1lKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgc2V0U3RhdGUoU3Rh
dGU6OlJ1bm5pbmcpOworICAgIGRlc3RpbmF0aW9uTm9kZSgpLT5yZXN1bWUoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlv
bikgeworICAgICAgICBzZXRTdGF0ZShleGNlcHRpb24gPyBTdGF0ZTo6U3VzcGVuZGVkIDogU3Rh
dGU6OlJ1bm5pbmcpOwogICAgIH0pOwogfQogCkBAIC00MzYsNyArNDQ2LDEwIEBAIHZvaWQgQXVk
aW9Db250ZXh0OjpzdXNwZW5kUGxheWJhY2soKQogCiAgICAgbGF6eUluaXRpYWxpemUoKTsKIAot
ICAgIGRlc3RpbmF0aW9uTm9kZSgpLT5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKKyAgICBkZXN0aW5hdGlvbk5vZGUoKS0+c3VzcGVuZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0
aW9uKSB7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm47CisKICAg
ICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9IG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZDsKICAgICAgICAgc2V0U3RhdGUoaW50ZXJydXB0
ZWQgPyBTdGF0ZTo6SW50ZXJydXB0ZWQgOiBTdGF0ZTo6U3VzcGVuZGVkKTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaAppbmRleCBjNTY3MGMzNjQ4NTc1ZTg4MGViNjg1ZTBhM2ExMzVjMjkyNDM3NWJiLi41
ZWNiYzU1YzY5MjdiZGJlNGVjMzk1OWY0N2IxNTJmMDBmMDU5Mjc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBA
IC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiQXVkaW9JT0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
QXVkaW9Ob2RlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC01MywxMCArNTMsMTAgQEAgcHVibGljOgogICAgIC8vIEVuYWJsZSBs
b2NhbC9saXZlIGlucHV0IGZvciB0aGUgc3BlY2lmaWVkIGRldmljZS4KICAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0UmVuZGVyaW5nKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCByZXN1bWUoV1RGOjpGdW5jdGlvbjx2b2lkICgpPiYmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc3VzcGVuZChXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBjbG9zZShXVEY6OkZ1bmN0aW9uPHZvaWQgKCk+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzdGFydFJlbmRlcmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlv
bj4mJik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOyB9CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgY2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlp
bmcoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgaXNQbGF5aW5nRGlkQ2hhbmdlKCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggM2IxOTE2NWVhMGIzNjI4
OTlkMWIxMzA4NTU4N2YyYjk0NmIwOWRkNC4uODJlYjE4YzMxYWZiZjdkOGM5MjhmYjcwYmQzM2Fl
YTdiNTMxZTlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMTE5LDM3ICsx
MTksNTMgQEAgRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiBEZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmRpc3BhdGNoVG9SZW5kZXIKICAgICByZXR1cm4geyB9OwogfQogCi1F
eGNlcHRpb25Pcjx2b2lkPiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVy
aW5nKCkKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgaWYgKCFpc0lu
aXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciwgIkF1ZGlvRGVzdGluYXRpb25Ob2RlIGlzIG5vdCBpbml0aWFsaXplZCJfcyB9OworICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJBdWRpb0Rlc3RpbmF0aW9uTm9kZSBpcyBub3QgaW5pdGlhbGl6ZWQiX3MgfSk7CiAKLSAgICBt
X2Rlc3RpbmF0aW9uLT5zdGFydChkaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24oKSk7Ci0g
ICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIGlubmVyQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzdWNjZXNzKSBt
dXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2VzcyA/IFdURjo6bnVsbG9w
dCA6IG1ha2VPcHRpb25hbChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0
byBzdGFydCB0aGUgYXVkaW8gZGV2aWNlIl9zIH0pKTsKKyAgICB9OworCisgICAgbV9kZXN0aW5h
dGlvbi0+c3RhcnQoZGlzcGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9uKCksIFdURk1vdmUoaW5u
ZXJDb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6cmVzdW1lKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCit2b2lkIERlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8RXhjZXB0aW9uPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNJ
bml0aWFsaXplZCgpKTsKLSAgICBpZiAoaXNJbml0aWFsaXplZCgpKQotICAgICAgICBtX2Rlc3Rp
bmF0aW9uLT5zdGFydChkaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24oKSk7Ci0gICAgY29u
dGV4dCgpLnBvc3RUYXNrKFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICBpZiAoIWlzSW5pdGlhbGl6
ZWQoKSkgeworICAgICAgICBjb250ZXh0KCkucG9zdFRhc2soW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkF1ZGlvRGVzdGlu
YXRpb25Ob2RlIGlzIG5vdCBpbml0aWFsaXplZCJfcyB9KTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoZGlzcGF0Y2hUb1JlbmRl
clRocmVhZEZ1bmN0aW9uKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdWNjZXNzID8gV1RGOjpudWxsb3B0IDogbWFrZU9wdGlvbmFsKEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIHN0YXJ0IHRoZSBhdWRpbyBkZXZpY2UiX3MgfSkp
OworICAgIH0pOwogfQogCi12b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVu
ZChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQordm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGU6OnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHRp
b24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChpc0luaXRpYWxpemVk
KCkpOwotICAgIGlmIChpc0luaXRpYWxpemVkKCkpCi0gICAgICAgIG1fZGVzdGluYXRpb24tPnN0
b3AoKTsKLSAgICBjb250ZXh0KCkucG9zdFRhc2soV1RGTW92ZShmdW5jdGlvbikpOworICAgIGlm
ICghaXNJbml0aWFsaXplZCgpKSB7CisgICAgICAgIGNvbnRleHQoKS5wb3N0VGFzayhbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCAiQXVkaW9EZXN0aW5hdGlvbk5vZGUgaXMgbm90IGluaXRpYWxpemVkIl9zIH0pOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZGVzdGluYXRpb24tPnN0b3Ao
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc3Vj
Y2VzcykgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MgPyBXVEY6
Om51bGxvcHQgOiBtYWtlT3B0aW9uYWwoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJG
YWlsZWQgdG8gc3RvcCB0aGUgYXVkaW8gZGV2aWNlIl9zIH0pKTsKKyAgICB9KTsKIH0KIAotdm9p
ZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKEZ1bmN0aW9uPHZvaWQoKT4mJiBm
dW5jdGlvbikKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjbG9zZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlz
SW5pdGlhbGl6ZWQoKSk7CiAgICAgdW5pbml0aWFsaXplKCk7Ci0gICAgY29udGV4dCgpLnBvc3RU
YXNrKFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICBjb250ZXh0KCkucG9zdFRhc2soV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB1bnNpZ25lZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGU6Om1heENoYW5uZWxDb3VudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApp
bmRleCBjOGU5MjY3OTBiZWMwNmQyMTM4NDhhMTY4YmZkZjgzMWUzMDgzMTg3Li41NGQ2OTVmOTUz
NGNkYmIwNzc3ODk3MDAxNTU0M2NjN2QzMmE4ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGZyYW1lc1BlckJ1ZmZl
cigpIGNvbnN0OwogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3NhbXBsZVJhdGU7IH0KICAgICAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydFJlbmRlcmlu
ZygpIGZpbmFsOworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQmFzZUF1ZGlvQ29udGV4dCYsIE9wdGlv
bmFsPGZsb2F0Pik7CkBAIC01OCw5ICs1OCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJl
c1RhaWxQcm9jZXNzaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZv
aWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSBmaW5hbDsKLSAgICB2
b2lkIHJlc3VtZShGdW5jdGlvbjx2b2lkICgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmQo
RnVuY3Rpb248dm9pZCAoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBjbG9zZShGdW5jdGlvbjx2b2lk
ICgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgc3VzcGVuZChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJik+JiYpIGZpbmFsOworICAgIHZv
aWQgY2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB1bnNpZ25l
ZCBtYXhDaGFubmVsQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzUGxheWluZygpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZs
aW5lQXVkaW9Db250ZXh0LmNwcAppbmRleCAyYmYyZTU4ZDRkN2IyYjhiMWIxMGU3Y2YwZGFiNDY4
YmI1NGQ0NzQ4Li5mODM2NTJlNzZjZTBkOTY0M2E0N2ZkZTg3ZjUyZmQwMjQ2OWQ4ZGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
Q29udGV4dC5jcHAKQEAgLTEwNSwxNiArMTA1LDE3IEBAIHZvaWQgT2ZmbGluZUF1ZGlvQ29udGV4
dDo6c3RhcnRPZmZsaW5lUmVuZGVyaW5nKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkK
IAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IGRlc3RpbmF0aW9u
KCktPnN0YXJ0UmVuZGVyaW5nKCk7Ci0gICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewot
ICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7Ci0gICAgbV9w
ZW5kaW5nT2ZmbGluZVJlbmRlcmluZ1Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwotICAgIG1f
ZGlkU3RhcnRPZmZsaW5lUmVuZGVyaW5nID0gdHJ1ZTsKLSAgICBzZXRTdGF0ZShTdGF0ZTo6UnVu
bmluZyk7CisgICAgZGVzdGluYXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoW3RoaXMsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBwZW5kaW5nQWN0aXZpdHkgPSBBY3RpdmVET01PYmplY3Q6Om1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KFdURk1vdmUoKmV4Y2VwdGlvbikpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgbWFrZVBlbmRpbmdBY3Rpdml0eSgpOworICAgICAgICBtX3BlbmRp
bmdPZmZsaW5lUmVuZGVyaW5nUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisgICAgICAgIG1f
ZGlkU3RhcnRPZmZsaW5lUmVuZGVyaW5nID0gdHJ1ZTsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6
OlJ1bm5pbmcpOworICAgIH0pOwogfQogCiB2b2lkIE9mZmxpbmVBdWRpb0NvbnRleHQ6OnN1c3Bl
bmRPZmZsaW5lUmVuZGVyaW5nKGRvdWJsZSBzdXNwZW5kVGltZSwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlKQpAQCAtMTY2LDE1ICsxNjcsMTYgQEAgdm9pZCBPZmZsaW5lQXVkaW9Db250
ZXh0OjpyZXN1bWVPZmZsaW5lUmVuZGVyaW5nKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKICAgICB9CiAgICAgQVNTRVJUKHN0YXRlKCkgPT0gQXVkaW9Db250ZXh0U3RhdGU6OlN1c3Bl
bmRlZCk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IGRlc3RpbmF0aW9uKCktPnN0YXJ0UmVuZGVyaW5n
KCk7Ci0gICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICBwcm9taXNlLT5y
ZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgZGVzdGluYXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoW3RoaXMsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBwZW5kaW5nQWN0aXZpdHkgPSBBY3RpdmVET01PYmplY3Q6Om1ha2VQZW5k
aW5nQWN0aXZpdHkoKnRoaXMpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KFdURk1vdmUoKmV4Y2VwdGlvbikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CiAKLSAgICBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7Ci0gICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5p
bmcpOwotICAgIHByb21pc2UtPnJlc29sdmUoKTsKKyAgICAgICAgbWFrZVBlbmRpbmdBY3Rpdml0
eSgpOworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgICAgIHByb21pc2Ut
PnJlc29sdmUoKTsKKyAgICB9KTsKIH0KIAogYm9vbCBPZmZsaW5lQXVkaW9Db250ZXh0OjpzaG91
bGRTdXNwZW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA4ZTE0OTE5NWE3
ZjI4NjZmNjAwZDUyZTE5ZDE5OTFiMDRjZTFhMTk1Li40NTJlNmZiODY3YzcxNTRlZjE2YzNkZjM3
NzM3Y2M3Y2Y1NTNkYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC04NCwx
NyArODQsMTcgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnVuaW5pdGlhbGl6
ZSgpCiAgICAgQXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9p
ZD4gT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZygpCit2b2lkIE9m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIEFTU0VSVChtX3JlbmRlclRhcmdldC5nZXQoKSk7CiAgICAgaWYgKCFtX3JlbmRl
clRhcmdldC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yLCAiT2ZmbGluZUF1ZGlvQ29udGV4dE5vZGUgaGFzIG5vIHJlbmRlcmluZyBidWZmZXIiX3Mg
fTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiT2ZmbGluZUF1ZGlvQ29udGV4dE5vZGUgaGFzIG5vIHJlbmRlcmluZyBidWZm
ZXIiX3MgfSk7CiAgICAgCiAgICAgaWYgKG1fc3RhcnRlZFJlbmRlcmluZykKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiQWxyZWFkeSBzdGFydGVkIHJlbmRl
cmluZyJfcyB9OworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJBbHJlYWR5IHN0YXJ0ZWQgcmVuZGVyaW5nIl9zIH0pOwogCiAg
ICAgbV9zdGFydGVkUmVuZGVyaW5nID0gdHJ1ZTsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKQEAgLTEyMSwxMiArMTIxLDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE9m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcoKQogICAgICAgICB3b3Jr
bGV0UHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2xldEdsb2JhbFNjb3BlKFtvZmZUaHJlYWRS
ZW5kZXJpbmcgPSBXVEZNb3ZlKG9mZlRocmVhZFJlbmRlcmluZyldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSBtdXRhYmxlIHsKICAgICAgICAgICAgIG9mZlRocmVhZFJlbmRlcmluZygpOwogICAg
ICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CiAgICAg
fQogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSBsaW1pdCB0aGUgbnVtYmVyIG9m
IHRocmVhZHMgd2UgY3JlYXRlIGZvciBvZmZsaW5lIGF1ZGlvLgogICAgIG1fcmVuZGVyVGhyZWFk
ID0gVGhyZWFkOjpjcmVhdGUoIm9mZmxpbmUgcmVuZGVyZXIiLCBXVEZNb3ZlKG9mZlRocmVhZFJl
bmRlcmluZyksIFRocmVhZFR5cGU6OkF1ZGlvKTsKLSAgICByZXR1cm4geyB9OworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CiB9CiAKIGF1dG8gT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpvZmZsaW5lUmVuZGVyKCkgLT4gT2ZmbGluZVJlbmRlclJlc3VsdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmgKaW5kZXggNmU0OTY3ZTc2YTM2Yzk0MDZjYjIxZGZiZjE2YzE4Yjc1
ZTg2OTNhOS4uNmYzYjBjMTllZjk0MmYyZTIxZjRjMjg5NTFjMWY2MGMwM2I5MWZkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIC8v
IEF1ZGlvRGVzdGluYXRpb25Ob2RlCiAgICAgdm9pZCBlbmFibGVJbnB1dChjb25zdCBTdHJpbmcm
KSBvdmVycmlkZSB7IH0KLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydFJlbmRlcmluZygpIGZp
bmFsOworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxFeGNlcHRpb24+JiYpPiYmKSBmaW5hbDsKIAogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3JlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAppbmRl
eCA0MTk2NTUyZDkxNWE4OWI0YTA1Zjg0NzY0ZDVmZWFjMDU2NjI0OTVmLi4zOGNlOGQxNmUxODQz
ZTRlNDdiMGM1ZjVkNzNlODVmNzIwNTY3MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5l
IEF1ZGlvRGVzdGluYXRpb25faAogCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01MCw4ICs1MSw4IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb24oKSA9IGRlZmF1bHQ7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYm
IGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+
JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgPSBbXShib29sKSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmID0gW10oYm9vbCkgeyB9KSA9IDA7CiAgICAgdmlydHVh
bCBib29sIGlzUGxheWluZygpID0gMDsKIAogICAgIC8vIFNhbXBsZS1yYXRlIGNvbnZlcnNpb24g
bWF5IGhhcHBlbiBpbiBBdWRpb0Rlc3RpbmF0aW9uIHRvIHRoZSBoYXJkd2FyZSBzYW1wbGUtcmF0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9E
ZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggMzMzODMyYzJiNGNhYTJjYWM1M2ZlZGU0
ZGIwMTFhOWI3ZDc4MzRkNi4uMWUwM2UwMjRkZmZmYTAxZTdjMTY4YzFkMmJiOWFlNWEzNDEyMTA3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9E
ZXN0aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC05OSwyNCArOTksMzAgQEAgdW5zaWdu
ZWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpmcmFtZXNQZXJCdWZmZXIoKSBjb25zdAogICAgIHJl
dHVybiBtX3JlbmRlckJ1cy0+bGVuZ3RoKCk7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5hdGlvbkNv
Y29hOjpzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hU
b1JlbmRlclRocmVhZCkKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydChGdW5jdGlv
bjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRlclRocmVhZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBM
T0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0Iik7CiAgICAgbV9kaXNwYXRj
aFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKTsKLSAgICBP
U1N0YXR1cyByZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iuc3RhcnQoKTsKLQotICAg
IGlmICghcmVzdWx0KQorICAgIGF1dG8gc3VjY2VzcyA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRv
ci5zdGFydCgpID09IG5vRXJyOworICAgIGlmIChzdWNjZXNzKQogICAgICAgICBzZXRJc1BsYXlp
bmcodHJ1ZSk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdWNjZXNzXSgpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKKyAgICB9KTsKIH0KIAotdm9pZCBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2E6OnN0b3AoKQordm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3AoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBM
T0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3AiKTsKLSAgICBPU1N0YXR1cyBy
ZXN1bHQgPSBtX2F1ZGlvT3V0cHV0VW5pdEFkYXB0b3Iuc3RvcCgpOworICAgIGF1dG8gc3VjY2Vz
cyA9IG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvci5zdG9wKCkgPT0gbm9FcnI7CiAgICAgbV9kaXNw
YXRjaFRvUmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKLQotICAgIGlmICghcmVzdWx0KQorICAgIGlm
IChzdWNjZXNzKQogICAgICAgICBzZXRJc1BsYXlpbmcoZmFsc2UpOworCisgICAgY2FsbE9uTWFp
blRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
c3VjY2Vzc10oKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7
CisgICAgfSk7CiB9CiAKIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRJc1BsYXlpbmco
Ym9vbCBpc1BsYXlpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oCmluZGV4IGNhNGVlYmZkMDNjOWJl
MGU1YWNmZmNjN2I1NzQ4NzRkMzBhNGQ2NjguLjJkYzI4ZmEzZjFlZmE3ZWMyMzIwNzhhOWRjZTZl
MzIzNTJlZDNkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oCkBAIC03MCw4ICs3MCw4IEBAIHBy
b3RlY3RlZDoKIHByaXZhdGU6CiAgICAgZnJpZW5kIFJlZjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRp
b0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29uc3QgU3RyaW5nJiwgdW5z
aWduZWQsIHVuc2lnbmVkLCBmbG9hdCk7CiAKLSAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9uPHZvaWQo
RnVuY3Rpb248dm9pZCgpPiYmKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc3Rv
cChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKIAogICAgIC8vIEF1
ZGlvU291cmNlUHJvdmlkZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm92aWRlSW5wdXQo
QXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCAxYjBjNTRlMWI5OTk1MTliNmE3ZDZkMWFl
ZmNhNjFiMzA4ZmRkNmFmLi4yZDEyMjc3NTc3NTMzZGZhMmU5NWExNGZkZjg3NWIyZjVkYmRlYzQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0yMTcsMzMg
KzIxNyw0MiBAQCBnYm9vbGVhbiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpoYW5kbGVNZXNz
YWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKLXZvaWQgQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lk
KCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXI6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNw
YXRjaFRvUmVuZGVyVGhyZWFkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChtX2F1ZGlvU2lua0F2YWlsYWJsZSk7Ci0gICAg
aWYgKCFtX2F1ZGlvU2lua0F2YWlsYWJsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGRp
c3BhdGNoVG9SZW5kZXJUaHJlYWQpCi0gICAgICAgIHdlYmtpdFdlYkF1ZGlvU291cmNlU2V0RGlz
cGF0Y2hUb1JlbmRlclRocmVhZENhbGxiYWNrKFdFQktJVF9XRUJfQVVESU9fU1JDKG1fc3JjLmdl
dCgpKSwgV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKSk7Ci0KLSAgICBHU1RfREVCVUco
IlN0YXJ0aW5nIik7Ci0gICAgaWYgKGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLmdl
dCgpLCBHU1RfU1RBVEVfUExBWUlORykgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7Ci0g
ICAgICAgIGdfd2FybmluZygiRXJyb3I6IEZhaWxlZCB0byBzZXQgcGlwZWxpbmUgdG8gcGxheWlu
ZyIpOwotICAgICAgICBtX2lzUGxheWluZyA9IGZhbHNlOwotICAgICAgICByZXR1cm47CisgICAg
Ym9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgaWYgKG1fYXVkaW9TaW5rQXZhaWxhYmxlKSB7Cisg
ICAgICAgIGlmIChkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKQorICAgICAgICAgICAgd2Via2l0V2Vi
QXVkaW9Tb3VyY2VTZXREaXNwYXRjaFRvUmVuZGVyVGhyZWFkQ2FsbGJhY2soV0VCS0lUX1dFQl9B
VURJT19TUkMobV9zcmMuZ2V0KCkpLCBXVEZNb3ZlKGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpKTsK
KworICAgICAgICBHU1RfREVCVUcoIlN0YXJ0aW5nIik7CisgICAgICAgIGlmIChnc3RfZWxlbWVu
dF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9T
VEFURV9DSEFOR0VfRkFJTFVSRSkgeworICAgICAgICAgICAgZ193YXJuaW5nKCJFcnJvcjogRmFp
bGVkIHRvIHNldCBwaXBlbGluZSB0byBwbGF5aW5nIik7CisgICAgICAgICAgICBtX2lzUGxheWlu
ZyA9IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9pc1BsYXlpbmcgPSB0
cnVlOworICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgIH0KICAgICB9Ci0gICAg
bV9pc1BsYXlpbmcgPSB0cnVlOworCisgICAgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc3VjY2Vzc10oKSBtdXRhYmxlIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7CiB9CiAKLXZvaWQg
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RvcCgpCit2b2lkIEF1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXI6OnN0b3AoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9hdWRpb1NpbmtBdmFpbGFibGUpOwotICAgIGlmICgh
bV9hdWRpb1NpbmtBdmFpbGFibGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdTVF9ERUJVRygi
U3RvcHBpbmciKTsKLSAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwg
R1NUX1NUQVRFX1BBVVNFRCk7Ci0gICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKKyAgICBib29sIHN1
Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAobV9hdWRpb1NpbmtBdmFpbGFibGUpIHsKKyAgICAgICAg
R1NUX0RFQlVHKCJTdG9wcGluZyIpOworICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9w
aXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX1BBVVNFRCk7CisgICAgICAgIG1faXNQbGF5aW5nID0g
ZmFsc2U7CisgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOworICAgIH0KKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzdWNj
ZXNzXSgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzKTsKKyAg
ICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmgKaW5kZXggNzk2MDA0NjFiM2ZkM2VkOTg5MDJlZGVhODk0YTA0NTQxNGEy
NzBiYi4uNWQ1ZjRkZGJkMGU1OGU2YjI0MWFjYWJlZDM0MjFjNGI1ZjdhMTYzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCkBAIC0zNCw4ICszNCw4IEBAIHB1YmxpYzoK
ICAgICBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYsIHVuc2lnbmVk
IGxvbmcgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmly
dHVhbCB+QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcigpOwogCi0gICAgdm9pZCBzdGFydChGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRlclRocmVhZCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydChGdW5j
dGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUb1JlbmRlclRocmVhZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9w
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBp
c1BsYXlpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzUGxheWluZzsgfQogICAgIGZsb2F0IHNh
bXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25D
b2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tBdWRpb0Rlc3RpbmF0
aW9uQ29jb2EuY3BwCmluZGV4IDk5YTZjMjY3YzQ1YWI0NjQyNTkxNzI1N2EwYzAyZGUxM2E2NGNh
YzUuLjVmYmNmOTYxNTA2YTQ1NDMwMWQzOTc1MmY0ZDI4NDdhMjUyYzJmYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmNwcApAQCAtNDUsMjMgKzQ1LDI3IEBAIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
Ok1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKIAog
TW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYTo6fk1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKSA9
IGRlZmF1bHQ7CiAKLXZvaWQgTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rp
b248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpCit2
b2lkIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rp
b248dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fZGlzcGF0Y2hUb1Jl
bmRlclRocmVhZCA9IFdURk1vdmUoZGlzcGF0Y2hUb1JlbmRlclRocmVhZCk7CiAgICAgbV90aW1l
ci5zdGFydFJlcGVhdGluZyhTZWNvbmRzIHsgbV9udW1iZXJPZkZyYW1lc1RvUHJvY2VzcyAvIHNh
bXBsZVJhdGUoKSB9KTsKICAgICBzZXRJc1BsYXlpbmcodHJ1ZSk7CisKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICB9KTsKIH0K
IAotdm9pZCBNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wKCkKK3ZvaWQgTW9ja0F1ZGlv
RGVzdGluYXRpb25Db2NvYTo6c3RvcChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fdGltZXIuc3RvcCgpOwogICAgIHNldElzUGxheWlu
ZyhmYWxzZSk7CiAKLSAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOwotICAgIG1fd29ya1F1
ZXVlLT5kaXNwYXRjaChbJnNlbWFwaG9yZV0gewotICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7
CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgICAgIH0pOwog
ICAgIH0pOwotICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKIHZvaWQgTW9ja0F1ZGlvRGVzdGlu
YXRpb25Db2NvYTo6dGljaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oCmluZGV4IGE4ZDI4YzRlZDFiYmVmZmQz
MzA5NDUwZGFhZjMyOWViYTI1MzRjMTUuLmIzN2Y5YmE3MWJhMDQ0NDBlOGI0ZTc5YjQ0OTE4YTQx
NjY0NzE2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja0F1
ZGlvRGVzdGluYXRpb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oCkBAIC00Nyw4ICs0Nyw4IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Nb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hKCk7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4m
Jik+JiYpIGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIHZvaWQgc3RhcnQoRnVu
Y3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJikgZmluYWw7CiAKICAgICB2b2lkIHRpY2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDJiYzllZGM3MWI5NGU4Njc5Y2MyMGI2
MmQ4MWE5MzJjZTMxNTViMDMuLjhjNmJkZTdhMmJkYzZmYTVkOTZmMGE1MzJlMjFjMWIyNTdhYjQy
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAg
LTI3LDggKzI3LDggQEAgbWVzc2FnZXMgLT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIg
Tm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXRE
ZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJh
dGUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIEFzeW5jCiAKLSAg
ICBTdGFydEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCi0gICAg
U3RvcEF1ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRp
ZmllciBpZGVudGlmaWVyKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCisgICAgU3Rh
cnRBdWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllcikgLT4gKGJvb2wgaXNQbGF5aW5nKSBBc3luYworICAgIFN0b3BBdWRpb0Rl
c3RpbmF0aW9uKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRp
ZmllcikgLT4gKGJvb2wgaXNQbGF5aW5nKSBBc3luYwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IEF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBz
dG9yYWdlSGFuZGxlLCBXZWJDb3JlOjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRp
b24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5jcHAKaW5kZXggMTA4YWY1NDM4OTIxZWExYWQ3ZDQ1ZGI5ZjIyZDgwNWI5NWQ4
MWQ1My4uZGFjMTJiMmYzYzg4M2RjNWEwOWUyMzhhNDIzMTYwMjdjZjQyNzFhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcApAQCAtMTAyLDI0ICsxMDIsMjIgQEAgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5Ojp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KCkKICAg
ICBtX3JlbmRlclRocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKIH0KIAotdm9pZCBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgp
PiYmKT4mJiBkaXNwYXRjaFRvUmVuZGVyVGhyZWFkKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHk6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBkaXNw
YXRjaFRvUmVuZGVyVGhyZWFkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IFdURk1vdmUo
ZGlzcGF0Y2hUb1JlbmRlclRocmVhZCk7Ci0gICAgYm9vbCBpc1BsYXlpbmc7Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoCi0gICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcjo6U3RhcnRBdWRpb0Rlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25JRCksCi0gICAgICAgIE1l
c3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6U3RhcnRBdWRpb0Rlc3RpbmF0
aW9uOjpSZXBseShpc1BsYXlpbmcpLCAwKTsKLSAgICBzZXRJc1BsYXlpbmcoaXNQbGF5aW5nKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyOjpTdGFydEF1ZGlvRGVzdGluYXRpb24obV9kZXN0aW5hdGlvbklEKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IFdU
Rk1vdmUoZGlzcGF0Y2hUb1JlbmRlclRocmVhZCldKGJvb2wgaXNQbGF5aW5nKSBtdXRhYmxlIHsK
KyAgICAgICAgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVu
ZGVyVGhyZWFkKTsKKyAgICAgICAgc2V0SXNQbGF5aW5nKGlzUGxheWluZyk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGlzUGxheWluZyk7CisgICAgfSk7CiB9CiAKLXZvaWQgUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5OjpzdG9wKCkKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5OjpzdG9wKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgYm9vbCBpc1BsYXlpbmc7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoCi0gICAg
ICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6U3RvcEF1ZGlvRGVz
dGluYXRpb24obV9kZXN0aW5hdGlvbklEKSwKLSAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoaXNQbGF5aW5n
KSwgMCk7Ci0gICAgc2V0SXNQbGF5aW5nKGlzUGxheWluZyk7Ci0gICAgbV9kaXNwYXRjaFRvUmVu
ZGVyVGhyZWFkID0gbnVsbHB0cjsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdG9wQXVkaW9EZXN0aW5hdGlv
bihtX2Rlc3RpbmF0aW9uSUQpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGlz
UGxheWluZykgbXV0YWJsZSB7CisgICAgICAgIHNldElzUGxheWluZyhpc1BsYXlpbmcpOworICAg
ICAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWQgPSBudWxscHRyOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcighaXNQbGF5aW5nKTsKKyAgICB9KTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09B
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKaW5kZXggODcyNTJjZjQ0NGY1ZWZlODdk
Yzg4YzRhNzk1NmI4NmQ3YzhmMzdmNC4uZTI4ZjFlMmNmM2U3NzdlM2NmNTI3M2VkOGZmYzFjNWFh
OTAxMzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCkBAIC03NSw4ICs3NSw4
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248
dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpIGZpbmFs
OwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIHZvaWQgc3RhcnQoRnVuY3Rpb248dm9pZChG
dW5jdGlvbjx2b2lkKCk+JiYpPiYmIGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgc3RvcChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIAogI2lmICFQTEFURk9STShDT0NPQSkKICAgICBi
b29sIGlzUGxheWluZygpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTc4Yzg3ZWIz
MTRhN2Q3ODAzZjllMDFlNzBkOWRmNWE0NmE1NjBhNC4uYjJmZTMzZTQ1YTUwODM4ZjYxZTczMmNh
ZDMxYzY1YTZiZWViNjRkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTEwLTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVByb2Nlc3NdIFVzZSBh
c3luYyBJUEMgZm9yIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyJ3MgU3RhcnRBdWRpb0Rl
c3RpbmF0aW9uIC8gU3RvcEF1ZGlvRGVzdGluYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODI1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLmh0
bWw6CisgICAgICAgIFVwZGF0ZSBleGlzdGluZyB0ZXN0IHdoaWNoIGluY29ycmVjdGx5IGV4cGVj
dGVkIHRoZSBBdWRpb0NvbnRleHQncyBzdGF0ZSB0byBiZWNvbWUgInJ1bm5pbmciIHN5bmNocm9u
b3VzbHkKKyAgICAgICAgYWZ0ZXIgY29ubmVjdGluZyBhIHNvdXJjZSBub2RlLiBUaGUgc3RhdGUg
c3dpdGNoZXMgdG8gInJ1bm5pbmciIGFzeW5jaHJvbm91c2x5IG5vdy4gSXQgaXMgdXAgdG8gdGhl
IHVzZXIKKyAgICAgICAgYWdlbnQgaWYgYW5kIHdoZW4gdGhlIGF1ZGlvIGNvbnRleHQgc3RhcnRz
IGF1dG9wbGF5aW5nIHNvIHRoaXMgc2hvdWxkIGJlIGFuIGFjY2VwdGFibGUgYmVoYXZpb3IgY2hh
bmdlLgorCiAyMDIwLTEwLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ2FsbGluZyBBdWRpb0NvbnRleHQuc3VzcGVuZCgpIC8gcmVzdW1lKCkgd2hpbGUgYWxy
ZWFkeSBzdXNwZW5kZWQgLyBydW5uaW5nIHNob3VsZCByZXNvbHZlIHRoZSBwcm9taXNlIHJpZ2h0
IGF3YXkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0
ZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLmh0bWwKaW5k
ZXggZDM5NTZmYmU2MTQ3N2Q2NzA4ZTNjYzJjYjg1MjA4N2E1ZDA2NWJjNC4uNjhhYmI5NGYyODlh
OTBiZjgyOTYwODViM2VlYmQ1NmFkYTBmYjFjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
YXVkaW9jb250ZXh0LXN0YXRlLmh0bWwKQEAgLTE2LDIwICsxNiwyNSBAQCBkZXNjcmlwdGlvbign
QmFzaWMgdGVzdHMgZm9yIEF1ZGlvTm9kZSBBUEkuJyk7CiB2YXIgY29udGV4dCA9IG51bGw7CiB2
YXIgbm9kZSA9IG51bGw7CiAKK2Z1bmN0aW9uIG9uQXVkaW9Db250ZXh0QXV0b1N0YXJ0KCkKK3sK
KyAgICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSBudWxsOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnY29udGV4dC5zdGF0ZScsICdydW5uaW5nJyk7CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBj
b250ZXh0LnN1c3BlbmQoKScpOworICAgIGNvbnRleHQuc3VzcGVuZCgpLnRoZW4oc3VzcGVuZFN1
Y2NlZWRlZCwgc3VzcGVuZEZhaWxlZCk7Cit9CisKIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCiAgICAgY29udGV4dCA9IG5ldyBBdWRpb0Nv
bnRleHQoKTsKKyAgICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSBvbkF1ZGlvQ29udGV4dEF1dG9T
dGFydDsKIAotICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJzdXNwZW5kZWQiJyk7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjb250ZXh0LnN0YXRlJywgJ3N1c3BlbmRlZCcpOwog
CiAgICAgbm9kZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7CiAgICAgZXZhbEFuZExv
Zygnbm9kZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pJyk7Ci0KLSAgICBzaG91bGRCZSgn
Y29udGV4dC5zdGF0ZScsICcicnVubmluZyInKTsKLQotICAgIGRlYnVnKCdDYWxsaW5nIGNvbnRl
eHQuc3VzcGVuZCgpJyk7Ci0gICAgY29udGV4dC5zdXNwZW5kKCkudGhlbihzdXNwZW5kU3VjY2Vl
ZGVkLCBzdXNwZW5kRmFpbGVkKTsKIH0KIAogZnVuY3Rpb24gc3VzcGVuZEZhaWxlZCgpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>