<?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>219459</bug_id>
          
          <creation_ts>2020-12-02 15:56:53 -0800</creation_ts>
          <short_desc>Implement recognizer for SpeechRecognition</short_desc>
          <delta_ts>2020-12-14 09:48:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1711494</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-02 15:56:53 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711495</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-02 15:57:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/71914465&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712507</commentid>
    <comment_count>2</comment_count>
      <attachid>415566</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-07 11:09:43 -0800</bug_when>
    <thetext>Created attachment 415566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712617</commentid>
    <comment_count>3</comment_count>
      <attachid>415585</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-07 14:19:20 -0800</bug_when>
    <thetext>Created attachment 415585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712622</commentid>
    <comment_count>4</comment_count>
      <attachid>415586</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-07 14:28:29 -0800</bug_when>
    <thetext>Created attachment 415586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712623</commentid>
    <comment_count>5</comment_count>
      <attachid>415587</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-07 14:34:51 -0800</bug_when>
    <thetext>Created attachment 415587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712702</commentid>
    <comment_count>6</comment_count>
      <attachid>415617</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-08 00:54:34 -0800</bug_when>
    <thetext>Created attachment 415617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712791</commentid>
    <comment_count>7</comment_count>
      <attachid>415644</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-08 07:51:17 -0800</bug_when>
    <thetext>Created attachment 415644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712800</commentid>
    <comment_count>8</comment_count>
      <attachid>415646</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-08 08:06:28 -0800</bug_when>
    <thetext>Created attachment 415646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712849</commentid>
    <comment_count>9</comment_count>
      <attachid>415646</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-08 11:36:35 -0800</bug_when>
    <thetext>Comment on attachment 415646
Patch

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

&gt; Source/WebCore/Configurations/WebCore.xcconfig:128
&gt; +WK_SPEECH_LDFLAGS = $(WK_SPEECH_LDFLAGS_$(WK_PLATFORM_NAME));
&gt; +WK_SPEECH_LDFLAGS_macosx = -framework Speech;
&gt; +WK_SPEECH_LDFLAGS_iphoneos = -framework Speech;
&gt; +WK_SPEECH_LDFLAGS_iphonesimulator = -framework Speech;
&gt; +WK_SPEECH_LDFLAGS_maccatalyst = -framework Speech;

Is this OK for the base system on macOS? Is the Speech framework included in that reduced system?

Does this affect launch time? Adding another framework that mostly isn’t used can slow down launch if that framework is not part of the shared cache, I believe.

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:46
&gt; +        auto error = WebCore::SpeechRecognitionError { WebCore::SpeechRecognitionErrorType::ServiceNotAllowed, &quot;Failed to start recognition&quot; };

Should use _s on the string constant here since it’s going to be used to make a WTF::String.

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:48
&gt; +        auto update = WebCore::SpeechRecognitionUpdate::createError(identifier, error);
&gt; +        invokeDelegateCallback(update);

Seems like this could be collapsed into a single line like the other similar cases below.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:89
&gt; +        return nil;

This is missing a call to either &quot;[self release]&quot; or &quot;[self dealloc]&quot;.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:91
&gt; +    if (![_recognizer.get() isAvailable])

The &quot;get()&quot; here is not needed.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:92
&gt; +        return nil;

This is missing a call to either &quot;[self release]&quot; or &quot;[self dealloc]&quot;.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:104
&gt; +    [_request _setMaximumRecognitionDuration:60 * 60];

Where does this magic constant come from? Maybe a named constant at the top of the file would be better. We could also comment how we chose that value.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:107
&gt; +    _task = [_recognizer.get() recognitionTaskWithRequest:_request.get() delegate:self];

The first &quot;get()&quot; here isn&apos;t needed.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:119
&gt; +        data.alternatives.append(WebCore::SpeechRecognitionAlternativeData { [[segment substring] UTF8String], [segment confidence] });

There’s no reason to call UTF8String here. We’re doing to store this into a WTF::String, and it can do it with NSString. Calling UTF8String makes the operation less efficient, and I don’t think provides any value.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:124
&gt; +            data.alternatives.append(WebCore::SpeechRecognitionAlternativeData { [segmentAlternative UTF8String], 0.0 });

There’s no reason to call UTF8String here. We’re doing to store this into a WTF::String, and it can do it with NSString. Calling UTF8String makes the operation less efficient, and I don’t think provides any value.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:193
&gt; +    // FIXME: This is never called.

This is a confusing comment. Why is this never called? We say FIXME: What should someone be fixing?

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:214
&gt; +    // FIXME: This is never called.

Ditto.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:231
&gt; +    auto error = WebCore::SpeechRecognitionError { WebCore::SpeechRecognitionErrorType::Aborted, [task.error.localizedDescription UTF8String] };

There’s no reason to call UTF8String here. We’re doing to store this into a WTF::String, and it can do it with NSString. Calling UTF8String makes the operation less efficient, and I don’t think provides any value.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:233
&gt; +    auto update = WebCore::SpeechRecognitionUpdate::createError(_identifier, error);
&gt; +    _delegateCallback(update);

I think we could collapse these into a single line.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:285
&gt; +    [m_task.get() audioSamplesAvailable:buffer.get()];

The first &quot;get()&quot; here isn’t needed.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:304
&gt; +    [m_task.get() stop];

I don’t think this get() is needed.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:310
&gt; +    [m_task.get() abort];

Ditto.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:319
&gt; +    [task.get() abort];

Ditto.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1728
&gt; +        if (!weakPage || !weakPage-&gt;preferences().mockCaptureDevicesEnabled())
&gt; +            return false;
&gt; +        return true;

I would have written this:

    return weakPage &amp;&amp; weakPage-&gt;preferences().mockCaptureDevicesEnabled();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713073</commentid>
    <comment_count>10</comment_count>
      <attachid>415646</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-09 01:27:57 -0800</bug_when>
    <thetext>Comment on attachment 415646
Patch

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

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:123
&gt; +    invokeDelegateCallback(SpeechRecognitionUpdate::create(*m_clientIdentifier, SpeechRecognitionUpdateType::AudioEnd));

Are we sure m_clientIdentifier is always not null here?
Maybe we should change the model as a clean-up patch by creating a SpeechRecognizer for every new recognition task.
Then we would pass the client identifier as part of SpeechRecognizer constructor and it would no longer be optional.
We could keep another boolean internal state to track whether being stopped/aborted.
The recogniser could also become mock or not mock at creation time as well.

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:128
&gt; +void SpeechRecognizer::dataCaptured(const WTF::MediaTime&amp;, const PlatformAudioData&amp;, const AudioStreamDescription&amp;, size_t)

We can probably remove WTF:: here.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:114
&gt; +    auto segments = [transcription segments];

Can we use reserveInitialCapacity?

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:133
&gt; +    [_request appendAudioSampleBuffer:sampleBuffer];

We tend to push audio samples in background threads only.
If this method is only supposed to be called in the main thread, we could add an isMainThread ASSERT.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:200
&gt; +    [self callbackWithResult:transcription isFinal:NO];

Is the delegate guaranteed to be called on the main thread?

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:239
&gt; +@interface WebSpeechRecognizerTaskMock : WebSpeechRecognizerTask

I would tend to move WebSpeechRecognizerTaskMock to its own file.

&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:290
&gt; +    auto taskClass = mockCaptureDevicesEnabled ? [WebSpeechRecognizerTaskMock class] : [WebSpeechRecognizerTaskMock class];

In both cases, we are creating a WebSpeechRecognizerTaskMock, the second one is probably WebSpeechRecognizerTask.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713242</commentid>
    <comment_count>11</comment_count>
      <attachid>415646</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-09 11:35:42 -0800</bug_when>
    <thetext>Comment on attachment 415646
Patch

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

&gt;&gt; Source/WebCore/Configurations/WebCore.xcconfig:128
&gt;&gt; +WK_SPEECH_LDFLAGS_maccatalyst = -framework Speech;
&gt; 
&gt; Is this OK for the base system on macOS? Is the Speech framework included in that reduced system?
&gt; 
&gt; Does this affect launch time? Adding another framework that mostly isn’t used can slow down launch if that framework is not part of the shared cache, I believe.

Thanks for pointing this out! The framework is not in base system, should add -weak.

It may affect launch time, but it seems the framework is too small to cause noticeable change.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:46
&gt;&gt; +        auto error = WebCore::SpeechRecognitionError { WebCore::SpeechRecognitionErrorType::ServiceNotAllowed, &quot;Failed to start recognition&quot; };
&gt; 
&gt; Should use _s on the string constant here since it’s going to be used to make a WTF::String.

Sure.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:48
&gt;&gt; +        invokeDelegateCallback(update);
&gt; 
&gt; Seems like this could be collapsed into a single line like the other similar cases below.

Will collapse this.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:123
&gt;&gt; +    invokeDelegateCallback(SpeechRecognitionUpdate::create(*m_clientIdentifier, SpeechRecognitionUpdateType::AudioEnd));
&gt; 
&gt; Are we sure m_clientIdentifier is always not null here?
&gt; Maybe we should change the model as a clean-up patch by creating a SpeechRecognizer for every new recognition task.
&gt; Then we would pass the client identifier as part of SpeechRecognizer constructor and it would no longer be optional.
&gt; We could keep another boolean internal state to track whether being stopped/aborted.
&gt; The recogniser could also become mock or not mock at creation time as well.

Sounds good. Filed https://bugs.webkit.org/show_bug.cgi?id=219699.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:128
&gt;&gt; +void SpeechRecognizer::dataCaptured(const WTF::MediaTime&amp;, const PlatformAudioData&amp;, const AudioStreamDescription&amp;, size_t)
&gt; 
&gt; We can probably remove WTF:: here.

Sure.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:89
&gt;&gt; +        return nil;
&gt; 
&gt; This is missing a call to either &quot;[self release]&quot; or &quot;[self dealloc]&quot;.

ah, will add!

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:91
&gt;&gt; +    if (![_recognizer.get() isAvailable])
&gt; 
&gt; The &quot;get()&quot; here is not needed.

Will remove.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:92
&gt;&gt; +        return nil;
&gt; 
&gt; This is missing a call to either &quot;[self release]&quot; or &quot;[self dealloc]&quot;.

Will add!

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:104
&gt;&gt; +    [_request _setMaximumRecognitionDuration:60 * 60];
&gt; 
&gt; Where does this magic constant come from? Maybe a named constant at the top of the file would be better. We could also comment how we chose that value.

Will add!

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:107
&gt;&gt; +    _task = [_recognizer.get() recognitionTaskWithRequest:_request.get() delegate:self];
&gt; 
&gt; The first &quot;get()&quot; here isn&apos;t needed.

Will remove.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:114
&gt;&gt; +    auto segments = [transcription segments];
&gt; 
&gt; Can we use reserveInitialCapacity?

Sure.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:119
&gt;&gt; +        data.alternatives.append(WebCore::SpeechRecognitionAlternativeData { [[segment substring] UTF8String], [segment confidence] });
&gt; 
&gt; There’s no reason to call UTF8String here. We’re doing to store this into a WTF::String, and it can do it with NSString. Calling UTF8String makes the operation less efficient, and I don’t think provides any value.

Will remove this.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:124
&gt;&gt; +            data.alternatives.append(WebCore::SpeechRecognitionAlternativeData { [segmentAlternative UTF8String], 0.0 });
&gt; 
&gt; There’s no reason to call UTF8String here. We’re doing to store this into a WTF::String, and it can do it with NSString. Calling UTF8String makes the operation less efficient, and I don’t think provides any value.

Will remove.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:133
&gt;&gt; +    [_request appendAudioSampleBuffer:sampleBuffer];
&gt; 
&gt; We tend to push audio samples in background threads only.
&gt; If this method is only supposed to be called in the main thread, we could add an isMainThread ASSERT.

Sure.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:193
&gt;&gt; +    // FIXME: This is never called.
&gt; 
&gt; This is a confusing comment. Why is this never called? We say FIXME: What should someone be fixing?

hmm, left a comment here to remind myself this delegate callback never gets called during my testing. Will remove.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:200
&gt;&gt; +    [self callbackWithResult:transcription isFinal:NO];
&gt; 
&gt; Is the delegate guaranteed to be called on the main thread?

Good question! Will check this on testing; and all other callbacks.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:214
&gt;&gt; +    // FIXME: This is never called.
&gt; 
&gt; Ditto.

Will remove.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:231
&gt;&gt; +    auto error = WebCore::SpeechRecognitionError { WebCore::SpeechRecognitionErrorType::Aborted, [task.error.localizedDescription UTF8String] };
&gt; 
&gt; There’s no reason to call UTF8String here. We’re doing to store this into a WTF::String, and it can do it with NSString. Calling UTF8String makes the operation less efficient, and I don’t think provides any value.

Will remove.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:233
&gt;&gt; +    _delegateCallback(update);
&gt; 
&gt; I think we could collapse these into a single line.

Okay.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:239
&gt;&gt; +@interface WebSpeechRecognizerTaskMock : WebSpeechRecognizerTask
&gt; 
&gt; I would tend to move WebSpeechRecognizerTaskMock to its own file.

Will move.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:285
&gt;&gt; +    [m_task.get() audioSamplesAvailable:buffer.get()];
&gt; 
&gt; The first &quot;get()&quot; here isn’t needed.

Will remove.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:290
&gt;&gt; +    auto taskClass = mockCaptureDevicesEnabled ? [WebSpeechRecognizerTaskMock class] : [WebSpeechRecognizerTaskMock class];
&gt; 
&gt; In both cases, we are creating a WebSpeechRecognizerTaskMock, the second one is probably WebSpeechRecognizerTask.

Oops!

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:304
&gt;&gt; +    [m_task.get() stop];
&gt; 
&gt; I don’t think this get() is needed.

Will remove.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:310
&gt;&gt; +    [m_task.get() abort];
&gt; 
&gt; Ditto.

Will remove.

&gt;&gt; Source/WebCore/Modules/speech/SpeechRecognizerCocoa.mm:319
&gt;&gt; +    [task.get() abort];
&gt; 
&gt; Ditto.

Will remove.

&gt;&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1728
&gt;&gt; +        return true;
&gt; 
&gt; I would have written this:
&gt; 
&gt;     return weakPage &amp;&amp; weakPage-&gt;preferences().mockCaptureDevicesEnabled();

NIce.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713271</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-09 12:20:50 -0800</bug_when>
    <thetext>(In reply to Sihui Liu from comment #11)
&gt; It may affect launch time, but it seems the framework is too small to cause
&gt; noticeable change.

Please double check this with the people who worked so hard to make web processes launch quickly so they can make sure we measure after the fact to be sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713475</commentid>
    <comment_count>13</comment_count>
      <attachid>415848</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-10 02:18:29 -0800</bug_when>
    <thetext>Created attachment 415848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713546</commentid>
    <comment_count>14</comment_count>
      <attachid>415877</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-10 08:13:16 -0800</bug_when>
    <thetext>Created attachment 415877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713548</commentid>
    <comment_count>15</comment_count>
      <attachid>415878</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-10 08:20:08 -0800</bug_when>
    <thetext>Created attachment 415878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713558</commentid>
    <comment_count>16</comment_count>
      <attachid>415881</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-10 09:05:11 -0800</bug_when>
    <thetext>Created attachment 415881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713619</commentid>
    <comment_count>17</comment_count>
      <attachid>415903</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-10 11:05:55 -0800</bug_when>
    <thetext>Created attachment 415903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713736</commentid>
    <comment_count>18</comment_count>
      <attachid>415936</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-10 14:57:29 -0800</bug_when>
    <thetext>Created attachment 415936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713846</commentid>
    <comment_count>19</comment_count>
      <attachid>415936</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-11 01:09:09 -0800</bug_when>
    <thetext>Comment on attachment 415936
Patch

This looks almost ready to me.
It would be good to get some more tests.

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Manually tested in MiniBrowser.

If we beef up the mock implementation to return some fake recognised words, we could probably add some tests.

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:69
&gt; +void SpeechRecognizer::start(SpeechRecognitionConnectionClientIdentifier clientIdentifier, Ref&lt;RealtimeMediaSource&gt;&amp;&amp; source, bool mockCaptureDevicesEnabled, const String&amp; localeIdentifier, bool continuous, bool interimResults, uint64_t maxAlternatives)

s/mockCaptureDevicesEnabled/mockSpeechRecognitionEnabled/

&gt; Source/WebCore/Modules/speech/SpeechRecognizer.cpp:77
&gt; +        auto update = WebCore::SpeechRecognitionUpdate::createError(clientIdentifier, error);

WTFMove() or inline error creation in this line

&gt; Source/WebCore/Modules/speech/cocoa/SpeechRecognizerCocoa.mm:45
&gt; +bool SpeechRecognizer::startRecognition(bool mockCaptureDevicesEnabled, SpeechRecognitionConnectionClientIdentifier identifier, const String&amp; localeIdentifier, bool continuous, bool interimResults, uint64_t alternatives)

s/mockCaptureDevicesEnabled/mockSpeechDevicesEnabled/

&gt; Source/WebCore/Modules/speech/cocoa/SpeechRecognizerCocoa.mm:70
&gt; +void SpeechRecognizer::resetRecognition()

Should we merge abort and reset methods?
If we abort, do we want m_task to not stay null?

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:119
&gt; +    Vector&lt;WebCore::SpeechRecognitionResultData&gt; datas;

No need for WebCore:: prefix in this file

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:120
&gt; +    datas.reserveInitialCapacity(_maxAlternatives &lt;= segments.count ? _maxAlternatives : segments.count);

This should probably be: datas.reserveInitialCapacity(segments.count);

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:127
&gt; +            if (data.alternatives.size() == _maxAlternatives)

This is for data.alternatives that you could potentially try doing reserveInitialCapacity(_maxAlternatives &lt;= segments.alternativeSubstrings.count...);

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:132
&gt; +        datas.append(WTFMove(data));

Could do uncheckedAppend here.
Or you could write it as: datas.append(SpeechRecognitionResultData {isFinal , WTFMove(alternatives });

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:134
&gt; +    _delegateCallback(WebCore::SpeechRecognitionUpdate::createResult(_identifier, datas));

Might need a WTFMove here.

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:215
&gt; +    auto update = WebCore::SpeechRecognitionUpdate::createError(_identifier, error);

WTFMove()

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:253
&gt; +    if (successfully) {

We usually do if (!successfully)

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:258
&gt; +    auto error = WebCore::SpeechRecognitionError { WebCore::SpeechRecognitionErrorType::Aborted, task.error.localizedDescription};

s/}/ }/

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:259
&gt; +    _delegateCallback(WebCore::SpeechRecognitionUpdate::createError(_identifier, error));

WTFMove

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTaskMock.mm:50
&gt; +    }

Do we not want to also exercise the WebCore::SpeechRecognitionUpdate::createResult code path?
Can we do something like adding a timer that will output some bip bop words regularly or as a one shot?

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:48
&gt; +    , m_checkIfMockCaptureDevicesEnabled(WTFMove(checkIfEnabled))

I would rename it to checkIfMockSpeechEnabled.

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:107
&gt; +            m_recognizer-&gt;reset();

Are we using reset elsewhere?
If not, can we implement reset so that it does not send any update?
That way, we could remove m_isResetting.

&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:116
&gt; +        m_recognizer-&gt;reset();

If we call reset, isn&apos;t there a chance that we will call its callback above that will send update message while it should not?
reset is no longer explicitly sending a message, so maybe we no longer need m_isResetting.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1729
&gt; +        return !weakPage || weakPage-&gt;preferences().mockCaptureDevicesEnabled();

In theory it should be return weakPage &amp;&amp; weakPage-&gt;preferences().mockCaptureDevicesEnabled();
I would name it checkIfMockSpeechDevicesEnabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713987</commentid>
    <comment_count>20</comment_count>
      <attachid>416017</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-11 11:26:40 -0800</bug_when>
    <thetext>Created attachment 416017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714021</commentid>
    <comment_count>21</comment_count>
      <attachid>416028</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-11 12:07:16 -0800</bug_when>
    <thetext>Created attachment 416028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714029</commentid>
    <comment_count>22</comment_count>
      <attachid>415936</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-11 12:11:19 -0800</bug_when>
    <thetext>Comment on attachment 415936
Patch

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

&gt;&gt; Source/WebCore/Modules/speech/cocoa/SpeechRecognizerCocoa.mm:70
&gt;&gt; +void SpeechRecognizer::resetRecognition()
&gt; 
&gt; Should we merge abort and reset methods?
&gt; If we abort, do we want m_task to not stay null?

abort() means abort task, but still listen to async update (error or end), and wait for task to complete naturally.
reset() means abort task, and not listen to any async update by setting task null.
This is a bit confusing and may be simplified..

&gt;&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:119
&gt;&gt; +    Vector&lt;WebCore::SpeechRecognitionResultData&gt; datas;
&gt; 
&gt; No need for WebCore:: prefix in this file

Added &quot;using namespace WebCore&quot;.

&gt;&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTaskMock.mm:50
&gt;&gt; +    }
&gt; 
&gt; Do we not want to also exercise the WebCore::SpeechRecognitionUpdate::createResult code path?
&gt; Can we do something like adding a timer that will output some bip bop words regularly or as a one shot?

Added one fake final result for each received buffer.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:107
&gt;&gt; +            m_recognizer-&gt;reset();
&gt; 
&gt; Are we using reset elsewhere?
&gt; If not, can we implement reset so that it does not send any update?
&gt; That way, we could remove m_isResetting.

reset() is called after an error/end update from recognizer delegate callback (from audio capture/recognition), or error update from server starting another request.

&gt;&gt; Source/WebKit/UIProcess/SpeechRecognitionServer.cpp:116
&gt;&gt; +        m_recognizer-&gt;reset();
&gt; 
&gt; If we call reset, isn&apos;t there a chance that we will call its callback above that will send update message while it should not?
&gt; reset is no longer explicitly sending a message, so maybe we no longer need m_isResetting.

Yes; basically reset() means not waiting for async update but allow sending sync update message.
So this event ordering is possible for some recognition: Error -&gt; AudioEnd -&gt; SpeechEnd -&gt; End*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714390</commentid>
    <comment_count>23</comment_count>
      <attachid>416028</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-14 01:09:42 -0800</bug_when>
    <thetext>Comment on attachment 416028
Patch

LGTM.
As a side question, do we have enough existing tests for abort and stop cases?

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

&gt; Source/WebCore/Modules/speech/cocoa/SpeechRecognizerCocoa.mm:48
&gt; +    m_task = adoptNS([[taskClass alloc] initWithIdentifier:identifier locale:localeIdentifier doMultipleRecognitions:continuous reportInterimResults:interimResults maxAlternatives:alternatives delegateCallback:[this, weakThis = makeWeakPtr(this)](const SpeechRecognitionUpdate&amp; update) {

auto&amp; update

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:38
&gt; +static constexpr size_t maximumRecognitionDuration = 60 * 60;

We should probably think about our strategy for a page that is doing speech recognition and goes into the background on iOS.
It seems to me it might be best to mute the audio capture or maybe stop the recognition.

There is also the case of a page that is doing recognition and another page starts audio capture.
Except on iPadOS, the above strategy would also handle this case.

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:85
&gt; +    _maxAlternatives = alternatives;

Can be done as a one liner:
_maxAlternatives = alternatives ? alternatives : 1

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:136
&gt; +    _delegateCallback(SpeechRecognitionUpdate::createResult(_identifier, datas));

WTFMove(data)

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:214
&gt; +        return;

Can be added with above if

&gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTaskMock.mm:64
&gt; +    _delegateCallback(SpeechRecognitionUpdate::createResult(_identifier, datas));

WTFMove()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714455</commentid>
    <comment_count>24</comment_count>
      <attachid>416163</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-14 08:46:23 -0800</bug_when>
    <thetext>Created attachment 416163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714461</commentid>
    <comment_count>25</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-12-14 09:30:00 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #23)
&gt; Comment on attachment 416028 [details]
&gt; Patch
&gt; 
&gt; LGTM.
&gt; As a side question, do we have enough existing tests for abort and stop
&gt; cases?

Added another test for restarting the same recognition after stop.
The two added tests should be the most basic cases for stop().
abort() is nothing different from stop() with our current test setup. We can probably make WebSpeechRecognizerTaskMock behave more like SFSpeechRecognizer, e.g. calling callback asynchronously.

&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=416028&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/speech/cocoa/SpeechRecognizerCocoa.mm:48
&gt; &gt; +    m_task = adoptNS([[taskClass alloc] initWithIdentifier:identifier locale:localeIdentifier doMultipleRecognitions:continuous reportInterimResults:interimResults maxAlternatives:alternatives delegateCallback:[this, weakThis = makeWeakPtr(this)](const SpeechRecognitionUpdate&amp; update) {
&gt; 
&gt; auto&amp; update
&gt; 
&gt; &gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:38
&gt; &gt; +static constexpr size_t maximumRecognitionDuration = 60 * 60;
&gt; 
&gt; We should probably think about our strategy for a page that is doing speech
&gt; recognition and goes into the background on iOS.
&gt; It seems to me it might be best to mute the audio capture or maybe stop the
&gt; recognition.
&gt; 
&gt; There is also the case of a page that is doing recognition and another page
&gt; starts audio capture.
&gt; Except on iPadOS, the above strategy would also handle this case.

ah good point. We should abort recognition when page becomes invisible (process is backgrounded) or audio capture will be started in a different web page (or in a different process as it seems CoreAudioCaptureSource::startProducingData() can set active source and mute inactive ones in the same process).

&gt; 
&gt; &gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:85
&gt; &gt; +    _maxAlternatives = alternatives;
&gt; 
&gt; Can be done as a one liner:
&gt; _maxAlternatives = alternatives ? alternatives : 1
&gt; 
&gt; &gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:136
&gt; &gt; +    _delegateCallback(SpeechRecognitionUpdate::createResult(_identifier, datas));
&gt; 
&gt; WTFMove(data)
&gt; 
&gt; &gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTask.mm:214
&gt; &gt; +        return;
&gt; 
&gt; Can be added with above if
&gt; 
&gt; &gt; Source/WebCore/Modules/speech/cocoa/WebSpeechRecognizerTaskMock.mm:64
&gt; &gt; +    _delegateCallback(SpeechRecognitionUpdate::createResult(_identifier, datas));
&gt; 
&gt; WTFMove()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714467</commentid>
    <comment_count>26</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-14 09:48:12 -0800</bug_when>
    <thetext>Committed r270772: &lt;https://trac.webkit.org/changeset/270772&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416163.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415566</attachid>
            <date>2020-12-07 11:09:43 -0800</date>
            <delta_ts>2020-12-07 14:19:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201207110942.patch</filename>
            <type>text/plain</type>
            <size>29349</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlYmRkNjNmYjkxNzM2
MTE4MDVlOWY1NDI4Zjk0YmExMWJiMWNlNy4uYmQwZTkxM2Q0MDVjMTVkNzhmY2U0ZDhmNGEyNmZl
M2E3MDExZDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTEyLTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYW51
YWxseSB0ZXN0ZWQgaW4gTWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9X
ZWJDb3JlLnhjY29uZmlnOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyOjphYm9ydElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OnN0YXJ0Q2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpz
dG9wQ2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydElu
dGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0
b3BJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2Nv
YS5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGluaXRXaXRo
SWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBvcnRJbnRlcmltUmVz
dWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2sgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmluYWw6XSk6CisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZTpdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToKKyAgICAgICAgKC1b
V2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNv
Z25pemVyVGFzayBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2sgc3BlZWNoUmVjb2duaXplcjphdmFpbGFiaWxpdHlEaWRDaGFu
Z2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29nbml0
aW9uRGlkRGV0ZWN0U3BlZWNoOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFz
ayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkSHlwb3RoZXNpemVUcmFuc2NyaXB0aW9uOl0pOgor
ICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6
ZGlkRmluaXNoUmVjb2duaXRpb246XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrIHNwZWVjaFJlY29nbml0aW9uVGFza0ZpbmlzaGVkUmVhZGluZ0F1ZGlvOl0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2tXYXNDYW5j
ZWxsZWQ6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29n
bml0aW9uVGFzazpkaWRGaW5pc2hTdWNjZXNzZnVsbHk6XSk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXplcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAyMC0xMi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNp
bXBsaWZ5IGF1ZGlvIHJlc2FtcGxpbmcgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxOTU2ZDFlZDM5ZWZjOWQy
YmExZjU3ZWMyZTBmOWIxZGYyNDJiNjczLi5iNzQxOWRmYmI3NTU2ZjBlNGE0ZTAzYzRhM2M4YjJh
ZGU4NjgwNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTEyLTA3ICBTaWh1aSBM
aXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25pemVy
IGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2NT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpyZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmg6CisKIDIwMjAtMTItMDQg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9j
ZXNzXSBSZW1vdmUgQ29uY3JldGVTaGFyZWFibGVJbWFnZUJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZyBiL1NvdXJjZS9XZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKaW5kZXggZGI0NTc3YmIzMjIwYWMy
MTRmOTkwNWRiODMzYmRmY2M2NTlmYTY5Mi4uYTRkY2JhN2I4ZjEwMWY1NTU0YmFjOTkyMWQ3YmFl
MDhjNDMyNjUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2Vi
Q29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3Jl
LnhjY29uZmlnCkBAIC0xMjEsOCArMTIxLDE0IEBAIFdLX0NPUkVfSU1BR0VfTERGTEFHUyA9IC1m
cmFtZXdvcmsgQ29yZUltYWdlOwogV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHUyA9ICQoV0tfVVJM
X0ZPUk1BVFRJTkdfTERGTEFHU18kKFdLX0hBVkVfVVJMX0ZPUk1BVFRJTkcpKTsKIFdLX1VSTF9G
T1JNQVRUSU5HX0xERkxBR1NfWUVTID0gLWZyYW1ld29yayBVUkxGb3JtYXR0aW5nOwogCitXS19T
UEVFQ0hfTERGTEFHUyA9ICQoV0tfU1BFRUNIX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7
CitXS19TUEVFQ0hfTERGTEFHU19tYWNvc3ggPSAtZnJhbWV3b3JrIFNwZWVjaDsKK1dLX1NQRUVD
SF9MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1ld29yayBTcGVlY2g7CitXS19TUEVFQ0hfTERGTEFH
U19pcGhvbmVzaW11bGF0b3IgPSAtZnJhbWV3b3JrIFNwZWVjaDsKK1dLX1NQRUVDSF9MREZMQUdT
X21hY2NhdGFseXN0ID0gLWZyYW1ld29yayBTcGVlY2g7CisKIC8vIEZJWE1FOiBSZWR1Y2UgdGhl
IG51bWJlciBvZiBhbGxvd2FibGVfY2xpZW50cyA8cmRhcjovL3Byb2JsZW0vMzE4MjM5Njk+Ci1P
VEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpICQoV0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLX0xE
RkxBR1MpIC1sc3FsaXRlMyAtbG9iamMgLWxBTkdMRSAtYWxsb3dhYmxlX2NsaWVudCBXZWJDb3Jl
VGVzdFN1cHBvcnQgLWFsbG93YWJsZV9jbGllbnQgV2ViS2l0TGVnYWN5IC1mb3JjZV9sb2FkICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9saWJQQUwuYSAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3
b3JrIENvcmVBdWRpbyAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVUZXh0
IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3b3JrIElt
YWdlSU8gLWZyYW1ld29yayBNZXRhbCAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NP
QV9UT1VDSCkpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX1BMQVRGT1JNX05BTUUpKSAk
KFdLX0FQUEtJVF9MREZMQUdTKSAkKFdLX0FQUFNVUFBPUlRfTERGTEFHUykgJChXS19BVURJT19V
TklUX0xERkxBR1MpICQoV0tfQ0FSQk9OX0xERkxBR1MpICQoV0tfQ09SRV9VSV9MREZMQUdTKSAk
KFdLX0RBVEFfREVURUNUT1JTX0NPUkVfTERGTEFHUykgJChXS19HUkFQSElDU19TRVJWSUNFU19M
REZMQUdTKSAkKFdLX0lPU1VSRkFDRV9BQ0NFTEVSQVRPUl9MREZMQUdTKSAkKFdLX0xJQldFQlJU
Q19MREZMQUdTKSAkKFdLX01PQklMRV9DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfTU9CSUxF
X0dFU1RBTFRfTERGTEFHUykgJChXS19ORVRXT1JLX0VYVEVOU0lPTl9MRF9GTEFHUykgJChXS19T
WVNURU1fQ09ORklHVVJBVElPTl9MREZMQUdTKSAkKFdLX0NPUkVfSU1BR0VfTERGTEFHUykgJChX
S19VUkxfRk9STUFUVElOR19MREZMQUdTKTsKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkg
JChXS19SRUxPQ0FUQUJMRV9GUkFNRVdPUktfTERGTEFHUykgLWxzcWxpdGUzIC1sb2JqYyAtbEFO
R0xFIC1hbGxvd2FibGVfY2xpZW50IFdlYkNvcmVUZXN0U3VwcG9ydCAtYWxsb3dhYmxlX2NsaWVu
dCBXZWJLaXRMZWdhY3kgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlBBTC5h
IC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29y
ZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29yZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFt
ZXdvcmsgSU9TdXJmYWNlIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJhbWV3b3JrIE1ldGFsICQoT1RI
RVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSkgJChPVEhFUl9MREZMQUdTX1BM
QVRGT1JNXyQoV0tfUExBVEZPUk1fTkFNRSkpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVBQ
U1VQUE9SVF9MREZMQUdTKSAkKFdLX0FVRElPX1VOSVRfTERGTEFHUykgJChXS19DQVJCT05fTERG
TEFHUykgJChXS19DT1JFX1VJX0xERkxBR1MpICQoV0tfREFUQV9ERVRFQ1RPUlNfQ09SRV9MREZM
QUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfSU9TVVJGQUNFX0FDQ0VM
RVJBVE9SX0xERkxBR1MpICQoV0tfTElCV0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVf
U0VSVklDRVNfTERGTEFHUykgJChXS19NT0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX05FVFdP
UktfRVhURU5TSU9OX0xEX0ZMQUdTKSAkKFdLX1NZU1RFTV9DT05GSUdVUkFUSU9OX0xERkxBR1Mp
ICQoV0tfQ09SRV9JTUFHRV9MREZMQUdTKSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MpICQo
V0tfU1BFRUNIX0xERkxBR1MpOwogCiBPVEhFUl9MREZMQUdTX1BMQVRGT1JNX2NvY29hdG91Y2gg
PSAtYWxsb3dhYmxlX2NsaWVudCBXZWJLaXQgLWFsbG93YWJsZV9jbGllbnQgaVR1bmVzVSAtYWxs
b3dhYmxlX2NsaWVudCBDYXNhYmxhbmNhIC1hbGxvd2FibGVfY2xpZW50IFJlbW90ZSAtYWxsb3dh
YmxlX2NsaWVudCBUVkJvb2tzIC1hbGxvd2FibGVfY2xpZW50IER1bXBSZW5kZXJUcmVlIC1hbGxv
d2FibGVfY2xpZW50IFdlYktpdFRlc3RSdW5uZXIgLWFsbG93YWJsZV9jbGllbnQgVGVzdFdlYktp
dEFQSTsKIE9USEVSX0xERkxBR1NfUExBVEZPUk1fbWFjb3N4ID0gLXN1Yl9saWJyYXJ5IGxpYm9i
amMgLXVtYnJlbGxhIFdlYktpdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXplci5jcHAKaW5kZXggNWJlYjYwNTY0N2IzMjllMjY0ZjgzYzI0OWY1
N2MyYTIwODFjMmZkNy4uOWIxMGMwNmZmYTljZGMyNGFhZDQxZjU1Y2I1MzA5OWVlYjliZTA5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXpl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXpl
ci5jcHAKQEAgLTQwLDM3ICs0MCw3NyBAQCBTcGVlY2hSZWNvZ25pemVyOjpTcGVlY2hSZWNvZ25p
emVyKERlbGVnYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKIH0KIAotdm9pZCBTcGVlY2hSZWNv
Z25pemVyOjpyZXNldCgpCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMs
IHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcykKK3sKKyAgICBhYm9ydElmTmVlZGVkKCk7CisKKyAg
ICBtX2NsaWVudElkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIG1fZGVsZWdhdGVDYWxsYmFj
ayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3RhcnQpKTsKKworI2lmIEhBVkUoU1BFRUNIUkVD
T0dOSVpFUikKKyAgICBzdGFydFJlY29nbml0aW9uKGlkZW50aWZpZXIsIGxvY2FsZUlkZW50aWZp
ZXIsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0obG9jYWxlSWRlbnRpZmllcik7CisgICAgVU5VU0VEX1BBUkFNKGNv
bnRpbnVvdXMpOworICAgIFVOVVNFRF9QQVJBTShpbnRlcmltUmVzdWx0cyk7CisgICAgVU5VU0VE
X1BBUkFNKG1heEFsdGVybmF0aXZlcyk7CisjZW5kaWYKKworICAgIHN0YXJ0Q2FwdHVyZSgpOwor
fQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3Vs
dCBzaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0KQogewogICAgIGlmICghbV9jbGllbnRJZGVudGlm
aWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291
cmNlID0gbnVsbHB0cjsKKyAgICBzdG9wQ2FwdHVyZSgpOwogCi0gICAgYXV0byBlcnJvciA9IFNw
ZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRl
ZCwgIkFub3RoZXIgcmVxdWVzdCBpcyBzdGFydGVkIiB9OwotICAgIG1fZGVsZWdhdGVDYWxsYmFj
ayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoKm1fY2xpZW50SWRlbnRpZmll
ciwgZXJyb3IpKTsKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAgaWYgKHNob3VsZEdl
bmVyYXRlRmluYWxSZXN1bHQgPT0gU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6WWVzKQorICAg
ICAgICBzdG9wUmVjb2duaXRpb24oKTsKKyAgICBlbHNlCisgICAgICAgIGFib3J0UmVjb2duaXRp
b24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQp
OworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
KCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7
CisgICAgcmVzZXQoKTsKKyNlbmRpZgogfQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikK
K3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXQoKQogewotICAgIHJlc2V0KCk7CisgICAgbV9j
bGllbnRJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworICAgIHN0b3BDYXB0dXJlKCk7CisjaWYg
SEFWRShTUEVFQ0hSRUNPR05JWkVSKQorICAgIHJlc2V0UmVjb2duaXRpb24oKTsKKyNlbmRpZgor
fQogCi0gICAgbV9jbGllbnRJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKLSAgICBtX2RlbGVnYXRl
Q2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlm
aWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlN0YXJ0KSk7Cit2b2lkIFNwZWVjaFJl
Y29nbml6ZXI6OmFib3J0SWZOZWVkZWQoKQoreworICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm47CiAKLSAgICBzdGFydEludGVybmFsKCk7CisgICAgYXV0byBlcnJv
ciA9IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6
QWJvcnRlZCwgIkFub3RoZXIgcmVxdWVzdCBpcyBzdGFydGVkIiB9OworICAgIG1fZGVsZWdhdGVD
YWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoKm1fY2xpZW50SWRl
bnRpZmllciwgZXJyb3IpKTsKKworICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2du
aXplcjo6c3RhcnRJbnRlcm5hbCgpCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0Q2FwdHVy
ZSgpCiB7CisgICAgLy8gTWF5IGhhdmUgZmFpbGVkIHdoZW4gc3RhcnQgcmVjb2duaXRpb24uCisg
ICAgaWYgKCFtX2NsaWVudElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8g
ZGF0YUNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8m
IHRpbWUsIGNvbnN0IGF1dG8mIGRhdGEsIGNvbnN0IGF1dG8mIGRlc2NyaXB0aW9uLCBhdXRvIHNh
bXBsZUNvdW50KSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiAgICAg
ICAgIGF1dG8gYnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIoZGF0YSwgZGVzY3JpcHRp
b24sIFBBTDo6dG9DTVRpbWUodGltZSksIHNhbXBsZUNvdW50KTsKLSAgICAgICAgVU5VU0VEX1BB
UkFNKGJ1ZmZlcik7CisgICAgICAgIHdlYWtUaGlzLT5hdWRpb1NhbXBsZXNBdmFpbGFibGUoYnVm
ZmVyKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh0aW1lKTsKICAgICAgICAgVU5VU0VE
X1BBUkFNKGRhdGEpOwpAQCAtODQsMzMgKzEyNCwxNiBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6
OnN0YXJ0SW50ZXJuYWwoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEFTU0VSVCht
X2NsaWVudElkZW50aWZpZXIgJiYgbV9jbGllbnRJZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRl
LmNsaWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUp
OwotCiAgICAgICAgIGlmICh1cGRhdGUudHlwZSgpID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RXJyb3IpCi0gICAgICAgICAgICBtX3NvdXJjZSA9IG51bGxwdHI7CisgICAgICAgICAg
ICByZXNldCgpOworCisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwogICAgIH07
CiAKICAgICBtX3NvdXJjZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291
cmNlPigqbV9jbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGFDYWxsYmFjayksIFdURk1vdmUo
c3RhdGVVcGRhdGVDYWxsYmFjaykpOwogfQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3Ao
U2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCBzaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0KQotewot
ICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9w
SW50ZXJuYWwoKTsKLQotICAgIGlmIChzaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0ID09IFNob3Vs
ZEdlbmVyYXRlRmluYWxSZXN1bHQ6OlllcykgewotICAgICAgICAvLyBUT0RPOiBnZW5lcmF0ZSBy
ZWFsIHJlc3VsdCB3aGVuIHNwZWVjaCByZWNvZ25pdGlvbiBiYWNrZW5kIGlzIGltcGxlbWVudGVk
LgotICAgICAgICBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiByZXN1bHREYXRh
czsKLSAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGVSZXN1bHQoKm1fY2xpZW50SWRlbnRpZmllciwgcmVzdWx0RGF0YXMpKTsKLSAgICB9Ci0K
LSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgq
bV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwot
ICAgIG1fY2xpZW50SWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKLX0KLQotdm9pZCBTcGVlY2hS
ZWNvZ25pemVyOjpzdG9wSW50ZXJuYWwoKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wQ2Fw
dHVyZSgpCiB7CiAgICAgaWYgKCFtX3NvdXJjZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCmluZGV4IGU2ZjEz
ZmVlODRhNTMzYWYwZjA0ZTA3NjljMWFlMDk1YmU1YmZmM2YuLmQ4NGFmNTZkMzYyMzBkMGUxZDFj
YjRlMTczZGYxMGVhOTMyMDgyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKQEAgLTI4LDYgKzI4LDExIEBACiAjaW5jbHVkZSAiU3Bl
ZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCisjaWYgSEFWRShTUEVFQ0hSRUNPR05J
WkVSKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK09CSkNfQ0xBU1MgV2ViU3BlZWNoUmVj
b2duaXplclRhc2s7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTsKQEAgLTM5LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+U3BlZWNoUmVjb2duaXplcigpID0gZGVmYXVsdDsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydChTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlk
ZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3Qg
bWF4QWx0ZXJuYXRpdmVzKTsKICAgICBlbnVtIGNsYXNzIFNob3VsZEdlbmVyYXRlRmluYWxSZXN1
bHQgeyBObywgWWVzIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wKFNob3VsZEdlbmVy
YXRlRmluYWxSZXN1bHQgPSBTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0OjpZZXMpOwogCkBAIC00
NywxMiArNTIsMjUgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgcmVzZXQoKTsKLSAg
ICB2b2lkIHN0YXJ0SW50ZXJuYWwoKTsKLSAgICB2b2lkIHN0b3BJbnRlcm5hbCgpOworICAgIHZv
aWQgYWJvcnRJZk5lZWRlZCgpOworICAgIHZvaWQgc3RhcnRDYXB0dXJlKCk7CisgICAgdm9pZCBz
dG9wQ2FwdHVyZSgpOworCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorICAgIHZvaWQgc3Rh
cnRSZWNvZ25pdGlvbihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBp
bnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKTsKKyAgICB2b2lkIHN0b3BS
ZWNvZ25pdGlvbigpOworICAgIHZvaWQgYWJvcnRSZWNvZ25pdGlvbigpOworICAgIHZvaWQgcmVz
ZXRSZWNvZ25pdGlvbigpOworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKFJldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4pOworI2VuZGlmCiAKICAgICBPcHRpb25hbDxTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBtX2NsaWVudElkZW50aWZpZXI7CiAg
ICAgRGVsZWdhdGVDYWxsYmFjayBtX2RlbGVnYXRlQ2FsbGJhY2s7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZT4gbV9zb3VyY2U7CisKKyNpZiBIQVZF
KFNQRUVDSFJFQ09HTklaRVIpCisgICAgUmV0YWluUHRyPFdlYlNwZWVjaFJlY29nbml6ZXJUYXNr
PiBtX3Rhc2s7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MGZkODFmMDBkMjk1Mjg1NWVjYmI1OGE4ZTRmMGQ2NWU1Y2FkMzYwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplckNvY29hLm1tCkBAIC0wLDAgKzEsMjg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pemVyLmgiCisKKyNpZiBIQVZFKFNQRUVD
SFJFQ09HTklaRVIpCisKKyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCisjaW1w
b3J0IDxTcGVlY2gvU0ZTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RfUHJpdmF0ZS5oPgorI2ltcG9y
dCA8U3BlZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3
dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCitOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrIDogTlNP
YmplY3Q8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tEZWxlZ2F0ZSwgU0ZTcGVlY2hSZWNvZ25pemVy
RGVsZWdhdGU+IHsKK0Bwcml2YXRlCisgICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBfaWRlbnRpZmllcjsKKyAgICBib29sIF9kb011bHRpcGxl
UmVjb2duaXRpb25zOworICAgIHVpbnQ2NF90IF9tYXhBbHRlcm5hdGl2ZXM7CisgICAgQmxvY2tQ
dHI8dm9pZChjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpPiBfZGVsZWdh
dGVDYWxsYmFjazsKKyAgICBSZXRhaW5QdHI8U0ZTcGVlY2hSZWNvZ25pemVyPiBfcmVjb2duaXpl
cjsKKyAgICBSZXRhaW5QdHI8U0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVzdD4g
X3JlcXVlc3Q7CisgICAgV2Vha09iakNQdHI8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2s+IF90YXNr
OworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hTdGFydDsKKyAgICBib29sIF9oYXNTZW50U3BlZWNo
RW5kOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9j
YWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOihC
T09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMg
bWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxi
YWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikpY2Fs
bGJhY2s7CistICh2b2lkKWNhbGxiYWNrV2l0aFJlc3VsdDooU0ZUcmFuc2NyaXB0aW9uICopdHJh
bnNjcmlwdGlvbiBpc0ZpbmFsOihCT09MKWlzRmluYWw7CistICh2b2lkKWF1ZGlvU2FtcGxlc0F2
YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyOworLSAodm9pZClhYm9ydDsK
Ky0gKHZvaWQpc3RvcDsKKy0gKHZvaWQpc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWQ7CistICh2b2lk
KXNlbmRTcGVlY2hFbmRJZk5lZWRlZDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2sKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjoo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVu
dGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29n
bml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVy
aW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVs
ZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBfaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgX2Rl
bGVnYXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKworICAgIGlmICghW2xvY2FsZUlkZW50aWZpZXIg
bGVuZ3RoXSkKKyAgICAgICAgX3JlY29nbml6ZXIgPSBhZG9wdE5TKFtbU0ZTcGVlY2hSZWNvZ25p
emVyIGFsbG9jXSBpbml0XSk7CisgICAgZWxzZQorICAgICAgICBfcmVjb2duaXplciA9IGFkb3B0
TlMoW1tTRlNwZWVjaFJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoTG9jYWxlOltOU0xvY2FsZSBs
b2NhbGVXaXRoTG9jYWxlSWRlbnRpZmllcjpsb2NhbGVJZGVudGlmaWVyXV0pOworICAgIGlmICgh
X3JlY29nbml6ZXIpIHsKKyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6U2Vydmlj
ZU5vdEFsbG93ZWQsIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBjcmVhdGUgcmVjZ29uaXplciB3aXRo
IGxvY2FsZSAnIiwgU3RyaW5nKGxvY2FsZUlkZW50aWZpZXIpLCAiJyIpIH07CisgICAgICAgIGF1
dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9y
KF9pZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgICAgICAKKyAgICBbX3JlY29nbml6ZXIg
c2V0RGVsZWdhdGU6c2VsZl07CisgICAgaWYgKCFbX3JlY29nbml6ZXIuZ2V0KCkgaXNBdmFpbGFi
bGVdKSB7CisgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxv
d2VkLCAiU3BlZWNoIHJlY29nbml6ZXIgaXMgbm90IGF2YWlsYWJsZSIgfTsKKyAgICAgICAgYXV0
byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3Io
X2lkZW50aWZpZXIsIGVycm9yKTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBfZG9NdWx0aXBsZVJlY29nbml0aW9u
cyA9IGNvbnRpbnVvdXM7CisKKyAgICBpZiAoIWFsdGVybmF0aXZlcykKKyAgICAgICAgYWx0ZXJu
YXRpdmVzID0gMTsKKyAgICBfbWF4QWx0ZXJuYXRpdmVzID0gYWx0ZXJuYXRpdmVzOworCisgICAg
X3JlcXVlc3QgPSBhZG9wdE5TKFtbU0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVz
dCBhbGxvY10gaW5pdF0pOworICAgIGlmIChbX3JlY29nbml6ZXIgc3VwcG9ydHNPbkRldmljZVJl
Y29nbml0aW9uXSkKKyAgICAgICAgW19yZXF1ZXN0IHNldFJlcXVpcmVzT25EZXZpY2VSZWNvZ25p
dGlvbjpZRVNdOworICAgIFtfcmVxdWVzdCBzZXRTaG91bGRSZXBvcnRQYXJ0aWFsUmVzdWx0czpp
bnRlcmltUmVzdWx0c107CisgICAgW19yZXF1ZXN0IHNldFRhc2tIaW50OlNGU3BlZWNoUmVjb2du
aXRpb25UYXNrSGludERpY3RhdGlvbl07CisgICAgW19yZXF1ZXN0IHNldERldGVjdE11bHRpcGxl
VXR0ZXJhbmNlczpTRlNwZWVjaFJlY29nbml0aW9uVGFza0hpbnREaWN0YXRpb25dOworICAgIC8v
IFtfcmVxdWVzdCBfc2V0TWF4aW11bVJlY29nbml0aW9uRHVyYXRpb246NjAgKiA2MCAqIDJdOwor
ICAgIF90YXNrID0gW19yZWNvZ25pemVyLmdldCgpIHJlY29nbml0aW9uVGFza1dpdGhSZXF1ZXN0
Ol9yZXF1ZXN0LmdldCgpIGRlbGVnYXRlOnNlbGZdOworICAgIHJldHVybiBzZWxmOworfQorCist
ICh2b2lkKWNhbGxiYWNrV2l0aFJlc3VsdDooU0ZUcmFuc2NyaXB0aW9uICopdHJhbnNjcmlwdGlv
biBpc0ZpbmFsOihCT09MKWlzRmluYWwKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXN1bHREYXRhPiBkYXRhczsKKyAgICBhdXRvIHNlZ21lbnRzID0gW3RyYW5zY3Jp
cHRpb24gc2VnbWVudHNdOworICAgIGZvciAoU0ZUcmFuc2NyaXB0aW9uU2VnbWVudCogc2VnbWVu
dCBpbiBzZWdtZW50cykgeworICAgICAgICAvLyBTZWdtZW50IGNvbmZpZGVuY2UgaXMgcmVwb3J0
ZWQgMCB3aGVuIHJlc3VsdCBpcyBub3QgZmluYWwuCisgICAgICAgIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVzdWx0RGF0YSBkYXRhOworICAgICAgICBkYXRhLmlzRmluYWwgPSBpc0ZpbmFs
OworICAgICAgICBkYXRhLmFsdGVybmF0aXZlcy5hcHBlbmQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25BbHRlcm5hdGl2ZURhdGEgeyBbW3NlZ21lbnQgc3Vic3RyaW5nXSBVVEY4U3RyaW5nXSwg
W3NlZ21lbnQgY29uZmlkZW5jZV0gfSk7CisgICAgICAgIGZvciAoTlNTdHJpbmcqIHNlZ21lbnRB
bHRlcm5hdGl2ZSA6IFtzZWdtZW50IGFsdGVybmF0aXZlU3Vic3RyaW5nc10pIHsKKyAgICAgICAg
ICAgIGlmIChkYXRhLmFsdGVybmF0aXZlcy5zaXplKCkgPT0gX21heEFsdGVybmF0aXZlcykKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIFNldCBjb25maWRlbmNlIDAgc2lu
Y2UgaXQgaXMgdW5rbm93bi4KKyAgICAgICAgICAgIGRhdGEuYWx0ZXJuYXRpdmVzLmFwcGVuZChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YSB7IFtzZWdtZW50QWx0ZXJu
YXRpdmUgVVRGOFN0cmluZ10sIDAuMCB9KTsKKyAgICAgICAgfQorICAgICAgICBkYXRhcy5hcHBl
bmQoV1RGTW92ZShkYXRhKSk7CisgICAgfQorICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVSZXN1bHQoX2lkZW50aWZpZXIsIGRhdGFz
KSk7Cit9CisKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJl
ZilzYW1wbGVCdWZmZXIKK3sKKyAgICBbX3JlcXVlc3QgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXI6
c2FtcGxlQnVmZmVyXTsKK30KKworLSAodm9pZClhYm9ydAoreworICAgIGlmICghX3Rhc2sgfHwg
W190YXNrIHN0YXRlXSA9PSBTRlNwZWVjaFJlY29nbml0aW9uVGFza1N0YXRlQ29tcGxldGVkIHx8
IFtfdGFzayBzdGF0ZV0gPT0gU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tTdGF0ZUNhbmNlbGluZykK
KyAgICAgICAgcmV0dXJuOworCisgICAgW3NlbGYgc2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAg
ICBbX3JlcXVlc3QgZW5kQXVkaW9dOworCisgICAgW190YXNrIGNhbmNlbF07Cit9CisKKy0gKHZv
aWQpc3RvcAoreworICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgW19yZXF1
ZXN0IGVuZEF1ZGlvXTsKKworICAgIGlmICghIV90YXNrKQorICAgICAgICBbX3Rhc2sgZmluaXNo
XTsKK30KKworLSAodm9pZClzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZAoreworICAgIGlmIChfaGFz
U2VudFNwZWVjaFN0YXJ0KQorICAgICAgICByZXR1cm47CisKKyAgICBfaGFzU2VudFNwZWVjaFN0
YXJ0ID0gdHJ1ZTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OlNwZWVjaFN0YXJ0KSk7Cit9CisKKy0gKHZvaWQpc2VuZFNwZWVjaEVuZElm
TmVlZGVkCit7CisgICAgaWYgKCFfaGFzU2VudFNwZWVjaFN0YXJ0IHx8IF9oYXNTZW50U3BlZWNo
RW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBfaGFzU2VudFNwZWVjaEVuZCA9IHRydWU7Cisg
ICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNy
ZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpT
cGVlY2hFbmQpKTsKK30KKworI3ByYWdtYSBtYXJrIFNGU3BlZWNoUmVjb2duaXplckRlbGVnYXRl
CisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXplcjooU0ZTcGVlY2hSZWNvZ25pemVyICopc3BlZWNo
UmVjb2duaXplciBhdmFpbGFiaWxpdHlEaWRDaGFuZ2U6KEJPT0wpYXZhaWxhYmxlCit7CisgICAg
aWYgKGF2YWlsYWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFfdGFzaykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
RXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6U2VydmljZU5vdEFs
bG93ZWQsICJTcGVlY2ggcmVjb2duaXRpb24gc2VydmljZSBiZWNvbWVzIHVuYXZhaWxhYmxlIiB9
OworICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNy
ZWF0ZUVycm9yKF9pZGVudGlmaWVyLCBlcnJvcik7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sodXBk
YXRlKTsKK30KKworI3ByYWdtYSBtYXJrIFNGU3BlZWNoUmVjb2duaXRpb25UYXNrRGVsZWdhdGUK
KworLSAodm9pZClzcGVlY2hSZWNvZ25pdGlvbkRpZERldGVjdFNwZWVjaDooU0ZTcGVlY2hSZWNv
Z25pdGlvblRhc2sgKil0YXNrCit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNhbGxlZC4K
KyAgICBbc2VsZiBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF07Cit9CisKKy8vIGludGVyaW0gcmVz
dWx0cyBvZiBzb21lIHV0dGVyYW5jZQorLSAodm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2s6KFNG
U3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzayBkaWRIeXBvdGhlc2l6ZVRyYW5zY3JpcHRpb246
KFNGVHJhbnNjcmlwdGlvbiAqKXRyYW5zY3JpcHRpb24KK3sKKyAgICBbc2VsZiBzZW5kU3BlZWNo
U3RhcnRJZk5lZWRlZF07CisgICAgW3NlbGYgY2FsbGJhY2tXaXRoUmVzdWx0OnRyYW5zY3JpcHRp
b24gaXNGaW5hbDpOT107Cit9CisKKy8vIGZpbmFsIHJlc3VsdHMgb2Ygc29tZSB1dHRlcmFuY2UK
Ky0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrOihTRlNwZWVjaFJlY29nbml0aW9uVGFzayAq
KXRhc2sgZGlkRmluaXNoUmVjb2duaXRpb246KFNGU3BlZWNoUmVjb2duaXRpb25SZXN1bHQgKily
ZWNvZ25pdGlvblJlc3VsdAoreworICAgIFtzZWxmIGNhbGxiYWNrV2l0aFJlc3VsdDpyZWNvZ25p
dGlvblJlc3VsdC5iZXN0VHJhbnNjcmlwdGlvbiBpc0ZpbmFsOllFU107CisgICAgaWYgKCFfZG9N
dWx0aXBsZVJlY29nbml0aW9ucykgeworICAgICAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVk
ZWRdOworICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OkVuZCkpOworICAgICAgICBbdGFzayBjYW5jZWxdOworICAgIH0KK30KKworLy8g
Q2FsbGVkIHdoZW4gdGhlIHRhc2sgaXMgbm8gbG9uZ2VyIGFjY2VwdGluZyBuZXcgYXVkaW8gYnV0
IG1heSBiZSBmaW5pc2hpbmcgZmluYWwgcHJvY2Vzc2luZworLSAodm9pZClzcGVlY2hSZWNvZ25p
dGlvblRhc2tGaW5pc2hlZFJlYWRpbmdBdWRpbzooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0
YXNrCit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNhbGxlZC4KKyAgICBbc2VsZiBzZW5k
U3BlZWNoRW5kSWZOZWVkZWRdOworfQorCistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFza1dh
c0NhbmNlbGxlZDooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrCit7CisgICAgW3NlbGYg
c2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworfQorCistICh2b2lkKXNwZWVjaFJlY29n
bml0aW9uVGFzazooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrIGRpZEZpbmlzaFN1Y2Nl
c3NmdWxseTooQk9PTClzdWNjZXNzZnVsbHkKK3sKKyAgICBpZiAoc3VjY2Vzc2Z1bGx5KSB7Cisg
ICAgICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6RW5kKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGVycm9yID0gV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
RXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxsb3dlZCwgW3Rhc2suZXJyb3IubG9jYWxpemVkRGVzY3Jp
cHRpb24gVVRGOFN0cmluZ10gfTsKKyAgICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgZXJyb3IpOworICAgIF9k
ZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7Cit9CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExf
RU5ECisKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU3BlZWNoUmVjb2du
aXplcjo6c3RhcnRSZWNvZ25pdGlvbihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9v
bCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBhbHRlcm5hdGl2ZXMp
Cit7CisgICAgbV90YXNrID0gYWRvcHROUyhbW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGFsbG9j
XSBpbml0V2l0aElkZW50aWZpZXI6aWRlbnRpZmllciBsb2NhbGU6bG9jYWxlSWRlbnRpZmllciBk
b011bHRpcGxlUmVjb2duaXRpb25zOmNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6aW50
ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOmFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNr
Olt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZSYgdXBkYXRlKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKHVwZGF0ZS50eXBlKCkgPT0gV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciB8fCB1cGRhdGUudHlwZSgpID09IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKQorICAgICAgICAgICAgcmVzZXQoKTsK
KworICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAgICB9XSk7Cit9CisKK3Zv
aWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29nbml0aW9uKCkKK3sKKyAgICBBU1NFUlQobV90
YXNrKTsKKyAgICBbbV90YXNrLmdldCgpIHN0b3BdOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6
ZXI6OmFib3J0UmVjb2duaXRpb24oKQoreworICAgIGlmICghbV90YXNrKQorICAgICAgICByZXR1
cm47CisKKyAgICBbbV90YXNrLmdldCgpIGFib3J0XTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25p
emVyOjpyZXNldFJlY29nbml0aW9uKCkKK3sKKyAgICBpZiAoIW1fdGFzaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgW21fdGFzay5nZXQoKSBhYm9ydF07CisgICAgbV90YXNrID0gbnVsbHB0cjsK
K30KKwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoUmV0YWlu
UHRyPENNU2FtcGxlQnVmZmVyUmVmPiBidWZmZXIpCit7CisgICAgW21fdGFzay5nZXQoKSBhdWRp
b1NhbXBsZXNBdmFpbGFibGU6YnVmZmVyLmdldCgpXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBjOGU1YWYxZmVmMTA1ZjM0YzgxNzgx
NzJmYzFkY2Q2N2RlNGU3ZjY1Li4xNTE4YmU3MjZjMjc3NmJmMDhkYzBkMmNjYWNiYWZjOWM5NmZl
MWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTkyLDYgKzkyLDcgQEAgTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCiBNb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuY3BwCitNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyQ29j
b2EubW0KIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0K
IGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9z
L0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ODdkZTE0NmU3NDAyZjE4MTNiNjZjYjE4
MjlhZDAwZDc2NzI5NTJiLi41NjVmZGY5Zjg2YzUxY2Y2Nzc5YmNmNDBhOWJlN2YwY2UwZjNhOWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMTMwMSw2ICsxMTMwMSw3IEBACiAJCTkzMTZEREY4MjQwQzY0QjMwMDkzNDBBQSAv
KiBTaW1wbGVSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVS
YW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE2RERGQTI0MEM2NEIzMDA5
MzQwQUEgLyogU2ltcGxlUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2ltcGxlUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE2
RERGRTI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCb3VuZGFyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzMTkzNTc1MjU3QjZBNDQwMDNGNjZENCAvKiBTcGVlY2hSZWNvZ25pemVyQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUFFM0I4MUZCODBFQUUwMEY1RUZCMiAvKiBKU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVJbldyYXBwZWRPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQkNDNjAxMTI0REZDQjAwQkU3
MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTMxQ0JEMDYxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlTm9kZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZU5vZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU3MTgsNiArMjU3MTksNyBAQAog
CQkJCTkzRDZCNzZEMjU0QjhFMUIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5o
ICovLAogCQkJCTkzOUMwRDIzMjU2NDhDNEUwMEIzMjExQiAvKiBTcGVlY2hSZWNvZ25pemVyLmNw
cCAqLywKIAkJCQk5MzlDMEQyMTI1NjQ4QzM5MDBCMzIxMUIgLyogU3BlZWNoUmVjb2duaXplci5o
ICovLAorCQkJCTkzMTkzNTc1MjU3QjZBNDQwMDNGNjZENCAvKiBTcGVlY2hSZWNvZ25pemVyQ29j
b2EubW0gKi8sCiAJCQkJQUEyQTVBQkQxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNp
cy5jcHAgKi8sCiAJCQkJQUEyQTVBQkUxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNp
cy5oICovLAogCQkJCUFBMkE1QUJGMTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMu
aWRsICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuY3BwCmluZGV4IDlmNjAwZDNmNWNkYzZjMzJjNTQ4YTBhMDlhYjAyYmMxNDUzNDUy
NDQuLjkyYmE1N2Y0MWRhOTUwYzU3Yzc4MjhiYmNkMzZkZGMwZGZhOWM4NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKQEAg
LTcwLDExICs3MCwxMSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZXF1ZXN0UGVy
bWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaGFuZGxlUmVxdWVzdChpZGVudGlmaWVyKTsKKyAg
ICAgICAgaGFuZGxlUmVxdWVzdCgqd2Vha1JlcXVlc3QpOwogICAgIH0pOwogfQogCi12b2lkIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKK3ZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICghbV9yZWNvZ25pemVyKSB7CiAg
ICAgICAgIG1fcmVjb2duaXplciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXpl
cj4oW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIHVwZGF0ZSkgewpA
QCAtOTMsNyArOTMsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbgogICAgICAgICB9KTsKICAg
ICB9CiAKLSAgICBtX3JlY29nbml6ZXItPnN0YXJ0KGNsaWVudElkZW50aWZpZXIpOworICAgIG1f
cmVjb2duaXplci0+c3RhcnQocmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCksIHJlcXVlc3QubGFu
ZygpLCByZXF1ZXN0LmNvbnRpbnVvdXMoKSwgcmVxdWVzdC5pbnRlcmltUmVzdWx0cygpLCByZXF1
ZXN0Lm1heEFsdGVybmF0aXZlcygpKTsKIH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cjo6c3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAppbmRleCBhN2Y3NmQzOGVlNTAxZTU4MmY3OWE1NDRmYTAy
N2NiMGIzMjI4ZmQ3Li40Y2NmMTY5NzIwNmZhZjc1Y2Q2MTk4Yjc4NGY3NTVhYzc2MDM1ZmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVz
dFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYp
OwotICAgIHZvaWQgaGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzZW5kVXBkYXRlKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25FcnJvcj4gPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZW5k
VXBkYXRlKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415585</attachid>
            <date>2020-12-07 14:19:20 -0800</date>
            <delta_ts>2020-12-07 14:36:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201207141919.patch</filename>
            <type>text/plain</type>
            <size>30440</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQxODJjZmM1Mzc1MTVm
MzcyNTdlYzc5ZjU0ZmUwZWRjZjdjNWU4ZS4uZDhhZDUzY2E0ZTdjODM2YmQ0NzBhNDkwYzA0ZTVk
ZTIxMzBhNjJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTEyLTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYW51
YWxseSB0ZXN0ZWQgaW4gTWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9X
ZWJDb3JlLnhjY29uZmlnOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyOjphYm9ydElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OnN0YXJ0Q2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpz
dG9wQ2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydElu
dGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0
b3BJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2Nv
YS5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGluaXRXaXRo
SWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBvcnRJbnRlcmltUmVz
dWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2sgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmluYWw6XSk6CisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZTpdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToKKyAgICAgICAgKC1b
V2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNv
Z25pemVyVGFzayBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2sgc3BlZWNoUmVjb2duaXplcjphdmFpbGFiaWxpdHlEaWRDaGFu
Z2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29nbml0
aW9uRGlkRGV0ZWN0U3BlZWNoOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFz
ayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkSHlwb3RoZXNpemVUcmFuc2NyaXB0aW9uOl0pOgor
ICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6
ZGlkRmluaXNoUmVjb2duaXRpb246XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrIHNwZWVjaFJlY29nbml0aW9uVGFza0ZpbmlzaGVkUmVhZGluZ0F1ZGlvOl0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2tXYXNDYW5j
ZWxsZWQ6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29n
bml0aW9uVGFzazpkaWRGaW5pc2hTdWNjZXNzZnVsbHk6XSk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXplcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAyMC0xMi0wNyAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBzaXplIG9mIHRoZSByZXN1bHQgb2Yg
QVhUZXh0TWFya2VyR2V0Qnl0ZVB0ciBpcyBlcXVhbCB0byB0aGUgc2l6ZSBvZiBUZXh0TWFya2Vy
RGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNjYxN2YzZGY0ZGE3MWU4ZGQyMmI4MmI1ZmFkZDlhNmYyNmUxM2Ex
ZC4uOTZjOTlmYTYyODczZDYyZDM4ZmQyOGUxZDg3Y2JhOWY3NWU4NzFlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMC0xMi0wNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVx
dWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5oOgorCiAyMDIwLTEyLTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzYW5kYm94IHRlbGVtZXRyeSBmb3IgbGlrZWx5
IHVudXNlZCBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvV2ViQ29yZS54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNv
cmUueGNjb25maWcKaW5kZXggZGI0NTc3YmIzMjIwYWMyMTRmOTkwNWRiODMzYmRmY2M2NTlmYTY5
Mi4uYTRkY2JhN2I4ZjEwMWY1NTU0YmFjOTkyMWQ3YmFlMDhjNDMyNjUzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCkBAIC0xMjEsOCArMTIx
LDE0IEBAIFdLX0NPUkVfSU1BR0VfTERGTEFHUyA9IC1mcmFtZXdvcmsgQ29yZUltYWdlOwogV0tf
VVJMX0ZPUk1BVFRJTkdfTERGTEFHUyA9ICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHU18kKFdL
X0hBVkVfVVJMX0ZPUk1BVFRJTkcpKTsKIFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1NfWUVTID0g
LWZyYW1ld29yayBVUkxGb3JtYXR0aW5nOwogCitXS19TUEVFQ0hfTERGTEFHUyA9ICQoV0tfU1BF
RUNIX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CitXS19TUEVFQ0hfTERGTEFHU19tYWNv
c3ggPSAtZnJhbWV3b3JrIFNwZWVjaDsKK1dLX1NQRUVDSF9MREZMQUdTX2lwaG9uZW9zID0gLWZy
YW1ld29yayBTcGVlY2g7CitXS19TUEVFQ0hfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAtZnJh
bWV3b3JrIFNwZWVjaDsKK1dLX1NQRUVDSF9MREZMQUdTX21hY2NhdGFseXN0ID0gLWZyYW1ld29y
ayBTcGVlY2g7CisKIC8vIEZJWE1FOiBSZWR1Y2UgdGhlIG51bWJlciBvZiBhbGxvd2FibGVfY2xp
ZW50cyA8cmRhcjovL3Byb2JsZW0vMzE4MjM5Njk+Ci1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0
ZWQpICQoV0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLX0xERkxBR1MpIC1sc3FsaXRlMyAtbG9iamMg
LWxBTkdMRSAtYWxsb3dhYmxlX2NsaWVudCBXZWJDb3JlVGVzdFN1cHBvcnQgLWFsbG93YWJsZV9j
bGllbnQgV2ViS2l0TGVnYWN5IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJQ
QUwuYSAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3Jr
IENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAt
ZnJhbWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBNZXRhbCAk
KE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpICQoT1RIRVJfTERGTEFH
U19QTEFURk9STV8kKFdLX1BMQVRGT1JNX05BTUUpKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdL
X0FQUFNVUFBPUlRfTERGTEFHUykgJChXS19BVURJT19VTklUX0xERkxBR1MpICQoV0tfQ0FSQk9O
X0xERkxBR1MpICQoV0tfQ09SRV9VSV9MREZMQUdTKSAkKFdLX0RBVEFfREVURUNUT1JTX0NPUkVf
TERGTEFHUykgJChXS19HUkFQSElDU19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0lPU1VSRkFDRV9B
Q0NFTEVSQVRPUl9MREZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZMQUdTKSAkKFdLX01PQklMRV9D
T1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RBTFRfTERGTEFHUykgJChXS19O
RVRXT1JLX0VYVEVOU0lPTl9MRF9GTEFHUykgJChXS19TWVNURU1fQ09ORklHVVJBVElPTl9MREZM
QUdTKSAkKFdLX0NPUkVfSU1BR0VfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdT
KTsKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgJChXS19SRUxPQ0FUQUJMRV9GUkFNRVdP
UktfTERGTEFHUykgLWxzcWxpdGUzIC1sb2JqYyAtbEFOR0xFIC1hbGxvd2FibGVfY2xpZW50IFdl
YkNvcmVUZXN0U3VwcG9ydCAtYWxsb3dhYmxlX2NsaWVudCBXZWJLaXRMZWdhY3kgLWZvcmNlX2xv
YWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlBBTC5hIC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1m
cmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29y
ZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsgSU9TdXJmYWNlIC1mcmFtZXdv
cmsgSW1hZ2VJTyAtZnJhbWV3b3JrIE1ldGFsICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdL
X0NPQ09BX1RPVUNIKSkgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfUExBVEZPUk1fTkFN
RSkpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVBQU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FV
RElPX1VOSVRfTERGTEFHUykgJChXS19DQVJCT05fTERGTEFHUykgJChXS19DT1JFX1VJX0xERkxB
R1MpICQoV0tfREFUQV9ERVRFQ1RPUlNfQ09SRV9MREZMQUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJ
Q0VTX0xERkxBR1MpICQoV0tfSU9TVVJGQUNFX0FDQ0VMRVJBVE9SX0xERkxBR1MpICQoV0tfTElC
V0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19N
T0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX05FVFdPUktfRVhURU5TSU9OX0xEX0ZMQUdTKSAk
KFdLX1NZU1RFTV9DT05GSUdVUkFUSU9OX0xERkxBR1MpICQoV0tfQ09SRV9JTUFHRV9MREZMQUdT
KSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MpICQoV0tfU1BFRUNIX0xERkxBR1MpOwogCiBP
VEhFUl9MREZMQUdTX1BMQVRGT1JNX2NvY29hdG91Y2ggPSAtYWxsb3dhYmxlX2NsaWVudCBXZWJL
aXQgLWFsbG93YWJsZV9jbGllbnQgaVR1bmVzVSAtYWxsb3dhYmxlX2NsaWVudCBDYXNhYmxhbmNh
IC1hbGxvd2FibGVfY2xpZW50IFJlbW90ZSAtYWxsb3dhYmxlX2NsaWVudCBUVkJvb2tzIC1hbGxv
d2FibGVfY2xpZW50IER1bXBSZW5kZXJUcmVlIC1hbGxvd2FibGVfY2xpZW50IFdlYktpdFRlc3RS
dW5uZXIgLWFsbG93YWJsZV9jbGllbnQgVGVzdFdlYktpdEFQSTsKIE9USEVSX0xERkxBR1NfUExB
VEZPUk1fbWFjb3N4ID0gLXN1Yl9saWJyYXJ5IGxpYm9iamMgLXVtYnJlbGxhIFdlYktpdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAK
aW5kZXggNWJlYjYwNTY0N2IzMjllMjY0ZjgzYzI0OWY1N2MyYTIwODFjMmZkNy4uOWIxMGMwNmZm
YTljZGMyNGFhZDQxZjU1Y2I1MzA5OWVlYjliZTA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAKQEAgLTQwLDM3ICs0MCw3NyBA
QCBTcGVlY2hSZWNvZ25pemVyOjpTcGVlY2hSZWNvZ25pemVyKERlbGVnYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldCgpCit2b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29s
IGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZl
cykKK3sKKyAgICBhYm9ydElmTmVlZGVkKCk7CisKKyAgICBtX2NsaWVudElkZW50aWZpZXIgPSBp
ZGVudGlmaWVyOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6U3RhcnQpKTsKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyAgICBzdGFydFJlY29n
bml0aW9uKGlkZW50aWZpZXIsIGxvY2FsZUlkZW50aWZpZXIsIGNvbnRpbnVvdXMsIGludGVyaW1S
ZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obG9jYWxl
SWRlbnRpZmllcik7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRpbnVvdXMpOworICAgIFVOVVNFRF9Q
QVJBTShpbnRlcmltUmVzdWx0cyk7CisgICAgVU5VU0VEX1BBUkFNKG1heEFsdGVybmF0aXZlcyk7
CisjZW5kaWYKKworICAgIHN0YXJ0Q2FwdHVyZSgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6
ZXI6OnN0b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCBzaG91bGRHZW5lcmF0ZUZpbmFsUmVz
dWx0KQogewogICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBzdG9w
Q2FwdHVyZSgpOwogCi0gICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgIkFub3RoZXIgcmVxdWVzdCBpcyBz
dGFydGVkIiB9OwotICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlRXJyb3IoKm1fY2xpZW50SWRlbnRpZmllciwgZXJyb3IpKTsKKyNpZiBIQVZFKFNQ
RUVDSFJFQ09HTklaRVIpCisgICAgaWYgKHNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgPT0gU2hv
dWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6WWVzKQorICAgICAgICBzdG9wUmVjb2duaXRpb24oKTsK
KyAgICBlbHNlCisgICAgICAgIGFib3J0UmVjb2duaXRpb24oKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQpOworICAgIG1fZGVsZWdhdGVDYWxsYmFj
ayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgcmVzZXQoKTsKKyNlbmRpZgog
fQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6
cmVzZXQoKQogewotICAgIHJlc2V0KCk7CisgICAgbV9jbGllbnRJZGVudGlmaWVyID0gV1RGOjpu
dWxsb3B0OworICAgIHN0b3BDYXB0dXJlKCk7CisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQor
ICAgIHJlc2V0UmVjb2duaXRpb24oKTsKKyNlbmRpZgorfQogCi0gICAgbV9jbGllbnRJZGVudGlm
aWVyID0gaWRlbnRpZmllcjsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OlN0YXJ0KSk7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0SWZOZWVkZWQo
KQoreworICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CiAKLSAg
ICBzdGFydEludGVybmFsKCk7CisgICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJy
b3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgIkFub3RoZXIgcmVxdWVz
dCBpcyBzdGFydGVkIiB9OworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6Y3JlYXRlRXJyb3IoKm1fY2xpZW50SWRlbnRpZmllciwgZXJyb3IpKTsKKworICAg
IHJlc2V0KCk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRJbnRlcm5hbCgpCit2
b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0Q2FwdHVyZSgpCiB7CisgICAgLy8gTWF5IGhhdmUg
ZmFpbGVkIHdoZW4gc3RhcnQgcmVjb2duaXRpb24uCisgICAgaWYgKCFtX2NsaWVudElkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8gZGF0YUNhbGxiYWNrID0gW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHRpbWUsIGNvbnN0IGF1dG8mIGRhdGEs
IGNvbnN0IGF1dG8mIGRlc2NyaXB0aW9uLCBhdXRvIHNhbXBsZUNvdW50KSB7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gY3JlYXRl
QXVkaW9TYW1wbGVCdWZmZXIoZGF0YSwgZGVzY3JpcHRpb24sIFBBTDo6dG9DTVRpbWUodGltZSks
IHNhbXBsZUNvdW50KTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CisgICAgICAgIHdl
YWtUaGlzLT5hdWRpb1NhbXBsZXNBdmFpbGFibGUoYnVmZmVyKTsKICNlbHNlCiAgICAgICAgIFVO
VVNFRF9QQVJBTSh0aW1lKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwpAQCAtODQsMzMg
KzEyNCwxNiBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0SW50ZXJuYWwoKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIgJiYgbV9j
bGllbnRJZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKSk7Ci0g
ICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwotCiAgICAgICAgIGlmICh1cGRhdGUu
dHlwZSgpID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IpCi0gICAgICAgICAg
ICBtX3NvdXJjZSA9IG51bGxwdHI7CisgICAgICAgICAgICByZXNldCgpOworCisgICAgICAgIG1f
ZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwogICAgIH07CiAKICAgICBtX3NvdXJjZSA9IG1ha2VV
bmlxdWU8U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlPigqbV9jbGllbnRJZGVudGlmaWVy
LCBXVEZNb3ZlKGRhdGFDYWxsYmFjayksIFdURk1vdmUoc3RhdGVVcGRhdGVDYWxsYmFjaykpOwog
fQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3Vs
dCBzaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0KQotewotICAgIGlmICghbV9jbGllbnRJZGVudGlm
aWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9wSW50ZXJuYWwoKTsKLQotICAgIGlmIChz
aG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0ID09IFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQ6Olll
cykgewotICAgICAgICAvLyBUT0RPOiBnZW5lcmF0ZSByZWFsIHJlc3VsdCB3aGVuIHNwZWVjaCBy
ZWNvZ25pdGlvbiBiYWNrZW5kIGlzIGltcGxlbWVudGVkLgotICAgICAgICBWZWN0b3I8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHREYXRhPiByZXN1bHREYXRhczsKLSAgICAgICAgbV9kZWxlZ2F0ZUNh
bGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVSZXN1bHQoKm1fY2xpZW50SWRl
bnRpZmllciwgcmVzdWx0RGF0YXMpKTsKLSAgICB9Ci0KLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2so
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwotICAgIG1fY2xpZW50SWRlbnRpZmllciA9
IFdURjo6bnVsbG9wdDsKLX0KLQotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wSW50ZXJuYWwo
KQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wQ2FwdHVyZSgpCiB7CiAgICAgaWYgKCFtX3Nv
dXJjZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXplci5oCmluZGV4IGU2ZjEzZmVlODRhNTMzYWYwZjA0ZTA3NjljMWFl
MDk1YmU1YmZmM2YuLmQ4NGFmNTZkMzYyMzBkMGUxZDFjYjRlMTczZGYxMGVhOTMyMDgyYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgK
QEAgLTI4LDYgKzI4LDExIEBACiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291
cmNlLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
Zmllci5oIgogCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KK09CSkNfQ0xBU1MgV2ViU3BlZWNoUmVjb2duaXplclRhc2s7CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTsKQEAg
LTM5LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVj
aFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+U3Bl
ZWNoUmVjb2duaXplcigpID0gZGVmYXVsdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rh
cnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91
cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKTsKICAgICBl
bnVtIGNsYXNzIFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgeyBObywgWWVzIH07CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdG9wKFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgPSBTaG91bGRH
ZW5lcmF0ZUZpbmFsUmVzdWx0OjpZZXMpOwogCkBAIC00NywxMiArNTIsMjUgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZvaWQgcmVzZXQoKTsKLSAgICB2b2lkIHN0YXJ0SW50ZXJuYWwoKTsK
LSAgICB2b2lkIHN0b3BJbnRlcm5hbCgpOworICAgIHZvaWQgYWJvcnRJZk5lZWRlZCgpOworICAg
IHZvaWQgc3RhcnRDYXB0dXJlKCk7CisgICAgdm9pZCBzdG9wQ2FwdHVyZSgpOworCisjaWYgSEFW
RShTUEVFQ0hSRUNPR05JWkVSKQorICAgIHZvaWQgc3RhcnRSZWNvZ25pdGlvbihTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlk
ZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3Qg
bWF4QWx0ZXJuYXRpdmVzKTsKKyAgICB2b2lkIHN0b3BSZWNvZ25pdGlvbigpOworICAgIHZvaWQg
YWJvcnRSZWNvZ25pdGlvbigpOworICAgIHZvaWQgcmVzZXRSZWNvZ25pdGlvbigpOworICAgIHZv
aWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4pOwor
I2VuZGlmCiAKICAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyPiBtX2NsaWVudElkZW50aWZpZXI7CiAgICAgRGVsZWdhdGVDYWxsYmFjayBtX2Rl
bGVnYXRlQ2FsbGJhY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0aW9uQ2Fw
dHVyZVNvdXJjZT4gbV9zb3VyY2U7CisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAg
UmV0YWluUHRyPFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrPiBtX3Rhc2s7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmU3NTlmMWU1
MGQ0OWQxYTE3NTdjOGFlMDg5OWIzMmNiNTE3MGIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCkBAIC0wLDAg
KzEsMjg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTcGVl
Y2hSZWNvZ25pemVyLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKKyNpbXBvcnQg
IlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCisjaW1wb3J0IDxTcGVlY2gvU0ZTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RfUHJpdmF0ZS5oPgorI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorI2lt
cG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KKyNpbXBvcnQg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJm
YWNlIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrIDogTlNPYmplY3Q8U0ZTcGVlY2hSZWNvZ25pdGlv
blRhc2tEZWxlZ2F0ZSwgU0ZTcGVlY2hSZWNvZ25pemVyRGVsZWdhdGU+IHsKK0Bwcml2YXRlCisg
ICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBf
aWRlbnRpZmllcjsKKyAgICBib29sIF9kb011bHRpcGxlUmVjb2duaXRpb25zOworICAgIHVpbnQ2
NF90IF9tYXhBbHRlcm5hdGl2ZXM7CisgICAgQmxvY2tQdHI8dm9pZChjb25zdCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpPiBfZGVsZWdhdGVDYWxsYmFjazsKKyAgICBSZXRhaW5Q
dHI8U0ZTcGVlY2hSZWNvZ25pemVyPiBfcmVjb2duaXplcjsKKyAgICBSZXRhaW5QdHI8U0ZTcGVl
Y2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVzdD4gX3JlcXVlc3Q7CisgICAgV2Vha09iakNQ
dHI8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2s+IF90YXNrOworICAgIGJvb2wgX2hhc1NlbnRTcGVl
Y2hTdGFydDsKKyAgICBib29sIF9oYXNTZW50U3BlZWNoRW5kOworfQorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhJZGVudGlmaWVyOihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRl
bnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50
ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25l
ZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikpY2FsbGJhY2s7CistICh2b2lkKWNhbGxiYWNr
V2l0aFJlc3VsdDooU0ZUcmFuc2NyaXB0aW9uICopdHJhbnNjcmlwdGlvbiBpc0ZpbmFsOihCT09M
KWlzRmluYWw7CistICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJS
ZWYpc2FtcGxlQnVmZmVyOworLSAodm9pZClhYm9ydDsKKy0gKHZvaWQpc3RvcDsKKy0gKHZvaWQp
c2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWQ7CistICh2b2lkKXNlbmRTcGVlY2hFbmRJZk5lZWRlZDsK
KworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViU3BlZWNoUmVjb2duaXplclRhc2sKKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcq
KWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3Vz
IHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZl
czoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShj
b25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7CisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBf
aWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sgPSBjYWxsYmFj
azsKKworICAgIGlmICghW2xvY2FsZUlkZW50aWZpZXIgbGVuZ3RoXSkKKyAgICAgICAgX3JlY29n
bml6ZXIgPSBhZG9wdE5TKFtbU0ZTcGVlY2hSZWNvZ25pemVyIGFsbG9jXSBpbml0XSk7CisgICAg
ZWxzZQorICAgICAgICBfcmVjb2duaXplciA9IGFkb3B0TlMoW1tTRlNwZWVjaFJlY29nbml6ZXIg
YWxsb2NdIGluaXRXaXRoTG9jYWxlOltOU0xvY2FsZSBsb2NhbGVXaXRoTG9jYWxlSWRlbnRpZmll
cjpsb2NhbGVJZGVudGlmaWVyXV0pOworICAgIGlmICghX3JlY29nbml6ZXIpIHsKKyAgICAgICAg
YXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsIG1ha2VTdHJpbmco
IkZhaWxlZCB0byBjcmVhdGUgcmVjZ29uaXplciB3aXRoIGxvY2FsZSAnIiwgU3RyaW5nKGxvY2Fs
ZUlkZW50aWZpZXIpLCAiJyIpIH07CisgICAgICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKF9pZGVudGlmaWVyLCBlcnJvcik7Cisg
ICAgICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7CisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgfQorICAgICAgICAKKyAgICBbX3JlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAg
aWYgKCFbX3JlY29nbml6ZXIuZ2V0KCkgaXNBdmFpbGFibGVdKSB7CisgICAgICAgIGF1dG8gZXJy
b3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxvd2VkLCAiU3BlZWNoIHJlY29nbml6ZXIg
aXMgbm90IGF2YWlsYWJsZSIgfTsKKyAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIsIGVycm9yKTsKKyAg
ICAgICAgX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICB9CisKKyAgICBfZG9NdWx0aXBsZVJlY29nbml0aW9ucyA9IGNvbnRpbnVvdXM7CisKKyAgICBp
ZiAoIWFsdGVybmF0aXZlcykKKyAgICAgICAgYWx0ZXJuYXRpdmVzID0gMTsKKyAgICBfbWF4QWx0
ZXJuYXRpdmVzID0gYWx0ZXJuYXRpdmVzOworCisgICAgX3JlcXVlc3QgPSBhZG9wdE5TKFtbU0ZT
cGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVzdCBhbGxvY10gaW5pdF0pOworICAgIGlm
IChbX3JlY29nbml6ZXIgc3VwcG9ydHNPbkRldmljZVJlY29nbml0aW9uXSkKKyAgICAgICAgW19y
ZXF1ZXN0IHNldFJlcXVpcmVzT25EZXZpY2VSZWNvZ25pdGlvbjpZRVNdOworICAgIFtfcmVxdWVz
dCBzZXRTaG91bGRSZXBvcnRQYXJ0aWFsUmVzdWx0czppbnRlcmltUmVzdWx0c107CisgICAgW19y
ZXF1ZXN0IHNldFRhc2tIaW50OlNGU3BlZWNoUmVjb2duaXRpb25UYXNrSGludERpY3RhdGlvbl07
CisgICAgW19yZXF1ZXN0IHNldERldGVjdE11bHRpcGxlVXR0ZXJhbmNlczpTRlNwZWVjaFJlY29n
bml0aW9uVGFza0hpbnREaWN0YXRpb25dOworICAgIC8vIFtfcmVxdWVzdCBfc2V0TWF4aW11bVJl
Y29nbml0aW9uRHVyYXRpb246NjAgKiA2MCAqIDJdOworICAgIF90YXNrID0gW19yZWNvZ25pemVy
LmdldCgpIHJlY29nbml0aW9uVGFza1dpdGhSZXF1ZXN0Ol9yZXF1ZXN0LmdldCgpIGRlbGVnYXRl
OnNlbGZdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWNhbGxiYWNrV2l0aFJlc3Vs
dDooU0ZUcmFuc2NyaXB0aW9uICopdHJhbnNjcmlwdGlvbiBpc0ZpbmFsOihCT09MKWlzRmluYWwK
K3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiBkYXRh
czsKKyAgICBhdXRvIHNlZ21lbnRzID0gW3RyYW5zY3JpcHRpb24gc2VnbWVudHNdOworICAgIGZv
ciAoU0ZUcmFuc2NyaXB0aW9uU2VnbWVudCogc2VnbWVudCBpbiBzZWdtZW50cykgeworICAgICAg
ICAvLyBTZWdtZW50IGNvbmZpZGVuY2UgaXMgcmVwb3J0ZWQgMCB3aGVuIHJlc3VsdCBpcyBub3Qg
ZmluYWwuCisgICAgICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YSBkYXRh
OworICAgICAgICBkYXRhLmlzRmluYWwgPSBpc0ZpbmFsOworICAgICAgICBkYXRhLmFsdGVybmF0
aXZlcy5hcHBlbmQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgeyBb
W3NlZ21lbnQgc3Vic3RyaW5nXSBVVEY4U3RyaW5nXSwgW3NlZ21lbnQgY29uZmlkZW5jZV0gfSk7
CisgICAgICAgIGZvciAoTlNTdHJpbmcqIHNlZ21lbnRBbHRlcm5hdGl2ZSA6IFtzZWdtZW50IGFs
dGVybmF0aXZlU3Vic3RyaW5nc10pIHsKKyAgICAgICAgICAgIGlmIChkYXRhLmFsdGVybmF0aXZl
cy5zaXplKCkgPT0gX21heEFsdGVybmF0aXZlcykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIC8vIFNldCBjb25maWRlbmNlIDAgc2luY2UgaXQgaXMgdW5rbm93bi4KKyAgICAg
ICAgICAgIGRhdGEuYWx0ZXJuYXRpdmVzLmFwcGVuZChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkFsdGVybmF0aXZlRGF0YSB7IFtzZWdtZW50QWx0ZXJuYXRpdmUgVVRGOFN0cmluZ10sIDAuMCB9
KTsKKyAgICAgICAgfQorICAgICAgICBkYXRhcy5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CisgICAg
fQorICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpjcmVhdGVSZXN1bHQoX2lkZW50aWZpZXIsIGRhdGFzKSk7Cit9CisKKy0gKHZvaWQpYXVkaW9T
YW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIKK3sKKyAgICBb
X3JlcXVlc3QgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXI6c2FtcGxlQnVmZmVyXTsKK30KKworLSAo
dm9pZClhYm9ydAoreworICAgIGlmICghX3Rhc2sgfHwgW190YXNrIHN0YXRlXSA9PSBTRlNwZWVj
aFJlY29nbml0aW9uVGFza1N0YXRlQ29tcGxldGVkIHx8IFtfdGFzayBzdGF0ZV0gPT0gU0ZTcGVl
Y2hSZWNvZ25pdGlvblRhc2tTdGF0ZUNhbmNlbGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAg
W3NlbGYgc2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICBbX3JlcXVlc3QgZW5kQXVkaW9dOwor
CisgICAgW190YXNrIGNhbmNlbF07Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIFtzZWxmIHNl
bmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgW19yZXF1ZXN0IGVuZEF1ZGlvXTsKKworICAgIGlm
ICghIV90YXNrKQorICAgICAgICBbX3Rhc2sgZmluaXNoXTsKK30KKworLSAodm9pZClzZW5kU3Bl
ZWNoU3RhcnRJZk5lZWRlZAoreworICAgIGlmIChfaGFzU2VudFNwZWVjaFN0YXJ0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBfaGFzU2VudFNwZWVjaFN0YXJ0ID0gdHJ1ZTsKKyAgICBfZGVsZWdh
dGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVu
dGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaFN0YXJ0
KSk7Cit9CisKKy0gKHZvaWQpc2VuZFNwZWVjaEVuZElmTmVlZGVkCit7CisgICAgaWYgKCFfaGFz
U2VudFNwZWVjaFN0YXJ0IHx8IF9oYXNTZW50U3BlZWNoRW5kKQorICAgICAgICByZXR1cm47CisK
KyAgICBfaGFzU2VudFNwZWVjaEVuZCA9IHRydWU7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hFbmQpKTsKK30KKworI3ByYWdt
YSBtYXJrIFNGU3BlZWNoUmVjb2duaXplckRlbGVnYXRlCisKKy0gKHZvaWQpc3BlZWNoUmVjb2du
aXplcjooU0ZTcGVlY2hSZWNvZ25pemVyICopc3BlZWNoUmVjb2duaXplciBhdmFpbGFiaWxpdHlE
aWRDaGFuZ2U6KEJPT0wpYXZhaWxhYmxlCit7CisgICAgaWYgKGF2YWlsYWJsZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFfdGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBl
cnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsICJTcGVlY2ggcmVjb2duaXRp
b24gc2VydmljZSBiZWNvbWVzIHVuYXZhaWxhYmxlIiB9OworICAgIGF1dG8gdXBkYXRlID0gV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKF9pZGVudGlmaWVyLCBl
cnJvcik7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKK30KKworI3ByYWdtYSBtYXJr
IFNGU3BlZWNoUmVjb2duaXRpb25UYXNrRGVsZWdhdGUKKworLSAodm9pZClzcGVlY2hSZWNvZ25p
dGlvbkRpZERldGVjdFNwZWVjaDooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrCit7Cisg
ICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNhbGxlZC4KKyAgICBbc2VsZiBzZW5kU3BlZWNoU3Rh
cnRJZk5lZWRlZF07Cit9CisKKy8vIGludGVyaW0gcmVzdWx0cyBvZiBzb21lIHV0dGVyYW5jZQor
LSAodm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2s6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICop
dGFzayBkaWRIeXBvdGhlc2l6ZVRyYW5zY3JpcHRpb246KFNGVHJhbnNjcmlwdGlvbiAqKXRyYW5z
Y3JpcHRpb24KK3sKKyAgICBbc2VsZiBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF07CisgICAgW3Nl
bGYgY2FsbGJhY2tXaXRoUmVzdWx0OnRyYW5zY3JpcHRpb24gaXNGaW5hbDpOT107Cit9CisKKy8v
IGZpbmFsIHJlc3VsdHMgb2Ygc29tZSB1dHRlcmFuY2UKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRp
b25UYXNrOihTRlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sgZGlkRmluaXNoUmVjb2duaXRp
b246KFNGU3BlZWNoUmVjb2duaXRpb25SZXN1bHQgKilyZWNvZ25pdGlvblJlc3VsdAoreworICAg
IFtzZWxmIGNhbGxiYWNrV2l0aFJlc3VsdDpyZWNvZ25pdGlvblJlc3VsdC5iZXN0VHJhbnNjcmlw
dGlvbiBpc0ZpbmFsOllFU107CisgICAgaWYgKCFfZG9NdWx0aXBsZVJlY29nbml0aW9ucykgewor
ICAgICAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAgICAgICBfZGVsZWdhdGVD
YWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlm
aWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworICAgICAg
ICBbdGFzayBjYW5jZWxdOworICAgIH0KK30KKworLy8gQ2FsbGVkIHdoZW4gdGhlIHRhc2sgaXMg
bm8gbG9uZ2VyIGFjY2VwdGluZyBuZXcgYXVkaW8gYnV0IG1heSBiZSBmaW5pc2hpbmcgZmluYWwg
cHJvY2Vzc2luZworLSAodm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2tGaW5pc2hlZFJlYWRpbmdB
dWRpbzooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrCit7CisgICAgLy8gRklYTUU6IFRo
aXMgaXMgbm90IGNhbGxlZC4KKyAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworfQor
CistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFza1dhc0NhbmNlbGxlZDooU0ZTcGVlY2hSZWNv
Z25pdGlvblRhc2sgKil0YXNrCit7CisgICAgW3NlbGYgc2VuZFNwZWVjaEVuZElmTmVlZGVkXTsK
KyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6
OkVuZCkpOworfQorCistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFzazooU0ZTcGVlY2hSZWNv
Z25pdGlvblRhc2sgKil0YXNrIGRpZEZpbmlzaFN1Y2Nlc3NmdWxseTooQk9PTClzdWNjZXNzZnVs
bHkKK3sKKyAgICBpZiAoc3VjY2Vzc2Z1bGx5KSB7CisgICAgICAgIF9kZWxlZ2F0ZUNhbGxiYWNr
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25F
cnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxs
b3dlZCwgW3Rhc2suZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24gVVRGOFN0cmluZ10gfTsKKyAg
ICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVF
cnJvcihfaWRlbnRpZmllciwgZXJyb3IpOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7
Cit9CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMs
IHVpbnQ2NF90IGFsdGVybmF0aXZlcykKK3sKKyAgICBtX3Rhc2sgPSBhZG9wdE5TKFtbV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2sgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIGxv
Y2FsZTpsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6Y29udGludW91cyBy
ZXBvcnRJbnRlcmltUmVzdWx0czppbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6YWx0ZXJu
YXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyldKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiB1cGRhdGUpIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodXBkYXRlLnR5
cGUoKSA9PSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yIHx8IHVw
ZGF0ZS50eXBlKCkgPT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQp
CisgICAgICAgICAgICByZXNldCgpOworCisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRh
dGUpOworICAgIH1dKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2duaXRp
b24oKQoreworICAgIEFTU0VSVChtX3Rhc2spOworICAgIFttX3Rhc2suZ2V0KCkgc3RvcF07Cit9
CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbigpCit7CisgICAgaWYg
KCFtX3Rhc2spCisgICAgICAgIHJldHVybjsKKworICAgIFttX3Rhc2suZ2V0KCkgYWJvcnRdOwor
fQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24oKQoreworICAgIGlm
ICghbV90YXNrKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV90YXNrLmdldCgpIGFib3J0XTsK
KyAgICBtX3Rhc2sgPSBudWxscHRyOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGJ1ZmZlcikKK3sK
KyAgICBbbV90YXNrLmdldCgpIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZTpidWZmZXIuZ2V0KCldOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09H
TklaRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBjOGU1YWYxZmVmMTA1ZjM0YzgxNzgx
NzJmYzFkY2Q2N2RlNGU3ZjY1Li4xNTE4YmU3MjZjMjc3NmJmMDhkYzBkMmNjYWNiYWZjOWM5NmZl
MWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTkyLDYgKzkyLDcgQEAgTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCiBNb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuY3BwCitNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyQ29j
b2EubW0KIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0K
IGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9z
L0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNjY0ZjRjYzkxMDM2NzYyOGQzOWM0Zjk3
ZWM5ZWFkY2YzNzRkYWQ2Li5kOWRiYWI4ODAxNzc4MzE0ZDgwMjFiOGRkMGM0ODIyMjQ3ZGM1ZWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMTMwOSw2ICsxMTMwOSw3IEBACiAJCTkzMTZEREY4MjQwQzY0QjMwMDkzNDBBQSAv
KiBTaW1wbGVSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVS
YW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE2RERGQTI0MEM2NEIzMDA5
MzQwQUEgLyogU2ltcGxlUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2ltcGxlUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE2
RERGRTI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCb3VuZGFyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzMTkzNTc1MjU3QjZBNDQwMDNGNjZENCAvKiBTcGVlY2hSZWNvZ25pemVyQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUFFM0I4MUZCODBFQUUwMEY1RUZCMiAvKiBKU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVJbldyYXBwZWRPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQkNDNjAxMTI0REZDQjAwQkU3
MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTMxQ0JEMDYxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlTm9kZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZU5vZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU3MzgsNiArMjU3MzksNyBAQAog
CQkJCTkzRDZCNzZEMjU0QjhFMUIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5o
ICovLAogCQkJCTkzOUMwRDIzMjU2NDhDNEUwMEIzMjExQiAvKiBTcGVlY2hSZWNvZ25pemVyLmNw
cCAqLywKIAkJCQk5MzlDMEQyMTI1NjQ4QzM5MDBCMzIxMUIgLyogU3BlZWNoUmVjb2duaXplci5o
ICovLAorCQkJCTkzMTkzNTc1MjU3QjZBNDQwMDNGNjZENCAvKiBTcGVlY2hSZWNvZ25pemVyQ29j
b2EubW0gKi8sCiAJCQkJQUEyQTVBQkQxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNp
cy5jcHAgKi8sCiAJCQkJQUEyQTVBQkUxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNp
cy5oICovLAogCQkJCUFBMkE1QUJGMTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMu
aWRsICovLApAQCAtMzIxNTgsNiArMzIxNjAsNyBAQAogCQkJCUNERjc0ODNGMThGRUJDRUMwMDA2
RUNDMCAvKiBHcmlkUG9zaXRpb25zUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkEx
MDUwMTY2NDQ0RkQwMDhGQTMxMSAvKiBHcmlkVHJhY2tTaXplLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMTJERTcxODFFNEI3NEE2MDBGOUFDQ0YgLyogR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdGNkQgLyogSDI2NFV0aWxz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNkVBODlBNzFCNEYyQjc1MDA4QzVGRDIgLyogSGFzaGFi
bGVBY3Rpb25MaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDgyQjc0NjExOThDMzU0MDBCRkIw
MDUgLyogSGFzaENoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODc0OEJFMDEyQ0JG
MkRDMDAxRkJBNDEgLyogSGFzaFRvb2xzLmggaW4gSGVhZGVycyAqLywKQEAgLTMzODk3LDcgKzMz
OTAwLDYgQEAKIAkJCQk1RUJCODkzOTFDNzdDMzk5MDBDNjVENDEgLyogUGVlck1lZGlhRGVzY3Jp
cHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCThBN0NDOTZCMTIwNzZENzMwMDFENDU4OCAvKiBQ
ZW5kaW5nU2NyaXB0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0ZBMzg2NDFENzE4MTJEMDBBQTU5
NTAgLyogUGVuZGluZ1NjcmlwdENsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDFCQkE4NjYy
NTdFMzczQjAwQUM3RjZEIC8qIEgyNjRVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE4NDRE
MDUxMUQzQzE4RTAwMTQwNjVDIC8qIFBlcmZvcm1hbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkJFMzQwMTE1MDU4Q0IyMDBDRTBGRDggLyogUGVyZm9ybWFuY2VFbnRyeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQUQ1QTBDMjUxREVDQUNDQzAwNzA3MDU0IC8qIFBlcmZvcm1hbmNlTG9nZ2luZy5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5jcHAKaW5kZXggOWY2MDBkM2Y1Y2RjNmMzMmM1NDhhMGEwOWFiMDJi
YzE0NTM0NTI0NC4uOTJiYTU3ZjQxZGE5NTBjNTdjNzgyOGJiY2QzNmRkYzBkZmE5Yzg1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
LmNwcApAQCAtNzAsMTEgKzcwLDExIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJl
cXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBoYW5kbGVSZXF1ZXN0KGlkZW50aWZp
ZXIpOworICAgICAgICBoYW5kbGVSZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CiAgICAgfSk7CiB9CiAK
LXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
KQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX3JlY29nbml6
ZXIpIHsKICAgICAgICAgbV9yZWNvZ25pemVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pemVyPihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYgdXBk
YXRlKSB7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Omhh
bmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uCiAgICAgICAg
IH0pOwogICAgIH0KIAotICAgIG1fcmVjb2duaXplci0+c3RhcnQoY2xpZW50SWRlbnRpZmllcik7
CisgICAgbV9yZWNvZ25pemVyLT5zdGFydChyZXF1ZXN0LmNsaWVudElkZW50aWZpZXIoKSwgcmVx
dWVzdC5sYW5nKCksIHJlcXVlc3QuY29udGludW91cygpLCByZXF1ZXN0LmludGVyaW1SZXN1bHRz
KCksIHJlcXVlc3QubWF4QWx0ZXJuYXRpdmVzKCkpOwogfQogCiB2b2lkIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpzdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4IGE3Zjc2ZDM4ZWU1MDFlNTgyZjc5
YTU0NGZhMDI3Y2IwYjMyMjhmZDcuLjRjY2YxNjk3MjA2ZmFmNzVjZDYxOThiNzg0Zjc1NWFjNzYw
MzVmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCByZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0Jik7Ci0gICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOworICAgIHZvaWQgaGFuZGxlUmVxdWVzdChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKICAgICB2b2lkIHNlbmRVcGRhdGUo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkVycm9yPiA9IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+ID0gV1RGOjpudWxsb3B0KTsKICAgICB2
b2lkIHNlbmRVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKTsK
IAo=
</data>
<flag name="commit-queue"
          id="432841"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415586</attachid>
            <date>2020-12-07 14:28:29 -0800</date>
            <delta_ts>2020-12-07 14:34:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201207142828.patch</filename>
            <type>text/plain</type>
            <size>30439</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQxODJjZmM1Mzc1MTVm
MzcyNTdlYzc5ZjU0ZmUwZWRjZjdjNWU4ZS4uZDhhZDUzY2E0ZTdjODM2YmQ0NzBhNDkwYzA0ZTVk
ZTIxMzBhNjJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTEyLTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYW51
YWxseSB0ZXN0ZWQgaW4gTWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9X
ZWJDb3JlLnhjY29uZmlnOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyOjphYm9ydElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OnN0YXJ0Q2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpz
dG9wQ2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydElu
dGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0
b3BJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2Nv
YS5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGluaXRXaXRo
SWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBvcnRJbnRlcmltUmVz
dWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2sgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmluYWw6XSk6CisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZTpdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToKKyAgICAgICAgKC1b
V2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNv
Z25pemVyVGFzayBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2sgc3BlZWNoUmVjb2duaXplcjphdmFpbGFiaWxpdHlEaWRDaGFu
Z2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29nbml0
aW9uRGlkRGV0ZWN0U3BlZWNoOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFz
ayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkSHlwb3RoZXNpemVUcmFuc2NyaXB0aW9uOl0pOgor
ICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6
ZGlkRmluaXNoUmVjb2duaXRpb246XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrIHNwZWVjaFJlY29nbml0aW9uVGFza0ZpbmlzaGVkUmVhZGluZ0F1ZGlvOl0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2tXYXNDYW5j
ZWxsZWQ6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29n
bml0aW9uVGFzazpkaWRGaW5pc2hTdWNjZXNzZnVsbHk6XSk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXplcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAyMC0xMi0wNyAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBzaXplIG9mIHRoZSByZXN1bHQgb2Yg
QVhUZXh0TWFya2VyR2V0Qnl0ZVB0ciBpcyBlcXVhbCB0byB0aGUgc2l6ZSBvZiBUZXh0TWFya2Vy
RGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNjYxN2YzZGY0ZGE3MWU4ZGQyMmI4MmI1ZmFkZDlhNmYyNmUxM2Ex
ZC4uOTZjOTlmYTYyODczZDYyZDM4ZmQyOGUxZDg3Y2JhOWY3NWU4NzFlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMC0xMi0wNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVx
dWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5oOgorCiAyMDIwLTEyLTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzYW5kYm94IHRlbGVtZXRyeSBmb3IgbGlrZWx5
IHVudXNlZCBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvV2ViQ29yZS54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNv
cmUueGNjb25maWcKaW5kZXggZGI0NTc3YmIzMjIwYWMyMTRmOTkwNWRiODMzYmRmY2M2NTlmYTY5
Mi4uYTRkY2JhN2I4ZjEwMWY1NTU0YmFjOTkyMWQ3YmFlMDhjNDMyNjUzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCkBAIC0xMjEsOCArMTIx
LDE0IEBAIFdLX0NPUkVfSU1BR0VfTERGTEFHUyA9IC1mcmFtZXdvcmsgQ29yZUltYWdlOwogV0tf
VVJMX0ZPUk1BVFRJTkdfTERGTEFHUyA9ICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHU18kKFdL
X0hBVkVfVVJMX0ZPUk1BVFRJTkcpKTsKIFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1NfWUVTID0g
LWZyYW1ld29yayBVUkxGb3JtYXR0aW5nOwogCitXS19TUEVFQ0hfTERGTEFHUyA9ICQoV0tfU1BF
RUNIX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CitXS19TUEVFQ0hfTERGTEFHU19tYWNv
c3ggPSAtZnJhbWV3b3JrIFNwZWVjaDsKK1dLX1NQRUVDSF9MREZMQUdTX2lwaG9uZW9zID0gLWZy
YW1ld29yayBTcGVlY2g7CitXS19TUEVFQ0hfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAtZnJh
bWV3b3JrIFNwZWVjaDsKK1dLX1NQRUVDSF9MREZMQUdTX21hY2NhdGFseXN0ID0gLWZyYW1ld29y
ayBTcGVlY2g7CisKIC8vIEZJWE1FOiBSZWR1Y2UgdGhlIG51bWJlciBvZiBhbGxvd2FibGVfY2xp
ZW50cyA8cmRhcjovL3Byb2JsZW0vMzE4MjM5Njk+Ci1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0
ZWQpICQoV0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLX0xERkxBR1MpIC1sc3FsaXRlMyAtbG9iamMg
LWxBTkdMRSAtYWxsb3dhYmxlX2NsaWVudCBXZWJDb3JlVGVzdFN1cHBvcnQgLWFsbG93YWJsZV9j
bGllbnQgV2ViS2l0TGVnYWN5IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJQ
QUwuYSAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3Jr
IENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAt
ZnJhbWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBNZXRhbCAk
KE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpICQoT1RIRVJfTERGTEFH
U19QTEFURk9STV8kKFdLX1BMQVRGT1JNX05BTUUpKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdL
X0FQUFNVUFBPUlRfTERGTEFHUykgJChXS19BVURJT19VTklUX0xERkxBR1MpICQoV0tfQ0FSQk9O
X0xERkxBR1MpICQoV0tfQ09SRV9VSV9MREZMQUdTKSAkKFdLX0RBVEFfREVURUNUT1JTX0NPUkVf
TERGTEFHUykgJChXS19HUkFQSElDU19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0lPU1VSRkFDRV9B
Q0NFTEVSQVRPUl9MREZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZMQUdTKSAkKFdLX01PQklMRV9D
T1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RBTFRfTERGTEFHUykgJChXS19O
RVRXT1JLX0VYVEVOU0lPTl9MRF9GTEFHUykgJChXS19TWVNURU1fQ09ORklHVVJBVElPTl9MREZM
QUdTKSAkKFdLX0NPUkVfSU1BR0VfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdT
KTsKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgJChXS19SRUxPQ0FUQUJMRV9GUkFNRVdP
UktfTERGTEFHUykgLWxzcWxpdGUzIC1sb2JqYyAtbEFOR0xFIC1hbGxvd2FibGVfY2xpZW50IFdl
YkNvcmVUZXN0U3VwcG9ydCAtYWxsb3dhYmxlX2NsaWVudCBXZWJLaXRMZWdhY3kgLWZvcmNlX2xv
YWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlBBTC5hIC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1m
cmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29y
ZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsgSU9TdXJmYWNlIC1mcmFtZXdv
cmsgSW1hZ2VJTyAtZnJhbWV3b3JrIE1ldGFsICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdL
X0NPQ09BX1RPVUNIKSkgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfUExBVEZPUk1fTkFN
RSkpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVBQU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FV
RElPX1VOSVRfTERGTEFHUykgJChXS19DQVJCT05fTERGTEFHUykgJChXS19DT1JFX1VJX0xERkxB
R1MpICQoV0tfREFUQV9ERVRFQ1RPUlNfQ09SRV9MREZMQUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJ
Q0VTX0xERkxBR1MpICQoV0tfSU9TVVJGQUNFX0FDQ0VMRVJBVE9SX0xERkxBR1MpICQoV0tfTElC
V0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19N
T0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX05FVFdPUktfRVhURU5TSU9OX0xEX0ZMQUdTKSAk
KFdLX1NZU1RFTV9DT05GSUdVUkFUSU9OX0xERkxBR1MpICQoV0tfQ09SRV9JTUFHRV9MREZMQUdT
KSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MpICQoV0tfU1BFRUNIX0xERkxBR1MpOwogCiBP
VEhFUl9MREZMQUdTX1BMQVRGT1JNX2NvY29hdG91Y2ggPSAtYWxsb3dhYmxlX2NsaWVudCBXZWJL
aXQgLWFsbG93YWJsZV9jbGllbnQgaVR1bmVzVSAtYWxsb3dhYmxlX2NsaWVudCBDYXNhYmxhbmNh
IC1hbGxvd2FibGVfY2xpZW50IFJlbW90ZSAtYWxsb3dhYmxlX2NsaWVudCBUVkJvb2tzIC1hbGxv
d2FibGVfY2xpZW50IER1bXBSZW5kZXJUcmVlIC1hbGxvd2FibGVfY2xpZW50IFdlYktpdFRlc3RS
dW5uZXIgLWFsbG93YWJsZV9jbGllbnQgVGVzdFdlYktpdEFQSTsKIE9USEVSX0xERkxBR1NfUExB
VEZPUk1fbWFjb3N4ID0gLXN1Yl9saWJyYXJ5IGxpYm9iamMgLXVtYnJlbGxhIFdlYktpdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAK
aW5kZXggNWJlYjYwNTY0N2IzMjllMjY0ZjgzYzI0OWY1N2MyYTIwODFjMmZkNy4uOWIxMGMwNmZm
YTljZGMyNGFhZDQxZjU1Y2I1MzA5OWVlYjliZTA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAKQEAgLTQwLDM3ICs0MCw3NyBA
QCBTcGVlY2hSZWNvZ25pemVyOjpTcGVlY2hSZWNvZ25pemVyKERlbGVnYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldCgpCit2b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29s
IGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZl
cykKK3sKKyAgICBhYm9ydElmTmVlZGVkKCk7CisKKyAgICBtX2NsaWVudElkZW50aWZpZXIgPSBp
ZGVudGlmaWVyOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6U3RhcnQpKTsKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyAgICBzdGFydFJlY29n
bml0aW9uKGlkZW50aWZpZXIsIGxvY2FsZUlkZW50aWZpZXIsIGNvbnRpbnVvdXMsIGludGVyaW1S
ZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obG9jYWxl
SWRlbnRpZmllcik7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRpbnVvdXMpOworICAgIFVOVVNFRF9Q
QVJBTShpbnRlcmltUmVzdWx0cyk7CisgICAgVU5VU0VEX1BBUkFNKG1heEFsdGVybmF0aXZlcyk7
CisjZW5kaWYKKworICAgIHN0YXJ0Q2FwdHVyZSgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6
ZXI6OnN0b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCBzaG91bGRHZW5lcmF0ZUZpbmFsUmVz
dWx0KQogewogICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBzdG9w
Q2FwdHVyZSgpOwogCi0gICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgIkFub3RoZXIgcmVxdWVzdCBpcyBz
dGFydGVkIiB9OwotICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlRXJyb3IoKm1fY2xpZW50SWRlbnRpZmllciwgZXJyb3IpKTsKKyNpZiBIQVZFKFNQ
RUVDSFJFQ09HTklaRVIpCisgICAgaWYgKHNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgPT0gU2hv
dWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6WWVzKQorICAgICAgICBzdG9wUmVjb2duaXRpb24oKTsK
KyAgICBlbHNlCisgICAgICAgIGFib3J0UmVjb2duaXRpb24oKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQpOworICAgIG1fZGVsZWdhdGVDYWxsYmFj
ayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgcmVzZXQoKTsKKyNlbmRpZgog
fQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6
cmVzZXQoKQogewotICAgIHJlc2V0KCk7CisgICAgbV9jbGllbnRJZGVudGlmaWVyID0gV1RGOjpu
dWxsb3B0OworICAgIHN0b3BDYXB0dXJlKCk7CisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQor
ICAgIHJlc2V0UmVjb2duaXRpb24oKTsKKyNlbmRpZgorfQogCi0gICAgbV9jbGllbnRJZGVudGlm
aWVyID0gaWRlbnRpZmllcjsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OlN0YXJ0KSk7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0SWZOZWVkZWQo
KQoreworICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CiAKLSAg
ICBzdGFydEludGVybmFsKCk7CisgICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJy
b3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgIkFub3RoZXIgcmVxdWVz
dCBpcyBzdGFydGVkIiB9OworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6Y3JlYXRlRXJyb3IoKm1fY2xpZW50SWRlbnRpZmllciwgZXJyb3IpKTsKKworICAg
IHJlc2V0KCk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRJbnRlcm5hbCgpCit2
b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0Q2FwdHVyZSgpCiB7CisgICAgLy8gTWF5IGhhdmUg
ZmFpbGVkIHdoZW4gc3RhcnQgcmVjb2duaXRpb24uCisgICAgaWYgKCFtX2NsaWVudElkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8gZGF0YUNhbGxiYWNrID0gW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHRpbWUsIGNvbnN0IGF1dG8mIGRhdGEs
IGNvbnN0IGF1dG8mIGRlc2NyaXB0aW9uLCBhdXRvIHNhbXBsZUNvdW50KSB7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gY3JlYXRl
QXVkaW9TYW1wbGVCdWZmZXIoZGF0YSwgZGVzY3JpcHRpb24sIFBBTDo6dG9DTVRpbWUodGltZSks
IHNhbXBsZUNvdW50KTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CisgICAgICAgIHdl
YWtUaGlzLT5hdWRpb1NhbXBsZXNBdmFpbGFibGUoYnVmZmVyKTsKICNlbHNlCiAgICAgICAgIFVO
VVNFRF9QQVJBTSh0aW1lKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwpAQCAtODQsMzMg
KzEyNCwxNiBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0SW50ZXJuYWwoKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIgJiYgbV9j
bGllbnRJZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKSk7Ci0g
ICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwotCiAgICAgICAgIGlmICh1cGRhdGUu
dHlwZSgpID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IpCi0gICAgICAgICAg
ICBtX3NvdXJjZSA9IG51bGxwdHI7CisgICAgICAgICAgICByZXNldCgpOworCisgICAgICAgIG1f
ZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwogICAgIH07CiAKICAgICBtX3NvdXJjZSA9IG1ha2VV
bmlxdWU8U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlPigqbV9jbGllbnRJZGVudGlmaWVy
LCBXVEZNb3ZlKGRhdGFDYWxsYmFjayksIFdURk1vdmUoc3RhdGVVcGRhdGVDYWxsYmFjaykpOwog
fQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3Vs
dCBzaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0KQotewotICAgIGlmICghbV9jbGllbnRJZGVudGlm
aWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9wSW50ZXJuYWwoKTsKLQotICAgIGlmIChz
aG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0ID09IFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQ6Olll
cykgewotICAgICAgICAvLyBUT0RPOiBnZW5lcmF0ZSByZWFsIHJlc3VsdCB3aGVuIHNwZWVjaCBy
ZWNvZ25pdGlvbiBiYWNrZW5kIGlzIGltcGxlbWVudGVkLgotICAgICAgICBWZWN0b3I8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHREYXRhPiByZXN1bHREYXRhczsKLSAgICAgICAgbV9kZWxlZ2F0ZUNh
bGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVSZXN1bHQoKm1fY2xpZW50SWRl
bnRpZmllciwgcmVzdWx0RGF0YXMpKTsKLSAgICB9Ci0KLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2so
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwotICAgIG1fY2xpZW50SWRlbnRpZmllciA9
IFdURjo6bnVsbG9wdDsKLX0KLQotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wSW50ZXJuYWwo
KQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wQ2FwdHVyZSgpCiB7CiAgICAgaWYgKCFtX3Nv
dXJjZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXplci5oCmluZGV4IGU2ZjEzZmVlODRhNTMzYWYwZjA0ZTA3NjljMWFl
MDk1YmU1YmZmM2YuLmQ4NGFmNTZkMzYyMzBkMGUxZDFjYjRlMTczZGYxMGVhOTMyMDgyYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgK
QEAgLTI4LDYgKzI4LDExIEBACiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291
cmNlLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
Zmllci5oIgogCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KK09CSkNfQ0xBU1MgV2ViU3BlZWNoUmVjb2duaXplclRhc2s7CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTsKQEAg
LTM5LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVj
aFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+U3Bl
ZWNoUmVjb2duaXplcigpID0gZGVmYXVsdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rh
cnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91
cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKTsKICAgICBl
bnVtIGNsYXNzIFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgeyBObywgWWVzIH07CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdG9wKFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgPSBTaG91bGRH
ZW5lcmF0ZUZpbmFsUmVzdWx0OjpZZXMpOwogCkBAIC00NywxMiArNTIsMjUgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZvaWQgcmVzZXQoKTsKLSAgICB2b2lkIHN0YXJ0SW50ZXJuYWwoKTsK
LSAgICB2b2lkIHN0b3BJbnRlcm5hbCgpOworICAgIHZvaWQgYWJvcnRJZk5lZWRlZCgpOworICAg
IHZvaWQgc3RhcnRDYXB0dXJlKCk7CisgICAgdm9pZCBzdG9wQ2FwdHVyZSgpOworCisjaWYgSEFW
RShTUEVFQ0hSRUNPR05JWkVSKQorICAgIHZvaWQgc3RhcnRSZWNvZ25pdGlvbihTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlk
ZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3Qg
bWF4QWx0ZXJuYXRpdmVzKTsKKyAgICB2b2lkIHN0b3BSZWNvZ25pdGlvbigpOworICAgIHZvaWQg
YWJvcnRSZWNvZ25pdGlvbigpOworICAgIHZvaWQgcmVzZXRSZWNvZ25pdGlvbigpOworICAgIHZv
aWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4pOwor
I2VuZGlmCiAKICAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyPiBtX2NsaWVudElkZW50aWZpZXI7CiAgICAgRGVsZWdhdGVDYWxsYmFjayBtX2Rl
bGVnYXRlQ2FsbGJhY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0aW9uQ2Fw
dHVyZVNvdXJjZT4gbV9zb3VyY2U7CisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAg
UmV0YWluUHRyPFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrPiBtX3Rhc2s7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTQ4MGEyZDA2
MTM1Mjc4MDE0YmIxNDYyNGU3MDkyNzU0ZjEwMGE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCkBAIC0wLDAg
KzEsMjkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTcGVl
Y2hSZWNvZ25pemVyLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKKyNpbXBvcnQg
IlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+Cisj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgorI2ltcG9y
dCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2lt
cG9ydCA8U3BlZWNoL1NGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0X1ByaXZhdGUuaD4KKyNlbmRp
ZgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdlYlNwZWVjaFJlY29n
bml6ZXJUYXNrIDogTlNPYmplY3Q8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tEZWxlZ2F0ZSwgU0ZT
cGVlY2hSZWNvZ25pemVyRGVsZWdhdGU+IHsKK0Bwcml2YXRlCisgICAgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBfaWRlbnRpZmllcjsKKyAgICBi
b29sIF9kb011bHRpcGxlUmVjb2duaXRpb25zOworICAgIHVpbnQ2NF90IF9tYXhBbHRlcm5hdGl2
ZXM7CisgICAgQmxvY2tQdHI8dm9pZChjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSYpPiBfZGVsZWdhdGVDYWxsYmFjazsKKyAgICBSZXRhaW5QdHI8U0ZTcGVlY2hSZWNvZ25p
emVyPiBfcmVjb2duaXplcjsKKyAgICBSZXRhaW5QdHI8U0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29n
bml0aW9uUmVxdWVzdD4gX3JlcXVlc3Q7CisgICAgV2Vha09iakNQdHI8U0ZTcGVlY2hSZWNvZ25p
dGlvblRhc2s+IF90YXNrOworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hTdGFydDsKKyAgICBib29s
IF9oYXNTZW50U3BlZWNoRW5kOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlm
aWVyOihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
KWlkZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxl
UmVjb2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wp
aW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZl
cyBkZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlJikpY2FsbGJhY2s7CistICh2b2lkKWNhbGxiYWNrV2l0aFJlc3VsdDooU0ZUcmFu
c2NyaXB0aW9uICopdHJhbnNjcmlwdGlvbiBpc0ZpbmFsOihCT09MKWlzRmluYWw7CistICh2b2lk
KWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyOwor
LSAodm9pZClhYm9ydDsKKy0gKHZvaWQpc3RvcDsKKy0gKHZvaWQpc2VuZFNwZWVjaFN0YXJ0SWZO
ZWVkZWQ7CistICh2b2lkKXNlbmRTcGVlY2hFbmRJZk5lZWRlZDsKKworQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV2ViU3BlZWNoUmVjb2duaXplclRhc2sKKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIg
ZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1
bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylh
bHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaWRlbnRpZmllciA9IGlkZW50
aWZpZXI7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKworICAgIGlmICghW2xv
Y2FsZUlkZW50aWZpZXIgbGVuZ3RoXSkKKyAgICAgICAgX3JlY29nbml6ZXIgPSBhZG9wdE5TKFtb
U0ZTcGVlY2hSZWNvZ25pemVyIGFsbG9jXSBpbml0XSk7CisgICAgZWxzZQorICAgICAgICBfcmVj
b2duaXplciA9IGFkb3B0TlMoW1tTRlNwZWVjaFJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoTG9j
YWxlOltOU0xvY2FsZSBsb2NhbGVXaXRoTG9jYWxlSWRlbnRpZmllcjpsb2NhbGVJZGVudGlmaWVy
XV0pOworICAgIGlmICghX3JlY29nbml6ZXIpIHsKKyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBjcmVhdGUg
cmVjZ29uaXplciB3aXRoIGxvY2FsZSAnIiwgU3RyaW5nKGxvY2FsZUlkZW50aWZpZXIpLCAiJyIp
IH07CisgICAgICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGU6OmNyZWF0ZUVycm9yKF9pZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIF9kZWxlZ2F0ZUNh
bGxiYWNrKHVwZGF0ZSk7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgICAgICAKKyAg
ICBbX3JlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgaWYgKCFbX3JlY29nbml6ZXIu
Z2V0KCkgaXNBdmFpbGFibGVdKSB7CisgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6
OlNlcnZpY2VOb3RBbGxvd2VkLCAiU3BlZWNoIHJlY29nbml6ZXIgaXMgbm90IGF2YWlsYWJsZSIg
fTsKKyAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIsIGVycm9yKTsKKyAgICAgICAgX2RlbGVnYXRlQ2Fs
bGJhY2sodXBkYXRlKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBfZG9NdWx0
aXBsZVJlY29nbml0aW9ucyA9IGNvbnRpbnVvdXM7CisKKyAgICBpZiAoIWFsdGVybmF0aXZlcykK
KyAgICAgICAgYWx0ZXJuYXRpdmVzID0gMTsKKyAgICBfbWF4QWx0ZXJuYXRpdmVzID0gYWx0ZXJu
YXRpdmVzOworCisgICAgX3JlcXVlc3QgPSBhZG9wdE5TKFtbU0ZTcGVlY2hBdWRpb0J1ZmZlclJl
Y29nbml0aW9uUmVxdWVzdCBhbGxvY10gaW5pdF0pOworICAgIGlmIChbX3JlY29nbml6ZXIgc3Vw
cG9ydHNPbkRldmljZVJlY29nbml0aW9uXSkKKyAgICAgICAgW19yZXF1ZXN0IHNldFJlcXVpcmVz
T25EZXZpY2VSZWNvZ25pdGlvbjpZRVNdOworICAgIFtfcmVxdWVzdCBzZXRTaG91bGRSZXBvcnRQ
YXJ0aWFsUmVzdWx0czppbnRlcmltUmVzdWx0c107CisgICAgW19yZXF1ZXN0IHNldFRhc2tIaW50
OlNGU3BlZWNoUmVjb2duaXRpb25UYXNrSGludERpY3RhdGlvbl07CisgICAgW19yZXF1ZXN0IHNl
dERldGVjdE11bHRpcGxlVXR0ZXJhbmNlczpZRVNdOworICAgIFtfcmVxdWVzdCBfc2V0TWF4aW11
bVJlY29nbml0aW9uRHVyYXRpb246NjAgKiA2MF07CisgICAgX3Rhc2sgPSBbX3JlY29nbml6ZXIu
Z2V0KCkgcmVjb2duaXRpb25UYXNrV2l0aFJlcXVlc3Q6X3JlcXVlc3QuZ2V0KCkgZGVsZWdhdGU6
c2VsZl07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpY2FsbGJhY2tXaXRoUmVzdWx0
OihTRlRyYW5zY3JpcHRpb24gKil0cmFuc2NyaXB0aW9uIGlzRmluYWw6KEJPT0wpaXNGaW5hbAor
eworICAgIFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+IGRhdGFz
OworICAgIGF1dG8gc2VnbWVudHMgPSBbdHJhbnNjcmlwdGlvbiBzZWdtZW50c107CisgICAgZm9y
IChTRlRyYW5zY3JpcHRpb25TZWdtZW50KiBzZWdtZW50IGluIHNlZ21lbnRzKSB7CisgICAgICAg
IC8vIFNlZ21lbnQgY29uZmlkZW5jZSBpcyByZXBvcnRlZCAwIHdoZW4gcmVzdWx0IGlzIG5vdCBm
aW5hbC4KKyAgICAgICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhIGRhdGE7
CisgICAgICAgIGRhdGEuaXNGaW5hbCA9IGlzRmluYWw7CisgICAgICAgIGRhdGEuYWx0ZXJuYXRp
dmVzLmFwcGVuZChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YSB7IFtb
c2VnbWVudCBzdWJzdHJpbmddIFVURjhTdHJpbmddLCBbc2VnbWVudCBjb25maWRlbmNlXSB9KTsK
KyAgICAgICAgZm9yIChOU1N0cmluZyogc2VnbWVudEFsdGVybmF0aXZlIDogW3NlZ21lbnQgYWx0
ZXJuYXRpdmVTdWJzdHJpbmdzXSkgeworICAgICAgICAgICAgaWYgKGRhdGEuYWx0ZXJuYXRpdmVz
LnNpemUoKSA9PSBfbWF4QWx0ZXJuYXRpdmVzKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgLy8gU2V0IGNvbmZpZGVuY2UgMCBzaW5jZSBpdCBpcyB1bmtub3duLgorICAgICAg
ICAgICAgZGF0YS5hbHRlcm5hdGl2ZXMuYXBwZW5kKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
QWx0ZXJuYXRpdmVEYXRhIHsgW3NlZ21lbnRBbHRlcm5hdGl2ZSBVVEY4U3RyaW5nXSwgMC4wIH0p
OworICAgICAgICB9CisgICAgICAgIGRhdGFzLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICB9
CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6
OmNyZWF0ZVJlc3VsdChfaWRlbnRpZmllciwgZGF0YXMpKTsKK30KKworLSAodm9pZClhdWRpb1Nh
bXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgoreworICAgIFtf
cmVxdWVzdCBhcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcjpzYW1wbGVCdWZmZXJdOworfQorCistICh2
b2lkKWFib3J0Cit7CisgICAgaWYgKCFfdGFzayB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3BlZWNo
UmVjb2duaXRpb25UYXNrU3RhdGVDb21wbGV0ZWQgfHwgW190YXNrIHN0YXRlXSA9PSBTRlNwZWVj
aFJlY29nbml0aW9uVGFza1N0YXRlQ2FuY2VsaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBb
c2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAgIFtfcmVxdWVzdCBlbmRBdWRpb107CisK
KyAgICBbX3Rhc2sgY2FuY2VsXTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW3NlbGYgc2Vu
ZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICBbX3JlcXVlc3QgZW5kQXVkaW9dOworCisgICAgaWYg
KCEhX3Rhc2spCisgICAgICAgIFtfdGFzayBmaW5pc2hdOworfQorCistICh2b2lkKXNlbmRTcGVl
Y2hTdGFydElmTmVlZGVkCit7CisgICAgaWYgKF9oYXNTZW50U3BlZWNoU3RhcnQpCisgICAgICAg
IHJldHVybjsKKworICAgIF9oYXNTZW50U3BlZWNoU3RhcnQgPSB0cnVlOworICAgIF9kZWxlZ2F0
ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50
aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoU3RhcnQp
KTsKK30KKworLSAodm9pZClzZW5kU3BlZWNoRW5kSWZOZWVkZWQKK3sKKyAgICBpZiAoIV9oYXNT
ZW50U3BlZWNoU3RhcnQgfHwgX2hhc1NlbnRTcGVlY2hFbmQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIF9oYXNTZW50U3BlZWNoRW5kID0gdHJ1ZTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaEVuZCkpOworfQorCisjcHJhZ21h
IG1hcmsgU0ZTcGVlY2hSZWNvZ25pemVyRGVsZWdhdGUKKworLSAodm9pZClzcGVlY2hSZWNvZ25p
emVyOihTRlNwZWVjaFJlY29nbml6ZXIgKilzcGVlY2hSZWNvZ25pemVyIGF2YWlsYWJpbGl0eURp
ZENoYW5nZTooQk9PTClhdmFpbGFibGUKK3sKKyAgICBpZiAoYXZhaWxhYmxlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIV90YXNrKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGVy
cm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxsb3dlZCwgIlNwZWVjaCByZWNvZ25pdGlv
biBzZXJ2aWNlIGJlY29tZXMgdW5hdmFpbGFibGUiIH07CisgICAgYXV0byB1cGRhdGUgPSBXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIsIGVy
cm9yKTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOworfQorCisjcHJhZ21hIG1hcmsg
U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tEZWxlZ2F0ZQorCistICh2b2lkKXNwZWVjaFJlY29nbml0
aW9uRGlkRGV0ZWN0U3BlZWNoOihTRlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sKK3sKKyAg
ICAvLyBGSVhNRTogVGhpcyBpcyBub3QgY2FsbGVkLgorICAgIFtzZWxmIHNlbmRTcGVlY2hTdGFy
dElmTmVlZGVkXTsKK30KKworLy8gaW50ZXJpbSByZXN1bHRzIG9mIHNvbWUgdXR0ZXJhbmNlCist
ICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFzazooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0
YXNrIGRpZEh5cG90aGVzaXplVHJhbnNjcmlwdGlvbjooU0ZUcmFuc2NyaXB0aW9uICopdHJhbnNj
cmlwdGlvbgoreworICAgIFtzZWxmIHNlbmRTcGVlY2hTdGFydElmTmVlZGVkXTsKKyAgICBbc2Vs
ZiBjYWxsYmFja1dpdGhSZXN1bHQ6dHJhbnNjcmlwdGlvbiBpc0ZpbmFsOk5PXTsKK30KKworLy8g
ZmluYWwgcmVzdWx0cyBvZiBzb21lIHV0dGVyYW5jZQorLSAodm9pZClzcGVlY2hSZWNvZ25pdGlv
blRhc2s6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzayBkaWRGaW5pc2hSZWNvZ25pdGlv
bjooU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCAqKXJlY29nbml0aW9uUmVzdWx0Cit7CisgICAg
W3NlbGYgY2FsbGJhY2tXaXRoUmVzdWx0OnJlY29nbml0aW9uUmVzdWx0LmJlc3RUcmFuc2NyaXB0
aW9uIGlzRmluYWw6WUVTXTsKKyAgICBpZiAoIV9kb011bHRpcGxlUmVjb2duaXRpb25zKSB7Cisg
ICAgICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgICAgIF9kZWxlZ2F0ZUNh
bGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZp
ZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgICAg
IFt0YXNrIGNhbmNlbF07CisgICAgfQorfQorCisvLyBDYWxsZWQgd2hlbiB0aGUgdGFzayBpcyBu
byBsb25nZXIgYWNjZXB0aW5nIG5ldyBhdWRpbyBidXQgbWF5IGJlIGZpbmlzaGluZyBmaW5hbCBw
cm9jZXNzaW5nCistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFza0ZpbmlzaGVkUmVhZGluZ0F1
ZGlvOihTRlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sKK3sKKyAgICAvLyBGSVhNRTogVGhp
cyBpcyBub3QgY2FsbGVkLgorICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07Cit9CisK
Ky0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrV2FzQ2FuY2VsbGVkOihTRlNwZWVjaFJlY29n
bml0aW9uVGFzayAqKXRhc2sKK3sKKyAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOwor
ICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
RW5kKSk7Cit9CisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrOihTRlNwZWVjaFJlY29n
bml0aW9uVGFzayAqKXRhc2sgZGlkRmluaXNoU3VjY2Vzc2Z1bGx5OihCT09MKXN1Y2Nlc3NmdWxs
eQoreworICAgIGlmIChzdWNjZXNzZnVsbHkpIHsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2so
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxv
d2VkLCBbdGFzay5lcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiBVVEY4U3RyaW5nXSB9OworICAg
IGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVy
cm9yKF9pZGVudGlmaWVyLCBlcnJvcik7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsK
K30KKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0UmVjb2duaXRpb24oU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywg
dWludDY0X3QgYWx0ZXJuYXRpdmVzKQoreworICAgIG1fdGFzayA9IGFkb3B0TlMoW1tXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzayBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIgbG9j
YWxlOmxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250aW51b3VzIHJl
cG9ydEludGVyaW1SZXN1bHRzOmludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczphbHRlcm5h
dGl2ZXMgZGVsZWdhdGVDYWxsYmFjazpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KV0oY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkgeworICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh1cGRhdGUudHlw
ZSgpID09IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IgfHwgdXBk
YXRlLnR5cGUoKSA9PSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkK
KyAgICAgICAgICAgIHJlc2V0KCk7CisKKyAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0
ZSk7CisgICAgfV0pOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlv
bigpCit7CisgICAgQVNTRVJUKG1fdGFzayk7CisgICAgW21fdGFzay5nZXQoKSBzdG9wXTsKK30K
Kwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKCkKK3sKKyAgICBpZiAo
IW1fdGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fdGFzay5nZXQoKSBhYm9ydF07Cit9
CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbigpCit7CisgICAgaWYg
KCFtX3Rhc2spCisgICAgICAgIHJldHVybjsKKworICAgIFttX3Rhc2suZ2V0KCkgYWJvcnRdOwor
ICAgIG1fdGFzayA9IG51bGxwdHI7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gYnVmZmVyKQorewor
ICAgIFttX3Rhc2suZ2V0KCkgYXVkaW9TYW1wbGVzQXZhaWxhYmxlOmJ1ZmZlci5nZXQoKV07Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dO
SVpFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGM4ZTVhZjFmZWYxMDVmMzRjODE3ODE3
MmZjMWRjZDY3ZGU0ZTdmNjUuLjE1MThiZTcyNmMyNzc2YmYwOGRjMGQyY2NhY2JhZmM5Yzk2ZmUx
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtOTIsNiArOTIsNyBAQCBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAKIE1vZHVsZXMvcGx1Z2lu
cy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudC5jcHAKK01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2Nv
YS5tbQogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQog
YWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQogYWNjZXNzaWJpbGl0eS9pb3Mv
QWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY2NjRmNGNjOTEwMzY3NjI4ZDM5YzRmOTdl
YzllYWRjZjM3NGRhZDYuLmQ5ZGJhYjg4MDE3NzgzMTRkODAyMWI4ZGQwYzQ4MjIyNDdkYzVlYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTExMzA5LDYgKzExMzA5LDcgQEAKIAkJOTMxNkRERjgyNDBDNjRCMzAwOTM0MEFBIC8q
IFNpbXBsZVJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZVJh
bmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMTZEREZBMjQwQzY0QjMwMDkz
NDBBQSAvKiBTaW1wbGVSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaW1wbGVSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMTZE
REZFMjQwQzY0RjgwMDkzNDBBQSAvKiBCb3VuZGFyeVBvaW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJvdW5kYXJ5UG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTMxOTM1NzUyNTdCNkE0NDAwM0Y2NkQ0IC8qIFNwZWVjaFJlY29nbml6ZXJDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml6ZXJDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQUUzQjgxRkI4MEVBRTAwRjVFRkIyIC8qIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZUluV3JhcHBlZE9iamVj
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzFCQ0M2MDExMjRERkNCMDBCRTcw
REQgLyogTWVkaWFDYW5TdGFydExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzFDQkQwNjE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlTm9kZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTczOCw2ICsyNTczOSw3IEBACiAJ
CQkJOTNENkI3NkQyNTRCOEUxQjAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgg
Ki8sCiAJCQkJOTM5QzBEMjMyNTY0OEM0RTAwQjMyMTFCIC8qIFNwZWVjaFJlY29nbml6ZXIuY3Bw
ICovLAogCQkJCTkzOUMwRDIxMjU2NDhDMzkwMEIzMjExQiAvKiBTcGVlY2hSZWNvZ25pemVyLmgg
Ki8sCisJCQkJOTMxOTM1NzUyNTdCNkE0NDAwM0Y2NkQ0IC8qIFNwZWVjaFJlY29nbml6ZXJDb2Nv
YS5tbSAqLywKIAkJCQlBQTJBNUFCRDE2QTQ4NUQ1MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lz
LmNwcCAqLywKIAkJCQlBQTJBNUFCRTE2QTQ4NUQ1MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lz
LmggKi8sCiAJCQkJQUEyQTVBQkYxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpcy5p
ZGwgKi8sCkBAIC0zMjE1OCw2ICszMjE2MCw3IEBACiAJCQkJQ0RGNzQ4M0YxOEZFQkNFQzAwMDZF
Q0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEyQTEw
NTAxNjY0NDRGRDAwOEZBMzExIC8qIEdyaWRUcmFja1NpemUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxMkRFNzE4MUU0Qjc0QTYwMEY5QUNDRiAvKiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaCBp
biBIZWFkZXJzICovLAorCQkJCTQxQkJBODY2MjU3RTM3M0IwMEFDN0Y2RCAvKiBIMjY0VXRpbHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI2RUE4OUE3MUI0RjJCNzUwMDhDNUZEMiAvKiBIYXNoYWJs
ZUFjdGlvbkxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0ODJCNzQ2MTE5OEMzNTQwMEJGQjAw
NSAvKiBIYXNoQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzQ4QkUwMTJDQkYy
REMwMDFGQkE0MSAvKiBIYXNoVG9vbHMuaCBpbiBIZWFkZXJzICovLApAQCAtMzM4OTcsNyArMzM5
MDAsNiBAQAogCQkJCTVFQkI4OTM5MUM3N0MzOTkwMEM2NUQ0MSAvKiBQZWVyTWVkaWFEZXNjcmlw
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE3Q0M5NkIxMjA3NkQ3MzAwMUQ0NTg4IC8qIFBl
bmRpbmdTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzRkEzODY0MUQ3MTgxMkQwMEFBNTk1
MCAvKiBQZW5kaW5nU2NyaXB0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUJCQTg2NjI1
N0UzNzNCMDBBQzdGNkQgLyogSDI2NFV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTg0NEQw
NTExRDNDMThFMDAxNDA2NUMgLyogUGVyZm9ybWFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
QkUzNDAxMTUwNThDQjIwMENFMEZEOCAvKiBQZXJmb3JtYW5jZUVudHJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBRDVBMEMyNTFERUNBQ0NDMDA3MDcwNTQgLyogUGVyZm9ybWFuY2VMb2dnaW5nLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uU2VydmVyLmNwcAppbmRleCA5ZjYwMGQzZjVjZGM2YzMyYzU0OGEwYTA5YWIwMmJj
MTQ1MzQ1MjQ0Li45MmJhNTdmNDFkYTk1MGM1N2M3ODI4YmJjZDM2ZGRjMGRmYTljODU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
Y3BwCkBAIC03MCwxMSArNzAsMTEgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVx
dWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbmkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGhhbmRsZVJlcXVlc3QoaWRlbnRpZmll
cik7CisgICAgICAgIGhhbmRsZVJlcXVlc3QoKndlYWtSZXF1ZXN0KTsKICAgICB9KTsKIH0KIAot
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIp
Cit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1fcmVjb2duaXpl
cikgewogICAgICAgICBtX3JlY29nbml6ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI+KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiB1cGRh
dGUpIHsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFu
ZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24KICAgICAgICAg
fSk7CiAgICAgfQogCi0gICAgbV9yZWNvZ25pemVyLT5zdGFydChjbGllbnRJZGVudGlmaWVyKTsK
KyAgICBtX3JlY29nbml6ZXItPnN0YXJ0KHJlcXVlc3QuY2xpZW50SWRlbnRpZmllcigpLCByZXF1
ZXN0LmxhbmcoKSwgcmVxdWVzdC5jb250aW51b3VzKCksIHJlcXVlc3QuaW50ZXJpbVJlc3VsdHMo
KSwgcmVxdWVzdC5tYXhBbHRlcm5hdGl2ZXMoKSk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OnN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggYTdmNzZkMzhlZTUwMWU1ODJmNzlh
NTQ0ZmEwMjdjYjBiMzIyOGZkNy4uNGNjZjE2OTcyMDZmYWY3NWNkNjE5OGI3ODRmNzU1YWM3NjAz
NWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lk
IHJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3QmKTsKLSAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CisgICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc2VuZFVwZGF0ZShX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3I+ID0gV1RGOjpudWxsb3B0LCBPcHRpb25hbDxWZWN0b3I8V2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBXVEY6Om51bGxvcHQpOwogICAgIHZv
aWQgc2VuZFVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415587</attachid>
            <date>2020-12-07 14:34:51 -0800</date>
            <delta_ts>2020-12-08 00:54:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201207143450.patch</filename>
            <type>text/plain</type>
            <size>30480</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQxODJjZmM1Mzc1MTVm
MzcyNTdlYzc5ZjU0ZmUwZWRjZjdjNWU4ZS4uZDhhZDUzY2E0ZTdjODM2YmQ0NzBhNDkwYzA0ZTVk
ZTIxMzBhNjJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTEyLTA3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYW51
YWxseSB0ZXN0ZWQgaW4gTWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9X
ZWJDb3JlLnhjY29uZmlnOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyOjphYm9ydElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OnN0YXJ0Q2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpz
dG9wQ2FwdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydElu
dGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0
b3BJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2Nv
YS5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGluaXRXaXRo
SWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBvcnRJbnRlcmltUmVz
dWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2sgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmluYWw6XSk6CisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZTpdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToKKyAgICAgICAgKC1b
V2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNv
Z25pemVyVGFzayBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2sgc3BlZWNoUmVjb2duaXplcjphdmFpbGFiaWxpdHlEaWRDaGFu
Z2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29nbml0
aW9uRGlkRGV0ZWN0U3BlZWNoOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFz
ayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkSHlwb3RoZXNpemVUcmFuc2NyaXB0aW9uOl0pOgor
ICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6
ZGlkRmluaXNoUmVjb2duaXRpb246XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrIHNwZWVjaFJlY29nbml0aW9uVGFza0ZpbmlzaGVkUmVhZGluZ0F1ZGlvOl0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2tXYXNDYW5j
ZWxsZWQ6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29n
bml0aW9uVGFzazpkaWRGaW5pc2hTdWNjZXNzZnVsbHk6XSk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXplcjo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAyMC0xMi0wNyAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBzaXplIG9mIHRoZSByZXN1bHQgb2Yg
QVhUZXh0TWFya2VyR2V0Qnl0ZVB0ciBpcyBlcXVhbCB0byB0aGUgc2l6ZSBvZiBUZXh0TWFya2Vy
RGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNjYxN2YzZGY0ZGE3MWU4ZGQyMmI4MmI1ZmFkZDlhNmYyNmUxM2Ex
ZC4uOTZjOTlmYTYyODczZDYyZDM4ZmQyOGUxZDg3Y2JhOWY3NWU4NzFlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMC0xMi0wNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVx
dWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5oOgorCiAyMDIwLTEyLTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzYW5kYm94IHRlbGVtZXRyeSBmb3IgbGlrZWx5
IHVudXNlZCBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvV2ViQ29yZS54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNv
cmUueGNjb25maWcKaW5kZXggZGI0NTc3YmIzMjIwYWMyMTRmOTkwNWRiODMzYmRmY2M2NTlmYTY5
Mi4uYTRkY2JhN2I4ZjEwMWY1NTU0YmFjOTkyMWQ3YmFlMDhjNDMyNjUzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCkBAIC0xMjEsOCArMTIx
LDE0IEBAIFdLX0NPUkVfSU1BR0VfTERGTEFHUyA9IC1mcmFtZXdvcmsgQ29yZUltYWdlOwogV0tf
VVJMX0ZPUk1BVFRJTkdfTERGTEFHUyA9ICQoV0tfVVJMX0ZPUk1BVFRJTkdfTERGTEFHU18kKFdL
X0hBVkVfVVJMX0ZPUk1BVFRJTkcpKTsKIFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1NfWUVTID0g
LWZyYW1ld29yayBVUkxGb3JtYXR0aW5nOwogCitXS19TUEVFQ0hfTERGTEFHUyA9ICQoV0tfU1BF
RUNIX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CitXS19TUEVFQ0hfTERGTEFHU19tYWNv
c3ggPSAtZnJhbWV3b3JrIFNwZWVjaDsKK1dLX1NQRUVDSF9MREZMQUdTX2lwaG9uZW9zID0gLWZy
YW1ld29yayBTcGVlY2g7CitXS19TUEVFQ0hfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAtZnJh
bWV3b3JrIFNwZWVjaDsKK1dLX1NQRUVDSF9MREZMQUdTX21hY2NhdGFseXN0ID0gLWZyYW1ld29y
ayBTcGVlY2g7CisKIC8vIEZJWE1FOiBSZWR1Y2UgdGhlIG51bWJlciBvZiBhbGxvd2FibGVfY2xp
ZW50cyA8cmRhcjovL3Byb2JsZW0vMzE4MjM5Njk+Ci1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0
ZWQpICQoV0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLX0xERkxBR1MpIC1sc3FsaXRlMyAtbG9iamMg
LWxBTkdMRSAtYWxsb3dhYmxlX2NsaWVudCBXZWJDb3JlVGVzdFN1cHBvcnQgLWFsbG93YWJsZV9j
bGllbnQgV2ViS2l0TGVnYWN5IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJQ
QUwuYSAtZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3Jr
IENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAt
ZnJhbWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBNZXRhbCAk
KE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpICQoT1RIRVJfTERGTEFH
U19QTEFURk9STV8kKFdLX1BMQVRGT1JNX05BTUUpKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdL
X0FQUFNVUFBPUlRfTERGTEFHUykgJChXS19BVURJT19VTklUX0xERkxBR1MpICQoV0tfQ0FSQk9O
X0xERkxBR1MpICQoV0tfQ09SRV9VSV9MREZMQUdTKSAkKFdLX0RBVEFfREVURUNUT1JTX0NPUkVf
TERGTEFHUykgJChXS19HUkFQSElDU19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0lPU1VSRkFDRV9B
Q0NFTEVSQVRPUl9MREZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZMQUdTKSAkKFdLX01PQklMRV9D
T1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RBTFRfTERGTEFHUykgJChXS19O
RVRXT1JLX0VYVEVOU0lPTl9MRF9GTEFHUykgJChXS19TWVNURU1fQ09ORklHVVJBVElPTl9MREZM
QUdTKSAkKFdLX0NPUkVfSU1BR0VfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdT
KTsKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgJChXS19SRUxPQ0FUQUJMRV9GUkFNRVdP
UktfTERGTEFHUykgLWxzcWxpdGUzIC1sb2JqYyAtbEFOR0xFIC1hbGxvd2FibGVfY2xpZW50IFdl
YkNvcmVUZXN0U3VwcG9ydCAtYWxsb3dhYmxlX2NsaWVudCBXZWJLaXRMZWdhY3kgLWZvcmNlX2xv
YWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlBBTC5hIC1mcmFtZXdvcmsgQ0ZOZXR3b3JrIC1m
cmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29y
ZVRleHQgLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsgSU9TdXJmYWNlIC1mcmFtZXdv
cmsgSW1hZ2VJTyAtZnJhbWV3b3JrIE1ldGFsICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdL
X0NPQ09BX1RPVUNIKSkgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfUExBVEZPUk1fTkFN
RSkpICQoV0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVBQU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FV
RElPX1VOSVRfTERGTEFHUykgJChXS19DQVJCT05fTERGTEFHUykgJChXS19DT1JFX1VJX0xERkxB
R1MpICQoV0tfREFUQV9ERVRFQ1RPUlNfQ09SRV9MREZMQUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJ
Q0VTX0xERkxBR1MpICQoV0tfSU9TVVJGQUNFX0FDQ0VMRVJBVE9SX0xERkxBR1MpICQoV0tfTElC
V0VCUlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19N
T0JJTEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX05FVFdPUktfRVhURU5TSU9OX0xEX0ZMQUdTKSAk
KFdLX1NZU1RFTV9DT05GSUdVUkFUSU9OX0xERkxBR1MpICQoV0tfQ09SRV9JTUFHRV9MREZMQUdT
KSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MpICQoV0tfU1BFRUNIX0xERkxBR1MpOwogCiBP
VEhFUl9MREZMQUdTX1BMQVRGT1JNX2NvY29hdG91Y2ggPSAtYWxsb3dhYmxlX2NsaWVudCBXZWJL
aXQgLWFsbG93YWJsZV9jbGllbnQgaVR1bmVzVSAtYWxsb3dhYmxlX2NsaWVudCBDYXNhYmxhbmNh
IC1hbGxvd2FibGVfY2xpZW50IFJlbW90ZSAtYWxsb3dhYmxlX2NsaWVudCBUVkJvb2tzIC1hbGxv
d2FibGVfY2xpZW50IER1bXBSZW5kZXJUcmVlIC1hbGxvd2FibGVfY2xpZW50IFdlYktpdFRlc3RS
dW5uZXIgLWFsbG93YWJsZV9jbGllbnQgVGVzdFdlYktpdEFQSTsKIE9USEVSX0xERkxBR1NfUExB
VEZPUk1fbWFjb3N4ID0gLXN1Yl9saWJyYXJ5IGxpYm9iamMgLXVtYnJlbGxhIFdlYktpdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAK
aW5kZXggNWJlYjYwNTY0N2IzMjllMjY0ZjgzYzI0OWY1N2MyYTIwODFjMmZkNy4uOWIxMGMwNmZm
YTljZGMyNGFhZDQxZjU1Y2I1MzA5OWVlYjliZTA5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAKQEAgLTQwLDM3ICs0MCw3NyBA
QCBTcGVlY2hSZWNvZ25pemVyOjpTcGVlY2hSZWNvZ25pemVyKERlbGVnYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldCgpCit2b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29s
IGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZl
cykKK3sKKyAgICBhYm9ydElmTmVlZGVkKCk7CisKKyAgICBtX2NsaWVudElkZW50aWZpZXIgPSBp
ZGVudGlmaWVyOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6U3RhcnQpKTsKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyAgICBzdGFydFJlY29n
bml0aW9uKGlkZW50aWZpZXIsIGxvY2FsZUlkZW50aWZpZXIsIGNvbnRpbnVvdXMsIGludGVyaW1S
ZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obG9jYWxl
SWRlbnRpZmllcik7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRpbnVvdXMpOworICAgIFVOVVNFRF9Q
QVJBTShpbnRlcmltUmVzdWx0cyk7CisgICAgVU5VU0VEX1BBUkFNKG1heEFsdGVybmF0aXZlcyk7
CisjZW5kaWYKKworICAgIHN0YXJ0Q2FwdHVyZSgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6
ZXI6OnN0b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCBzaG91bGRHZW5lcmF0ZUZpbmFsUmVz
dWx0KQogewogICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBzdG9w
Q2FwdHVyZSgpOwogCi0gICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgIkFub3RoZXIgcmVxdWVzdCBpcyBz
dGFydGVkIiB9OwotICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlRXJyb3IoKm1fY2xpZW50SWRlbnRpZmllciwgZXJyb3IpKTsKKyNpZiBIQVZFKFNQ
RUVDSFJFQ09HTklaRVIpCisgICAgaWYgKHNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgPT0gU2hv
dWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6WWVzKQorICAgICAgICBzdG9wUmVjb2duaXRpb24oKTsK
KyAgICBlbHNlCisgICAgICAgIGFib3J0UmVjb2duaXRpb24oKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQpOworICAgIG1fZGVsZWdhdGVDYWxsYmFj
ayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgcmVzZXQoKTsKKyNlbmRpZgog
fQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6
cmVzZXQoKQogewotICAgIHJlc2V0KCk7CisgICAgbV9jbGllbnRJZGVudGlmaWVyID0gV1RGOjpu
dWxsb3B0OworICAgIHN0b3BDYXB0dXJlKCk7CisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQor
ICAgIHJlc2V0UmVjb2duaXRpb24oKTsKKyNlbmRpZgorfQogCi0gICAgbV9jbGllbnRJZGVudGlm
aWVyID0gaWRlbnRpZmllcjsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OlN0YXJ0KSk7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0SWZOZWVkZWQo
KQoreworICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CiAKLSAg
ICBzdGFydEludGVybmFsKCk7CisgICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJy
b3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgIkFub3RoZXIgcmVxdWVz
dCBpcyBzdGFydGVkIiB9OworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6Y3JlYXRlRXJyb3IoKm1fY2xpZW50SWRlbnRpZmllciwgZXJyb3IpKTsKKworICAg
IHJlc2V0KCk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRJbnRlcm5hbCgpCit2
b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0Q2FwdHVyZSgpCiB7CisgICAgLy8gTWF5IGhhdmUg
ZmFpbGVkIHdoZW4gc3RhcnQgcmVjb2duaXRpb24uCisgICAgaWYgKCFtX2NsaWVudElkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8gZGF0YUNhbGxiYWNrID0gW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHRpbWUsIGNvbnN0IGF1dG8mIGRhdGEs
IGNvbnN0IGF1dG8mIGRlc2NyaXB0aW9uLCBhdXRvIHNhbXBsZUNvdW50KSB7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gY3JlYXRl
QXVkaW9TYW1wbGVCdWZmZXIoZGF0YSwgZGVzY3JpcHRpb24sIFBBTDo6dG9DTVRpbWUodGltZSks
IHNhbXBsZUNvdW50KTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CisgICAgICAgIHdl
YWtUaGlzLT5hdWRpb1NhbXBsZXNBdmFpbGFibGUoYnVmZmVyKTsKICNlbHNlCiAgICAgICAgIFVO
VVNFRF9QQVJBTSh0aW1lKTsKICAgICAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwpAQCAtODQsMzMg
KzEyNCwxNiBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0SW50ZXJuYWwoKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIgJiYgbV9j
bGllbnRJZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKSk7Ci0g
ICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwotCiAgICAgICAgIGlmICh1cGRhdGUu
dHlwZSgpID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IpCi0gICAgICAgICAg
ICBtX3NvdXJjZSA9IG51bGxwdHI7CisgICAgICAgICAgICByZXNldCgpOworCisgICAgICAgIG1f
ZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwogICAgIH07CiAKICAgICBtX3NvdXJjZSA9IG1ha2VV
bmlxdWU8U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlPigqbV9jbGllbnRJZGVudGlmaWVy
LCBXVEZNb3ZlKGRhdGFDYWxsYmFjayksIFdURk1vdmUoc3RhdGVVcGRhdGVDYWxsYmFjaykpOwog
fQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3Vs
dCBzaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0KQotewotICAgIGlmICghbV9jbGllbnRJZGVudGlm
aWVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9wSW50ZXJuYWwoKTsKLQotICAgIGlmIChz
aG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0ID09IFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQ6Olll
cykgewotICAgICAgICAvLyBUT0RPOiBnZW5lcmF0ZSByZWFsIHJlc3VsdCB3aGVuIHNwZWVjaCBy
ZWNvZ25pdGlvbiBiYWNrZW5kIGlzIGltcGxlbWVudGVkLgotICAgICAgICBWZWN0b3I8U3BlZWNo
UmVjb2duaXRpb25SZXN1bHREYXRhPiByZXN1bHREYXRhczsKLSAgICAgICAgbV9kZWxlZ2F0ZUNh
bGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVSZXN1bHQoKm1fY2xpZW50SWRl
bnRpZmllciwgcmVzdWx0RGF0YXMpKTsKLSAgICB9Ci0KLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2so
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwotICAgIG1fY2xpZW50SWRlbnRpZmllciA9
IFdURjo6bnVsbG9wdDsKLX0KLQotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wSW50ZXJuYWwo
KQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wQ2FwdHVyZSgpCiB7CiAgICAgaWYgKCFtX3Nv
dXJjZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXplci5oCmluZGV4IGU2ZjEzZmVlODRhNTMzYWYwZjA0ZTA3NjljMWFl
MDk1YmU1YmZmM2YuLmQ4NGFmNTZkMzYyMzBkMGUxZDFjYjRlMTczZGYxMGVhOTMyMDgyYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgK
QEAgLTI4LDYgKzI4LDExIEBACiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291
cmNlLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
Zmllci5oIgogCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KK09CSkNfQ0xBU1MgV2ViU3BlZWNoUmVjb2duaXplclRhc2s7CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTsKQEAg
LTM5LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNwZWVj
aFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+U3Bl
ZWNoUmVjb2duaXplcigpID0gZGVmYXVsdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rh
cnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91
cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKTsKICAgICBl
bnVtIGNsYXNzIFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgeyBObywgWWVzIH07CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdG9wKFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgPSBTaG91bGRH
ZW5lcmF0ZUZpbmFsUmVzdWx0OjpZZXMpOwogCkBAIC00NywxMiArNTIsMjUgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZvaWQgcmVzZXQoKTsKLSAgICB2b2lkIHN0YXJ0SW50ZXJuYWwoKTsK
LSAgICB2b2lkIHN0b3BJbnRlcm5hbCgpOworICAgIHZvaWQgYWJvcnRJZk5lZWRlZCgpOworICAg
IHZvaWQgc3RhcnRDYXB0dXJlKCk7CisgICAgdm9pZCBzdG9wQ2FwdHVyZSgpOworCisjaWYgSEFW
RShTUEVFQ0hSRUNPR05JWkVSKQorICAgIHZvaWQgc3RhcnRSZWNvZ25pdGlvbihTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlk
ZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3Qg
bWF4QWx0ZXJuYXRpdmVzKTsKKyAgICB2b2lkIHN0b3BSZWNvZ25pdGlvbigpOworICAgIHZvaWQg
YWJvcnRSZWNvZ25pdGlvbigpOworICAgIHZvaWQgcmVzZXRSZWNvZ25pdGlvbigpOworICAgIHZv
aWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4pOwor
I2VuZGlmCiAKICAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyPiBtX2NsaWVudElkZW50aWZpZXI7CiAgICAgRGVsZWdhdGVDYWxsYmFjayBtX2Rl
bGVnYXRlQ2FsbGJhY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0aW9uQ2Fw
dHVyZVNvdXJjZT4gbV9zb3VyY2U7CisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAg
UmV0YWluUHRyPFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrPiBtX3Rhc2s7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDBlNmE5Zjg4
ZGVmZTAxZTRmMDEzYjRmOWY3YTE5MzlhNTZhOGJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCkBAIC0wLDAg
KzEsMjk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTcGVl
Y2hSZWNvZ25pemVyLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKKyNpbXBvcnQg
IlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+Cisj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgorI2ltcG9y
dCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2lt
cG9ydCA8U3BlZWNoL1NGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0X1ByaXZhdGUuaD4KKyNlbmRp
ZgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdlYlNwZWVjaFJlY29n
bml6ZXJUYXNrIDogTlNPYmplY3Q8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tEZWxlZ2F0ZSwgU0ZT
cGVlY2hSZWNvZ25pemVyRGVsZWdhdGU+IHsKK0Bwcml2YXRlCisgICAgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBfaWRlbnRpZmllcjsKKyAgICBi
b29sIF9kb011bHRpcGxlUmVjb2duaXRpb25zOworICAgIHVpbnQ2NF90IF9tYXhBbHRlcm5hdGl2
ZXM7CisgICAgQmxvY2tQdHI8dm9pZChjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSYpPiBfZGVsZWdhdGVDYWxsYmFjazsKKyAgICBSZXRhaW5QdHI8U0ZTcGVlY2hSZWNvZ25p
emVyPiBfcmVjb2duaXplcjsKKyAgICBSZXRhaW5QdHI8U0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29n
bml0aW9uUmVxdWVzdD4gX3JlcXVlc3Q7CisgICAgV2Vha09iakNQdHI8U0ZTcGVlY2hSZWNvZ25p
dGlvblRhc2s+IF90YXNrOworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hTdGFydDsKKyAgICBib29s
IF9oYXNTZW50U3BlZWNoRW5kOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlm
aWVyOihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
KWlkZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxl
UmVjb2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wp
aW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZl
cyBkZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlJikpY2FsbGJhY2s7CistICh2b2lkKWNhbGxiYWNrV2l0aFJlc3VsdDooU0ZUcmFu
c2NyaXB0aW9uICopdHJhbnNjcmlwdGlvbiBpc0ZpbmFsOihCT09MKWlzRmluYWw7CistICh2b2lk
KWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyOwor
LSAodm9pZClhYm9ydDsKKy0gKHZvaWQpc3RvcDsKKy0gKHZvaWQpc2VuZFNwZWVjaFN0YXJ0SWZO
ZWVkZWQ7CistICh2b2lkKXNlbmRTcGVlY2hFbmRJZk5lZWRlZDsKKworQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV2ViU3BlZWNoUmVjb2duaXplclRhc2sKKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIg
ZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1
bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylh
bHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaWRlbnRpZmllciA9IGlkZW50
aWZpZXI7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKworICAgIGlmICghW2xv
Y2FsZUlkZW50aWZpZXIgbGVuZ3RoXSkKKyAgICAgICAgX3JlY29nbml6ZXIgPSBhZG9wdE5TKFtb
U0ZTcGVlY2hSZWNvZ25pemVyIGFsbG9jXSBpbml0XSk7CisgICAgZWxzZQorICAgICAgICBfcmVj
b2duaXplciA9IGFkb3B0TlMoW1tTRlNwZWVjaFJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoTG9j
YWxlOltOU0xvY2FsZSBsb2NhbGVXaXRoTG9jYWxlSWRlbnRpZmllcjpsb2NhbGVJZGVudGlmaWVy
XV0pOworICAgIGlmICghX3JlY29nbml6ZXIpIHsKKyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsIG1ha2VTdHJpbmcoIkZhaWxlZCB0byBjcmVhdGUg
cmVjZ29uaXplciB3aXRoIGxvY2FsZSAnIiwgU3RyaW5nKGxvY2FsZUlkZW50aWZpZXIpLCAiJyIp
IH07CisgICAgICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGU6OmNyZWF0ZUVycm9yKF9pZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIF9kZWxlZ2F0ZUNh
bGxiYWNrKHVwZGF0ZSk7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgICAgICAKKyAg
ICBbX3JlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgaWYgKCFbX3JlY29nbml6ZXIu
Z2V0KCkgaXNBdmFpbGFibGVdKSB7CisgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6
OlNlcnZpY2VOb3RBbGxvd2VkLCAiU3BlZWNoIHJlY29nbml6ZXIgaXMgbm90IGF2YWlsYWJsZSIg
fTsKKyAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIsIGVycm9yKTsKKyAgICAgICAgX2RlbGVnYXRlQ2Fs
bGJhY2sodXBkYXRlKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBfZG9NdWx0
aXBsZVJlY29nbml0aW9ucyA9IGNvbnRpbnVvdXM7CisKKyAgICBpZiAoIWFsdGVybmF0aXZlcykK
KyAgICAgICAgYWx0ZXJuYXRpdmVzID0gMTsKKyAgICBfbWF4QWx0ZXJuYXRpdmVzID0gYWx0ZXJu
YXRpdmVzOworCisgICAgX3JlcXVlc3QgPSBhZG9wdE5TKFtbU0ZTcGVlY2hBdWRpb0J1ZmZlclJl
Y29nbml0aW9uUmVxdWVzdCBhbGxvY10gaW5pdF0pOworICAgIGlmIChbX3JlY29nbml6ZXIgc3Vw
cG9ydHNPbkRldmljZVJlY29nbml0aW9uXSkKKyAgICAgICAgW19yZXF1ZXN0IHNldFJlcXVpcmVz
T25EZXZpY2VSZWNvZ25pdGlvbjpZRVNdOworICAgIFtfcmVxdWVzdCBzZXRTaG91bGRSZXBvcnRQ
YXJ0aWFsUmVzdWx0czppbnRlcmltUmVzdWx0c107CisgICAgW19yZXF1ZXN0IHNldFRhc2tIaW50
OlNGU3BlZWNoUmVjb2duaXRpb25UYXNrSGludERpY3RhdGlvbl07CisKKyNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorICAgIFtfcmVxdWVzdCBzZXREZXRlY3RNdWx0aXBsZVV0dGVyYW5jZXM6
WUVTXTsKKyAgICBbX3JlcXVlc3QgX3NldE1heGltdW1SZWNvZ25pdGlvbkR1cmF0aW9uOjYwICog
NjBdOworI2VuZGlmCisKKyAgICBfdGFzayA9IFtfcmVjb2duaXplci5nZXQoKSByZWNvZ25pdGlv
blRhc2tXaXRoUmVxdWVzdDpfcmVxdWVzdC5nZXQoKSBkZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAodm9pZCljYWxsYmFja1dpdGhSZXN1bHQ6KFNGVHJhbnNjcmlwdGlv
biAqKXRyYW5zY3JpcHRpb24gaXNGaW5hbDooQk9PTClpc0ZpbmFsCit7CisgICAgVmVjdG9yPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4gZGF0YXM7CisgICAgYXV0byBzZWdt
ZW50cyA9IFt0cmFuc2NyaXB0aW9uIHNlZ21lbnRzXTsKKyAgICBmb3IgKFNGVHJhbnNjcmlwdGlv
blNlZ21lbnQqIHNlZ21lbnQgaW4gc2VnbWVudHMpIHsKKyAgICAgICAgLy8gU2VnbWVudCBjb25m
aWRlbmNlIGlzIHJlcG9ydGVkIDAgd2hlbiByZXN1bHQgaXMgbm90IGZpbmFsLgorICAgICAgICBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEgZGF0YTsKKyAgICAgICAgZGF0YS5p
c0ZpbmFsID0gaXNGaW5hbDsKKyAgICAgICAgZGF0YS5hbHRlcm5hdGl2ZXMuYXBwZW5kKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhIHsgW1tzZWdtZW50IHN1YnN0cmlu
Z10gVVRGOFN0cmluZ10sIFtzZWdtZW50IGNvbmZpZGVuY2VdIH0pOworICAgICAgICBmb3IgKE5T
U3RyaW5nKiBzZWdtZW50QWx0ZXJuYXRpdmUgOiBbc2VnbWVudCBhbHRlcm5hdGl2ZVN1YnN0cmlu
Z3NdKSB7CisgICAgICAgICAgICBpZiAoZGF0YS5hbHRlcm5hdGl2ZXMuc2l6ZSgpID09IF9tYXhB
bHRlcm5hdGl2ZXMpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvLyBTZXQg
Y29uZmlkZW5jZSAwIHNpbmNlIGl0IGlzIHVua25vd24uCisgICAgICAgICAgICBkYXRhLmFsdGVy
bmF0aXZlcy5hcHBlbmQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEg
eyBbc2VnbWVudEFsdGVybmF0aXZlIFVURjhTdHJpbmddLCAwLjAgfSk7CisgICAgICAgIH0KKyAg
ICAgICAgZGF0YXMuYXBwZW5kKFdURk1vdmUoZGF0YSkpOworICAgIH0KKyAgICBfZGVsZWdhdGVD
YWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KF9p
ZGVudGlmaWVyLCBkYXRhcykpOworfQorCistICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZToo
Q01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyCit7CisgICAgW19yZXF1ZXN0IGFwcGVuZEF1
ZGlvU2FtcGxlQnVmZmVyOnNhbXBsZUJ1ZmZlcl07Cit9CisKKy0gKHZvaWQpYWJvcnQKK3sKKyAg
ICBpZiAoIV90YXNrIHx8IFtfdGFzayBzdGF0ZV0gPT0gU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tT
dGF0ZUNvbXBsZXRlZCB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25UYXNr
U3RhdGVDYW5jZWxpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIFtzZWxmIHNlbmRTcGVlY2hF
bmRJZk5lZWRlZF07CisgICAgW19yZXF1ZXN0IGVuZEF1ZGlvXTsKKworICAgIFtfdGFzayBjYW5j
ZWxdOworfQorCistICh2b2lkKXN0b3AKK3sKKyAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVk
ZWRdOworICAgIFtfcmVxdWVzdCBlbmRBdWRpb107CisKKyAgICBpZiAoISFfdGFzaykKKyAgICAg
ICAgW190YXNrIGZpbmlzaF07Cit9CisKKy0gKHZvaWQpc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWQK
K3sKKyAgICBpZiAoX2hhc1NlbnRTcGVlY2hTdGFydCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
X2hhc1NlbnRTcGVlY2hTdGFydCA9IHRydWU7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hTdGFydCkpOworfQorCistICh2b2lk
KXNlbmRTcGVlY2hFbmRJZk5lZWRlZAoreworICAgIGlmICghX2hhc1NlbnRTcGVlY2hTdGFydCB8
fCBfaGFzU2VudFNwZWVjaEVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2hhc1NlbnRTcGVl
Y2hFbmQgPSB0cnVlOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlVHlwZTo6U3BlZWNoRW5kKSk7Cit9CisKKyNwcmFnbWEgbWFyayBTRlNwZWVjaFJl
Y29nbml6ZXJEZWxlZ2F0ZQorCistICh2b2lkKXNwZWVjaFJlY29nbml6ZXI6KFNGU3BlZWNoUmVj
b2duaXplciAqKXNwZWVjaFJlY29nbml6ZXIgYXZhaWxhYmlsaXR5RGlkQ2hhbmdlOihCT09MKWF2
YWlsYWJsZQoreworICAgIGlmIChhdmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghX3Rhc2spCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5
cGU6OlNlcnZpY2VOb3RBbGxvd2VkLCAiU3BlZWNoIHJlY29nbml0aW9uIHNlcnZpY2UgYmVjb21l
cyB1bmF2YWlsYWJsZSIgfTsKKyAgICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgZXJyb3IpOworICAgIF9kZWxl
Z2F0ZUNhbGxiYWNrKHVwZGF0ZSk7Cit9CisKKyNwcmFnbWEgbWFyayBTRlNwZWVjaFJlY29nbml0
aW9uVGFza0RlbGVnYXRlCisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25EaWREZXRlY3RTcGVl
Y2g6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzaworeworICAgIC8vIEZJWE1FOiBUaGlz
IGlzIG5vdCBjYWxsZWQuCisgICAgW3NlbGYgc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWRdOworfQor
CisvLyBpbnRlcmltIHJlc3VsdHMgb2Ygc29tZSB1dHRlcmFuY2UKKy0gKHZvaWQpc3BlZWNoUmVj
b2duaXRpb25UYXNrOihTRlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sgZGlkSHlwb3RoZXNp
emVUcmFuc2NyaXB0aW9uOihTRlRyYW5zY3JpcHRpb24gKil0cmFuc2NyaXB0aW9uCit7CisgICAg
W3NlbGYgc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWRdOworICAgIFtzZWxmIGNhbGxiYWNrV2l0aFJl
c3VsdDp0cmFuc2NyaXB0aW9uIGlzRmluYWw6Tk9dOworfQorCisvLyBmaW5hbCByZXN1bHRzIG9m
IHNvbWUgdXR0ZXJhbmNlCistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFzazooU0ZTcGVlY2hS
ZWNvZ25pdGlvblRhc2sgKil0YXNrIGRpZEZpbmlzaFJlY29nbml0aW9uOihTRlNwZWVjaFJlY29n
bml0aW9uUmVzdWx0ICopcmVjb2duaXRpb25SZXN1bHQKK3sKKyAgICBbc2VsZiBjYWxsYmFja1dp
dGhSZXN1bHQ6cmVjb2duaXRpb25SZXN1bHQuYmVzdFRyYW5zY3JpcHRpb24gaXNGaW5hbDpZRVNd
OworICAgIGlmICghX2RvTXVsdGlwbGVSZWNvZ25pdGlvbnMpIHsKKyAgICAgICAgW3NlbGYgc2Vu
ZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKKyAgICAgICAgW3Rhc2sgY2FuY2VsXTsK
KyAgICB9Cit9CisKKy8vIENhbGxlZCB3aGVuIHRoZSB0YXNrIGlzIG5vIGxvbmdlciBhY2NlcHRp
bmcgbmV3IGF1ZGlvIGJ1dCBtYXkgYmUgZmluaXNoaW5nIGZpbmFsIHByb2Nlc3NpbmcKKy0gKHZv
aWQpc3BlZWNoUmVjb2duaXRpb25UYXNrRmluaXNoZWRSZWFkaW5nQXVkaW86KFNGU3BlZWNoUmVj
b2duaXRpb25UYXNrICopdGFzaworeworICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjYWxsZWQu
CisgICAgW3NlbGYgc2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKK30KKworLSAodm9pZClzcGVlY2hS
ZWNvZ25pdGlvblRhc2tXYXNDYW5jZWxsZWQ6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFz
aworeworICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgX2RlbGVnYXRlQ2Fs
bGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmll
ciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKK30KKworLSAo
dm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2s6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFz
ayBkaWRGaW5pc2hTdWNjZXNzZnVsbHk6KEJPT0wpc3VjY2Vzc2Z1bGx5Cit7CisgICAgaWYgKHN1
Y2Nlc3NmdWxseSkgeworICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsIFt0YXNrLmVycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uIFVURjhTdHJpbmddIH07CisgICAgYXV0byB1cGRhdGUgPSBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIs
IGVycm9yKTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOworfQorCitAZW5kCisKK05T
X0FTU1VNRV9OT05OVUxMX0VORAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU3BlZWNo
UmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlvbihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmll
ciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBhbHRlcm5h
dGl2ZXMpCit7CisgICAgbV90YXNrID0gYWRvcHROUyhbW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNr
IGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6aWRlbnRpZmllciBsb2NhbGU6bG9jYWxlSWRlbnRp
ZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOmNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3Vs
dHM6aW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOmFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNh
bGxiYWNrOlt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRlKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHVwZGF0ZS50eXBlKCkgPT0gV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciB8fCB1cGRhdGUudHlwZSgpID09IFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKQorICAgICAgICAgICAgcmVz
ZXQoKTsKKworICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAgICB9XSk7Cit9
CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29nbml0aW9uKCkKK3sKKyAgICBBU1NF
UlQobV90YXNrKTsKKyAgICBbbV90YXNrLmdldCgpIHN0b3BdOworfQorCit2b2lkIFNwZWVjaFJl
Y29nbml6ZXI6OmFib3J0UmVjb2duaXRpb24oKQoreworICAgIGlmICghbV90YXNrKQorICAgICAg
ICByZXR1cm47CisKKyAgICBbbV90YXNrLmdldCgpIGFib3J0XTsKK30KKwordm9pZCBTcGVlY2hS
ZWNvZ25pemVyOjpyZXNldFJlY29nbml0aW9uKCkKK3sKKyAgICBpZiAoIW1fdGFzaykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgW21fdGFzay5nZXQoKSBhYm9ydF07CisgICAgbV90YXNrID0gbnVs
bHB0cjsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjphdWRpb1NhbXBsZXNBdmFpbGFibGUo
UmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBidWZmZXIpCit7CisgICAgW21fdGFzay5nZXQo
KSBhdWRpb1NhbXBsZXNBdmFpbGFibGU6YnVmZmVyLmdldCgpXTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSEFWRShTUEVFQ0hSRUNPR05JWkVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggYzhlNWFmMWZlZjEwNWYzNGM4MTc4MTcyZmMxZGNkNjdkZTRlN2Y2
NS4uMTUxOGJlNzI2YzI3NzZiZjA4ZGMwZDJjY2FjYmFmYzljOTZmZTFhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC05Miw2ICs5Miw3IEBAIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21h
Yy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcAogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50Lm1tCiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50
LmNwcAorTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCiBNb2R1bGVzL3dl
YmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCiBhY2Nlc3NpYmlsaXR5L2lv
cy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZjY2NGY0Y2M5MTAzNjc2MjhkMzljNGY5N2VjOWVhZGNmMzc0ZGFkNi4u
ZDlkYmFiODgwMTc3ODMxNGQ4MDIxYjhkZDBjNDgyMjI0N2RjNWVhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEzMDksNiAr
MTEzMDksNyBAQAogCQk5MzE2RERGODI0MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxlUmFuZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxlUmFuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxNkRERkEyNDBDNjRCMzAwOTM0MEFBIC8qIFNpbXBsZVJh
bmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZVJhbmdl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxNkRERkUyNDBDNjRGODAwOTM0
MEFBIC8qIEJvdW5kYXJ5UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Qm91bmRhcnlQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzE5MzU3NTI1
N0I2QTQ0MDAzRjY2RDQgLyogU3BlZWNoUmVjb2duaXplckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU3BlZWNoUmVjb2duaXplckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzFBRTNCODFGQjgwRUFFMDBGNUVGQjIgLyogSlNWYWx1ZUluV3JhcHBlZE9iamVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzMUJDQzYwMTEyNERGQ0IwMEJFNzBERCAvKiBNZWRpYUNhblN0
YXJ0TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDYW5T
dGFydExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUNCRDA2MTYx
QTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NzM4LDYgKzI1NzM5LDcgQEAKIAkJCQk5M0Q2Qjc2RDI1NEI4
RTFCMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCAqLywKIAkJCQk5MzlDMEQy
MzI1NjQ4QzRFMDBCMzIxMUIgLyogU3BlZWNoUmVjb2duaXplci5jcHAgKi8sCiAJCQkJOTM5QzBE
MjEyNTY0OEMzOTAwQjMyMTFCIC8qIFNwZWVjaFJlY29nbml6ZXIuaCAqLywKKwkJCQk5MzE5MzU3
NTI1N0I2QTQ0MDAzRjY2RDQgLyogU3BlZWNoUmVjb2duaXplckNvY29hLm1tICovLAogCQkJCUFB
MkE1QUJEMTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMuY3BwICovLAogCQkJCUFB
MkE1QUJFMTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMuaCAqLywKIAkJCQlBQTJB
NUFCRjE2QTQ4NUQ1MDA5NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzLmlkbCAqLywKQEAgLTMyMTU4
LDYgKzMyMTYwLDcgQEAKIAkJCQlDREY3NDgzRjE4RkVCQ0VDMDAwNkVDQzAgLyogR3JpZFBvc2l0
aW9uc1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTJBMTA1MDE2NjQ0NEZEMDA4RkEz
MTEgLyogR3JpZFRyYWNrU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyREU3MTgxRTRCNzRB
NjAwRjlBQ0NGIC8qIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDFCQkE4NjYyNTdFMzczQjAwQUM3RjZEIC8qIEgyNjRVdGlscy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjZFQTg5QTcxQjRGMkI3NTAwOEM1RkQyIC8qIEhhc2hhYmxlQWN0aW9uTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODQ4MkI3NDYxMTk4QzM1NDAwQkZCMDA1IC8qIEhhc2hDaGFuZ2VF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3NDhCRTAxMkNCRjJEQzAwMUZCQTQxIC8qIEhh
c2hUb29scy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzg5Nyw3ICszMzkwMCw2IEBACiAJCQkJNUVC
Qjg5MzkxQzc3QzM5OTAwQzY1RDQxIC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4QTdDQzk2QjEyMDc2RDczMDAxRDQ1ODggLyogUGVuZGluZ1NjcmlwdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTNGQTM4NjQxRDcxODEyRDAwQUE1OTUwIC8qIFBlbmRpbmdTY3Jp
cHRDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxQkJBODY2MjU3RTM3M0IwMEFDN0Y2RCAv
KiBIMjY0VXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCThBODQ0RDA1MTFEM0MxOEUwMDE0MDY1
QyAvKiBQZXJmb3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZCRTM0MDExNTA1OENCMjAw
Q0UwRkQ4IC8qIFBlcmZvcm1hbmNlRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENUEwQzI1
MURFQ0FDQ0MwMDcwNzA1NCAvKiBQZXJmb3JtYW5jZUxvZ2dpbmcuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
Y3BwCmluZGV4IDlmNjAwZDNmNWNkYzZjMzJjNTQ4YTBhMDlhYjAyYmMxNDUzNDUyNDQuLjkyYmE1
N2Y0MWRhOTUwYzU3Yzc4MjhiYmNkMzZkZGMwZGZhOWM4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKQEAgLTcwLDExICs3
MCwxMSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpyZXF1ZXN0UGVybWlzc2lvbkZv
clJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgaGFuZGxlUmVxdWVzdChpZGVudGlmaWVyKTsKKyAgICAgICAgaGFu
ZGxlUmVxdWVzdCgqd2Vha1JlcXVlc3QpOwogICAgIH0pOwogfQogCi12b2lkIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKK3ZvaWQgU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICghbV9yZWNvZ25pemVyKSB7CiAgICAgICAgIG1f
cmVjb2duaXplciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcj4oW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIHVwZGF0ZSkgewpAQCAtOTMsNyAr
OTMsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbgogICAgICAgICB9KTsKICAgICB9CiAKLSAg
ICBtX3JlY29nbml6ZXItPnN0YXJ0KGNsaWVudElkZW50aWZpZXIpOworICAgIG1fcmVjb2duaXpl
ci0+c3RhcnQocmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCksIHJlcXVlc3QubGFuZygpLCByZXF1
ZXN0LmNvbnRpbnVvdXMoKSwgcmVxdWVzdC5pbnRlcmltUmVzdWx0cygpLCByZXF1ZXN0Lm1heEFs
dGVybmF0aXZlcygpKTsKIH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVu
dElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaAppbmRleCBhN2Y3NmQzOGVlNTAxZTU4MmY3OWE1NDRmYTAyN2NiMGIzMjI4
ZmQ3Li40Y2NmMTY5NzIwNmZhZjc1Y2Q2MTk4Yjc4NGY3NTVhYzc2MDM1ZmI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOwotICAgIHZv
aWQgaGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
cj4gPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdERhdGE+PiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZW5kVXBkYXRlKGNv
bnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415617</attachid>
            <date>2020-12-08 00:54:34 -0800</date>
            <delta_ts>2020-12-08 07:51:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201208005433.patch</filename>
            <type>text/plain</type>
            <size>38117</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQxODJjZmM1Mzc1MTVm
MzcyNTdlYzc5ZjU0ZmUwZWRjZjdjNWU4ZS4uYzgzZThiMjZkMmY3MmE0ODgxMWMyYmM2NTIwYjM1
OGYxZjVkZjAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTEyLTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYW51
YWxseSB0ZXN0ZWQgaW4gTWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9X
ZWJDb3JlLnhjY29uZmlnOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pemVyOjppbnZva2VEZWxlZ2F0ZUNhbGxiYWNrKTogaW52b2tlIGRlbGVn
YXRlIGNhbGxiYWNrIHdpdGggdXBkYXRlLiBJZiB1cGRhdGUgdHlwZSBlcnJvcgorICAgICAgICBv
ciBlbmQsIHdoaWNoIG1lYW5zIHRoaXMgaXMgdGhlIGxhc3QgdXBkYXRlIGZvciBjdXJyZW50IHJl
cXVlc3QsIGRvIGEgcmVzZXQgYmVmb3JlIGludm9raW5nIGNhbGxiYWNrLiBBbm90aGVyCisgICAg
ICAgIGVycm9yIG9yIGVuZCB1cGRhdGUgbWF5IGJlIGdlbmVyYXRlZCBkdXJpbmcgcmVzZXQsIGJl
Y2F1c2UgaXQgc3RvcHMgY2FwdHVyZSBhbmQgcmVjb2duaXRpb24uIEluIHRoaXMgY2FzZSwKKyAg
ICAgICAgd2UgaWdub3JlIHRoZSBsYXRlciBnZW5lcmF0ZWQgZXJyb3Igb3IgZW5kIHVwZGF0ZS4K
KyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0KTogcmVzZXQgU3BlZWNo
UmVjb2duaXplciBzdGF0ZSBieSBzdG9wcGluZyBvbmdvaW5nIHdvcmsgaWYgYW55LgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJvcnRJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydENhcHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXplcjo6c3RvcFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OmFib3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXplcjo6cmVzZXRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
emVyOjpzdGFydEludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0b3BJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml6ZXJDb2NvYS5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBv
cnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmlu
YWw6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAoLVtX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3BlZWNoUmVjb2duaXplcjphdmFpbGFi
aWxpdHlEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNw
ZWVjaFJlY29nbml0aW9uRGlkRGV0ZWN0U3BlZWNoOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hS
ZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkSHlwb3RoZXNpemVUcmFuc2Ny
aXB0aW9uOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNv
Z25pdGlvblRhc2s6ZGlkRmluaXNoUmVjb2duaXRpb246XSk6CisgICAgICAgICgtW1dlYlNwZWVj
aFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29nbml0aW9uVGFza0ZpbmlzaGVkUmVhZGluZ0F1ZGlv
Ol0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlv
blRhc2tXYXNDYW5jZWxsZWQ6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNr
IHNwZWVjaFJlY29nbml0aW9uVGFzazpkaWRGaW5pc2hTdWNjZXNzZnVsbHk6XSk6CisgICAgICAg
ICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBpbml0V2l0aElkZW50aWZpZXI6bG9jYWxl
OmRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6cmVwb3J0SW50ZXJpbVJlc3VsdHM6bWF4QWx0ZXJuYXRp
dmVzOmRlbGVnYXRlQ2FsbGJhY2s6XSk6CisgICAgICAgIHVzZSBtb2NrIHNwZWVjaCByZW9jb2du
aXplciB3aGVuIG1vY2sgY2FwdHVyZSBkZXZpY2VzIGFyZSB1c2VkLgorICAgICAgICAoLVtXZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2sgYXVkaW9TYW1wbGVzQXZhaWxhYmxlOl0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgYWJvcnRdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tNb2NrIHN0b3BdKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI6OmRhdGFDYXB0dXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OnN0b3BSZWNvZ25pdGlvbik6IHN0b3AgcmVjb2duaXRpb24gYWZ0ZXIgcmVjb2duaXpp
bmcgYWxyZWFkeSBjYXB0dXJlZCBhdWRpby4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OmFib3J0UmVjb2duaXRpb24pOiBzdG9wIHJlY29nbml0aW9uIGltbWVkaWF0ZWx5Lgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbik6IHN0
b3AgcmVjb2duaXRpb24gaW1tZWRpYXRlbHkgYW5kIHRocm93IGF3YXkgdGFzayAobm8gbG9uZ2Vy
CisgICAgICAgIHJlY2VpdmUgdXBkYXRlIGFib3V0IGl0KS4KKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAyMC0xMi0wNyAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBzaXplIG9mIHRoZSByZXN1bHQgb2Yg
QVhUZXh0TWFya2VyR2V0Qnl0ZVB0ciBpcyBlcXVhbCB0byB0aGUgc2l6ZSBvZiBUZXh0TWFya2Vy
RGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNjYxN2YzZGY0ZGE3MWU4ZGQyMmI4MmI1ZmFkZDlhNmYyNmUxM2Ex
ZC4uNjdhNTZmYzY1ZTEyYmY4MmM5ZmM4OTA1NWYzNGY5MmRlZmI5ZmZmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAyMC0xMi0wOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0
ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKwogMjAyMC0xMi0wNyAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2FuZGJveCB0ZWxlbWV0cnkgZm9y
IGxpa2VseSB1bnVzZWQgZmVhdHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9XZWJDb3JlLnhjY29uZmlnCmluZGV4IGRiNDU3N2JiMzIyMGFjMjE0Zjk5MDVkYjgzM2JkZmNj
NjU5ZmE2OTIuLmE0ZGNiYTdiOGYxMDFmNTU1NGJhYzk5MjFkN2JhZTA4YzQzMjY1M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKKysr
IGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwpAQCAtMTIx
LDggKzEyMSwxNCBAQCBXS19DT1JFX0lNQUdFX0xERkxBR1MgPSAtZnJhbWV3b3JrIENvcmVJbWFn
ZTsKIFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MgPSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xERkxB
R1NfJChXS19IQVZFX1VSTF9GT1JNQVRUSU5HKSk7CiBXS19VUkxfRk9STUFUVElOR19MREZMQUdT
X1lFUyA9IC1mcmFtZXdvcmsgVVJMRm9ybWF0dGluZzsKIAorV0tfU1BFRUNIX0xERkxBR1MgPSAk
KFdLX1NQRUVDSF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOworV0tfU1BFRUNIX0xERkxB
R1NfbWFjb3N4ID0gLWZyYW1ld29yayBTcGVlY2g7CitXS19TUEVFQ0hfTERGTEFHU19pcGhvbmVv
cyA9IC1mcmFtZXdvcmsgU3BlZWNoOworV0tfU1BFRUNIX0xERkxBR1NfaXBob25lc2ltdWxhdG9y
ID0gLWZyYW1ld29yayBTcGVlY2g7CitXS19TUEVFQ0hfTERGTEFHU19tYWNjYXRhbHlzdCA9IC1m
cmFtZXdvcmsgU3BlZWNoOworCiAvLyBGSVhNRTogUmVkdWNlIHRoZSBudW1iZXIgb2YgYWxsb3dh
YmxlX2NsaWVudHMgPHJkYXI6Ly9wcm9ibGVtLzMxODIzOTY5PgotT1RIRVJfTERGTEFHUyA9ICQo
aW5oZXJpdGVkKSAkKFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS19MREZMQUdTKSAtbHNxbGl0ZTMg
LWxvYmpjIC1sQU5HTEUgLWFsbG93YWJsZV9jbGllbnQgV2ViQ29yZVRlc3RTdXBwb3J0IC1hbGxv
d2FibGVfY2xpZW50IFdlYktpdExlZ2FjeSAtZm9yY2VfbG9hZCAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvbGliUEFMLmEgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZy
YW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5k
YXRpb24gLWZyYW1ld29yayBJT1N1cmZhY2UgLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsg
TWV0YWwgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKSAkKE9USEVS
X0xERkxBR1NfUExBVEZPUk1fJChXS19QTEFURk9STV9OQU1FKSkgJChXS19BUFBLSVRfTERGTEFH
UykgJChXS19BUFBTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVESU9fVU5JVF9MREZMQUdTKSAkKFdL
X0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfVUlfTERGTEFHUykgJChXS19EQVRBX0RFVEVDVE9S
U19DT1JFX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFHUykgJChXS19JT1NV
UkZBQ0VfQUNDRUxFUkFUT1JfTERGTEFHUykgJChXS19MSUJXRUJSVENfTERGTEFHUykgJChXS19N
T0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01PQklMRV9HRVNUQUxUX0xERkxBR1Mp
ICQoV0tfTkVUV09SS19FWFRFTlNJT05fTERfRkxBR1MpICQoV0tfU1lTVEVNX0NPTkZJR1VSQVRJ
T05fTERGTEFHUykgJChXS19DT1JFX0lNQUdFX0xERkxBR1MpICQoV0tfVVJMX0ZPUk1BVFRJTkdf
TERGTEFHUyk7CitPVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpICQoV0tfUkVMT0NBVEFCTEVf
RlJBTUVXT1JLX0xERkxBR1MpIC1sc3FsaXRlMyAtbG9iamMgLWxBTkdMRSAtYWxsb3dhYmxlX2Ns
aWVudCBXZWJDb3JlVGVzdFN1cHBvcnQgLWFsbG93YWJsZV9jbGllbnQgV2ViS2l0TGVnYWN5IC1m
b3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJQQUwuYSAtZnJhbWV3b3JrIENGTmV0
d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3
b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIElPU3VyZmFjZSAt
ZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBNZXRhbCAkKE9USEVSX0xERkxBR1NfUExBVEZP
Uk1fJChXS19DT0NPQV9UT1VDSCkpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX1BMQVRG
T1JNX05BTUUpKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdLX0FQUFNVUFBPUlRfTERGTEFHUykg
JChXS19BVURJT19VTklUX0xERkxBR1MpICQoV0tfQ0FSQk9OX0xERkxBR1MpICQoV0tfQ09SRV9V
SV9MREZMQUdTKSAkKFdLX0RBVEFfREVURUNUT1JTX0NPUkVfTERGTEFHUykgJChXS19HUkFQSElD
U19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0lPU1VSRkFDRV9BQ0NFTEVSQVRPUl9MREZMQUdTKSAk
KFdLX0xJQldFQlJUQ19MREZMQUdTKSAkKFdLX01PQklMRV9DT1JFX1NFUlZJQ0VTX0xERkxBR1Mp
ICQoV0tfTU9CSUxFX0dFU1RBTFRfTERGTEFHUykgJChXS19ORVRXT1JLX0VYVEVOU0lPTl9MRF9G
TEFHUykgJChXS19TWVNURU1fQ09ORklHVVJBVElPTl9MREZMQUdTKSAkKFdLX0NPUkVfSU1BR0Vf
TERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdTKSAkKFdLX1NQRUVDSF9MREZMQUdT
KTsKIAogT1RIRVJfTERGTEFHU19QTEFURk9STV9jb2NvYXRvdWNoID0gLWFsbG93YWJsZV9jbGll
bnQgV2ViS2l0IC1hbGxvd2FibGVfY2xpZW50IGlUdW5lc1UgLWFsbG93YWJsZV9jbGllbnQgQ2Fz
YWJsYW5jYSAtYWxsb3dhYmxlX2NsaWVudCBSZW1vdGUgLWFsbG93YWJsZV9jbGllbnQgVFZCb29r
cyAtYWxsb3dhYmxlX2NsaWVudCBEdW1wUmVuZGVyVHJlZSAtYWxsb3dhYmxlX2NsaWVudCBXZWJL
aXRUZXN0UnVubmVyIC1hbGxvd2FibGVfY2xpZW50IFRlc3RXZWJLaXRBUEk7CiBPVEhFUl9MREZM
QUdTX1BMQVRGT1JNX21hY29zeCA9IC1zdWJfbGlicmFyeSBsaWJvYmpjIC11bWJyZWxsYSBXZWJL
aXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwCmluZGV4IDViZWI2MDU2NDdiMzI5ZTI2NGY4M2MyNDlmNTdjMmEyMDgxYzJmZDcuLmFk
ZjM0MzkxYzkyNDkzNDZjY2Y0MTBkZmY4MjRkN2FlYjFmYTEyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuY3BwCkBAIC0yOCwxMSAr
MjgsNiBAQAogCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCIKIAotI2lmIFBM
QVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIk1lZGlhVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8cGFs
L2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KLSNlbmRpZgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFNwZWVjaFJlY29nbml6ZXI6OlNwZWVjaFJlY29nbml6ZXIoRGVsZWdh
dGVDYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtNDAsNDMgKzM1LDcyIEBAIFNwZWVjaFJlY29nbml6
ZXI6OlNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogfQog
Ci12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0KCkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6
c3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9v
bCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBib29sIG1vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQpCit7CisgICAgYWJvcnRJZk5lZWRlZCgpOworCisgICAgbV9jbGll
bnRJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBpbnZva2VEZWxlZ2F0ZUNhbGxiYWNrKFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOworCisgICAgaWYgKCFzdGFydFJlY29nbml0
aW9uKGlkZW50aWZpZXIsIGxvY2FsZUlkZW50aWZpZXIsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1
bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpKSB7CisgICAg
ICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxvd2VkLCAiRmFpbGVk
IHRvIHN0YXJ0IHJlY29nbml0aW9uIiB9OworICAgICAgICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihpZGVudGlmaWVyLCBlcnJvcik7
CisgICAgICAgIGludm9rZURlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHN0YXJ0Q2FwdHVyZSgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6
ZXI6OnN0b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCBzaG91bGRHZW5lcmF0ZUZpbmFsUmVz
dWx0KQogewogICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBzdG9w
Q2FwdHVyZSgpOworICAgIGlmIChzaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0ID09IFNob3VsZEdl
bmVyYXRlRmluYWxSZXN1bHQ6OlllcykKKyAgICAgICAgc3RvcFJlY29nbml0aW9uKCk7CisgICAg
ZWxzZQorICAgICAgICBhYm9ydFJlY29nbml0aW9uKCk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2du
aXplcjo6aW52b2tlRGVsZWdhdGVDYWxsYmFjayhjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSYgdXBkYXRlKQoreworICAgIGlmICh1cGRhdGUudHlwZSgpID09IFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZTo6RXJyb3IgfHwgdXBkYXRlLnR5cGUoKSA9PSBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OkVuZCkgeworICAgICAgICBpZiAobV9pc1Jlc2V0dGluZykKKyAgICAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3Bl
ZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsICJBbm90aGVyIHJlcXVlc3QgaXMgc3Rh
cnRlZCIgfTsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6
OmNyZWF0ZUVycm9yKCptX2NsaWVudElkZW50aWZpZXIsIGVycm9yKSk7CisgICAgICAgIHJlc2V0
KCk7CisgICAgfQorCisgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7CiB9CiAKLXZvaWQg
U3BlZWNoUmVjb2duaXplcjo6c3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldCgpCiB7
Ci0gICAgcmVzZXQoKTsKKyAgICBtX2lzUmVzZXR0aW5nID0gdHJ1ZTsKIAotICAgIG1fY2xpZW50
SWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOworICAgIHN0b3BDYXB0dXJlKCk7CisgICAgcmVzZXRS
ZWNvZ25pdGlvbigpOworICAgIG1fY2xpZW50SWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKIAot
ICAgIHN0YXJ0SW50ZXJuYWwoKTsKKyAgICBtX2lzUmVzZXR0aW5nID0gZmFsc2U7CiB9CiAKLXZv
aWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRJbnRlcm5hbCgpCit2b2lkIFNwZWVjaFJlY29nbml6
ZXI6OmFib3J0SWZOZWVkZWQoKQogewotICAgIGF1dG8gZGF0YUNhbGxiYWNrID0gW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHRpbWUsIGNvbnN0IGF1dG8mIGRhdGEs
IGNvbnN0IGF1dG8mIGRlc2NyaXB0aW9uLCBhdXRvIHNhbXBsZUNvdW50KSB7Ci0gICAgICAgIGlm
ICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2NsaWVudElkZW50
aWZpZXIpCisgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBh
dXRvIGJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGRhdGEsIGRlc2NyaXB0aW9uLCBQ
QUw6OnRvQ01UaW1lKHRpbWUpLCBzYW1wbGVDb3VudCk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShi
dWZmZXIpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKHRpbWUpOwotICAgICAgICBVTlVT
RURfUEFSQU0oZGF0YSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdGlvbik7Ci0gICAg
ICAgIFVOVVNFRF9QQVJBTShzYW1wbGVDb3VudCk7Ci0jZW5kaWYKKyAgICBhdXRvIGVycm9yID0g
U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBYm9y
dGVkLCAiQW5vdGhlciByZXF1ZXN0IGlzIHN0YXJ0ZWQiIH07CisgICAgaW52b2tlRGVsZWdhdGVD
YWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoKm1fY2xpZW50SWRl
bnRpZmllciwgZXJyb3IpKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydENhcHR1
cmUoKQoreworICAgIGF1dG8gZGF0YUNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldKGNvbnN0IGF1dG8mIHRpbWUsIGNvbnN0IGF1dG8mIGRhdGEsIGNvbnN0IGF1dG8mIGRl
c2NyaXB0aW9uLCBhdXRvIHNhbXBsZUNvdW50KSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHdlYWtUaGlzLT5kYXRhQ2FwdHVyZWQodGltZSwgZGF0YSwgZGVzY3JpcHRpb24s
IHNhbXBsZUNvdW50KTsKICAgICB9OwogCiAgICAgYXV0byBzdGF0ZVVwZGF0ZUNhbGxiYWNrID0g
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHVwZGF0ZSkg
ewpAQCAtODQsMzkgKzEwOCw0NiBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0SW50ZXJu
YWwoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEFTU0VSVChtX2NsaWVudElkZW50
aWZpZXIgJiYgbV9jbGllbnRJZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRlLmNsaWVudElkZW50
aWZpZXIoKSk7Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwotCi0gICAgICAg
IGlmICh1cGRhdGUudHlwZSgpID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3Ip
Ci0gICAgICAgICAgICBtX3NvdXJjZSA9IG51bGxwdHI7CisgICAgICAgIGludm9rZURlbGVnYXRl
Q2FsbGJhY2sodXBkYXRlKTsKICAgICB9OwogCiAgICAgbV9zb3VyY2UgPSBtYWtlVW5pcXVlPFNw
ZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZT4oKm1fY2xpZW50SWRlbnRpZmllciwgV1RGTW92
ZShkYXRhQ2FsbGJhY2spLCBXVEZNb3ZlKHN0YXRlVXBkYXRlQ2FsbGJhY2spKTsKIH0KIAotdm9p
ZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wKFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgc2hvdWxk
R2VuZXJhdGVGaW5hbFJlc3VsdCkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUo
KQogewotICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQorICAgIGlmICghbV9zb3VyY2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHN0b3BJbnRlcm5hbCgpOworICAgIG1fc291cmNlID0gbnVs
bHB0cjsKKyAgICBpbnZva2VEZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpBdWRpb0VuZCkpOworfQogCi0gICAgaWYgKHNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgPT0g
U2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6WWVzKSB7Ci0gICAgICAgIC8vIFRPRE86IGdlbmVy
YXRlIHJlYWwgcmVzdWx0IHdoZW4gc3BlZWNoIHJlY29nbml0aW9uIGJhY2tlbmQgaXMgaW1wbGVt
ZW50ZWQuCi0gICAgICAgIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+IHJlc3Vs
dERhdGFzOwotICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRh
dGU6OmNyZWF0ZVJlc3VsdCgqbV9jbGllbnRJZGVudGlmaWVyLCByZXN1bHREYXRhcykpOwotICAg
IH0KKyNpZiAhSEFWRShTUEVFQ0hSRUNPR05JWkVSKQogCi0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNr
KFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKLSAgICBtX2NsaWVudElkZW50aWZpZXIg
PSBXVEY6Om51bGxvcHQ7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmRhdGFDYXB0dXJlZChjb25z
dCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBDTVRp
bWUsIHNpemVfdCkKK3sKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wSW50ZXJuYWwo
KQorYm9vbCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2ws
IHVpbnQ2NF90LCBib29sKQogewotICAgIGlmICghbV9zb3VyY2UpCi0gICAgICAgIHJldHVybjsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIG1fc291cmNlID0gbnVsbHB0cjsKLSAgICBtX2Rl
bGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJ
ZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkF1ZGlvRW5kKSk7Cit2b2lk
IFNwZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbigpCit7CisgICAgaW52b2tlRGVsZWdh
dGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50
aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7Cit9CisKK3ZvaWQgU3Bl
ZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbigpCit7CisgICAgaW52b2tlRGVsZWdhdGVD
YWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZp
ZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CiB9CiAKK3ZvaWQgU3BlZWNo
UmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbigpCit7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pemVyLmgKaW5kZXggZTZmMTNmZWU4NGE1MzNhZjBmMDRlMDc2OWMxYWUwOTViZTVi
ZmYzZi4uOWM5NWZkZTgwYjk4NGQ1MzIzMDZjYjMzNWRlYjQ5M2MwOGM5MDA2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaApAQCAtMjgs
NiArMjgsMTEgQEAKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCIK
ICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLmgi
CiAKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorT0JKQ19DTEFTUyBXZWJTcGVlY2hSZWNvZ25pemVyVGFzazsKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOwpAQCAtMzksMjAg
KzQ0LDMzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNv
Z25pemVyKERlbGVnYXRlQ2FsbGJhY2smJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflNwZWVjaFJl
Y29nbml6ZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJv
b2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgYm9vbCBtb2NrQ2Fw
dHVyZURldmljZXNFbmFibGVkKTsKICAgICBlbnVtIGNsYXNzIFNob3VsZEdlbmVyYXRlRmluYWxS
ZXN1bHQgeyBObywgWWVzIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wKFNob3VsZEdl
bmVyYXRlRmluYWxSZXN1bHQgPSBTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0OjpZZXMpOwogCiAg
ICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcj4g
Y3VycmVudENsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudElkZW50aWZp
ZXI7IH0KIAogcHJpdmF0ZToKKyAgICB2b2lkIGludm9rZURlbGVnYXRlQ2FsbGJhY2soY29uc3Qg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKTsKICAgICB2b2lkIHJlc2V0KCk7Ci0gICAgdm9pZCBz
dGFydEludGVybmFsKCk7Ci0gICAgdm9pZCBzdG9wSW50ZXJuYWwoKTsKKyAgICB2b2lkIGFib3J0
SWZOZWVkZWQoKTsKKyAgICB2b2lkIHN0YXJ0Q2FwdHVyZSgpOworICAgIHZvaWQgc3RvcENhcHR1
cmUoKTsKKworICAgIHZvaWQgZGF0YUNhcHR1cmVkKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6
ZV90IHNhbXBsZUNvdW50KTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVu
dGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1h
eEFsdGVybmF0aXZlcywgYm9vbCBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKTsKKyAgICB2b2lk
IHN0b3BSZWNvZ25pdGlvbigpOworICAgIHZvaWQgYWJvcnRSZWNvZ25pdGlvbigpOworICAgIHZv
aWQgcmVzZXRSZWNvZ25pdGlvbigpOwogCiAgICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcj4gbV9jbGllbnRJZGVudGlmaWVyOwogICAgIERlbGVn
YXRlQ2FsbGJhY2sgbV9kZWxlZ2F0ZUNhbGxiYWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVl
Y2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U+IG1fc291cmNlOworICAgIGJvb2wgbV9pc1Jlc2V0
dGluZyB7IGZhbHNlIH07CisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAgUmV0YWlu
UHRyPFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrPiBtX3Rhc2s7CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGE0MWUzZTU1MjA0Njhl
YzZiNmFlZWY5OTQ1MmIxYmNiYjUzY2ExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCkBAIC0wLDAgKzEsMzI0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNv
Z25pemVyLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKKyNpbXBvcnQgIk1lZGlh
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIgorI2ltcG9y
dCA8U3BlZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVB
VkZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0Z1
bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKworI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCisjaW1wb3J0IDxTcGVlY2gvU0ZTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Rf
UHJpdmF0ZS5oPgorI2VuZGlmCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZh
Y2UgV2ViU3BlZWNoUmVjb2duaXplclRhc2sgOiBOU09iamVjdDxTRlNwZWVjaFJlY29nbml0aW9u
VGFza0RlbGVnYXRlLCBTRlNwZWVjaFJlY29nbml6ZXJEZWxlZ2F0ZT4geworQHByaXZhdGUKKyAg
ICBib29sIF9kb011bHRpcGxlUmVjb2duaXRpb25zOworICAgIHVpbnQ2NF90IF9tYXhBbHRlcm5h
dGl2ZXM7CisgICAgUmV0YWluUHRyPFNGU3BlZWNoUmVjb2duaXplcj4gX3JlY29nbml6ZXI7Cisg
ICAgUmV0YWluUHRyPFNGU3BlZWNoQXVkaW9CdWZmZXJSZWNvZ25pdGlvblJlcXVlc3Q+IF9yZXF1
ZXN0OworICAgIFdlYWtPYmpDUHRyPFNGU3BlZWNoUmVjb2duaXRpb25UYXNrPiBfdGFzazsKKyAg
ICBib29sIF9oYXNTZW50U3BlZWNoU3RhcnQ7CisgICAgYm9vbCBfaGFzU2VudFNwZWVjaEVuZDsK
K0BwdWJsaWMKKyAgICBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyIF9pZGVudGlmaWVyOworICAgIEJsb2NrUHRyPHZvaWQoY29uc3QgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKT4gX2RlbGVnYXRlQ2FsbGJhY2s7Cit9CisKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKils
b2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyBy
ZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6
KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29u
c3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjazsKKy0gKHZvaWQp
Y2FsbGJhY2tXaXRoUmVzdWx0OihTRlRyYW5zY3JpcHRpb24gKil0cmFuc2NyaXB0aW9uIGlzRmlu
YWw6KEJPT0wpaXNGaW5hbDsKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBs
ZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXI7CistICh2b2lkKWFib3J0OworLSAodm9pZClzdG9wOwor
LSAodm9pZClzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZDsKKy0gKHZvaWQpc2VuZFNwZWVjaEVuZElm
TmVlZGVkOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
aworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9jYWxlOihO
U1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOihCT09MKWNv
bnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMgbWF4QWx0
ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOih2
b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikpY2FsbGJhY2sK
K3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBfZG9NdWx0aXBsZVJlY29nbml0
aW9ucyA9IGNvbnRpbnVvdXM7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKwor
ICAgIGlmICghYWx0ZXJuYXRpdmVzKQorICAgICAgICBhbHRlcm5hdGl2ZXMgPSAxOworICAgIF9t
YXhBbHRlcm5hdGl2ZXMgPSBhbHRlcm5hdGl2ZXM7CisKKyAgICBpZiAoIVtsb2NhbGVJZGVudGlm
aWVyIGxlbmd0aF0pCisgICAgICAgIF9yZWNvZ25pemVyID0gYWRvcHROUyhbW1NGU3BlZWNoUmVj
b2duaXplciBhbGxvY10gaW5pdF0pOworICAgIGVsc2UKKyAgICAgICAgX3JlY29nbml6ZXIgPSBh
ZG9wdE5TKFtbU0ZTcGVlY2hSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aExvY2FsZTpbTlNMb2Nh
bGUgbG9jYWxlV2l0aExvY2FsZUlkZW50aWZpZXI6bG9jYWxlSWRlbnRpZmllcl1dKTsKKyAgICBp
ZiAoIV9yZWNvZ25pemVyKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgaWYgKCFbX3JlY29n
bml6ZXIuZ2V0KCkgaXNBdmFpbGFibGVdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgW19y
ZWNvZ25pemVyIHNldERlbGVnYXRlOnNlbGZdOworCisgICAgX3JlcXVlc3QgPSBhZG9wdE5TKFtb
U0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVzdCBhbGxvY10gaW5pdF0pOworICAg
IGlmIChbX3JlY29nbml6ZXIgc3VwcG9ydHNPbkRldmljZVJlY29nbml0aW9uXSkKKyAgICAgICAg
W19yZXF1ZXN0IHNldFJlcXVpcmVzT25EZXZpY2VSZWNvZ25pdGlvbjpZRVNdOworICAgIFtfcmVx
dWVzdCBzZXRTaG91bGRSZXBvcnRQYXJ0aWFsUmVzdWx0czppbnRlcmltUmVzdWx0c107CisgICAg
W19yZXF1ZXN0IHNldFRhc2tIaW50OlNGU3BlZWNoUmVjb2duaXRpb25UYXNrSGludERpY3RhdGlv
bl07CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAgIFtfcmVxdWVzdCBzZXREZXRl
Y3RNdWx0aXBsZVV0dGVyYW5jZXM6WUVTXTsKKyAgICBbX3JlcXVlc3QgX3NldE1heGltdW1SZWNv
Z25pdGlvbkR1cmF0aW9uOjYwICogNjBdOworI2VuZGlmCisKKyAgICBfdGFzayA9IFtfcmVjb2du
aXplci5nZXQoKSByZWNvZ25pdGlvblRhc2tXaXRoUmVxdWVzdDpfcmVxdWVzdC5nZXQoKSBkZWxl
Z2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCljYWxsYmFja1dpdGhS
ZXN1bHQ6KFNGVHJhbnNjcmlwdGlvbiAqKXRyYW5zY3JpcHRpb24gaXNGaW5hbDooQk9PTClpc0Zp
bmFsCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4g
ZGF0YXM7CisgICAgYXV0byBzZWdtZW50cyA9IFt0cmFuc2NyaXB0aW9uIHNlZ21lbnRzXTsKKyAg
ICBmb3IgKFNGVHJhbnNjcmlwdGlvblNlZ21lbnQqIHNlZ21lbnQgaW4gc2VnbWVudHMpIHsKKyAg
ICAgICAgLy8gTm90ZSBzZWdtZW50IGNvbmZpZGVuY2UgaXMgcmVwb3J0ZWQgMCB3aGVuIHJlc3Vs
dCBpcyBub3QgZmluYWwuCisgICAgICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0
RGF0YSBkYXRhOworICAgICAgICBkYXRhLmlzRmluYWwgPSBpc0ZpbmFsOworICAgICAgICBkYXRh
LmFsdGVybmF0aXZlcy5hcHBlbmQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2
ZURhdGEgeyBbW3NlZ21lbnQgc3Vic3RyaW5nXSBVVEY4U3RyaW5nXSwgW3NlZ21lbnQgY29uZmlk
ZW5jZV0gfSk7CisgICAgICAgIGZvciAoTlNTdHJpbmcqIHNlZ21lbnRBbHRlcm5hdGl2ZSA6IFtz
ZWdtZW50IGFsdGVybmF0aXZlU3Vic3RyaW5nc10pIHsKKyAgICAgICAgICAgIGlmIChkYXRhLmFs
dGVybmF0aXZlcy5zaXplKCkgPT0gX21heEFsdGVybmF0aXZlcykKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBjb25maWRlbmNlIG9mIGFsdGVybmF0aXZlIGlz
IHVua25vd24uCisgICAgICAgICAgICBkYXRhLmFsdGVybmF0aXZlcy5hcHBlbmQoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgeyBbc2VnbWVudEFsdGVybmF0aXZlIFVU
RjhTdHJpbmddLCAwLjAgfSk7CisgICAgICAgIH0KKyAgICAgICAgZGF0YXMuYXBwZW5kKFdURk1v
dmUoZGF0YSkpOworICAgIH0KKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KF9pZGVudGlmaWVyLCBkYXRhcykpOworfQor
CistICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxl
QnVmZmVyCit7CisgICAgW19yZXF1ZXN0IGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyOnNhbXBsZUJ1
ZmZlcl07Cit9CisKKy0gKHZvaWQpYWJvcnQKK3sKKyAgICBpZiAoIV90YXNrIHx8IFtfdGFzayBz
dGF0ZV0gPT0gU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tTdGF0ZUNvbXBsZXRlZCB8fCBbX3Rhc2sg
c3RhdGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25UYXNrU3RhdGVDYW5jZWxpbmcpCisgICAgICAg
IHJldHVybjsKKworICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgW19yZXF1
ZXN0IGVuZEF1ZGlvXTsKKyAgICBbX3Rhc2sgY2FuY2VsXTsKK30KKworLSAodm9pZClzdG9wCit7
CisgICAgaWYgKCFfdGFzayB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25U
YXNrU3RhdGVDb21wbGV0ZWQgfHwgW190YXNrIHN0YXRlXSA9PSBTRlNwZWVjaFJlY29nbml0aW9u
VGFza1N0YXRlRmluaXNoaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBbc2VsZiBzZW5kU3Bl
ZWNoRW5kSWZOZWVkZWRdOworICAgIFtfcmVxdWVzdCBlbmRBdWRpb107CisgICAgW190YXNrIGZp
bmlzaF07Cit9CisKKy0gKHZvaWQpc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWQKK3sKKyAgICBpZiAo
X2hhc1NlbnRTcGVlY2hTdGFydCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2hhc1NlbnRTcGVl
Y2hTdGFydCA9IHRydWU7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlOjpTcGVlY2hTdGFydCkpOworfQorCistICh2b2lkKXNlbmRTcGVlY2hF
bmRJZk5lZWRlZAoreworICAgIGlmICghX2hhc1NlbnRTcGVlY2hTdGFydCB8fCBfaGFzU2VudFNw
ZWVjaEVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2hhc1NlbnRTcGVlY2hFbmQgPSB0cnVl
OworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6U3BlZWNoRW5kKSk7Cit9CisKKyNwcmFnbWEgbWFyayBTRlNwZWVjaFJlY29nbml6ZXJEZWxl
Z2F0ZQorCistICh2b2lkKXNwZWVjaFJlY29nbml6ZXI6KFNGU3BlZWNoUmVjb2duaXplciAqKXNw
ZWVjaFJlY29nbml6ZXIgYXZhaWxhYmlsaXR5RGlkQ2hhbmdlOihCT09MKWF2YWlsYWJsZQorewor
ICAgIGlmIChhdmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghX3Rhc2spCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VO
b3RBbGxvd2VkLCAiU3BlZWNoIHJlY29nbml0aW9uIHNlcnZpY2UgYmVjb21lcyB1bmF2YWlsYWJs
ZSIgfTsKKyAgICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgZXJyb3IpOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNr
KHVwZGF0ZSk7Cit9CisKKyNwcmFnbWEgbWFyayBTRlNwZWVjaFJlY29nbml0aW9uVGFza0RlbGVn
YXRlCisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25EaWREZXRlY3RTcGVlY2g6KFNGU3BlZWNo
UmVjb2duaXRpb25UYXNrICopdGFzaworeworICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5ldmVyIGNh
bGxlZC4KKyAgICBbc2VsZiBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF07Cit9CisKKy0gKHZvaWQp
c3BlZWNoUmVjb2duaXRpb25UYXNrOihTRlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sgZGlk
SHlwb3RoZXNpemVUcmFuc2NyaXB0aW9uOihTRlRyYW5zY3JpcHRpb24gKil0cmFuc2NyaXB0aW9u
Cit7CisgICAgW3NlbGYgc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWRdOworICAgIFtzZWxmIGNhbGxi
YWNrV2l0aFJlc3VsdDp0cmFuc2NyaXB0aW9uIGlzRmluYWw6Tk9dOworfQorCistICh2b2lkKXNw
ZWVjaFJlY29nbml0aW9uVGFzazooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrIGRpZEZp
bmlzaFJlY29nbml0aW9uOihTRlNwZWVjaFJlY29nbml0aW9uUmVzdWx0ICopcmVjb2duaXRpb25S
ZXN1bHQKK3sKKyAgICBbc2VsZiBjYWxsYmFja1dpdGhSZXN1bHQ6cmVjb2duaXRpb25SZXN1bHQu
YmVzdFRyYW5zY3JpcHRpb24gaXNGaW5hbDpZRVNdOworICAgIGlmICghX2RvTXVsdGlwbGVSZWNv
Z25pdGlvbnMpIHsKKyAgICAgICAgW3NlbGYgc2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICAg
ICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNy
ZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpF
bmQpKTsKKyAgICB9Cit9CisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrRmluaXNoZWRS
ZWFkaW5nQXVkaW86KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzaworeworICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIG5ldmVyIGNhbGxlZC4KKyAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVk
ZWRdOworfQorCistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFza1dhc0NhbmNlbGxlZDooU0ZT
cGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrCit7CisgICAgW3NlbGYgc2VuZFNwZWVjaEVuZElm
TmVlZGVkXTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OkVuZCkpOworfQorCistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFzazooU0ZT
cGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrIGRpZEZpbmlzaFN1Y2Nlc3NmdWxseTooQk9PTClz
dWNjZXNzZnVsbHkKK3sKKyAgICBpZiAoc3VjY2Vzc2Z1bGx5KSB7CisgICAgICAgIF9kZWxlZ2F0
ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50
aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBYm9y
dGVkLCBbdGFzay5lcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiBVVEY4U3RyaW5nXSB9OworICAg
IGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVy
cm9yKF9pZGVudGlmaWVyLCBlcnJvcik7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsK
K30KKworQGVuZAorCisvLyBUZXN0aW5nCitAaW50ZXJmYWNlIFdlYlNwZWVjaFJlY29nbml6ZXJU
YXNrTW9jayA6IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrCisKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVy
IGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVz
dWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcp
YWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjazsKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZh
aWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXI7CistICh2b2lkKWFib3J0Owor
LSAodm9pZClzdG9wOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTcGVlY2hSZWNvZ25p
emVyVGFza01vY2sKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVy
IGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9u
czooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1
bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVD
YWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYp
KWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICBfaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgX2RlbGVnYXRl
Q2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClhdWRp
b1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgoreworICAg
IFtzZWxmIHNlbmRTcGVlY2hTdGFydElmTmVlZGVkXTsKK30KKworLSAodm9pZClhYm9ydAorewor
ICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgX2RlbGVnYXRlQ2FsbGJhY2so
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKK30KKworLSAodm9pZClz
dG9wCit7CisgICAgW3NlbGYgYWJvcnRdOworfQorCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxM
X0VORAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6ZGF0
YUNhcHR1cmVkKGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlv
RGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNp
emVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBhdXRvIGJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxl
QnVmZmVyKGRhdGEsIGRlc2NyaXB0aW9uLCBQQUw6OnRvQ01UaW1lKHRpbWUpLCBzYW1wbGVDb3Vu
dCk7CisgICAgW21fdGFzay5nZXQoKSBhdWRpb1NhbXBsZXNBdmFpbGFibGU6YnVmZmVyLmdldCgp
XTsKK30KKworYm9vbCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3Vs
dHMsIHVpbnQ2NF90IGFsdGVybmF0aXZlcywgYm9vbCBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVk
KQoreworICAgIGF1dG8gdGFza0NsYXNzID0gbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA/IFtX
ZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgY2xhc3NdIDogW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrTW9jayBjbGFzc107CisgICAgbV90YXNrID0gYWRvcHROUyhbW3Rhc2tDbGFzcyBhbGxvY10g
aW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIgbG9jYWxlOmxvY2FsZUlkZW50aWZpZXIgZG9N
dWx0aXBsZVJlY29nbml0aW9uczpjb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOmludGVy
aW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczphbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazpb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29uc3QgU3BlZWNoUmVjb2duaXRp
b25VcGRhdGUmIHVwZGF0ZSkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGludm9rZURlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAgICB9
XSk7CisKKyAgICByZXR1cm4gISFtX3Rhc2s7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6
c3RvcFJlY29nbml0aW9uKCkKK3sKKyAgICBBU1NFUlQobV90YXNrKTsKKyAgICBbbV90YXNrLmdl
dCgpIHN0b3BdOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0UmVjb2duaXRpb24o
KQoreworICAgIEFTU0VSVChtX3Rhc2spOworICAgIFttX3Rhc2suZ2V0KCkgYWJvcnRdOworfQor
Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24oKQoreworICAgIGlmICgh
bV90YXNrKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRhc2sgPSBzdGQ6OmV4Y2hhbmdl
KG1fdGFzaywgbnVsbHB0cik7CisgICAgW3Rhc2suZ2V0KCkgYWJvcnRdOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAppbmRleCBjOGU1YWYxZmVmMTA1ZjM0YzgxNzgxNzJmYzFkY2Q2N2Rl
NGU3ZjY1Li4xNTE4YmU3MjZjMjc3NmJmMDhkYzBkMmNjYWNiYWZjOWM5NmZlMWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKQEAgLTkyLDYgKzkyLDcgQEAgTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwCitNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KIGFjY2Vzc2liaWxp
dHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxp
dHlPYmplY3RJT1MubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBmNjY0ZjRjYzkxMDM2NzYyOGQzOWM0Zjk3ZWM5ZWFkY2YzNzRk
YWQ2Li5kOWRiYWI4ODAxNzc4MzE0ZDgwMjFiOGRkMGM0ODIyMjQ3ZGM1ZWEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTMw
OSw2ICsxMTMwOSw3IEBACiAJCTkzMTZEREY4MjQwQzY0QjMwMDkzNDBBQSAvKiBTaW1wbGVSYW5n
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVSYW5nZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE2RERGQTI0MEM2NEIzMDA5MzQwQUEgLyogU2lt
cGxlUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltcGxl
UmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE2RERGRTI0MEM2NEY4
MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCb3VuZGFyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTkz
NTc1MjU3QjZBNDQwMDNGNjZENCAvKiBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzMUFFM0I4MUZCODBFQUUwMEY1RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVJbldyYXBwZWRPYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQkNDNjAxMTI0REZDQjAwQkU3MEREIC8qIE1lZGlh
Q2FuU3RhcnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YUNhblN0YXJ0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQ0JE
MDYxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlTm9kZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZU5vZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU3MzgsNiArMjU3MzksNyBAQAogCQkJCTkzRDZCNzZE
MjU0QjhFMUIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oICovLAogCQkJCTkz
OUMwRDIzMjU2NDhDNEUwMEIzMjExQiAvKiBTcGVlY2hSZWNvZ25pemVyLmNwcCAqLywKIAkJCQk5
MzlDMEQyMTI1NjQ4QzM5MDBCMzIxMUIgLyogU3BlZWNoUmVjb2duaXplci5oICovLAorCQkJCTkz
MTkzNTc1MjU3QjZBNDQwMDNGNjZENCAvKiBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gKi8sCiAJ
CQkJQUEyQTVBQkQxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpcy5jcHAgKi8sCiAJ
CQkJQUEyQTVBQkUxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpcy5oICovLAogCQkJ
CUFBMkE1QUJGMTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMuaWRsICovLApAQCAt
MzIxNTgsNiArMzIxNjAsNyBAQAogCQkJCUNERjc0ODNGMThGRUJDRUMwMDA2RUNDMCAvKiBHcmlk
UG9zaXRpb25zUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMkExMDUwMTY2NDQ0RkQw
MDhGQTMxMSAvKiBHcmlkVHJhY2tTaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTJERTcxODFF
NEI3NEE2MDBGOUFDQ0YgLyogR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0MUJCQTg2NjI1N0UzNzNCMDBBQzdGNkQgLyogSDI2NFV0aWxzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyNkVBODlBNzFCNEYyQjc1MDA4QzVGRDIgLyogSGFzaGFibGVBY3Rpb25MaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDgyQjc0NjExOThDMzU0MDBCRkIwMDUgLyogSGFzaENo
YW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODc0OEJFMDEyQ0JGMkRDMDAxRkJBNDEg
LyogSGFzaFRvb2xzLmggaW4gSGVhZGVycyAqLywKQEAgLTMzODk3LDcgKzMzOTAwLDYgQEAKIAkJ
CQk1RUJCODkzOTFDNzdDMzk5MDBDNjVENDEgLyogUGVlck1lZGlhRGVzY3JpcHRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCThBN0NDOTZCMTIwNzZENzMwMDFENDU4OCAvKiBQZW5kaW5nU2NyaXB0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0ZBMzg2NDFENzE4MTJEMDBBQTU5NTAgLyogUGVuZGlu
Z1NjcmlwdENsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDFCQkE4NjYyNTdFMzczQjAwQUM3
RjZEIC8qIEgyNjRVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE4NDREMDUxMUQzQzE4RTAw
MTQwNjVDIC8qIFBlcmZvcm1hbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkJFMzQwMTE1MDU4
Q0IyMDBDRTBGRDggLyogUGVyZm9ybWFuY2VFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ1
QTBDMjUxREVDQUNDQzAwNzA3MDU0IC8qIFBlcmZvcm1hbmNlTG9nZ2luZy5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5jcHAKaW5kZXggOWY2MDBkM2Y1Y2RjNmMzMmM1NDhhMGEwOWFiMDJiYzE0NTM0NTI0NC4u
NjY2N2EyZGRkNTMxOTJkNWIxNjkyYTY3YjY5YWQ0ZTcyMjgzYjJjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAtMzYs
MTAgKzM2LDExIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1TcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Npb25DaGVja2VyKQorU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiBwZXJtaXNz
aW9uQ2hlY2tlciwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5h
YmxlZCYmIGNoZWNrSWZFbmFibGVkKQogICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVj
dGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fcGVybWlzc2lv
bkNoZWNrZXIoV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCisgICAgLCBtX2NoZWNrSWZNb2Nr
Q2FwdHVyZURldmljZXNFbmFibGVkKFdURk1vdmUoY2hlY2tJZkVuYWJsZWQpKQogewogfQogCkBA
IC03MCwxMSArNzEsMTEgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBl
cm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbmkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGhhbmRsZVJlcXVlc3QoaWRlbnRpZmllcik7Cisg
ICAgICAgIGhhbmRsZVJlcXVlc3QoKndlYWtSZXF1ZXN0KTsKICAgICB9KTsKIH0KIAotdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCit2b2lk
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1fcmVjb2duaXplcikgewog
ICAgICAgICBtX3JlY29nbml6ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI+KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiB1cGRhdGUpIHsK
QEAgLTkzLDcgKzk0LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVx
dWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24KICAgICAgICAgfSk7CiAg
ICAgfQogCi0gICAgbV9yZWNvZ25pemVyLT5zdGFydChjbGllbnRJZGVudGlmaWVyKTsKKyAgICBt
X3JlY29nbml6ZXItPnN0YXJ0KHJlcXVlc3QuY2xpZW50SWRlbnRpZmllcigpLCByZXF1ZXN0Lmxh
bmcoKSwgcmVxdWVzdC5jb250aW51b3VzKCksIHJlcXVlc3QuaW50ZXJpbVJlc3VsdHMoKSwgcmVx
dWVzdC5tYXhBbHRlcm5hdGl2ZXMoKSwgbV9jaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxl
ZCgpKTsKIH0KIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RvcChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuaAppbmRleCBhN2Y3NmQzOGVlNTAxZTU4MmY3OWE1NDRmYTAyN2NiMGIzMjI4ZmQ3Li44YWVm
MjcyMGJiMmE5ZDFjY2U0MTVhNjRmZmEzM2E1OWQwOWJhMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKQEAgLTQ2LDExICs0Niwx
MiBAQCBlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIDogYm9v
bDsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyID0gV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI7CiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2Vy
ID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik+Owor
dXNpbmcgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9
IEZ1bmN0aW9uPGJvb2woKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIo
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVy
LCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYpOworICAgIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmLCBTcGVl
Y2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkJiYpOwogCiAgICAg
dm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3Vs
dHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpOwog
ICAgIHZvaWQgc3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyKTsKQEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZv
aWQgcmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdCYpOwotICAgIHZvaWQgaGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGhhbmRsZVJlcXVlc3Qo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzZW5kVXBkYXRl
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25FcnJvcj4gPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPFZlY3RvcjxXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiA9IFdURjo6bnVsbG9wdCk7CiAgICAg
dm9pZCBzZW5kVXBkYXRlKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik7
CiAKQEAgLTc1LDYgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+PiBtX3JlcXVlc3RzOwogICAgIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgbV9wZXJtaXNzaW9uQ2hlY2tlcjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcj4gbV9yZWNvZ25pemVyOwor
ICAgIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgbV9j
aGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
ZTdkOWNkZmU1NTM1YzI3YzQ1MDRmMDEwYTZlZGY4ZTRjNWUzY2E2YS4uODkwYmFhNzA2ZDdiNzk5
ZTQ3ZmUwMDg1OGRmNDQ2ZmY2NDZhNmE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNzIyLDYgKzE3MjIsMTAgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVySWRlbnQKICAgICAgICAgfQogCiAgICAgICAgIHdlYWtQYWdlLT5yZXF1ZXN0U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIH0sIFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBhZ2UpXSgpIHsKKyAgICAgICAg
aWYgKCF3ZWFrUGFnZSB8fCAhd2Vha1BhZ2UtPnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZp
Y2VzRW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9KTsKICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNwZWVjaFJl
Y29nbml0aW9uU2VydmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIsICpzcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5pdGVyYXRvci0+dmFsdWUpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415644</attachid>
            <date>2020-12-08 07:51:17 -0800</date>
            <delta_ts>2020-12-08 08:06:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201208075116.patch</filename>
            <type>text/plain</type>
            <size>37095</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjEzNDk4OWQ0M2U2ZTY1
N2Y3NTRjYmQ2YTEwYTRkODA5MGJjYWYyMi4uNTg3YzA1YmE0ODMwOTg0ZTgzMDE2NmFjZDljNmZm
ZjFlZTc5YjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTEyLTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYW51
YWxseSB0ZXN0ZWQgaW4gTWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9X
ZWJDb3JlLnhjY29uZmlnOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pemVyOjppbnZva2VEZWxlZ2F0ZUNhbGxiYWNrKTogaW52b2tlIGRlbGVn
YXRlIGNhbGxiYWNrIHdpdGggdXBkYXRlLiBJZiB1cGRhdGUgdHlwZSBlcnJvcgorICAgICAgICBv
ciBlbmQsIHdoaWNoIG1lYW5zIHRoaXMgaXMgdGhlIGxhc3QgdXBkYXRlIGZvciBjdXJyZW50IHJl
cXVlc3QsIGRvIGEgcmVzZXQgYmVmb3JlIGludm9raW5nIGNhbGxiYWNrLiBBbm90aGVyCisgICAg
ICAgIGVycm9yIG9yIGVuZCB1cGRhdGUgbWF5IGJlIGdlbmVyYXRlZCBkdXJpbmcgcmVzZXQsIGJl
Y2F1c2UgaXQgc3RvcHMgY2FwdHVyZSBhbmQgcmVjb2duaXRpb24uIEluIHRoaXMgY2FzZSwKKyAg
ICAgICAgd2UgaWdub3JlIHRoZSBsYXRlciBnZW5lcmF0ZWQgZXJyb3Igb3IgZW5kIHVwZGF0ZS4K
KyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0KTogcmVzZXQgU3BlZWNo
UmVjb2duaXplciBzdGF0ZSBieSBzdG9wcGluZyBvbmdvaW5nIHdvcmsgaWYgYW55LgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJvcnRJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydENhcHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXplcjo6c3RvcFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OmFib3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXplcjo6cmVzZXRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
emVyOjpzdGFydEludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0b3BJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml6ZXJDb2NvYS5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBv
cnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmlu
YWw6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAoLVtX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3BlZWNoUmVjb2duaXplcjphdmFpbGFi
aWxpdHlEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNw
ZWVjaFJlY29nbml0aW9uRGlkRGV0ZWN0U3BlZWNoOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hS
ZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkSHlwb3RoZXNpemVUcmFuc2Ny
aXB0aW9uOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNv
Z25pdGlvblRhc2s6ZGlkRmluaXNoUmVjb2duaXRpb246XSk6CisgICAgICAgICgtW1dlYlNwZWVj
aFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29nbml0aW9uVGFza0ZpbmlzaGVkUmVhZGluZ0F1ZGlv
Ol0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlv
blRhc2tXYXNDYW5jZWxsZWQ6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNr
IHNwZWVjaFJlY29nbml0aW9uVGFzazpkaWRGaW5pc2hTdWNjZXNzZnVsbHk6XSk6CisgICAgICAg
ICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBpbml0V2l0aElkZW50aWZpZXI6bG9jYWxl
OmRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6cmVwb3J0SW50ZXJpbVJlc3VsdHM6bWF4QWx0ZXJuYXRp
dmVzOmRlbGVnYXRlQ2FsbGJhY2s6XSk6CisgICAgICAgIHVzZSBtb2NrIHNwZWVjaCByZW9jb2du
aXplciB3aGVuIG1vY2sgY2FwdHVyZSBkZXZpY2VzIGFyZSB1c2VkLgorICAgICAgICAoLVtXZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2sgYXVkaW9TYW1wbGVzQXZhaWxhYmxlOl0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgYWJvcnRdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tNb2NrIHN0b3BdKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI6OmRhdGFDYXB0dXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OnN0b3BSZWNvZ25pdGlvbik6IHN0b3AgcmVjb2duaXRpb24gYWZ0ZXIgcmVjb2duaXpp
bmcgYWxyZWFkeSBjYXB0dXJlZCBhdWRpby4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OmFib3J0UmVjb2duaXRpb24pOiBzdG9wIHJlY29nbml0aW9uIGltbWVkaWF0ZWx5Lgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbik6IHN0
b3AgcmVjb2duaXRpb24gaW1tZWRpYXRlbHkgYW5kIHRocm93IGF3YXkgdGFzayAobm8gbG9uZ2Vy
CisgICAgICAgIHJlY2VpdmUgdXBkYXRlIGFib3V0IGl0KS4KKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAyMC0xMi0wOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0lGQ10gVHJpbW1hYmxlIGNvbnRlbnQgY2FuIGluY2x1ZGUgPHdicj4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MmI4YjIxN2RlZjQ5ZDkwOGRlMTExY2Y3NTIwMjY4NTdjNjkyOGU3ZC4uNTY0ZDQ5YWVmYjY4OTE0
Zjg0NGIzNWI4Yzg5OTg1NjU5NTRlZGEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAy
MC0xMi0wOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBl
cm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9u
U2VydmVyKToKKwogMjAyMC0xMi0wOCAgUnlhbiBIb3N0ZXRsZXIgIDxyaG9zdEBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIHRhcmdldCB0byBjcmVhdGUgL3Vzci9sb2NhbCB0byB3b3JrIGFyb3Vu
ZCBYQlMgQnVnIDxyZGFyOi8vcHJvYmxlbS8yMDM4ODY1MD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCmluZGV4IGRiNDU3N2JiMzIyMGFjMjE0Zjk5
MDVkYjgzM2JkZmNjNjU5ZmE2OTIuLmE0ZGNiYTdiOGYxMDFmNTU1NGJhYzk5MjFkN2JhZTA4YzQz
MjY1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUu
eGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2Nv
bmZpZwpAQCAtMTIxLDggKzEyMSwxNCBAQCBXS19DT1JFX0lNQUdFX0xERkxBR1MgPSAtZnJhbWV3
b3JrIENvcmVJbWFnZTsKIFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MgPSAkKFdLX1VSTF9GT1JN
QVRUSU5HX0xERkxBR1NfJChXS19IQVZFX1VSTF9GT1JNQVRUSU5HKSk7CiBXS19VUkxfRk9STUFU
VElOR19MREZMQUdTX1lFUyA9IC1mcmFtZXdvcmsgVVJMRm9ybWF0dGluZzsKIAorV0tfU1BFRUNI
X0xERkxBR1MgPSAkKFdLX1NQRUVDSF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOworV0tf
U1BFRUNIX0xERkxBR1NfbWFjb3N4ID0gLWZyYW1ld29yayBTcGVlY2g7CitXS19TUEVFQ0hfTERG
TEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgU3BlZWNoOworV0tfU1BFRUNIX0xERkxBR1NfaXBo
b25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBTcGVlY2g7CitXS19TUEVFQ0hfTERGTEFHU19tYWNj
YXRhbHlzdCA9IC1mcmFtZXdvcmsgU3BlZWNoOworCiAvLyBGSVhNRTogUmVkdWNlIHRoZSBudW1i
ZXIgb2YgYWxsb3dhYmxlX2NsaWVudHMgPHJkYXI6Ly9wcm9ibGVtLzMxODIzOTY5PgotT1RIRVJf
TERGTEFHUyA9ICQoaW5oZXJpdGVkKSAkKFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS19MREZMQUdT
KSAtbHNxbGl0ZTMgLWxvYmpjIC1sQU5HTEUgLWFsbG93YWJsZV9jbGllbnQgV2ViQ29yZVRlc3RT
dXBwb3J0IC1hbGxvd2FibGVfY2xpZW50IFdlYktpdExlZ2FjeSAtZm9yY2VfbG9hZCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvbGliUEFMLmEgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBD
b3JlQXVkaW8gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJh
bWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBJT1N1cmZhY2UgLWZyYW1ld29yayBJbWFnZUlP
IC1mcmFtZXdvcmsgTWV0YWwgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9V
Q0gpKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19QTEFURk9STV9OQU1FKSkgJChXS19B
UFBLSVRfTERGTEFHUykgJChXS19BUFBTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVESU9fVU5JVF9M
REZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfVUlfTERGTEFHUykgJChXS19E
QVRBX0RFVEVDVE9SU19DT1JFX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFH
UykgJChXS19JT1NVUkZBQ0VfQUNDRUxFUkFUT1JfTERGTEFHUykgJChXS19MSUJXRUJSVENfTERG
TEFHUykgJChXS19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01PQklMRV9HRVNU
QUxUX0xERkxBR1MpICQoV0tfTkVUV09SS19FWFRFTlNJT05fTERfRkxBR1MpICQoV0tfU1lTVEVN
X0NPTkZJR1VSQVRJT05fTERGTEFHUykgJChXS19DT1JFX0lNQUdFX0xERkxBR1MpICQoV0tfVVJM
X0ZPUk1BVFRJTkdfTERGTEFHUyk7CitPVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpICQoV0tf
UkVMT0NBVEFCTEVfRlJBTUVXT1JLX0xERkxBR1MpIC1sc3FsaXRlMyAtbG9iamMgLWxBTkdMRSAt
YWxsb3dhYmxlX2NsaWVudCBXZWJDb3JlVGVzdFN1cHBvcnQgLWFsbG93YWJsZV9jbGllbnQgV2Vi
S2l0TGVnYWN5IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJQQUwuYSAtZnJh
bWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3JrIENvcmVHcmFw
aGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3Jr
IElPU3VyZmFjZSAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBNZXRhbCAkKE9USEVSX0xE
RkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpICQoT1RIRVJfTERGTEFHU19QTEFURk9S
TV8kKFdLX1BMQVRGT1JNX05BTUUpKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdLX0FQUFNVUFBP
UlRfTERGTEFHUykgJChXS19BVURJT19VTklUX0xERkxBR1MpICQoV0tfQ0FSQk9OX0xERkxBR1Mp
ICQoV0tfQ09SRV9VSV9MREZMQUdTKSAkKFdLX0RBVEFfREVURUNUT1JTX0NPUkVfTERGTEFHUykg
JChXS19HUkFQSElDU19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0lPU1VSRkFDRV9BQ0NFTEVSQVRP
Ul9MREZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZMQUdTKSAkKFdLX01PQklMRV9DT1JFX1NFUlZJ
Q0VTX0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RBTFRfTERGTEFHUykgJChXS19ORVRXT1JLX0VY
VEVOU0lPTl9MRF9GTEFHUykgJChXS19TWVNURU1fQ09ORklHVVJBVElPTl9MREZMQUdTKSAkKFdL
X0NPUkVfSU1BR0VfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdTKSAkKFdLX1NQ
RUVDSF9MREZMQUdTKTsKIAogT1RIRVJfTERGTEFHU19QTEFURk9STV9jb2NvYXRvdWNoID0gLWFs
bG93YWJsZV9jbGllbnQgV2ViS2l0IC1hbGxvd2FibGVfY2xpZW50IGlUdW5lc1UgLWFsbG93YWJs
ZV9jbGllbnQgQ2FzYWJsYW5jYSAtYWxsb3dhYmxlX2NsaWVudCBSZW1vdGUgLWFsbG93YWJsZV9j
bGllbnQgVFZCb29rcyAtYWxsb3dhYmxlX2NsaWVudCBEdW1wUmVuZGVyVHJlZSAtYWxsb3dhYmxl
X2NsaWVudCBXZWJLaXRUZXN0UnVubmVyIC1hbGxvd2FibGVfY2xpZW50IFRlc3RXZWJLaXRBUEk7
CiBPVEhFUl9MREZMQUdTX1BMQVRGT1JNX21hY29zeCA9IC1zdWJfbGlicmFyeSBsaWJvYmpjIC11
bWJyZWxsYSBXZWJLaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml6ZXIuY3BwCmluZGV4IDViZWI2MDU2NDdiMzI5ZTI2NGY4M2MyNDlmNTdjMmEy
MDgxYzJmZDcuLmFkZjM0MzkxYzkyNDkzNDZjY2Y0MTBkZmY4MjRkN2FlYjFmYTEyOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuY3Bw
CkBAIC0yOCwxMSArMjgsNiBAQAogCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25VcGRhdGUu
aCIKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIk1lZGlhVXRpbGl0aWVzLmgiCi0j
aW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KLSNlbmRp
ZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNwZWVjaFJlY29nbml6ZXI6OlNwZWVjaFJlY29n
bml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtNDAsNDMgKzM1LDcyIEBAIFNw
ZWVjaFJlY29nbml6ZXI6OlNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogfQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0KCkKK3ZvaWQgU3BlZWNo
UmVjb2duaXplcjo6c3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29u
dGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBi
b29sIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpCit7CisgICAgYWJvcnRJZk5lZWRlZCgpOwor
CisgICAgbV9jbGllbnRJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBpbnZva2VEZWxlZ2F0
ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRp
ZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOworCisgICAgaWYgKCFz
dGFydFJlY29nbml0aW9uKGlkZW50aWZpZXIsIGxvY2FsZUlkZW50aWZpZXIsIGNvbnRpbnVvdXMs
IGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJs
ZWQpKSB7CisgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxv
d2VkLCAiRmFpbGVkIHRvIHN0YXJ0IHJlY29nbml0aW9uIiB9OworICAgICAgICBhdXRvIHVwZGF0
ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihpZGVudGlm
aWVyLCBlcnJvcik7CisgICAgICAgIGludm9rZURlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0YXJ0Q2FwdHVyZSgpOworfQorCit2b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OnN0b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCBzaG91bGRHZW5l
cmF0ZUZpbmFsUmVzdWx0KQogewogICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291cmNlID0gbnVsbHB0
cjsKKyAgICBzdG9wQ2FwdHVyZSgpOworICAgIGlmIChzaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0
ID09IFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQ6OlllcykKKyAgICAgICAgc3RvcFJlY29nbml0
aW9uKCk7CisgICAgZWxzZQorICAgICAgICBhYm9ydFJlY29nbml0aW9uKCk7Cit9CisKK3ZvaWQg
U3BlZWNoUmVjb2duaXplcjo6aW52b2tlRGVsZWdhdGVDYWxsYmFjayhjb25zdCBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZSYgdXBkYXRlKQoreworICAgIGlmICh1cGRhdGUudHlwZSgpID09IFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IgfHwgdXBkYXRlLnR5cGUoKSA9PSBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkgeworICAgICAgICBpZiAobV9pc1Jlc2V0dGluZykK
KyAgICAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlv
bkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsICJBbm90aGVyIHJl
cXVlc3QgaXMgc3RhcnRlZCIgfTsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKCptX2NsaWVudElkZW50aWZpZXIsIGVycm9yKSk7Cisg
ICAgICAgIHJlc2V0KCk7CisgICAgfQorCisgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7
CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTcGVlY2hSZWNvZ25pemVy
OjpyZXNldCgpCiB7Ci0gICAgcmVzZXQoKTsKKyAgICBtX2lzUmVzZXR0aW5nID0gdHJ1ZTsKIAot
ICAgIG1fY2xpZW50SWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxi
YWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOworICAgIHN0b3BDYXB0dXJlKCk7
CisgICAgcmVzZXRSZWNvZ25pdGlvbigpOworICAgIG1fY2xpZW50SWRlbnRpZmllciA9IFdURjo6
bnVsbG9wdDsKIAotICAgIHN0YXJ0SW50ZXJuYWwoKTsKKyAgICBtX2lzUmVzZXR0aW5nID0gZmFs
c2U7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRJbnRlcm5hbCgpCit2b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OmFib3J0SWZOZWVkZWQoKQogewotICAgIGF1dG8gZGF0YUNhbGxiYWNr
ID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHRpbWUsIGNvbnN0
IGF1dG8mIGRhdGEsIGNvbnN0IGF1dG8mIGRlc2NyaXB0aW9uLCBhdXRvIHNhbXBsZUNvdW50KSB7
Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKCFt
X2NsaWVudElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICBhdXRvIGJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGRhdGEsIGRl
c2NyaXB0aW9uLCBQQUw6OnRvQ01UaW1lKHRpbWUpLCBzYW1wbGVDb3VudCk7Ci0gICAgICAgIFVO
VVNFRF9QQVJBTShidWZmZXIpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKHRpbWUpOwot
ICAgICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShkZXNjcmlw
dGlvbik7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShzYW1wbGVDb3VudCk7Ci0jZW5kaWYKKyAgICBh
dXRvIGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJy
b3JUeXBlOjpBYm9ydGVkLCAiQW5vdGhlciByZXF1ZXN0IGlzIHN0YXJ0ZWQiIH07CisgICAgaW52
b2tlRGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3Io
Km1fY2xpZW50SWRlbnRpZmllciwgZXJyb3IpKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pemVy
OjpzdGFydENhcHR1cmUoKQoreworICAgIGF1dG8gZGF0YUNhbGxiYWNrID0gW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHRpbWUsIGNvbnN0IGF1dG8mIGRhdGEsIGNv
bnN0IGF1dG8mIGRlc2NyaXB0aW9uLCBhdXRvIHNhbXBsZUNvdW50KSB7CisgICAgICAgIGlmICh3
ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kYXRhQ2FwdHVyZWQodGltZSwgZGF0YSwg
ZGVzY3JpcHRpb24sIHNhbXBsZUNvdW50KTsKICAgICB9OwogCiAgICAgYXV0byBzdGF0ZVVwZGF0
ZUNhbGxiYWNrID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1
dG8mIHVwZGF0ZSkgewpAQCAtODQsMzkgKzEwOCw0NiBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6
OnN0YXJ0SW50ZXJuYWwoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEFTU0VSVCht
X2NsaWVudElkZW50aWZpZXIgJiYgbV9jbGllbnRJZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRl
LmNsaWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUp
OwotCi0gICAgICAgIGlmICh1cGRhdGUudHlwZSgpID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RXJyb3IpCi0gICAgICAgICAgICBtX3NvdXJjZSA9IG51bGxwdHI7CisgICAgICAgIGlu
dm9rZURlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKICAgICB9OwogCiAgICAgbV9zb3VyY2UgPSBt
YWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZT4oKm1fY2xpZW50SWRlbnRp
ZmllciwgV1RGTW92ZShkYXRhQ2FsbGJhY2spLCBXVEZNb3ZlKHN0YXRlVXBkYXRlQ2FsbGJhY2sp
KTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wKFNob3VsZEdlbmVyYXRlRmluYWxS
ZXN1bHQgc2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6
c3RvcENhcHR1cmUoKQogewotICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQorICAgIGlmICgh
bV9zb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3BJbnRlcm5hbCgpOworICAgIG1f
c291cmNlID0gbnVsbHB0cjsKKyAgICBpbnZva2VEZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpBdWRpb0VuZCkpOworfQogCi0gICAgaWYgKHNob3VsZEdlbmVyYXRlRmlu
YWxSZXN1bHQgPT0gU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6WWVzKSB7Ci0gICAgICAgIC8v
IFRPRE86IGdlbmVyYXRlIHJlYWwgcmVzdWx0IHdoZW4gc3BlZWNoIHJlY29nbml0aW9uIGJhY2tl
bmQgaXMgaW1wbGVtZW50ZWQuCi0gICAgICAgIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dERhdGE+IHJlc3VsdERhdGFzOwotICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVj
b2duaXRpb25VcGRhdGU6OmNyZWF0ZVJlc3VsdCgqbV9jbGllbnRJZGVudGlmaWVyLCByZXN1bHRE
YXRhcykpOwotICAgIH0KKyNpZiAhSEFWRShTUEVFQ0hSRUNPR05JWkVSKQogCi0gICAgbV9kZWxl
Z2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRl
bnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKLSAgICBtX2NsaWVu
dElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmRhdGFD
YXB0dXJlZChjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mLCBDTVRpbWUsIHNpemVfdCkKK3sKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpz
dG9wSW50ZXJuYWwoKQorYm9vbCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKFNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYs
IGJvb2wsIGJvb2wsIHVpbnQ2NF90LCBib29sKQogewotICAgIGlmICghbV9zb3VyY2UpCi0gICAg
ICAgIHJldHVybjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIG1fc291cmNlID0gbnVsbHB0
cjsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0
ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkF1ZGlv
RW5kKSk7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbigpCit7CisgICAg
aW52b2tlRGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCpt
X2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7Cit9
CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbigpCit7CisgICAgaW52
b2tlRGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2Ns
aWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CiB9CiAK
K3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbigpCit7Cit9CisKKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKaW5kZXggZTZmMTNmZWU4NGE1MzNhZjBmMDRlMDc2
OWMxYWUwOTViZTViZmYzZi4uOWM5NWZkZTgwYjk4NGQ1MzIzMDZjYjMzNWRlYjQ5M2MwOGM5MDA2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuaApAQCAtMjgsNiArMjgsMTEgQEAKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNhcHR1
cmVTb3VyY2UuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLmgiCiAKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorT0JKQ19DTEFTUyBXZWJTcGVlY2hSZWNvZ25pemVyVGFzazsKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OwpAQCAtMzksMjAgKzQ0LDMzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBTcGVlY2hSZWNvZ25pemVyKERlbGVnYXRlQ2FsbGJhY2smJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgflNwZWVjaFJlY29nbml6ZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNv
bnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywg
Ym9vbCBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKTsKICAgICBlbnVtIGNsYXNzIFNob3VsZEdl
bmVyYXRlRmluYWxSZXN1bHQgeyBObywgWWVzIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dG9wKFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgPSBTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0
OjpZZXMpOwogCiAgICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllcj4gY3VycmVudENsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2Ns
aWVudElkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKKyAgICB2b2lkIGludm9rZURlbGVnYXRlQ2Fs
bGJhY2soY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKTsKICAgICB2b2lkIHJlc2V0KCk7
Ci0gICAgdm9pZCBzdGFydEludGVybmFsKCk7Ci0gICAgdm9pZCBzdG9wSW50ZXJuYWwoKTsKKyAg
ICB2b2lkIGFib3J0SWZOZWVkZWQoKTsKKyAgICB2b2lkIHN0YXJ0Q2FwdHVyZSgpOworICAgIHZv
aWQgc3RvcENhcHR1cmUoKTsKKworICAgIHZvaWQgZGF0YUNhcHR1cmVkKGNvbnN0IFdURjo6TWVk
aWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiwgc2l6ZV90IHNhbXBsZUNvdW50KTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24o
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMs
IHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgYm9vbCBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVk
KTsKKyAgICB2b2lkIHN0b3BSZWNvZ25pdGlvbigpOworICAgIHZvaWQgYWJvcnRSZWNvZ25pdGlv
bigpOworICAgIHZvaWQgcmVzZXRSZWNvZ25pdGlvbigpOwogCiAgICAgT3B0aW9uYWw8U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcj4gbV9jbGllbnRJZGVudGlmaWVy
OwogICAgIERlbGVnYXRlQ2FsbGJhY2sgbV9kZWxlZ2F0ZUNhbGxiYWNrOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U+IG1fc291cmNlOworICAgIGJv
b2wgbV9pc1Jlc2V0dGluZyB7IGZhbHNlIH07CisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIp
CisgICAgUmV0YWluUHRyPFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrPiBtX3Rhc2s7CisjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGE0
MWUzZTU1MjA0NjhlYzZiNmFlZWY5OTQ1MmIxYmNiYjUzY2ExCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCkBA
IC0wLDAgKzEsMzI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJTcGVlY2hSZWNvZ25pemVyLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKKyNp
bXBvcnQgIk1lZGlhVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZS5oIgorI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlv
bi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2lt
cG9ydCA8d3RmL0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKworI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxTcGVlY2gvU0ZTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3RfUHJpdmF0ZS5oPgorI2VuZGlmCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CisKK0BpbnRlcmZhY2UgV2ViU3BlZWNoUmVjb2duaXplclRhc2sgOiBOU09iamVjdDxTRlNwZWVj
aFJlY29nbml0aW9uVGFza0RlbGVnYXRlLCBTRlNwZWVjaFJlY29nbml6ZXJEZWxlZ2F0ZT4gewor
QHByaXZhdGUKKyAgICBib29sIF9kb011bHRpcGxlUmVjb2duaXRpb25zOworICAgIHVpbnQ2NF90
IF9tYXhBbHRlcm5hdGl2ZXM7CisgICAgUmV0YWluUHRyPFNGU3BlZWNoUmVjb2duaXplcj4gX3Jl
Y29nbml6ZXI7CisgICAgUmV0YWluUHRyPFNGU3BlZWNoQXVkaW9CdWZmZXJSZWNvZ25pdGlvblJl
cXVlc3Q+IF9yZXF1ZXN0OworICAgIFdlYWtPYmpDUHRyPFNGU3BlZWNoUmVjb2duaXRpb25UYXNr
PiBfdGFzazsKKyAgICBib29sIF9oYXNTZW50U3BlZWNoU3RhcnQ7CisgICAgYm9vbCBfaGFzU2Vu
dFNwZWVjaEVuZDsKK0BwdWJsaWMKKyAgICBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyIF9pZGVudGlmaWVyOworICAgIEJsb2NrUHRyPHZvaWQoY29u
c3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKT4gX2RlbGVnYXRlQ2FsbGJhY2s7
Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6
KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wp
Y29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhB
bHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6
KHZvaWQoXikoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFj
azsKKy0gKHZvaWQpY2FsbGJhY2tXaXRoUmVzdWx0OihTRlRyYW5zY3JpcHRpb24gKil0cmFuc2Ny
aXB0aW9uIGlzRmluYWw6KEJPT0wpaXNGaW5hbDsKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxh
YmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXI7CistICh2b2lkKWFib3J0OworLSAo
dm9pZClzdG9wOworLSAodm9pZClzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZDsKKy0gKHZvaWQpc2Vu
ZFNwZWVjaEVuZElmTmVlZGVkOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTcGVlY2hS
ZWNvZ25pemVyVGFzaworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZp
ZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRp
b25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJl
c3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0
ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
JikpY2FsbGJhY2sKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgIF9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBfZG9NdWx0
aXBsZVJlY29nbml0aW9ucyA9IGNvbnRpbnVvdXM7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sgPSBj
YWxsYmFjazsKKworICAgIGlmICghYWx0ZXJuYXRpdmVzKQorICAgICAgICBhbHRlcm5hdGl2ZXMg
PSAxOworICAgIF9tYXhBbHRlcm5hdGl2ZXMgPSBhbHRlcm5hdGl2ZXM7CisKKyAgICBpZiAoIVts
b2NhbGVJZGVudGlmaWVyIGxlbmd0aF0pCisgICAgICAgIF9yZWNvZ25pemVyID0gYWRvcHROUyhb
W1NGU3BlZWNoUmVjb2duaXplciBhbGxvY10gaW5pdF0pOworICAgIGVsc2UKKyAgICAgICAgX3Jl
Y29nbml6ZXIgPSBhZG9wdE5TKFtbU0ZTcGVlY2hSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aExv
Y2FsZTpbTlNMb2NhbGUgbG9jYWxlV2l0aExvY2FsZUlkZW50aWZpZXI6bG9jYWxlSWRlbnRpZmll
cl1dKTsKKyAgICBpZiAoIV9yZWNvZ25pemVyKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
aWYgKCFbX3JlY29nbml6ZXIuZ2V0KCkgaXNBdmFpbGFibGVdKQorICAgICAgICByZXR1cm4gbmls
OworCisgICAgW19yZWNvZ25pemVyIHNldERlbGVnYXRlOnNlbGZdOworCisgICAgX3JlcXVlc3Qg
PSBhZG9wdE5TKFtbU0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVzdCBhbGxvY10g
aW5pdF0pOworICAgIGlmIChbX3JlY29nbml6ZXIgc3VwcG9ydHNPbkRldmljZVJlY29nbml0aW9u
XSkKKyAgICAgICAgW19yZXF1ZXN0IHNldFJlcXVpcmVzT25EZXZpY2VSZWNvZ25pdGlvbjpZRVNd
OworICAgIFtfcmVxdWVzdCBzZXRTaG91bGRSZXBvcnRQYXJ0aWFsUmVzdWx0czppbnRlcmltUmVz
dWx0c107CisgICAgW19yZXF1ZXN0IHNldFRhc2tIaW50OlNGU3BlZWNoUmVjb2duaXRpb25UYXNr
SGludERpY3RhdGlvbl07CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAgIFtfcmVx
dWVzdCBzZXREZXRlY3RNdWx0aXBsZVV0dGVyYW5jZXM6WUVTXTsKKyAgICBbX3JlcXVlc3QgX3Nl
dE1heGltdW1SZWNvZ25pdGlvbkR1cmF0aW9uOjYwICogNjBdOworI2VuZGlmCisKKyAgICBfdGFz
ayA9IFtfcmVjb2duaXplci5nZXQoKSByZWNvZ25pdGlvblRhc2tXaXRoUmVxdWVzdDpfcmVxdWVz
dC5nZXQoKSBkZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClj
YWxsYmFja1dpdGhSZXN1bHQ6KFNGVHJhbnNjcmlwdGlvbiAqKXRyYW5zY3JpcHRpb24gaXNGaW5h
bDooQk9PTClpc0ZpbmFsCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0RGF0YT4gZGF0YXM7CisgICAgYXV0byBzZWdtZW50cyA9IFt0cmFuc2NyaXB0aW9uIHNl
Z21lbnRzXTsKKyAgICBmb3IgKFNGVHJhbnNjcmlwdGlvblNlZ21lbnQqIHNlZ21lbnQgaW4gc2Vn
bWVudHMpIHsKKyAgICAgICAgLy8gTm90ZSBzZWdtZW50IGNvbmZpZGVuY2UgaXMgcmVwb3J0ZWQg
MCB3aGVuIHJlc3VsdCBpcyBub3QgZmluYWwuCisgICAgICAgIFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uUmVzdWx0RGF0YSBkYXRhOworICAgICAgICBkYXRhLmlzRmluYWwgPSBpc0ZpbmFsOwor
ICAgICAgICBkYXRhLmFsdGVybmF0aXZlcy5hcHBlbmQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25BbHRlcm5hdGl2ZURhdGEgeyBbW3NlZ21lbnQgc3Vic3RyaW5nXSBVVEY4U3RyaW5nXSwgW3Nl
Z21lbnQgY29uZmlkZW5jZV0gfSk7CisgICAgICAgIGZvciAoTlNTdHJpbmcqIHNlZ21lbnRBbHRl
cm5hdGl2ZSA6IFtzZWdtZW50IGFsdGVybmF0aXZlU3Vic3RyaW5nc10pIHsKKyAgICAgICAgICAg
IGlmIChkYXRhLmFsdGVybmF0aXZlcy5zaXplKCkgPT0gX21heEFsdGVybmF0aXZlcykKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBjb25maWRlbmNlIG9mIGFs
dGVybmF0aXZlIGlzIHVua25vd24uCisgICAgICAgICAgICBkYXRhLmFsdGVybmF0aXZlcy5hcHBl
bmQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgeyBbc2VnbWVudEFs
dGVybmF0aXZlIFVURjhTdHJpbmddLCAwLjAgfSk7CisgICAgICAgIH0KKyAgICAgICAgZGF0YXMu
YXBwZW5kKFdURk1vdmUoZGF0YSkpOworICAgIH0KKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KF9pZGVudGlmaWVyLCBk
YXRhcykpOworfQorCistICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZm
ZXJSZWYpc2FtcGxlQnVmZmVyCit7CisgICAgW19yZXF1ZXN0IGFwcGVuZEF1ZGlvU2FtcGxlQnVm
ZmVyOnNhbXBsZUJ1ZmZlcl07Cit9CisKKy0gKHZvaWQpYWJvcnQKK3sKKyAgICBpZiAoIV90YXNr
IHx8IFtfdGFzayBzdGF0ZV0gPT0gU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tTdGF0ZUNvbXBsZXRl
ZCB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25UYXNrU3RhdGVDYW5jZWxp
bmcpCisgICAgICAgIHJldHVybjsKKworICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07
CisgICAgW19yZXF1ZXN0IGVuZEF1ZGlvXTsKKyAgICBbX3Rhc2sgY2FuY2VsXTsKK30KKworLSAo
dm9pZClzdG9wCit7CisgICAgaWYgKCFfdGFzayB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3BlZWNo
UmVjb2duaXRpb25UYXNrU3RhdGVDb21wbGV0ZWQgfHwgW190YXNrIHN0YXRlXSA9PSBTRlNwZWVj
aFJlY29nbml0aW9uVGFza1N0YXRlRmluaXNoaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBb
c2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAgIFtfcmVxdWVzdCBlbmRBdWRpb107Cisg
ICAgW190YXNrIGZpbmlzaF07Cit9CisKKy0gKHZvaWQpc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWQK
K3sKKyAgICBpZiAoX2hhc1NlbnRTcGVlY2hTdGFydCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
X2hhc1NlbnRTcGVlY2hTdGFydCA9IHRydWU7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hTdGFydCkpOworfQorCistICh2b2lk
KXNlbmRTcGVlY2hFbmRJZk5lZWRlZAoreworICAgIGlmICghX2hhc1NlbnRTcGVlY2hTdGFydCB8
fCBfaGFzU2VudFNwZWVjaEVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2hhc1NlbnRTcGVl
Y2hFbmQgPSB0cnVlOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlVHlwZTo6U3BlZWNoRW5kKSk7Cit9CisKKyNwcmFnbWEgbWFyayBTRlNwZWVjaFJl
Y29nbml6ZXJEZWxlZ2F0ZQorCistICh2b2lkKXNwZWVjaFJlY29nbml6ZXI6KFNGU3BlZWNoUmVj
b2duaXplciAqKXNwZWVjaFJlY29nbml6ZXIgYXZhaWxhYmlsaXR5RGlkQ2hhbmdlOihCT09MKWF2
YWlsYWJsZQoreworICAgIGlmIChhdmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghX3Rhc2spCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5
cGU6OlNlcnZpY2VOb3RBbGxvd2VkLCAiU3BlZWNoIHJlY29nbml0aW9uIHNlcnZpY2UgYmVjb21l
cyB1bmF2YWlsYWJsZSIgfTsKKyAgICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgZXJyb3IpOworICAgIF9kZWxl
Z2F0ZUNhbGxiYWNrKHVwZGF0ZSk7Cit9CisKKyNwcmFnbWEgbWFyayBTRlNwZWVjaFJlY29nbml0
aW9uVGFza0RlbGVnYXRlCisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25EaWREZXRlY3RTcGVl
Y2g6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzaworeworICAgIC8vIEZJWE1FOiBUaGlz
IGlzIG5ldmVyIGNhbGxlZC4KKyAgICBbc2VsZiBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF07Cit9
CisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrOihTRlNwZWVjaFJlY29nbml0aW9uVGFz
ayAqKXRhc2sgZGlkSHlwb3RoZXNpemVUcmFuc2NyaXB0aW9uOihTRlRyYW5zY3JpcHRpb24gKil0
cmFuc2NyaXB0aW9uCit7CisgICAgW3NlbGYgc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWRdOworICAg
IFtzZWxmIGNhbGxiYWNrV2l0aFJlc3VsdDp0cmFuc2NyaXB0aW9uIGlzRmluYWw6Tk9dOworfQor
CistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFzazooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sg
Kil0YXNrIGRpZEZpbmlzaFJlY29nbml0aW9uOihTRlNwZWVjaFJlY29nbml0aW9uUmVzdWx0ICop
cmVjb2duaXRpb25SZXN1bHQKK3sKKyAgICBbc2VsZiBjYWxsYmFja1dpdGhSZXN1bHQ6cmVjb2du
aXRpb25SZXN1bHQuYmVzdFRyYW5zY3JpcHRpb24gaXNGaW5hbDpZRVNdOworICAgIGlmICghX2Rv
TXVsdGlwbGVSZWNvZ25pdGlvbnMpIHsKKyAgICAgICAgW3NlbGYgc2VuZFNwZWVjaEVuZElmTmVl
ZGVkXTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlOjpFbmQpKTsKKyAgICB9Cit9CisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25U
YXNrRmluaXNoZWRSZWFkaW5nQXVkaW86KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzawor
eworICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5ldmVyIGNhbGxlZC4KKyAgICBbc2VsZiBzZW5kU3Bl
ZWNoRW5kSWZOZWVkZWRdOworfQorCistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFza1dhc0Nh
bmNlbGxlZDooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrCit7CisgICAgW3NlbGYgc2Vu
ZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworfQorCistICh2b2lkKXNwZWVjaFJlY29nbml0
aW9uVGFzazooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrIGRpZEZpbmlzaFN1Y2Nlc3Nm
dWxseTooQk9PTClzdWNjZXNzZnVsbHkKK3sKKyAgICBpZiAoc3VjY2Vzc2Z1bGx5KSB7CisgICAg
ICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
RW5kKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGVycm9yID0gV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJy
b3JUeXBlOjpBYm9ydGVkLCBbdGFzay5lcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiBVVEY4U3Ry
aW5nXSB9OworICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGU6OmNyZWF0ZUVycm9yKF9pZGVudGlmaWVyLCBlcnJvcik7CisgICAgX2RlbGVnYXRlQ2FsbGJh
Y2sodXBkYXRlKTsKK30KKworQGVuZAorCisvLyBUZXN0aW5nCitAaW50ZXJmYWNlIFdlYlNwZWVj
aFJlY29nbml6ZXJUYXNrTW9jayA6IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrCisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2Nh
bGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBv
cnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVu
c2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3Qg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjazsKKy0gKHZvaWQpYXVk
aW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXI7CistICh2
b2lkKWFib3J0OworLSAodm9pZClzdG9wOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2sKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRp
ZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
cilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBs
ZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09M
KWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2
ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaWRlbnRpZmllciA9IGlkZW50aWZpZXI7Cisg
ICAgX2RlbGVnYXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1
ZmZlcgoreworICAgIFtzZWxmIHNlbmRTcGVlY2hTdGFydElmTmVlZGVkXTsKK30KKworLSAodm9p
ZClhYm9ydAoreworICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgX2RlbGVn
YXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRl
bnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKK30K
KworLSAodm9pZClzdG9wCit7CisgICAgW3NlbGYgYWJvcnRdOworfQorCitAZW5kCisKK05TX0FT
U1VNRV9OT05OVUxMX0VORAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU3BlZWNoUmVj
b2duaXplcjo6ZGF0YUNhcHR1cmVkKGNvbnN0IFdURjo6TWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVz
Y3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBhdXRvIGJ1ZmZlciA9IGNyZWF0
ZUF1ZGlvU2FtcGxlQnVmZmVyKGRhdGEsIGRlc2NyaXB0aW9uLCBQQUw6OnRvQ01UaW1lKHRpbWUp
LCBzYW1wbGVDb3VudCk7CisgICAgW21fdGFzay5nZXQoKSBhdWRpb1NhbXBsZXNBdmFpbGFibGU6
YnVmZmVyLmdldCgpXTsKK30KKworYm9vbCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0
aW9uKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wg
aW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IGFsdGVybmF0aXZlcywgYm9vbCBtb2NrQ2FwdHVyZURl
dmljZXNFbmFibGVkKQoreworICAgIGF1dG8gdGFza0NsYXNzID0gbW9ja0NhcHR1cmVEZXZpY2Vz
RW5hYmxlZCA/IFtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgY2xhc3NdIDogW1dlYlNwZWVj
aFJlY29nbml6ZXJUYXNrTW9jayBjbGFzc107CisgICAgbV90YXNrID0gYWRvcHROUyhbW3Rhc2tD
bGFzcyBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIgbG9jYWxlOmxvY2FsZUlk
ZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250aW51b3VzIHJlcG9ydEludGVyaW1S
ZXN1bHRzOmludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczphbHRlcm5hdGl2ZXMgZGVsZWdh
dGVDYWxsYmFjazpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29uc3QgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGludm9rZURlbGVnYXRlQ2FsbGJhY2sodXBk
YXRlKTsKKyAgICB9XSk7CisKKyAgICByZXR1cm4gISFtX3Rhc2s7Cit9CisKK3ZvaWQgU3BlZWNo
UmVjb2duaXplcjo6c3RvcFJlY29nbml0aW9uKCkKK3sKKyAgICBBU1NFUlQobV90YXNrKTsKKyAg
ICBbbV90YXNrLmdldCgpIHN0b3BdOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0
UmVjb2duaXRpb24oKQoreworICAgIEFTU0VSVChtX3Rhc2spOworICAgIFttX3Rhc2suZ2V0KCkg
YWJvcnRdOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24oKQor
eworICAgIGlmICghbV90YXNrKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRhc2sgPSBz
dGQ6OmV4Y2hhbmdlKG1fdGFzaywgbnVsbHB0cik7CisgICAgW3Rhc2suZ2V0KCkgYWJvcnRdOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09H
TklaRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBjOGU1YWYxZmVmMTA1ZjM0YzgxNzgx
NzJmYzFkY2Q2N2RlNGU3ZjY1Li4xNTE4YmU3MjZjMjc3NmJmMDhkYzBkMmNjYWNiYWZjOWM5NmZl
MWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTkyLDYgKzkyLDcgQEAgTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCiBNb2R1bGVzL3BsdWdp
bnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuY3BwCitNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyQ29j
b2EubW0KIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0K
IGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9z
L0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0YWFlYzU3NTQ5NzE4ZWQ1MTZkOTc2OWMw
MmRjZGEyODdjM2Q0NzJmLi5kOWRiYWI4ODAxNzc4MzE0ZDgwMjFiOGRkMGM0ODIyMjQ3ZGM1ZWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMTMwOSw2ICsxMTMwOSw3IEBACiAJCTkzMTZEREY4MjQwQzY0QjMwMDkzNDBBQSAv
KiBTaW1wbGVSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW1wbGVS
YW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE2RERGQTI0MEM2NEIzMDA5
MzQwQUEgLyogU2ltcGxlUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2ltcGxlUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE2
RERGRTI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCb3VuZGFyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzMTkzNTc1MjU3QjZBNDQwMDNGNjZENCAvKiBTcGVlY2hSZWNvZ25pemVyQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUFFM0I4MUZCODBFQUUwMEY1RUZCMiAvKiBKU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFsdWVJbldyYXBwZWRPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQkNDNjAxMTI0REZDQjAwQkU3
MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTMxQ0JEMDYxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlTm9kZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZU5vZGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU3MzgsNiArMjU3MzksNyBAQAog
CQkJCTkzRDZCNzZEMjU0QjhFMUIwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5o
ICovLAogCQkJCTkzOUMwRDIzMjU2NDhDNEUwMEIzMjExQiAvKiBTcGVlY2hSZWNvZ25pemVyLmNw
cCAqLywKIAkJCQk5MzlDMEQyMTI1NjQ4QzM5MDBCMzIxMUIgLyogU3BlZWNoUmVjb2duaXplci5o
ICovLAorCQkJCTkzMTkzNTc1MjU3QjZBNDQwMDNGNjZENCAvKiBTcGVlY2hSZWNvZ25pemVyQ29j
b2EubW0gKi8sCiAJCQkJQUEyQTVBQkQxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNp
cy5jcHAgKi8sCiAJCQkJQUEyQTVBQkUxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNp
cy5oICovLAogCQkJCUFBMkE1QUJGMTZBNDg1RDUwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMu
aWRsICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIuY3BwCmluZGV4IDlmNjAwZDNmNWNkYzZjMzJjNTQ4YTBhMDlhYjAyYmMxNDUzNDUy
NDQuLjY2NjdhMmRkZDUzMTkyZDViMTY5MmE2N2I2OWFkNGU3MjI4M2IyY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKQEAg
LTM2LDEwICszNiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiBwZXJtaXNzaW9uQ2hlY2tlcikK
K1NwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBD
OjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYgcGVy
bWlzc2lvbkNoZWNrZXIsIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNl
c0VuYWJsZWQmJiBjaGVja0lmRW5hYmxlZCkKICAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNv
bm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3Blcm1p
c3Npb25DaGVja2VyKFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpKQorICAgICwgbV9jaGVja0lm
TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZChXVEZNb3ZlKGNoZWNrSWZFbmFibGVkKSkKIHsKIH0K
IApAQCAtNzAsMTEgKzcxLDExIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVl
c3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBoYW5kbGVSZXF1ZXN0KGlkZW50aWZpZXIp
OworICAgICAgICBoYW5kbGVSZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CiAgICAgfSk7CiB9CiAKLXZv
aWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQor
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX3JlY29nbml6ZXIp
IHsKICAgICAgICAgbV9yZWNvZ25pemVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyPihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYgdXBkYXRl
KSB7CkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRs
ZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uCiAgICAgICAgIH0p
OwogICAgIH0KIAotICAgIG1fcmVjb2duaXplci0+c3RhcnQoY2xpZW50SWRlbnRpZmllcik7Cisg
ICAgbV9yZWNvZ25pemVyLT5zdGFydChyZXF1ZXN0LmNsaWVudElkZW50aWZpZXIoKSwgcmVxdWVz
dC5sYW5nKCksIHJlcXVlc3QuY29udGludW91cygpLCByZXF1ZXN0LmludGVyaW1SZXN1bHRzKCks
IHJlcXVlc3QubWF4QWx0ZXJuYXRpdmVzKCksIG1fY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0Vu
YWJsZWQoKSk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0b3AoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
U2VydmVyLmgKaW5kZXggYTdmNzZkMzhlZTUwMWU1ODJmNzlhNTQ0ZmEwMjdjYjBiMzIyOGZkNy4u
OGFlZjI3MjBiYjJhOWQxY2NlNDE1YTY0ZmZhMzNhNTlkMDliYTE1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC00NiwxMSAr
NDYsMTIgQEAgZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6
IGJvb2w7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciA9IFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyOwogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hl
Y2tlciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYp
PjsKK3VzaW5nIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJs
ZWQgPSBGdW5jdGlvbjxib29sKCk+OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRp
ZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmKTsKKyAgICBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwg
U3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCYmKTsKIAog
ICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1S
ZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
KTsKICAgICB2b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcik7CkBAIC01OSw3ICs2MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QmKTsKLSAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CisgICAgdm9pZCBoYW5kbGVSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc2VuZFVw
ZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+ID0gV1RGOjpudWxsb3B0LCBPcHRpb25hbDxWZWN0b3I8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBXVEY6Om51bGxvcHQpOwog
ICAgIHZvaWQgc2VuZFVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSYpOwogCkBAIC03NSw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9yZXF1ZXN0czsKICAgICBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyIG1fcGVybWlzc2lvbkNoZWNrZXI7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI+IG1fcmVjb2duaXpl
cjsKKyAgICBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVk
IG1fY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGU3ZDljZGZlNTUzNWMyN2M0NTA0ZjAxMGE2ZWRmOGU0YzVlM2NhNmEuLjg5MGJhYTcwNmQ3
Yjc5OWU0N2ZlMDA4NThkZjQ0NmZmNjQ2YTZhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTcyMiw2ICsxNzIyLDEwIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcklkZW50CiAgICAgICAgIH0KIAogICAgICAgICB3ZWFrUGFnZS0+cmVxdWVzdFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICB9LCBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oKSB7CisgICAg
ICAgIGlmICghd2Vha1BhZ2UgfHwgIXdlYWtQYWdlLT5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJl
RGV2aWNlc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfSk7CiAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLCAq
c3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlKTsKIH0K
</data>
<flag name="commit-queue"
          id="432910"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415646</attachid>
            <date>2020-12-08 08:06:28 -0800</date>
            <delta_ts>2020-12-09 11:35:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201208080628.patch</filename>
            <type>text/plain</type>
            <size>37110</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjEzNDk4OWQ0M2U2ZTY1
N2Y3NTRjYmQ2YTEwYTRkODA5MGJjYWYyMi4uNTg3YzA1YmE0ODMwOTg0ZTgzMDE2NmFjZDljNmZm
ZjFlZTc5YjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTEyLTA4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYW51
YWxseSB0ZXN0ZWQgaW4gTWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9X
ZWJDb3JlLnhjY29uZmlnOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pemVyOjppbnZva2VEZWxlZ2F0ZUNhbGxiYWNrKTogaW52b2tlIGRlbGVn
YXRlIGNhbGxiYWNrIHdpdGggdXBkYXRlLiBJZiB1cGRhdGUgdHlwZSBlcnJvcgorICAgICAgICBv
ciBlbmQsIHdoaWNoIG1lYW5zIHRoaXMgaXMgdGhlIGxhc3QgdXBkYXRlIGZvciBjdXJyZW50IHJl
cXVlc3QsIGRvIGEgcmVzZXQgYmVmb3JlIGludm9raW5nIGNhbGxiYWNrLiBBbm90aGVyCisgICAg
ICAgIGVycm9yIG9yIGVuZCB1cGRhdGUgbWF5IGJlIGdlbmVyYXRlZCBkdXJpbmcgcmVzZXQsIGJl
Y2F1c2UgaXQgc3RvcHMgY2FwdHVyZSBhbmQgcmVjb2duaXRpb24uIEluIHRoaXMgY2FzZSwKKyAg
ICAgICAgd2UgaWdub3JlIHRoZSBsYXRlciBnZW5lcmF0ZWQgZXJyb3Igb3IgZW5kIHVwZGF0ZS4K
KyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0KTogcmVzZXQgU3BlZWNo
UmVjb2duaXplciBzdGF0ZSBieSBzdG9wcGluZyBvbmdvaW5nIHdvcmsgaWYgYW55LgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJvcnRJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydENhcHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXplcjo6c3RvcFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OmFib3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXplcjo6cmVzZXRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
emVyOjpzdGFydEludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0b3BJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml6ZXJDb2NvYS5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBv
cnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmlu
YWw6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAoLVtX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3BlZWNoUmVjb2duaXplcjphdmFpbGFi
aWxpdHlEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNw
ZWVjaFJlY29nbml0aW9uRGlkRGV0ZWN0U3BlZWNoOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hS
ZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkSHlwb3RoZXNpemVUcmFuc2Ny
aXB0aW9uOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNv
Z25pdGlvblRhc2s6ZGlkRmluaXNoUmVjb2duaXRpb246XSk6CisgICAgICAgICgtW1dlYlNwZWVj
aFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29nbml0aW9uVGFza0ZpbmlzaGVkUmVhZGluZ0F1ZGlv
Ol0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlv
blRhc2tXYXNDYW5jZWxsZWQ6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNr
IHNwZWVjaFJlY29nbml0aW9uVGFzazpkaWRGaW5pc2hTdWNjZXNzZnVsbHk6XSk6CisgICAgICAg
ICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBpbml0V2l0aElkZW50aWZpZXI6bG9jYWxl
OmRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6cmVwb3J0SW50ZXJpbVJlc3VsdHM6bWF4QWx0ZXJuYXRp
dmVzOmRlbGVnYXRlQ2FsbGJhY2s6XSk6CisgICAgICAgIHVzZSBtb2NrIHNwZWVjaCByZW9jb2du
aXplciB3aGVuIG1vY2sgY2FwdHVyZSBkZXZpY2VzIGFyZSB1c2VkLgorICAgICAgICAoLVtXZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2sgYXVkaW9TYW1wbGVzQXZhaWxhYmxlOl0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgYWJvcnRdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tNb2NrIHN0b3BdKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI6OmRhdGFDYXB0dXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OnN0b3BSZWNvZ25pdGlvbik6IHN0b3AgcmVjb2duaXRpb24gYWZ0ZXIgcmVjb2duaXpp
bmcgYWxyZWFkeSBjYXB0dXJlZCBhdWRpby4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OmFib3J0UmVjb2duaXRpb24pOiBzdG9wIHJlY29nbml0aW9uIGltbWVkaWF0ZWx5Lgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbik6IHN0
b3AgcmVjb2duaXRpb24gaW1tZWRpYXRlbHkgYW5kIHRocm93IGF3YXkgdGFzayAobm8gbG9uZ2Vy
CisgICAgICAgIHJlY2VpdmUgdXBkYXRlIGFib3V0IGl0KS4KKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAyMC0xMi0wOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0lGQ10gVHJpbW1hYmxlIGNvbnRlbnQgY2FuIGluY2x1ZGUgPHdicj4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MmI4YjIxN2RlZjQ5ZDkwOGRlMTExY2Y3NTIwMjY4NTdjNjkyOGU3ZC4uNTY0ZDQ5YWVmYjY4OTE0
Zjg0NGIzNWI4Yzg5OTg1NjU5NTRlZGEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAy
MC0xMi0wOCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBl
cm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9u
U2VydmVyKToKKwogMjAyMC0xMi0wOCAgUnlhbiBIb3N0ZXRsZXIgIDxyaG9zdEBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIHRhcmdldCB0byBjcmVhdGUgL3Vzci9sb2NhbCB0byB3b3JrIGFyb3Vu
ZCBYQlMgQnVnIDxyZGFyOi8vcHJvYmxlbS8yMDM4ODY1MD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCmluZGV4IGRiNDU3N2JiMzIyMGFjMjE0Zjk5
MDVkYjgzM2JkZmNjNjU5ZmE2OTIuLmE0ZGNiYTdiOGYxMDFmNTU1NGJhYzk5MjFkN2JhZTA4YzQz
MjY1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUu
eGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2Nv
bmZpZwpAQCAtMTIxLDggKzEyMSwxNCBAQCBXS19DT1JFX0lNQUdFX0xERkxBR1MgPSAtZnJhbWV3
b3JrIENvcmVJbWFnZTsKIFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MgPSAkKFdLX1VSTF9GT1JN
QVRUSU5HX0xERkxBR1NfJChXS19IQVZFX1VSTF9GT1JNQVRUSU5HKSk7CiBXS19VUkxfRk9STUFU
VElOR19MREZMQUdTX1lFUyA9IC1mcmFtZXdvcmsgVVJMRm9ybWF0dGluZzsKIAorV0tfU1BFRUNI
X0xERkxBR1MgPSAkKFdLX1NQRUVDSF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOworV0tf
U1BFRUNIX0xERkxBR1NfbWFjb3N4ID0gLWZyYW1ld29yayBTcGVlY2g7CitXS19TUEVFQ0hfTERG
TEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgU3BlZWNoOworV0tfU1BFRUNIX0xERkxBR1NfaXBo
b25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBTcGVlY2g7CitXS19TUEVFQ0hfTERGTEFHU19tYWNj
YXRhbHlzdCA9IC1mcmFtZXdvcmsgU3BlZWNoOworCiAvLyBGSVhNRTogUmVkdWNlIHRoZSBudW1i
ZXIgb2YgYWxsb3dhYmxlX2NsaWVudHMgPHJkYXI6Ly9wcm9ibGVtLzMxODIzOTY5PgotT1RIRVJf
TERGTEFHUyA9ICQoaW5oZXJpdGVkKSAkKFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS19MREZMQUdT
KSAtbHNxbGl0ZTMgLWxvYmpjIC1sQU5HTEUgLWFsbG93YWJsZV9jbGllbnQgV2ViQ29yZVRlc3RT
dXBwb3J0IC1hbGxvd2FibGVfY2xpZW50IFdlYktpdExlZ2FjeSAtZm9yY2VfbG9hZCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvbGliUEFMLmEgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1ld29yayBD
b3JlQXVkaW8gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJh
bWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBJT1N1cmZhY2UgLWZyYW1ld29yayBJbWFnZUlP
IC1mcmFtZXdvcmsgTWV0YWwgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9V
Q0gpKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19QTEFURk9STV9OQU1FKSkgJChXS19B
UFBLSVRfTERGTEFHUykgJChXS19BUFBTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVESU9fVU5JVF9M
REZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfVUlfTERGTEFHUykgJChXS19E
QVRBX0RFVEVDVE9SU19DT1JFX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFH
UykgJChXS19JT1NVUkZBQ0VfQUNDRUxFUkFUT1JfTERGTEFHUykgJChXS19MSUJXRUJSVENfTERG
TEFHUykgJChXS19NT0JJTEVfQ09SRV9TRVJWSUNFU19MREZMQUdTKSAkKFdLX01PQklMRV9HRVNU
QUxUX0xERkxBR1MpICQoV0tfTkVUV09SS19FWFRFTlNJT05fTERfRkxBR1MpICQoV0tfU1lTVEVN
X0NPTkZJR1VSQVRJT05fTERGTEFHUykgJChXS19DT1JFX0lNQUdFX0xERkxBR1MpICQoV0tfVVJM
X0ZPUk1BVFRJTkdfTERGTEFHUyk7CitPVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpICQoV0tf
UkVMT0NBVEFCTEVfRlJBTUVXT1JLX0xERkxBR1MpIC1sc3FsaXRlMyAtbG9iamMgLWxBTkdMRSAt
YWxsb3dhYmxlX2NsaWVudCBXZWJDb3JlVGVzdFN1cHBvcnQgLWFsbG93YWJsZV9jbGllbnQgV2Vi
S2l0TGVnYWN5IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJQQUwuYSAtZnJh
bWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3JrIENvcmVHcmFw
aGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3Jr
IElPU3VyZmFjZSAtZnJhbWV3b3JrIEltYWdlSU8gLWZyYW1ld29yayBNZXRhbCAkKE9USEVSX0xE
RkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpICQoT1RIRVJfTERGTEFHU19QTEFURk9S
TV8kKFdLX1BMQVRGT1JNX05BTUUpKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdLX0FQUFNVUFBP
UlRfTERGTEFHUykgJChXS19BVURJT19VTklUX0xERkxBR1MpICQoV0tfQ0FSQk9OX0xERkxBR1Mp
ICQoV0tfQ09SRV9VSV9MREZMQUdTKSAkKFdLX0RBVEFfREVURUNUT1JTX0NPUkVfTERGTEFHUykg
JChXS19HUkFQSElDU19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0lPU1VSRkFDRV9BQ0NFTEVSQVRP
Ul9MREZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZMQUdTKSAkKFdLX01PQklMRV9DT1JFX1NFUlZJ
Q0VTX0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RBTFRfTERGTEFHUykgJChXS19ORVRXT1JLX0VY
VEVOU0lPTl9MRF9GTEFHUykgJChXS19TWVNURU1fQ09ORklHVVJBVElPTl9MREZMQUdTKSAkKFdL
X0NPUkVfSU1BR0VfTERGTEFHUykgJChXS19VUkxfRk9STUFUVElOR19MREZMQUdTKSAkKFdLX1NQ
RUVDSF9MREZMQUdTKTsKIAogT1RIRVJfTERGTEFHU19QTEFURk9STV9jb2NvYXRvdWNoID0gLWFs
bG93YWJsZV9jbGllbnQgV2ViS2l0IC1hbGxvd2FibGVfY2xpZW50IGlUdW5lc1UgLWFsbG93YWJs
ZV9jbGllbnQgQ2FzYWJsYW5jYSAtYWxsb3dhYmxlX2NsaWVudCBSZW1vdGUgLWFsbG93YWJsZV9j
bGllbnQgVFZCb29rcyAtYWxsb3dhYmxlX2NsaWVudCBEdW1wUmVuZGVyVHJlZSAtYWxsb3dhYmxl
X2NsaWVudCBXZWJLaXRUZXN0UnVubmVyIC1hbGxvd2FibGVfY2xpZW50IFRlc3RXZWJLaXRBUEk7
CiBPVEhFUl9MREZMQUdTX1BMQVRGT1JNX21hY29zeCA9IC1zdWJfbGlicmFyeSBsaWJvYmpjIC11
bWJyZWxsYSBXZWJLaXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml6ZXIuY3BwCmluZGV4IDViZWI2MDU2NDdiMzI5ZTI2NGY4M2MyNDlmNTdjMmEy
MDgxYzJmZDcuLmRkNjQxZDU0M2IyOGQ3Yjg1NDc5ODY3ODgxNTk1N2Q4ZDJkY2ZiZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuY3Bw
CkBAIC0yOCwxMSArMjgsNiBAQAogCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25VcGRhdGUu
aCIKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIk1lZGlhVXRpbGl0aWVzLmgiCi0j
aW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KLSNlbmRp
ZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNwZWVjaFJlY29nbml6ZXI6OlNwZWVjaFJlY29n
bml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtNDAsNDMgKzM1LDcyIEBAIFNw
ZWVjaFJlY29nbml6ZXI6OlNwZWVjaFJlY29nbml6ZXIoRGVsZWdhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogfQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0KCkKK3ZvaWQgU3BlZWNo
UmVjb2duaXplcjo6c3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29u
dGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBi
b29sIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpCit7CisgICAgYWJvcnRJZk5lZWRlZCgpOwor
CisgICAgbV9jbGllbnRJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBpbnZva2VEZWxlZ2F0
ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRp
ZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOworCisgICAgaWYgKCFz
dGFydFJlY29nbml0aW9uKGlkZW50aWZpZXIsIGxvY2FsZUlkZW50aWZpZXIsIGNvbnRpbnVvdXMs
IGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMsIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJs
ZWQpKSB7CisgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxv
d2VkLCAiRmFpbGVkIHRvIHN0YXJ0IHJlY29nbml0aW9uIiB9OworICAgICAgICBhdXRvIHVwZGF0
ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihpZGVudGlm
aWVyLCBlcnJvcik7CisgICAgICAgIGludm9rZURlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0YXJ0Q2FwdHVyZSgpOworfQorCit2b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OnN0b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCBzaG91bGRHZW5l
cmF0ZUZpbmFsUmVzdWx0KQogewogICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291cmNlID0gbnVsbHB0
cjsKKyAgICBzdG9wQ2FwdHVyZSgpOworICAgIGlmIChzaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0
ID09IFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQ6OlllcykKKyAgICAgICAgc3RvcFJlY29nbml0
aW9uKCk7CisgICAgZWxzZQorICAgICAgICBhYm9ydFJlY29nbml0aW9uKCk7Cit9CisKK3ZvaWQg
U3BlZWNoUmVjb2duaXplcjo6aW52b2tlRGVsZWdhdGVDYWxsYmFjayhjb25zdCBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZSYgdXBkYXRlKQoreworICAgIGlmICh1cGRhdGUudHlwZSgpID09IFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IgfHwgdXBkYXRlLnR5cGUoKSA9PSBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkgeworICAgICAgICBpZiAobV9pc1Jlc2V0dGluZykK
KyAgICAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlv
bkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsICJBbm90aGVyIHJl
cXVlc3QgaXMgc3RhcnRlZCIgfTsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKCptX2NsaWVudElkZW50aWZpZXIsIGVycm9yKSk7Cisg
ICAgICAgIHJlc2V0KCk7CisgICAgfQorCisgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7
CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTcGVlY2hSZWNvZ25pemVy
OjpyZXNldCgpCiB7Ci0gICAgcmVzZXQoKTsKKyAgICBtX2lzUmVzZXR0aW5nID0gdHJ1ZTsKIAot
ICAgIG1fY2xpZW50SWRlbnRpZmllciA9IGlkZW50aWZpZXI7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxi
YWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOworICAgIHN0b3BDYXB0dXJlKCk7
CisgICAgcmVzZXRSZWNvZ25pdGlvbigpOworICAgIG1fY2xpZW50SWRlbnRpZmllciA9IFdURjo6
bnVsbG9wdDsKIAotICAgIHN0YXJ0SW50ZXJuYWwoKTsKKyAgICBtX2lzUmVzZXR0aW5nID0gZmFs
c2U7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRJbnRlcm5hbCgpCit2b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OmFib3J0SWZOZWVkZWQoKQogewotICAgIGF1dG8gZGF0YUNhbGxiYWNr
ID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHRpbWUsIGNvbnN0
IGF1dG8mIGRhdGEsIGNvbnN0IGF1dG8mIGRlc2NyaXB0aW9uLCBhdXRvIHNhbXBsZUNvdW50KSB7
Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKCFt
X2NsaWVudElkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICBhdXRvIGJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGRhdGEsIGRl
c2NyaXB0aW9uLCBQQUw6OnRvQ01UaW1lKHRpbWUpLCBzYW1wbGVDb3VudCk7Ci0gICAgICAgIFVO
VVNFRF9QQVJBTShidWZmZXIpOwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKHRpbWUpOwot
ICAgICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShkZXNjcmlw
dGlvbik7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShzYW1wbGVDb3VudCk7Ci0jZW5kaWYKKyAgICBh
dXRvIGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJy
b3JUeXBlOjpBYm9ydGVkLCAiQW5vdGhlciByZXF1ZXN0IGlzIHN0YXJ0ZWQiIH07CisgICAgaW52
b2tlRGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3Io
Km1fY2xpZW50SWRlbnRpZmllciwgZXJyb3IpKTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pemVy
OjpzdGFydENhcHR1cmUoKQoreworICAgIGF1dG8gZGF0YUNhbGxiYWNrID0gW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHRpbWUsIGNvbnN0IGF1dG8mIGRhdGEsIGNv
bnN0IGF1dG8mIGRlc2NyaXB0aW9uLCBhdXRvIHNhbXBsZUNvdW50KSB7CisgICAgICAgIGlmICh3
ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kYXRhQ2FwdHVyZWQodGltZSwgZGF0YSwg
ZGVzY3JpcHRpb24sIHNhbXBsZUNvdW50KTsKICAgICB9OwogCiAgICAgYXV0byBzdGF0ZVVwZGF0
ZUNhbGxiYWNrID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1
dG8mIHVwZGF0ZSkgewpAQCAtODQsMzkgKzEwOCw0NiBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6
OnN0YXJ0SW50ZXJuYWwoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEFTU0VSVCht
X2NsaWVudElkZW50aWZpZXIgJiYgbV9jbGllbnRJZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRl
LmNsaWVudElkZW50aWZpZXIoKSk7Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUp
OwotCi0gICAgICAgIGlmICh1cGRhdGUudHlwZSgpID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RXJyb3IpCi0gICAgICAgICAgICBtX3NvdXJjZSA9IG51bGxwdHI7CisgICAgICAgIGlu
dm9rZURlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKICAgICB9OwogCiAgICAgbV9zb3VyY2UgPSBt
YWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZT4oKm1fY2xpZW50SWRlbnRp
ZmllciwgV1RGTW92ZShkYXRhQ2FsbGJhY2spLCBXVEZNb3ZlKHN0YXRlVXBkYXRlQ2FsbGJhY2sp
KTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wKFNob3VsZEdlbmVyYXRlRmluYWxS
ZXN1bHQgc2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6
c3RvcENhcHR1cmUoKQogewotICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQorICAgIGlmICgh
bV9zb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3BJbnRlcm5hbCgpOworICAgIG1f
c291cmNlID0gbnVsbHB0cjsKKyAgICBpbnZva2VEZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpBdWRpb0VuZCkpOworfQogCi0gICAgaWYgKHNob3VsZEdlbmVyYXRlRmlu
YWxSZXN1bHQgPT0gU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6WWVzKSB7Ci0gICAgICAgIC8v
IFRPRE86IGdlbmVyYXRlIHJlYWwgcmVzdWx0IHdoZW4gc3BlZWNoIHJlY29nbml0aW9uIGJhY2tl
bmQgaXMgaW1wbGVtZW50ZWQuCi0gICAgICAgIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dERhdGE+IHJlc3VsdERhdGFzOwotICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVj
b2duaXRpb25VcGRhdGU6OmNyZWF0ZVJlc3VsdCgqbV9jbGllbnRJZGVudGlmaWVyLCByZXN1bHRE
YXRhcykpOwotICAgIH0KKyNpZiAhSEFWRShTUEVFQ0hSRUNPR05JWkVSKQogCi0gICAgbV9kZWxl
Z2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRl
bnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKLSAgICBtX2NsaWVu
dElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmRhdGFD
YXB0dXJlZChjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwg
Y29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkKK3sKIH0KIAotdm9pZCBTcGVl
Y2hSZWNvZ25pemVyOjpzdG9wSW50ZXJuYWwoKQorYm9vbCBTcGVlY2hSZWNvZ25pemVyOjpzdGFy
dFJlY29nbml0aW9uKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90LCBib29sKQogewotICAgIGlmICgh
bV9zb3VyY2UpCi0gICAgICAgIHJldHVybjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIG1f
c291cmNlID0gbnVsbHB0cjsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OkF1ZGlvRW5kKSk7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25p
dGlvbigpCit7CisgICAgaW52b2tlRGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RW5kKSk7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlv
bigpCit7CisgICAgaW52b2tlRGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6RW5kKSk7CiB9CiAKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbigp
Cit7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKaW5kZXggZTZmMTNmZWU4
NGE1MzNhZjBmMDRlMDc2OWMxYWUwOTViZTViZmYzZi4uOWM5NWZkZTgwYjk4NGQ1MzIzMDZjYjMz
NWRlYjQ5M2MwOGM5MDA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml6ZXIuaApAQCAtMjgsNiArMjgsMTEgQEAKICNpbmNsdWRlICJTcGVlY2hS
ZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLmgiCiAKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIp
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorT0JKQ19DTEFTUyBXZWJTcGVlY2hSZWNvZ25p
emVyVGFzazsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOwpAQCAtMzksMjAgKzQ0LDMzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTcGVlY2hSZWNvZ25pemVyKERlbGVnYXRlQ2FsbGJhY2smJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgflNwZWVjaFJlY29nbml6ZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVu
dGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1h
eEFsdGVybmF0aXZlcywgYm9vbCBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKTsKICAgICBlbnVt
IGNsYXNzIFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgeyBObywgWWVzIH07CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzdG9wKFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgPSBTaG91bGRHZW5l
cmF0ZUZpbmFsUmVzdWx0OjpZZXMpOwogCiAgICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcj4gY3VycmVudENsaWVudElkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2NsaWVudElkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKKyAgICB2b2lkIGlu
dm9rZURlbGVnYXRlQ2FsbGJhY2soY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKTsKICAg
ICB2b2lkIHJlc2V0KCk7Ci0gICAgdm9pZCBzdGFydEludGVybmFsKCk7Ci0gICAgdm9pZCBzdG9w
SW50ZXJuYWwoKTsKKyAgICB2b2lkIGFib3J0SWZOZWVkZWQoKTsKKyAgICB2b2lkIHN0YXJ0Q2Fw
dHVyZSgpOworICAgIHZvaWQgc3RvcENhcHR1cmUoKTsKKworICAgIHZvaWQgZGF0YUNhcHR1cmVk
KGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90IHNhbXBsZUNvdW50KTsKKyAgICBib29sIHN0
YXJ0UmVjb2duaXRpb24oU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wg
aW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgYm9vbCBtb2NrQ2FwdHVy
ZURldmljZXNFbmFibGVkKTsKKyAgICB2b2lkIHN0b3BSZWNvZ25pdGlvbigpOworICAgIHZvaWQg
YWJvcnRSZWNvZ25pdGlvbigpOworICAgIHZvaWQgcmVzZXRSZWNvZ25pdGlvbigpOwogCiAgICAg
T3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcj4gbV9j
bGllbnRJZGVudGlmaWVyOwogICAgIERlbGVnYXRlQ2FsbGJhY2sgbV9kZWxlZ2F0ZUNhbGxiYWNr
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U+IG1f
c291cmNlOworICAgIGJvb2wgbV9pc1Jlc2V0dGluZyB7IGZhbHNlIH07CisKKyNpZiBIQVZFKFNQ
RUVDSFJFQ09HTklaRVIpCisgICAgUmV0YWluUHRyPFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrPiBt
X3Rhc2s7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kOGE0MWUzZTU1MjA0NjhlYzZiNmFlZWY5OTQ1MmIxYmNiYjUzY2ExCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXplckNvY29hLm1tCkBAIC0wLDAgKzEsMzI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pemVyLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJF
Q09HTklaRVIpCisKKyNpbXBvcnQgIk1lZGlhVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZS5oIgorI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8
cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+CisjaW1wb3J0IDx3dGYvV2Vha09i
akNQdHIuaD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxTcGVlY2gv
U0ZTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RfUHJpdmF0ZS5oPgorI2VuZGlmCisKK05TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgV2ViU3BlZWNoUmVjb2duaXplclRhc2sgOiBO
U09iamVjdDxTRlNwZWVjaFJlY29nbml0aW9uVGFza0RlbGVnYXRlLCBTRlNwZWVjaFJlY29nbml6
ZXJEZWxlZ2F0ZT4geworQHByaXZhdGUKKyAgICBib29sIF9kb011bHRpcGxlUmVjb2duaXRpb25z
OworICAgIHVpbnQ2NF90IF9tYXhBbHRlcm5hdGl2ZXM7CisgICAgUmV0YWluUHRyPFNGU3BlZWNo
UmVjb2duaXplcj4gX3JlY29nbml6ZXI7CisgICAgUmV0YWluUHRyPFNGU3BlZWNoQXVkaW9CdWZm
ZXJSZWNvZ25pdGlvblJlcXVlc3Q+IF9yZXF1ZXN0OworICAgIFdlYWtPYmpDUHRyPFNGU3BlZWNo
UmVjb2duaXRpb25UYXNrPiBfdGFzazsKKyAgICBib29sIF9oYXNTZW50U3BlZWNoU3RhcnQ7Cisg
ICAgYm9vbCBfaGFzU2VudFNwZWVjaEVuZDsKK0BwdWJsaWMKKyAgICBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIF9pZGVudGlmaWVyOworICAgIEJs
b2NrUHRyPHZvaWQoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKT4gX2Rl
bGVnYXRlQ2FsbGJhY2s7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRl
bnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNv
Z25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRl
cmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRl
bGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGUmKSljYWxsYmFjazsKKy0gKHZvaWQpY2FsbGJhY2tXaXRoUmVzdWx0OihTRlRyYW5zY3Jp
cHRpb24gKil0cmFuc2NyaXB0aW9uIGlzRmluYWw6KEJPT0wpaXNGaW5hbDsKKy0gKHZvaWQpYXVk
aW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXI7CistICh2
b2lkKWFib3J0OworLSAodm9pZClzdG9wOworLSAodm9pZClzZW5kU3BlZWNoU3RhcnRJZk5lZWRl
ZDsKKy0gKHZvaWQpc2VuZFNwZWVjaEVuZElmTmVlZGVkOworCitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzaworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJ
ZGVudGlmaWVyOihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyKWlkZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011
bHRpcGxlUmVjb2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6
KEJPT0wpaW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVy
bmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlJikpY2FsbGJhY2sKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9pZGVudGlmaWVyID0gaWRlbnRpZmll
cjsKKyAgICBfZG9NdWx0aXBsZVJlY29nbml0aW9ucyA9IGNvbnRpbnVvdXM7CisgICAgX2RlbGVn
YXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKworICAgIGlmICghYWx0ZXJuYXRpdmVzKQorICAgICAg
ICBhbHRlcm5hdGl2ZXMgPSAxOworICAgIF9tYXhBbHRlcm5hdGl2ZXMgPSBhbHRlcm5hdGl2ZXM7
CisKKyAgICBpZiAoIVtsb2NhbGVJZGVudGlmaWVyIGxlbmd0aF0pCisgICAgICAgIF9yZWNvZ25p
emVyID0gYWRvcHROUyhbW1NGU3BlZWNoUmVjb2duaXplciBhbGxvY10gaW5pdF0pOworICAgIGVs
c2UKKyAgICAgICAgX3JlY29nbml6ZXIgPSBhZG9wdE5TKFtbU0ZTcGVlY2hSZWNvZ25pemVyIGFs
bG9jXSBpbml0V2l0aExvY2FsZTpbTlNMb2NhbGUgbG9jYWxlV2l0aExvY2FsZUlkZW50aWZpZXI6
bG9jYWxlSWRlbnRpZmllcl1dKTsKKyAgICBpZiAoIV9yZWNvZ25pemVyKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgaWYgKCFbX3JlY29nbml6ZXIuZ2V0KCkgaXNBdmFpbGFibGVdKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgW19yZWNvZ25pemVyIHNldERlbGVnYXRlOnNlbGZdOwor
CisgICAgX3JlcXVlc3QgPSBhZG9wdE5TKFtbU0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9u
UmVxdWVzdCBhbGxvY10gaW5pdF0pOworICAgIGlmIChbX3JlY29nbml6ZXIgc3VwcG9ydHNPbkRl
dmljZVJlY29nbml0aW9uXSkKKyAgICAgICAgW19yZXF1ZXN0IHNldFJlcXVpcmVzT25EZXZpY2VS
ZWNvZ25pdGlvbjpZRVNdOworICAgIFtfcmVxdWVzdCBzZXRTaG91bGRSZXBvcnRQYXJ0aWFsUmVz
dWx0czppbnRlcmltUmVzdWx0c107CisgICAgW19yZXF1ZXN0IHNldFRhc2tIaW50OlNGU3BlZWNo
UmVjb2duaXRpb25UYXNrSGludERpY3RhdGlvbl07CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQorICAgIFtfcmVxdWVzdCBzZXREZXRlY3RNdWx0aXBsZVV0dGVyYW5jZXM6WUVTXTsKKyAg
ICBbX3JlcXVlc3QgX3NldE1heGltdW1SZWNvZ25pdGlvbkR1cmF0aW9uOjYwICogNjBdOworI2Vu
ZGlmCisKKyAgICBfdGFzayA9IFtfcmVjb2duaXplci5nZXQoKSByZWNvZ25pdGlvblRhc2tXaXRo
UmVxdWVzdDpfcmVxdWVzdC5nZXQoKSBkZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAodm9pZCljYWxsYmFja1dpdGhSZXN1bHQ6KFNGVHJhbnNjcmlwdGlvbiAqKXRyYW5z
Y3JpcHRpb24gaXNGaW5hbDooQk9PTClpc0ZpbmFsCit7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4gZGF0YXM7CisgICAgYXV0byBzZWdtZW50cyA9IFt0
cmFuc2NyaXB0aW9uIHNlZ21lbnRzXTsKKyAgICBmb3IgKFNGVHJhbnNjcmlwdGlvblNlZ21lbnQq
IHNlZ21lbnQgaW4gc2VnbWVudHMpIHsKKyAgICAgICAgLy8gTm90ZSBzZWdtZW50IGNvbmZpZGVu
Y2UgaXMgcmVwb3J0ZWQgMCB3aGVuIHJlc3VsdCBpcyBub3QgZmluYWwuCisgICAgICAgIFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YSBkYXRhOworICAgICAgICBkYXRhLmlzRmlu
YWwgPSBpc0ZpbmFsOworICAgICAgICBkYXRhLmFsdGVybmF0aXZlcy5hcHBlbmQoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgeyBbW3NlZ21lbnQgc3Vic3RyaW5nXSBV
VEY4U3RyaW5nXSwgW3NlZ21lbnQgY29uZmlkZW5jZV0gfSk7CisgICAgICAgIGZvciAoTlNTdHJp
bmcqIHNlZ21lbnRBbHRlcm5hdGl2ZSA6IFtzZWdtZW50IGFsdGVybmF0aXZlU3Vic3RyaW5nc10p
IHsKKyAgICAgICAgICAgIGlmIChkYXRhLmFsdGVybmF0aXZlcy5zaXplKCkgPT0gX21heEFsdGVy
bmF0aXZlcykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBj
b25maWRlbmNlIG9mIGFsdGVybmF0aXZlIGlzIHVua25vd24uCisgICAgICAgICAgICBkYXRhLmFs
dGVybmF0aXZlcy5hcHBlbmQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURh
dGEgeyBbc2VnbWVudEFsdGVybmF0aXZlIFVURjhTdHJpbmddLCAwLjAgfSk7CisgICAgICAgIH0K
KyAgICAgICAgZGF0YXMuYXBwZW5kKFdURk1vdmUoZGF0YSkpOworICAgIH0KKyAgICBfZGVsZWdh
dGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0
KF9pZGVudGlmaWVyLCBkYXRhcykpOworfQorCistICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyCit7CisgICAgW19yZXF1ZXN0IGFwcGVu
ZEF1ZGlvU2FtcGxlQnVmZmVyOnNhbXBsZUJ1ZmZlcl07Cit9CisKKy0gKHZvaWQpYWJvcnQKK3sK
KyAgICBpZiAoIV90YXNrIHx8IFtfdGFzayBzdGF0ZV0gPT0gU0ZTcGVlY2hSZWNvZ25pdGlvblRh
c2tTdGF0ZUNvbXBsZXRlZCB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25U
YXNrU3RhdGVDYW5jZWxpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIFtzZWxmIHNlbmRTcGVl
Y2hFbmRJZk5lZWRlZF07CisgICAgW19yZXF1ZXN0IGVuZEF1ZGlvXTsKKyAgICBbX3Rhc2sgY2Fu
Y2VsXTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgaWYgKCFfdGFzayB8fCBbX3Rhc2sgc3Rh
dGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25UYXNrU3RhdGVDb21wbGV0ZWQgfHwgW190YXNrIHN0
YXRlXSA9PSBTRlNwZWVjaFJlY29nbml0aW9uVGFza1N0YXRlRmluaXNoaW5nKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAgIFtfcmVxdWVz
dCBlbmRBdWRpb107CisgICAgW190YXNrIGZpbmlzaF07Cit9CisKKy0gKHZvaWQpc2VuZFNwZWVj
aFN0YXJ0SWZOZWVkZWQKK3sKKyAgICBpZiAoX2hhc1NlbnRTcGVlY2hTdGFydCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgX2hhc1NlbnRTcGVlY2hTdGFydCA9IHRydWU7CisgICAgX2RlbGVnYXRl
Q2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRp
ZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hTdGFydCkp
OworfQorCistICh2b2lkKXNlbmRTcGVlY2hFbmRJZk5lZWRlZAoreworICAgIGlmICghX2hhc1Nl
bnRTcGVlY2hTdGFydCB8fCBfaGFzU2VudFNwZWVjaEVuZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgX2hhc1NlbnRTcGVlY2hFbmQgPSB0cnVlOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoRW5kKSk7Cit9CisKKyNwcmFnbWEg
bWFyayBTRlNwZWVjaFJlY29nbml6ZXJEZWxlZ2F0ZQorCistICh2b2lkKXNwZWVjaFJlY29nbml6
ZXI6KFNGU3BlZWNoUmVjb2duaXplciAqKXNwZWVjaFJlY29nbml6ZXIgYXZhaWxhYmlsaXR5RGlk
Q2hhbmdlOihCT09MKWF2YWlsYWJsZQoreworICAgIGlmIChhdmFpbGFibGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghX3Rhc2spCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZXJy
b3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxvd2VkLCAiU3BlZWNoIHJlY29nbml0aW9u
IHNlcnZpY2UgYmVjb21lcyB1bmF2YWlsYWJsZSIgfTsKKyAgICBhdXRvIHVwZGF0ZSA9IFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgZXJy
b3IpOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7Cit9CisKKyNwcmFnbWEgbWFyayBT
RlNwZWVjaFJlY29nbml0aW9uVGFza0RlbGVnYXRlCisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRp
b25EaWREZXRlY3RTcGVlY2g6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzaworeworICAg
IC8vIEZJWE1FOiBUaGlzIGlzIG5ldmVyIGNhbGxlZC4KKyAgICBbc2VsZiBzZW5kU3BlZWNoU3Rh
cnRJZk5lZWRlZF07Cit9CisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrOihTRlNwZWVj
aFJlY29nbml0aW9uVGFzayAqKXRhc2sgZGlkSHlwb3RoZXNpemVUcmFuc2NyaXB0aW9uOihTRlRy
YW5zY3JpcHRpb24gKil0cmFuc2NyaXB0aW9uCit7CisgICAgW3NlbGYgc2VuZFNwZWVjaFN0YXJ0
SWZOZWVkZWRdOworICAgIFtzZWxmIGNhbGxiYWNrV2l0aFJlc3VsdDp0cmFuc2NyaXB0aW9uIGlz
RmluYWw6Tk9dOworfQorCistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFzazooU0ZTcGVlY2hS
ZWNvZ25pdGlvblRhc2sgKil0YXNrIGRpZEZpbmlzaFJlY29nbml0aW9uOihTRlNwZWVjaFJlY29n
bml0aW9uUmVzdWx0ICopcmVjb2duaXRpb25SZXN1bHQKK3sKKyAgICBbc2VsZiBjYWxsYmFja1dp
dGhSZXN1bHQ6cmVjb2duaXRpb25SZXN1bHQuYmVzdFRyYW5zY3JpcHRpb24gaXNGaW5hbDpZRVNd
OworICAgIGlmICghX2RvTXVsdGlwbGVSZWNvZ25pdGlvbnMpIHsKKyAgICAgICAgW3NlbGYgc2Vu
ZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKKyAgICB9Cit9CisKKy0gKHZvaWQpc3Bl
ZWNoUmVjb2duaXRpb25UYXNrRmluaXNoZWRSZWFkaW5nQXVkaW86KFNGU3BlZWNoUmVjb2duaXRp
b25UYXNrICopdGFzaworeworICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5ldmVyIGNhbGxlZC4KKyAg
ICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworfQorCistICh2b2lkKXNwZWVjaFJlY29n
bml0aW9uVGFza1dhc0NhbmNlbGxlZDooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrCit7
CisgICAgW3NlbGYgc2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICBfZGVsZWdhdGVDYWxsYmFj
ayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworfQorCistICh2b2lk
KXNwZWVjaFJlY29nbml0aW9uVGFzazooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrIGRp
ZEZpbmlzaFN1Y2Nlc3NmdWxseTooQk9PTClzdWNjZXNzZnVsbHkKK3sKKyAgICBpZiAoc3VjY2Vz
c2Z1bGx5KSB7CisgICAgICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCBbdGFzay5lcnJvci5sb2NhbGl6ZWREZXNj
cmlwdGlvbiBVVEY4U3RyaW5nXSB9OworICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKF9pZGVudGlmaWVyLCBlcnJvcik7CisgICAg
X2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKK30KKworQGVuZAorCisvLyBUZXN0aW5nCitAaW50
ZXJmYWNlIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayA6IFdlYlNwZWVjaFJlY29nbml6ZXJU
YXNrCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6
KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wp
Y29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhB
bHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6
KHZvaWQoXikoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFj
azsKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1w
bGVCdWZmZXI7CistICh2b2lkKWFib3J0OworLSAodm9pZClzdG9wOworCitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sKKworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50
aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVy
aW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQg
bG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaWRlbnRpZmllciA9
IGlkZW50aWZpZXI7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVm
ZmVyUmVmKXNhbXBsZUJ1ZmZlcgoreworICAgIFtzZWxmIHNlbmRTcGVlY2hTdGFydElmTmVlZGVk
XTsKK30KKworLSAodm9pZClhYm9ydAoreworICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRl
ZF07CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlOjpFbmQpKTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW3NlbGYgYWJvcnRdOworfQor
CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVkKGNvbnN0IFdURjo6TWVkaWFUaW1l
JiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBhdXRv
IGJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGRhdGEsIGRlc2NyaXB0aW9uLCBQQUw6
OnRvQ01UaW1lKHRpbWUpLCBzYW1wbGVDb3VudCk7CisgICAgW21fdGFzay5nZXQoKSBhdWRpb1Nh
bXBsZXNBdmFpbGFibGU6YnVmZmVyLmdldCgpXTsKK30KKworYm9vbCBTcGVlY2hSZWNvZ25pemVy
OjpzdGFydFJlY29nbml0aW9uKFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNv
bnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IGFsdGVybmF0aXZlcywgYm9v
bCBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKQoreworICAgIGF1dG8gdGFza0NsYXNzID0gbW9j
a0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA/IFtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgY2xh
c3NdIDogW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBjbGFzc107CisgICAgbV90YXNrID0g
YWRvcHROUyhbW3Rhc2tDbGFzcyBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIg
bG9jYWxlOmxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250aW51b3Vz
IHJlcG9ydEludGVyaW1SZXN1bHRzOmludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczphbHRl
cm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKV0oY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkgeworICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGludm9rZURlbGVn
YXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAgICB9XSk7CisKKyAgICByZXR1cm4gISFtX3Rhc2s7Cit9
CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29nbml0aW9uKCkKK3sKKyAgICBBU1NF
UlQobV90YXNrKTsKKyAgICBbbV90YXNrLmdldCgpIHN0b3BdOworfQorCit2b2lkIFNwZWVjaFJl
Y29nbml6ZXI6OmFib3J0UmVjb2duaXRpb24oKQoreworICAgIEFTU0VSVChtX3Rhc2spOworICAg
IFttX3Rhc2suZ2V0KCkgYWJvcnRdOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0
UmVjb2duaXRpb24oKQoreworICAgIGlmICghbV90YXNrKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIHRhc2sgPSBzdGQ6OmV4Y2hhbmdlKG1fdGFzaywgbnVsbHB0cik7CisgICAgW3Rhc2su
Z2V0KCkgYWJvcnRdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBI
QVZFKFNQRUVDSFJFQ09HTklaRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBjOGU1YWYx
ZmVmMTA1ZjM0YzgxNzgxNzJmYzFkY2Q2N2RlNGU3ZjY1Li4xNTE4YmU3MjZjMjc3NmJmMDhkYzBk
MmNjYWNiYWZjOWM5NmZlMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTkyLDYgKzky
LDcgQEAgTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3Bw
CiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KIE1vZHVsZXMv
cGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCitNb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pemVyQ29jb2EubW0KIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VN
YW5hZ2VyQ29jb2EubW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFj
Y2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0YWFlYzU3NTQ5
NzE4ZWQ1MTZkOTc2OWMwMmRjZGEyODdjM2Q0NzJmLi5kOWRiYWI4ODAxNzc4MzE0ZDgwMjFiOGRk
MGM0ODIyMjQ3ZGM1ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTMwOSw2ICsxMTMwOSw3IEBACiAJCTkzMTZEREY4MjQw
QzY0QjMwMDkzNDBBQSAvKiBTaW1wbGVSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTaW1wbGVSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzE2
RERGQTI0MEM2NEIzMDA5MzQwQUEgLyogU2ltcGxlUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2ltcGxlUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzE2RERGRTI0MEM2NEY4MDA5MzQwQUEgLyogQm91bmRhcnlQb2ludC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCb3VuZGFyeVBvaW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzMTkzNTc1MjU3QjZBNDQwMDNGNjZENCAvKiBTcGVlY2hS
ZWNvZ25pemVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pemVy
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUFFM0I4MUZCODBFQUUw
MEY1RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVmFs
dWVJbldyYXBwZWRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQkND
NjAxMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQ0JEMDYxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGlu
Z1N0YXRlTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jv
bGxpbmdTdGF0ZU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU3Mzgs
NiArMjU3MzksNyBAQAogCQkJCTkzRDZCNzZEMjU0QjhFMUIwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZS5oICovLAogCQkJCTkzOUMwRDIzMjU2NDhDNEUwMEIzMjExQiAvKiBTcGVl
Y2hSZWNvZ25pemVyLmNwcCAqLywKIAkJCQk5MzlDMEQyMTI1NjQ4QzM5MDBCMzIxMUIgLyogU3Bl
ZWNoUmVjb2duaXplci5oICovLAorCQkJCTkzMTkzNTc1MjU3QjZBNDQwMDNGNjZENCAvKiBTcGVl
Y2hSZWNvZ25pemVyQ29jb2EubW0gKi8sCiAJCQkJQUEyQTVBQkQxNkE0ODVENTAwOTc1QTI1IC8q
IFNwZWVjaFN5bnRoZXNpcy5jcHAgKi8sCiAJCQkJQUEyQTVBQkUxNkE0ODVENTAwOTc1QTI1IC8q
IFNwZWVjaFN5bnRoZXNpcy5oICovLAogCQkJCUFBMkE1QUJGMTZBNDg1RDUwMDk3NUEyNSAvKiBT
cGVlY2hTeW50aGVzaXMuaWRsICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4IDlmNjAwZDNmNWNkYzZjMzJjNTQ4YTBh
MDlhYjAyYmMxNDUzNDUyNDQuLjY2NjdhMmRkZDUzMTkyZDViMTY5MmE2N2I2OWFkNGU3MjI4M2Iy
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blNlcnZlci5jcHAKQEAgLTM2LDEwICszNiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiBwZXJt
aXNzaW9uQ2hlY2tlcikKK1NwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29nbml0
aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIsIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJZk1v
Y2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQmJiBjaGVja0lmRW5hYmxlZCkKICAgICA6IG1fY29ubmVj
dGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CiAgICAgLCBtX3Blcm1pc3Npb25DaGVja2VyKFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpKQor
ICAgICwgbV9jaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZChXVEZNb3ZlKGNoZWNrSWZF
bmFibGVkKSkKIHsKIH0KIApAQCAtNzAsMTEgKzcxLDExIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBoYW5kbGVSZXF1
ZXN0KGlkZW50aWZpZXIpOworICAgICAgICBoYW5kbGVSZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3Qo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGll
bnRJZGVudGlmaWVyKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVz
dChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYg
KCFtX3JlY29nbml6ZXIpIHsKICAgICAgICAgbV9yZWNvZ25pemVyID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pemVyPihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KV0oYXV0byYgdXBkYXRlKSB7CkBAIC05Myw3ICs5NCw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIG1fcmVjb2duaXplci0+c3RhcnQoY2xpZW50
SWRlbnRpZmllcik7CisgICAgbV9yZWNvZ25pemVyLT5zdGFydChyZXF1ZXN0LmNsaWVudElkZW50
aWZpZXIoKSwgcmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY29udGludW91cygpLCByZXF1ZXN0Lmlu
dGVyaW1SZXN1bHRzKCksIHJlcXVlc3QubWF4QWx0ZXJuYXRpdmVzKCksIG1fY2hlY2tJZk1vY2tD
YXB0dXJlRGV2aWNlc0VuYWJsZWQoKSk7CiB9CiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI6OnN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllciBjbGllbnRJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggYTdmNzZkMzhlZTUwMWU1ODJmNzlhNTQ0ZmEw
MjdjYjBiMzIyOGZkNy4uOGFlZjI3MjBiYjJhOWQxY2NlNDE1YTY0ZmZhMzNhNTlkMDliYTE1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5oCkBAIC00NiwxMSArNDYsMTIgQEAgZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25EZWNpc2lvbiA6IGJvb2w7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRl
bnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyOwogdXNpbmcgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2hlY2tlciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Np
b25EZWNpc2lvbik+JiYpPjsKK3VzaW5nIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJZk1vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQgPSBGdW5jdGlvbjxib29sKCk+OwogCiBjbGFzcyBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VT
ZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNwZWVj
aFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0
aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYm
KTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja0NhcHR1cmVEZXZpY2Vz
RW5hYmxlZCYmKTsKIAogICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3Vz
LCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYmKTsKICAgICB2b2lkIHN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CkBAIC01OSw3ICs2MCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKLSAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CisgICAg
dm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOwog
ICAgIHZvaWQgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9w
dGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+ID0gV1RGOjpudWxsb3B0LCBP
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBX
VEY6Om51bGxvcHQpOwogICAgIHZvaWQgc2VuZFVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSYpOwogCkBAIC03NSw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9y
ZXF1ZXN0czsKICAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyIG1fcGVybWlz
c2lvbkNoZWNrZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI+IG1fcmVjb2duaXplcjsKKyAgICBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrQ2FwdHVy
ZURldmljZXNFbmFibGVkIG1fY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IGU3ZDljZGZlNTUzNWMyN2M0NTA0ZjAxMGE2ZWRmOGU0YzVlM2Nh
NmEuLjg5MGJhYTcwNmQ3Yjc5OWU0N2ZlMDA4NThkZjQ0NmZmNjQ2YTZhODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTcyMiw2ICsxNzIyLDEw
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiAgICAgICAgIH0KIAogICAgICAgICB3ZWFrUGFn
ZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihvcmlnaW4sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICB9LCBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQ
YWdlKV0oKSB7CisgICAgICAgIGlmICghd2Vha1BhZ2UgfHwgIXdlYWtQYWdlLT5wcmVmZXJlbmNl
cygpLm1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiAgICAgYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBpZGVudGlmaWVyLCAqc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaXRlcmF0b3ItPnZhbHVlKTsK
IH0K
</data>
<flag name="review"
          id="432917"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415848</attachid>
            <date>2020-12-10 02:18:29 -0800</date>
            <delta_ts>2020-12-10 08:13:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201210021828.patch</filename>
            <type>text/plain</type>
            <size>62017</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0YTVmYWYxNGM5MWEy
OGEwZTZkOTNhNGEwNDBkN2Q3M2I2ODE5OS4uYmZlOGJmOWU1NDVkZjFmOWIyMTRhYjk4NGNjOGIw
YjlhNzgxY2E1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTEyLTEwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
V2ViU3BlZWNoUmVjb2duaXplclRhc2ssIHdoaWNoIGNvbm5lY3RzIHRvIHNwZWVjaCByZWNvZ25p
dGlvbiBzZXJ2aWNlIHZpYSBTcGVlY2ggZnJhbWV3b3JrIEFQSXMuCisKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcDogTWFrZSBhdWRpbyBjYXB0dXJlIGFuZCBy
ZWNvZ25pdGlvbiBsb2dpYyBzZXBhcmF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFib3J0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0b3BDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OmRhdGFDYXB0dXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpz
dGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFi
b3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3Rv
cFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0
UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c2V0U291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BJ
bnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJD
b2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpkYXRh
Q2FwdHVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNv
Z25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2du
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25p
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVy
VGFzay5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hS
ZWNvZ25pemVyVGFzay5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBv
cnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmlu
YWw6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAoLVtX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3BlZWNoUmVjb2duaXplcjphdmFpbGFi
aWxpdHlEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNw
ZWVjaFJlY29nbml0aW9uVGFzazpkaWRIeXBvdGhlc2l6ZVRyYW5zY3JpcHRpb246XSk6CisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29nbml0aW9uVGFzazpkaWRG
aW5pc2hSZWNvZ25pdGlvbjpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sg
c3BlZWNoUmVjb2duaXRpb25UYXNrV2FzQ2FuY2VsbGVkOl0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkRmluaXNoU3VjY2Vzc2Z1
bGx5Ol0pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6
ZXJUYXNrTW9jay5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2subW06IEFkZGVkLgorICAgICAgICAoLVtXZWJTcGVlY2hS
ZWNvZ25pemVyVGFza01vY2sgaW5pdFdpdGhJZGVudGlmaWVyOmxvY2FsZTpkb011bHRpcGxlUmVj
b2duaXRpb25zOnJlcG9ydEludGVyaW1SZXN1bHRzOm1heEFsdGVybmF0aXZlczpkZWxlZ2F0ZUNh
bGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgYXVkaW9T
YW1wbGVzQXZhaWxhYmxlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2sgYWJvcnRdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIHN0b3Bd
KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0xMi0wOSAgQW5kcmVzIEdvbnphbGV6ICA8YW5k
cmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZvciBmb2N1cyB0cmFja2luZyBpbiBp
c29sYXRlZCB0cmVlIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA5NjliYmJkMWM1MTRlZjVk
ZjM1Nzk1MWJjYTY5MTQ0MDQ3OTkwNDI1Li4wMjcwZGNlZTlmOTliNTg3ZDE1ODA1YjU2ZTg0ZTYw
ZmQ0Zjc2NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMi0x
MCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
cmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHNvZnQgbGlua2luZyB0byBTcGVlY2ggZnJhbWV3b3JrIGFuZCBTUEkuCisKKyAgICAg
ICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvY29jb2Ev
U3BlZWNoU29mdExpbmsuaDogQWRkZWQuCisgICAgICAgICogcGFsL2NvY29hL1NwZWVjaFNvZnRM
aW5rLm1tOiBBZGRlZC4KKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL1NwZWVjaFNQSS5oOiBBZGRl
ZC4KKwogMjAyMC0xMi0wNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIFtDTWFrZV0gUmVtb3ZlIFdFQktJVF9XUkFQX1NPVVJDRUxJU1QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMmRiMTVjYWQyNjYyNjI5MjFkYzRlYzUwOWFjNWM3YzBhYzZjZjY5MC4uMDliNWI4MTdmODAx
YTQxM2MyZjEzNGE4ZWFlNTIzMzgyZTJkOTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMC0xMi0xMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVz
dFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QpOiBXaGVuIHRoZXJlIGlzIGFuIGVycm9yIG9yIGVuZCBl
dmVudCB1cGRhdGUsIHNlcnZlciByZXNldHMgdGhlCisgICAgICAgIHN0YXRlIG9mIFNwZWVjaFJl
Y29nbml6ZXIsIHdoaWNoIHdvdWxkIHRlcm1pbmF0ZSBvbmdvaW5nIHdvcmsuCisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcDogUGFzcyBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkIHZhbHVlIGZyb20g
d2ViIHBhZ2UgYWxsIHRoZSB3YXkgdG8gCisgICAgICAgIFNwZWVjaFJlY29nbml6ZXIgc28gaXQg
ZGVjaWRlcyB3aGV0aGVyZSB0byB1c2UgYSBtb2NrIHNwZWVjaCByZWNvZ29uaXRpb24gYmFja2Vu
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcik6CisKIDIwMjAtMTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBhZGQgc3VwcG9ydCBmb3IgY3JlYXRp
bmcgZXh0ZW5zaW9uIHRhYnMgaW4gV2ViSW5zcGVjdG9yVUkgdmlhIF9XS0luc3BlY3RvckV4dGVu
c2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
emVyLmNwcAppbmRleCBmOTE2ZDJiYTRkMjgwZjc1ODYxMmI1N2NjMTIxOTRmOWI0ZDNiNWI1Li4w
OTNmYzQ2MGVhYTI3YmY1ZTk1YjQ2MzY0OTZjYzU1YzJhMDAyM2Q3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcApAQCAtNDUsNDIg
KzQ1LDQ4IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXQoKQogICAgIGlmICghbV9jbGll
bnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9zb3VyY2UpCi0gICAg
ICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBzdG9wQ2FwdHVyZSgpOworICAgIHJlc2V0UmVj
b2duaXRpb24oKTsKKyAgICBtX2NsaWVudElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cit9CiAK
LSAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0
aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCAiQW5vdGhlciByZXF1ZXN0IGlzIHN0YXJ0ZWQiIH07Ci0g
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJv
cigqbV9jbGllbnRJZGVudGlmaWVyLCBlcnJvcikpOwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjph
Ym9ydCgpCit7CisgICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmllcik7CisgICAgc3RvcENhcHR1
cmUoKTsKKyAgICBhYm9ydFJlY29nbml0aW9uKCk7Cit9CiAKLSAgICBtX2NsaWVudElkZW50aWZp
ZXIgPSBXVEY6Om51bGxvcHQ7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3AoKQoreworICAg
IEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIpOworICAgIHN0b3BDYXB0dXJlKCk7CisgICAgc3Rv
cFJlY29nbml0aW9uKCk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi12b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQor
dm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZlciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
JiYgc291cmNlLCBib29sIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIGNvbnN0IFN0cmluZyYg
bG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1
aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCiB7Ci0gICAgQVNTRVJUKCFtX3NvdXJjZSk7Ci0KLSAg
ICBtX2NsaWVudElkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIEFTU0VSVCghbV9jbGllbnRJ
ZGVudGlmaWVyKTsKKyAgICBtX2NsaWVudElkZW50aWZpZXIgPSBjbGllbnRJZGVudGlmZXI7CiAg
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1f
Y2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOwog
Ci0gICAgc2V0U291cmNlKFdURk1vdmUoc291cmNlKSk7CisgICAgaWYgKCFzdGFydFJlY29nbml0
aW9uKG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIGNsaWVudElkZW50aWZlciwgbG9jYWxlSWRl
bnRpZmllciwgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcykpIHsK
KyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsICJG
YWlsZWQgdG8gc3RhcnQgcmVjb2duaXRpb24iX3MgfTsKKyAgICAgICAgYXV0byB1cGRhdGUgPSBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRp
ZmVyLCBlcnJvcik7CisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgc3RhcnRDYXB0dXJlKFdURk1vdmUoc291cmNlKSk7CiB9
CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c2V0U291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291
cmNlPiYmIHNvdXJjZSkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKFJlZjxS
ZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBhdXRvIGRhdGFDYWxsYmFjayA9
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBhdXRvJiB0aW1lLCBjb25zdCBh
dXRvJiBkYXRhLCBjb25zdCBhdXRvJiBkZXNjcmlwdGlvbiwgYXV0byBzYW1wbGVDb3VudCkgewot
ICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgICAgIGF1dG8gYnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIo
ZGF0YSwgZGVzY3JpcHRpb24sIFBBTDo6dG9DTVRpbWUodGltZSksIHNhbXBsZUNvdW50KTsKLSAg
ICAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0o
dGltZSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICAgICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0aW9uKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZUNvdW50KTsKLSNlbmRp
ZgorICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGF0YUNhcHR1
cmVkKHRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7CiAgICAgfTsKIAogICAg
IGF1dG8gc3RhdGVVcGRhdGVDYWxsYmFjayA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpXShjb25zdCBhdXRvJiB1cGRhdGUpIHsKQEAgLTg5LDQwICs5NSw0OSBAQCB2b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OnNldFNvdXJjZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3Vy
Y2UpCiAKICAgICAgICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmllciAmJiBtX2NsaWVudElkZW50
aWZpZXIudmFsdWUoKSA9PSB1cGRhdGUuY2xpZW50SWRlbnRpZmllcigpKTsKICAgICAgICAgbV9k
ZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7Ci0KLSAgICAgICAgaWYgKHVwZGF0ZS50eXBlKCkgPT0g
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvcikKLSAgICAgICAgICAgIG1fc291cmNl
ID0gbnVsbHB0cjsKICAgICB9OwogCiAgICAgbV9zb3VyY2UgPSBtYWtlVW5pcXVlPFNwZWVjaFJl
Y29nbml0aW9uQ2FwdHVyZVNvdXJjZT4oKm1fY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShkYXRh
Q2FsbGJhY2spLCBXVEZNb3ZlKHN0YXRlVXBkYXRlQ2FsbGJhY2spLCBXVEZNb3ZlKHNvdXJjZSkp
OwogfQogCi0jZW5kaWYKLQotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wKFNob3VsZEdlbmVy
YXRlRmluYWxSZXN1bHQgc2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCkKK3ZvaWQgU3BlZWNoUmVj
b2duaXplcjo6c3RvcENhcHR1cmUoKQogewotICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQor
ICAgIGlmICghbV9zb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3BJbnRlcm5hbCgp
OworICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNo
UmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkF1ZGlvRW5kKSk7Cit9CiAKLSAgICBpZiAoc2hvdWxkR2VuZXJh
dGVGaW5hbFJlc3VsdCA9PSBTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0OjpZZXMpIHsKLSAgICAg
ICAgLy8gVE9ETzogZ2VuZXJhdGUgcmVhbCByZXN1bHQgd2hlbiBzcGVlY2ggcmVjb2duaXRpb24g
YmFja2VuZCBpcyBpbXBsZW1lbnRlZC4KLSAgICAgICAgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9u
UmVzdWx0RGF0YT4gcmVzdWx0RGF0YXM7Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KCptX2NsaWVudElkZW50aWZpZXIsIHJl
c3VsdERhdGFzKSk7Ci0gICAgfQorI2VuZGlmCiAKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwotICAgIG1fY2xpZW50SWRlbnRpZmllciA9IFdU
Rjo6bnVsbG9wdDsKKyNpZiAhSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCit2b2lkIFNwZWVjaFJl
Y29nbml6ZXI6OmRhdGFDYXB0dXJlZChjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1
ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3Qgc2FtcGxlQ291
bnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVy
OjpzdG9wSW50ZXJuYWwoKQorYm9vbCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9u
KGJvb2wsIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90KQogewotICAgIGlmICghbV9zb3VyY2UpCi0g
ICAgICAgIHJldHVybjsKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAKLSAgICBtX3NvdXJjZSA9IG51
bGxwdHI7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpB
dWRpb0VuZCkpOwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3BS
ZWNvZ25pdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBTcGVlY2hS
ZWNvZ25pemVyOjpyZXNldFJlY29nbml0aW9uKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCmluZGV4IGVjNWFjMTMwYjhhMDQ3
N2RhOTFmZDFlMWU3ZmMyYzcwYTRhMzI2M2EuLmU3ZTljYTFhYjEyNTc2YzJhYzFmMTlkZjZiM2Ey
Mjk0MDQ3NTAyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pemVyLmgKQEAgLTI4LDYgKzI4LDExIEBACiAjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb25DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK09CSkNfQ0xBU1MgV2ViU3BlZWNoUmVjb2duaXplclRh
c2s7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTsKQEAgLTQwLDExICs0NSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgflNwZWVjaFJlY29nbml6ZXIoKSA9IGRlZmF1bHQ7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIGJvb2wgbW9ja0NhcHR1
cmVEZXZpY2VzRW5hYmxlZCwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNv
bnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyk7
CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgZW51bSBjbGFz
cyBTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0IHsgTm8sIFllcyB9OwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RvcChTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0ID0gU2hvdWxkR2VuZXJhdGVG
aW5hbFJlc3VsdDo6WWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0KCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wKCk7CiAKICAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBjdXJyZW50Q2xpZW50SWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRpZmllcjsgfQogCkBAIC01MiwxMiArNTcsMjMg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BJbnRlcm5hbCgpOwogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLSAgICB2b2lkIHNldFNvdXJjZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7
CisgICAgdm9pZCBzdGFydENhcHR1cmUoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpOworICAg
IHZvaWQgc3RvcENhcHR1cmUoKTsKICNlbmRpZgogCisgICAgdm9pZCBkYXRhQ2FwdHVyZWQoY29u
c3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3Qgc2FtcGxlQ291bnQpOworICAgIGJvb2wgc3RhcnRS
ZWNvZ25pdGlvbihib29sIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRp
ZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBhbHRl
cm5hdGl2ZXMpOworICAgIHZvaWQgYWJvcnRSZWNvZ25pdGlvbigpOworICAgIHZvaWQgc3RvcFJl
Y29nbml0aW9uKCk7CisgICAgdm9pZCByZXNldFJlY29nbml0aW9uKCk7CisKICAgICBPcHRpb25h
bDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBtX2NsaWVudElk
ZW50aWZpZXI7CiAgICAgRGVsZWdhdGVDYWxsYmFjayBtX2RlbGVnYXRlQ2FsbGJhY2s7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZT4gbV9zb3VyY2U7
CisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAgUmV0YWluUHRyPFdlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrPiBtX3Rhc2s7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVj
aFJlY29nbml6ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29h
L1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTQ4NjY2NGZiY2M2ZDc0YTlh
ZjFjZDQyMWRmNjVlZDgyNTVmODg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCkBAIC0wLDAgKzEs
ODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNwZWVjaFJl
Y29nbml6ZXIuaCIKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCAiTWVk
aWFVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCisjaW1w
b3J0ICJXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaCIKKyNpbXBvcnQgPFNwZWVjaC9TcGVl
Y2guaD4KKyNpbXBvcnQgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpkYXRhQ2Fw
dHVyZWQoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0
YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1w
bGVDb3VudCkKK3sKKyAgICBhdXRvIGJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGRh
dGEsIGRlc2NyaXB0aW9uLCBQQUw6OnRvQ01UaW1lKHRpbWUpLCBzYW1wbGVDb3VudCk7CisgICAg
W21fdGFzayBhdWRpb1NhbXBsZXNBdmFpbGFibGU6YnVmZmVyLmdldCgpXTsKK30KKworYm9vbCBT
cGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKGJvb2wgbW9ja0NhcHR1cmVEZXZpY2Vz
RW5hYmxlZCwgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywg
Ym9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgYWx0ZXJuYXRpdmVzKQoreworICAgIGF1dG8g
dGFza0NsYXNzID0gbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA/IFtXZWJTcGVlY2hSZWNvZ25p
emVyVGFza01vY2sgY2xhc3NdIDogW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGNsYXNzXTsKKyAg
ICBtX3Rhc2sgPSBhZG9wdE5TKFtbdGFza0NsYXNzIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6
aWRlbnRpZmllciBsb2NhbGU6bG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25z
OmNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6aW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJu
YXRpdmVzOmFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOlt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpXShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRlKSB7
CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
bV9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7CisgICAgfV0pOworCisgICAgcmV0dXJuICEhbV90
YXNrOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbigpCit7Cisg
ICAgQVNTRVJUKG1fdGFzayk7CisgICAgW21fdGFzayBzdG9wXTsKK30KKwordm9pZCBTcGVlY2hS
ZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKCkKK3sKKyAgICBBU1NFUlQobV90YXNrKTsKKyAg
ICBbbV90YXNrIGFib3J0XTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29n
bml0aW9uKCkKK3sKKyAgICBpZiAoIW1fdGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byB0YXNrID0gc3RkOjpleGNoYW5nZShtX3Rhc2ssIG51bGxwdHIpOworICAgIFt0YXNrIGFib3J0
XTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSEFWRShTUEVFQ0hS
RUNPR05JWkVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29j
b2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU3MmM5ODM1
OTc3MDM4ZjQzNjkwMmUxYWQyZGMwM2Y3MDU0ZTQ5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmgK
QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIp
CisKKyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIu
aCIKKyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCisjaW1wb3J0IDx3dGYvQmxv
Y2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCitOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgorCitAY2xhc3MgV2ViU3BlZWNoUmVjb2duaXplclRhc2s7CisKK0BpbnRlcmZhY2Ug
V2ViU3BlZWNoUmVjb2duaXplclRhc2sgOiBOU09iamVjdDxTRlNwZWVjaFJlY29nbml0aW9uVGFz
a0RlbGVnYXRlLCBTRlNwZWVjaFJlY29nbml6ZXJEZWxlZ2F0ZT4geworICAgIFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgX2lkZW50aWZpZXI7Cisg
ICAgQmxvY2tQdHI8dm9pZChjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYp
PiBfZGVsZWdhdGVDYWxsYmFjazsKK0Bwcml2YXRlCisgICAgYm9vbCBfZG9NdWx0aXBsZVJlY29n
bml0aW9uczsKKyAgICB1aW50NjRfdCBfbWF4QWx0ZXJuYXRpdmVzOworICAgIFJldGFpblB0cjxT
RlNwZWVjaFJlY29nbml6ZXI+IF9yZWNvZ25pemVyOworICAgIFJldGFpblB0cjxTRlNwZWVjaEF1
ZGlvQnVmZmVyUmVjb2duaXRpb25SZXF1ZXN0PiBfcmVxdWVzdDsKKyAgICBXZWFrT2JqQ1B0cjxT
RlNwZWVjaFJlY29nbml0aW9uVGFzaz4gX3Rhc2s7CisgICAgYm9vbCBfaGFzU2VudFNwZWVjaFN0
YXJ0OworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hFbmQ7Cit9CisKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlm
aWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmlt
UmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxv
bmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjazsKKy0gKHZvaWQpY2FsbGJhY2tXaXRo
UmVzdWx0OihTRlRyYW5zY3JpcHRpb24gKil0cmFuc2NyaXB0aW9uIGlzRmluYWw6KEJPT0wpaXNG
aW5hbDsKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilz
YW1wbGVCdWZmZXI7CistICh2b2lkKWFib3J0OworLSAodm9pZClzdG9wOworLSAodm9pZClzZW5k
U3BlZWNoU3RhcnRJZk5lZWRlZDsKKy0gKHZvaWQpc2VuZFNwZWVjaEVuZElmTmVlZGVkOworCitA
ZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1t
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXpl
clRhc2subW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODUwNzY2OWM5NWQ5YmY3YjYzOGFjMzM0YjU1ZTRkZDRlNTA1
ZGVlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2Nv
Y29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCkBAIC0wLDAgKzEsMjEzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJTcGVlY2hSZWNvZ25pemVyVGFz
ay5oIgorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL1NwZWVjaFNQSS5oPgorI2ltcG9ydCA8cGFsL2NvY29hL1NwZWVjaFNvZnRMaW5rLmg+CisK
Ky8vIFNldCB0aGUgbWF4aW11bSBkdXJhdGlvbiB0byBiZSBhbiBob3VyOyB3ZSBjYW4gYWRqdXN0
IHRoaXMgaWYgbmVlZGVkLgorc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWF4aW11bVJlY29nbml0
aW9uRHVyYXRpb24gPSA2MCAqIDYwOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW1w
bGVtZW50YXRpb24gV2ViU3BlZWNoUmVjb2duaXplclRhc2sKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZp
ZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1S
ZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9u
ZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaWRlbnRpZmllciA9IGlk
ZW50aWZpZXI7CisgICAgX2RvTXVsdGlwbGVSZWNvZ25pdGlvbnMgPSBjb250aW51b3VzOworICAg
IF9kZWxlZ2F0ZUNhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICBpZiAoIWFsdGVybmF0aXZlcykK
KyAgICAgICAgYWx0ZXJuYXRpdmVzID0gMTsKKyAgICBfbWF4QWx0ZXJuYXRpdmVzID0gYWx0ZXJu
YXRpdmVzOworCisgICAgaWYgKCFbbG9jYWxlSWRlbnRpZmllciBsZW5ndGhdKQorICAgICAgICBf
cmVjb2duaXplciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NTRlNwZWVjaFJlY29nbml6ZXJJbnN0YW5j
ZSgpIGluaXRdKTsKKyAgICBlbHNlCisgICAgICAgIF9yZWNvZ25pemVyID0gYWRvcHROUyhbUEFM
OjphbGxvY1NGU3BlZWNoUmVjb2duaXplckluc3RhbmNlKCkgaW5pdFdpdGhMb2NhbGU6W05TTG9j
YWxlIGxvY2FsZVdpdGhMb2NhbGVJZGVudGlmaWVyOmxvY2FsZUlkZW50aWZpZXJdXSk7CisgICAg
aWYgKCFfcmVjb2duaXplcikgeworICAgICAgICBbc2VsZiByZWxlYXNlXTsKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICB9CisKKyAgICBpZiAoIVtfcmVjb2duaXplciBpc0F2YWlsYWJsZV0pIHsK
KyAgICAgICAgW3NlbGYgcmVsZWFzZV07CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisg
ICAgW19yZWNvZ25pemVyIHNldERlbGVnYXRlOnNlbGZdOworCisgICAgX3JlcXVlc3QgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jU0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVzdEluc3Rh
bmNlKCkgaW5pdF0pOworICAgIGlmIChbX3JlY29nbml6ZXIgc3VwcG9ydHNPbkRldmljZVJlY29n
bml0aW9uXSkKKyAgICAgICAgW19yZXF1ZXN0IHNldFJlcXVpcmVzT25EZXZpY2VSZWNvZ25pdGlv
bjpZRVNdOworICAgIFtfcmVxdWVzdCBzZXRTaG91bGRSZXBvcnRQYXJ0aWFsUmVzdWx0czppbnRl
cmltUmVzdWx0c107CisgICAgW19yZXF1ZXN0IHNldFRhc2tIaW50OlNGU3BlZWNoUmVjb2duaXRp
b25UYXNrSGludERpY3RhdGlvbl07CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAg
IFtfcmVxdWVzdCBzZXREZXRlY3RNdWx0aXBsZVV0dGVyYW5jZXM6WUVTXTsKKyAgICBbX3JlcXVl
c3QgX3NldE1heGltdW1SZWNvZ25pdGlvbkR1cmF0aW9uOm1heGltdW1SZWNvZ25pdGlvbkR1cmF0
aW9uXTsKKyNlbmRpZgorCisgICAgX3Rhc2sgPSBbX3JlY29nbml6ZXIgcmVjb2duaXRpb25UYXNr
V2l0aFJlcXVlc3Q6X3JlcXVlc3QuZ2V0KCkgZGVsZWdhdGU6c2VsZl07CisgICAgcmV0dXJuIHNl
bGY7Cit9CisKKy0gKHZvaWQpY2FsbGJhY2tXaXRoUmVzdWx0OihTRlRyYW5zY3JpcHRpb24gKil0
cmFuc2NyaXB0aW9uIGlzRmluYWw6KEJPT0wpaXNGaW5hbAoreworICAgIGF1dG8gc2VnbWVudHMg
PSBbdHJhbnNjcmlwdGlvbiBzZWdtZW50c107CisgICAgVmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVzdWx0RGF0YT4gZGF0YXM7CisgICAgZGF0YXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShfbWF4QWx0ZXJuYXRpdmVzIDw9IHNlZ21lbnRzLmNvdW50ID8gX21heEFsdGVybmF0aXZl
cyA6IHNlZ21lbnRzLmNvdW50KTsKKyAgICBmb3IgKFNGVHJhbnNjcmlwdGlvblNlZ21lbnQqIHNl
Z21lbnQgaW4gc2VnbWVudHMpIHsKKyAgICAgICAgLy8gTm90ZSBzZWdtZW50IGNvbmZpZGVuY2Ug
aXMgcmVwb3J0ZWQgMCB3aGVuIHJlc3VsdCBpcyBub3QgZmluYWwuCisgICAgICAgIFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YSBkYXRhOworICAgICAgICBkYXRhLmlzRmluYWwg
PSBpc0ZpbmFsOworICAgICAgICBkYXRhLmFsdGVybmF0aXZlcy5hcHBlbmQoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgeyBbc2VnbWVudCBzdWJzdHJpbmddLCBbc2Vn
bWVudCBjb25maWRlbmNlXSB9KTsKKyAgICAgICAgZm9yIChOU1N0cmluZyogc2VnbWVudEFsdGVy
bmF0aXZlIDogW3NlZ21lbnQgYWx0ZXJuYXRpdmVTdWJzdHJpbmdzXSkgeworICAgICAgICAgICAg
aWYgKGRhdGEuYWx0ZXJuYXRpdmVzLnNpemUoKSA9PSBfbWF4QWx0ZXJuYXRpdmVzKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8gRklYTUU6IGNhbGN1bGF0ZSBvciBnZXQg
YWx0ZXJuYXRpdmUgY29uZmlkZW5jZSBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgIGRhdGEuYWx0
ZXJuYXRpdmVzLmFwcGVuZChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0
YSB7IHNlZ21lbnRBbHRlcm5hdGl2ZSwgMC4wIH0pOworICAgICAgICB9CisgICAgICAgIGRhdGFz
LmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICB9CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJlc3VsdChfaWRlbnRpZmllciwg
ZGF0YXMpKTsKK30KKworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVm
ZmVyUmVmKXNhbXBsZUJ1ZmZlcgoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
W19yZXF1ZXN0IGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyOnNhbXBsZUJ1ZmZlcl07Cit9CisKKy0g
KHZvaWQpYWJvcnQKK3sKKyAgICBpZiAoIV90YXNrIHx8IFtfdGFzayBzdGF0ZV0gPT0gU0ZTcGVl
Y2hSZWNvZ25pdGlvblRhc2tTdGF0ZUNvbXBsZXRlZCB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3Bl
ZWNoUmVjb2duaXRpb25UYXNrU3RhdGVDYW5jZWxpbmcpCisgICAgICAgIHJldHVybjsKKworICAg
IFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgW19yZXF1ZXN0IGVuZEF1ZGlvXTsK
KyAgICBbX3Rhc2sgY2FuY2VsXTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgaWYgKCFfdGFz
ayB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25UYXNrU3RhdGVDb21wbGV0
ZWQgfHwgW190YXNrIHN0YXRlXSA9PSBTRlNwZWVjaFJlY29nbml0aW9uVGFza1N0YXRlRmluaXNo
aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRd
OworICAgIFtfcmVxdWVzdCBlbmRBdWRpb107CisgICAgW190YXNrIGZpbmlzaF07Cit9CisKKy0g
KHZvaWQpc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWQKK3sKKyAgICBpZiAoX2hhc1NlbnRTcGVlY2hT
dGFydCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2hhc1NlbnRTcGVlY2hTdGFydCA9IHRydWU7
CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6
OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpTcGVlY2hTdGFydCkpOworfQorCistICh2b2lkKXNlbmRTcGVlY2hFbmRJZk5lZWRlZAorewor
ICAgIGlmICghX2hhc1NlbnRTcGVlY2hTdGFydCB8fCBfaGFzU2VudFNwZWVjaEVuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgX2hhc1NlbnRTcGVlY2hFbmQgPSB0cnVlOworICAgIF9kZWxlZ2F0
ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50
aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoRW5kKSk7
Cit9CisKKyNwcmFnbWEgbWFyayBTRlNwZWVjaFJlY29nbml6ZXJEZWxlZ2F0ZQorCistICh2b2lk
KXNwZWVjaFJlY29nbml6ZXI6KFNGU3BlZWNoUmVjb2duaXplciAqKXNwZWVjaFJlY29nbml6ZXIg
YXZhaWxhYmlsaXR5RGlkQ2hhbmdlOihCT09MKWF2YWlsYWJsZQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisKKyAgICBpZiAoYXZhaWxhYmxlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoIV90YXNrKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGVycm9yID0gV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJy
b3JUeXBlOjpTZXJ2aWNlTm90QWxsb3dlZCwgIlNwZWVjaCByZWNvZ25pdGlvbiBzZXJ2aWNlIGJl
Y29tZXMgdW5hdmFpbGFibGUiX3MgfTsKKyAgICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgZXJyb3IpOworICAg
IF9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7Cit9CisKKyNwcmFnbWEgbWFyayBTRlNwZWVjaFJl
Y29nbml0aW9uVGFza0RlbGVnYXRlCisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrOihT
RlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sgZGlkSHlwb3RoZXNpemVUcmFuc2NyaXB0aW9u
OihTRlRyYW5zY3JpcHRpb24gKil0cmFuc2NyaXB0aW9uCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIFtzZWxmIHNlbmRTcGVlY2hTdGFydElmTmVlZGVkXTsKKyAgICBbc2Vs
ZiBjYWxsYmFja1dpdGhSZXN1bHQ6dHJhbnNjcmlwdGlvbiBpc0ZpbmFsOk5PXTsKK30KKworLSAo
dm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2s6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFz
ayBkaWRGaW5pc2hSZWNvZ25pdGlvbjooU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCAqKXJlY29n
bml0aW9uUmVzdWx0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFtzZWxm
IGNhbGxiYWNrV2l0aFJlc3VsdDpyZWNvZ25pdGlvblJlc3VsdC5iZXN0VHJhbnNjcmlwdGlvbiBp
c0ZpbmFsOllFU107CisgICAgaWYgKCFfZG9NdWx0aXBsZVJlY29nbml0aW9ucykgeworICAgICAg
ICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAgICAgICBfZGVsZWdhdGVDYWxsYmFj
ayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworICAgIH0KK30KKwor
LSAodm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2tXYXNDYW5jZWxsZWQ6KFNGU3BlZWNoUmVjb2du
aXRpb25UYXNrICopdGFzaworeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBb
c2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7Cit9CisKKy0gKHZvaWQpc3BlZWNo
UmVjb2duaXRpb25UYXNrOihTRlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sgZGlkRmluaXNo
U3VjY2Vzc2Z1bGx5OihCT09MKXN1Y2Nlc3NmdWxseQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBpZiAoc3VjY2Vzc2Z1bGx5KSB7CisgICAgICAgIF9kZWxlZ2F0ZUNhbGxi
YWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIs
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCB0
YXNrLmVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9ufTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIs
IGVycm9yKSk7Cit9CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNo
UmVjb2duaXplclRhc2tNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2Nv
YS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmRjMGQ2NTIzZDU0
YTJmNDNiMDNiN2ZjZWMzYzM0YjQ0MWZlOTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmgK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIp
CisKKyNpbXBvcnQgIldlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmgiCisKK05TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCisKK0BjbGFzcyBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2s7CisKK0BpbnRl
cmZhY2UgV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIDogV2ViU3BlZWNoUmVjb2duaXplclRh
c2sKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZToo
TlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTClj
b250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFs
dGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoo
dm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNr
OworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBs
ZUJ1ZmZlcjsKKy0gKHZvaWQpYWJvcnQ7CistICh2b2lkKXN0b3A7CisKK0BlbmQKKworTlNfQVNT
VU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2Nr
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUzZjE5YWY2YzUzMDIxMzViNTQ3NmFjYTllNmIzYjI2MWEzZmMyNWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9X
ZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViU3BlZWNoUmVjb2duaXplclRhc2tN
b2NrLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sKKwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJp
bmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51
b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0
aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZChe
KShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7Cisg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBfaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sgPSBjYWxs
YmFjazsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFi
bGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgoreworICAgIFtzZWxmIHNlbmRTcGVl
Y2hTdGFydElmTmVlZGVkXTsKK30KKworLSAodm9pZClhYm9ydAoreworICAgIFtzZWxmIHNlbmRT
cGVlY2hFbmRJZk5lZWRlZF07CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW3Nl
bGYgYWJvcnRdOworfQorCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjNzE1NmFjMmQxOWQwZWIyZGUwNjRlN2YwNmI2ZGU5MzNiZTdiZDQwLi4wZGZkNDk5MTc1
NjgzYmI5NjUwY2M0MGZmMmJhYTNhNGMwMWRlOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDQsNiArMTQ0LDkgQEAKIAkJ
NjNDN0VEQzcyMUFGQUUwNDAwNkE3Qjk5IC8qIE5TUHJvZ3Jlc3NTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRTM2OUY5MjFBRkE4M0YwMDFDMTRC
QyAvKiBOU1Byb2dyZXNzU1BJLmggKi87IH07CiAJCTdBMzZEMEY5MjIzQUQ5QUIwMEIwNTIyRSAv
KiBDb21tb25DcnlwdG9TUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBMzZEMEY4MjIzQUQ5QUIwMEIwNTIyRSAvKiBDb21tb25DcnlwdG9TUEkuaCAq
LzsgfTsKIAkJN0EzQTZBODAyMENBREI0NzAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBM0E2QTdGMjBDQURCNDYw
MDMxN0FBRSAvKiBOU0ltYWdlU1BJLmggKi87IH07CisJCTkzQjM4RUJFMjU4MjFDQjYwMDE5OEU2
MyAvKiBTcGVlY2hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNCMzhFQkQyNTgyMUNCNjAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLmgg
Ki87IH07CisJCTkzQjM4RUMwMjU4MjFDRDgwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJGMjU4
MjFDRDcwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5tbSAqLzsgfTsKKwkJOTNCMzhFQzIyNTgy
MUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNCMzhFQzEyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5o
ICovOyB9OwogCQk5M0RCN0QzNzI0NjI2QkNEMDA0QkQ4QTMgLyogTlNUZXh0SW5wdXRDb250ZXh0
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0RC
N0QzNjI0NjI2QkNDMDA0QkQ4QTMgLyogTlNUZXh0SW5wdXRDb250ZXh0U1BJLmggKi87IH07CiAJ
CTkzREI3RDNBMjQ2MjZGODYwMDRCRDhBMyAvKiBOU1VuZG9NYW5hZ2VyU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0RCN0QzOTI0NjI2Rjg2MDA0
QkQ4QTMgLyogTlNVbmRvTWFuYWdlclNQSS5oICovOyB9OwogCQlBMTAyNjU4OTFGNTY3NDdBMDBC
NEM4NDQgLyogSElUb29sYm94U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTAyNjU4ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmgg
Ki87IH07CkBAIC0zNDAsNiArMzQzLDkgQEAKIAkJNjNFMzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8q
IE5TUHJvZ3Jlc3NTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNQcm9ncmVzc1NQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QTM2RDBGODIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9u
Q3J5cHRvU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbkNyeXB0
b1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTNBNkE3RjIwQ0FEQjQ2MDAz
MTdBQUUgLyogTlNJbWFnZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
U0ltYWdlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJEMjU4MjFD
QjYwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTcGVlY2hTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
M0IzOEVCRjI1ODIxQ0Q3MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTcGVlY2hTb2Z0TGluay5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQzEyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEQjdEMzYyNDYyNkJDQzAwNEJEOEEzIC8qIE5TVGV4
dElucHV0Q29udGV4dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1Rl
eHRJbnB1dENvbnRleHRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEQjdE
MzkyNDYyNkY4NjAwNEJEOEEzIC8qIE5TVW5kb01hbmFnZXJTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTlNVbmRvTWFuYWdlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0U1OTA5QzFGOTNCRjFFMDA2N0Y4Q0YgLyogVW5lbmNvZGFibGVIYW5kbGlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVbmVuY29kYWJsZUhhbmRsaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01MTEsNiArNTE3LDcgQEAKIAkJCQk0NDI5NTZDQzIxOEE3MkRFMDA4
MERCNTQgLyogUmV2ZWFsU1BJLmggKi8sCiAJCQkJNTcwQUI4RjAyMEFFMkU4RDAwQjhCRTg3IC8q
IFNlY0tleVByb3h5U1BJLmggKi8sCiAJCQkJMEMyREExM0MxRjNCRUI0OTAwREJDMzE3IC8qIFNl
cnZlcnNTUEkuaCAqLywKKwkJCQk5M0IzOEVDMTI1ODIxRDIyMDAxOThFNjMgLyogU3BlZWNoU1BJ
LmggKi8sCiAJCQkJMEMyREExMkIxRjNCRUI0OTAwREJDMzE3IC8qIFVSTEZvcm1hdHRpbmdTUEku
aCAqLywKIAkJCQkwQzJEQTEzRDFGM0JFQjQ5MDBEQkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9y
U1BJLmggKi8sCiAJCQkpOwpAQCAtNjgyLDYgKzY4OSw4IEBACiAJCQkJMzE2NDdGQUUyNTE3NTlE
QjAwMTBGOEZCIC8qIE9wZW5HTFNvZnRMaW5rQ29jb2EubW0gKi8sCiAJCQkJQTFGNjNDOUQyMUE0
REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5oICovLAogCQkJCUExRjYzQzlFMjFBNERC
RjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsubW0gKi8sCisJCQkJOTNCMzhFQkQyNTgyMUNC
NjAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLmggKi8sCisJCQkJOTNCMzhFQkYyNTgyMUNENzAw
MTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLm1tICovLAogCQkJCTA3NjExREI0MjQzRkE1QkUwMEQ4
MDcwNCAvKiBVc2FnZVRyYWNraW5nU29mdExpbmsuaCAqLywKIAkJCQkwNzYxMURCNTI0M0ZBNUJG
MDBEODA3MDQgLyogVXNhZ2VUcmFja2luZ1NvZnRMaW5rLm1tICovLAogCQkJKTsKQEAgLTkwNyw2
ICs5MTYsOCBAQAogCQkJCUEzQUI2RTU2MUYzRDFEREIwMDlDMTRCMSAvKiBTbGVlcERpc2FibGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0FCNkU2MTFGM0QxRTM5MDA5QzE0QjEgLyogU2xlZXBE
aXNhYmxlckNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMzc4OEU5ODFGMDVCNkNFMDA2Nzk0
MjUgLyogU291bmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjM4RUJFMjU4MjFDQjYwMDE5OEU2
MyAvKiBTcGVlY2hTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCMzhFQzIyNTgyMUQy
MjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTExNzVCNDkxRjZB
RkY4RTAwQzRCOUYwIC8qIFNwZWVjaFN5bnRoZXNpc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEM1QUY5MjExRjQzQTRDNzAwMkVBQzAyIC8qIFNRTGl0ZTNTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxMzA4QjE0MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggaW4gSGVh
ZGVycyAqLywKQEAgLTEwMzcsNiArMTA0OCw3IEBACiAJCQkJQTNBQjZFNjAxRjNEMUUzOTAwOUMx
NEIxIC8qIFNsZWVwRGlzYWJsZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzc4OEU5
QzFGMDVCNzgyMDA2Nzk0MjUgLyogU291bmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTM3ODhF
OUUxRjA1Qjc4RTAwNjc5NDI1IC8qIFNvdW5kTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTNC
MzhFQzAyNTgyMUNEODAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTNBQjZFNTcxRjNEMUREQjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNjUxRjNEMjE3RjAwOUMxNEIxIC8qIFN5c3RlbVNs
ZWVwTGlzdGVuZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTEzNDJDRDIxNUFBMTBBMDA3
MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5oIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3M2Y3NTQ5OTUw
YTBhMzQ5ZjE2M2EwYThiZDk5NmM4ZTMyZjgwZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1NwZWVjaFNvZnRMaW5rLmgKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQor
CisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
KworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKFBBTCwgU3BlZWNoKTsKK1NPRlRfTElO
S19DTEFTU19GT1JfSEVBREVSKFBBTCwgU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCk7CitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KTsK
K1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgU0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29n
bml0aW9uUmVxdWVzdCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNo
UmVjb2duaXRpb25UYXNrKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgU0ZTcGVl
Y2hSZWNvZ25pemVyKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgU0ZUcmFuc2Ny
aXB0aW9uU2VnbWVudCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGVHJhbnNj
cmlwdGlvbik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
b2NvYS9TcGVlY2hTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3Bl
ZWNoU29mdExpbmsubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZhMDMxZTg2M2I5ZDhkNTYxYmZmNjY4Mzg4MzZi
MDZjNmY3ODk3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29j
b2EvU3BlZWNoU29mdExpbmsubW0KQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0IDxT
cGVlY2gvU3BlZWNoLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5L
X0ZSQU1FV09SS19GT1JfU09VUkNFKFBBTCwgU3BlZWNoKQorCitTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dCwgUEFMX0VYUE9SVCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QsIFBBTF9FWFBPUlQpOworU09G
VF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNo
QXVkaW9CdWZmZXJSZWNvZ25pdGlvblJlcXVlc3QsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXRp
b25UYXNrLCBQQUxfRVhQT1JUKTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgU3BlZWNoLCBTRlNwZWVjaFJlY29nbml6ZXIsIFBBTF9FWFBPUlQpOworU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGVHJhbnNjcmlw
dGlvblNlZ21lbnQsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGVHJhbnNjcmlwdGlvbiwgUEFMX0VYUE9SVCk7CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvU3BlZWNo
U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9TcGVlY2hTUEkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lOTdjYmRiNzNlYjFhNDAxY2FkODI0ZDEzYTFmYjIxZDk0NzNjYzhjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIp
CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxTcGVlY2gvU0ZTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3RfUHJpdmF0ZS5oPgorCisjZWxzZQorCitOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFNGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0ICgpCitA
cHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBkZXRlY3RNdWx0aXBsZVV0dGVyYW5jZXM7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV9tYXhpbXVtUmVjb2duaXRpb25EdXJhdGlvbiwgc2V0
dGVyPV9zZXRNYXhpbXVtUmVjb2duaXRpb25EdXJhdGlvbjopIE5TVGltZUludGVydmFsIF9tYXhp
bXVtUmVjb2duaXRpb25EdXJhdGlvbjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQK
KworI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNlbmRpZiAvLyBIQVZFKFNQ
RUVDSFJFQ09HTklaRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA4Zjk5ZjlhMTkxOGM5
NTU4ODVmYjJhY2I5OWM4ZDFhNzUyNjVhYTAzLi5iNjBlNTMyZGIzYWM5MWZlMDFhMDMzMmQ4YjU1
NTliMDJkZDE0MjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTkyLDYgKzkyLDkgQEAg
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCiBNb2R1
bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lu
cy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCitNb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVl
Y2hSZWNvZ25pemVyQ29jb2EubW0KK01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29n
bml6ZXJUYXNrLm1tCitNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFz
a01vY2subW0KIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2Eu
bW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFjY2Vzc2liaWxpdHkv
aW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiZTRmY2FmZjlmYzkyNTliNDZjMzUz
OWI2ZWE5M2FmNGFkYzdmYjI1Li41NDU5OTM0Mzc3Njk4MWM4MDcyN2QxZDQ2MWU3ZjFmMzVjMGM0
ZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yODE1LDYgKzI4MTUsOCBAQAogCQk5M0E4MDYxRTFFMDNCNTg1MDA4QTFGMjYg
LyogSlNEb3VibGVSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNBODA2MUExRTAzQjU4NTAwOEExRjI2IC8qIEpTRG91YmxlUmFuZ2UuaCAqLzsg
fTsKIAkJOTNBODA2MjAxRTAzQjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E4MDYxQzFFMDNCNTg1MDA4
QTFGMjYgLyogSlNMb25nUmFuZ2UuaCAqLzsgfTsKIAkJOTNCMkQ4MTYwRjk5MjBEMjAwNkFFNkIy
IC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0IyRDgxNTBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
M0IzOEVDMzI1ODIxREI0MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJBMjU4MjE5
M0IwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovOyB9OworCQk5M0IzOEVD
NDI1ODIxREI3MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCQjI1ODIxOTNE
MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi87IH07CiAJCTkzQjZB
MEU2MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENv
bnRleHRNZW51LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTNCNzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENDgwOUVCMEM3QzAw
OUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzQjcwRDZBMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
QjcwRDRFMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE1MjcsNiArMTE1MjksMTEg
QEAKIAkJOTNBODA2MUMxRTAzQjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTG9uZ1JhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQjJEODE1MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWRkZW5UZXJtaW5hdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyRDgxNzBGOTkyMEVFMDA2QUU2QjIg
LyogU3VkZGVuVGVybWluYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBTdWRkZW5UZXJtaW5hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTNCMzhFQjgyNTgyMTg5OTAwMTk4RTYzIC8qIFNwZWVjaFJlY29nbml6ZXJDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml6ZXJD
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQjkyNTgyMTkzQTAw
MTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQkEyNTgyMTkzQjAwMTk4RTYzIC8q
IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzQjM4RUJCMjU4MjE5M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXpl
clRhc2tNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJDMjU4MjE5
M0UwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I2QTBFNTBCMEJDQTVDMDBGNTAyN0EgLyogQ29u
dGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRNZW51
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2
OCAvKiBKU0RPTUJpbmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NQmluZGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ0RDA5RUIw
QzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0V2ZW50TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjMxNzMsNiArMjMxODAsMTggQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk5M0IzOEVCNjI1ODIxODMzMDAxOThFNjMgLyog
Y29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTkz
QjM4RUI4MjU4MjE4OTkwMDE5OEU2MyAvKiBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gKi8sCisJ
CQkJOTNCMzhFQkEyNTgyMTkzQjAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmgg
Ki8sCisJCQkJOTNCMzhFQkMyNTgyMTkzRTAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJU
YXNrLm1tICovLAorCQkJCTkzQjM4RUJCMjU4MjE5M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNv
Z25pemVyVGFza01vY2suaCAqLywKKwkJCQk5M0IzOEVCOTI1ODIxOTNBMDAxOThFNjMgLyogV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTkzQzA5QTgyMEIwNjRGMDUwMDVB
QkQ0RCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMjU3MDUsNiArMjU3MjQsNyBAQAogCQlBQTJBNUFCNzE2QTQ4NUE0MDA5NzVBMjUgLyogc3Bl
ZWNoICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5M0Iz
OEVCNjI1ODIxODMzMDAxOThFNjMgLyogY29jb2EgKi8sCiAJCQkJQUEyQTVBQkExNkE0ODVENTAw
OTc1QTI1IC8qIERPTVdpbmRvdytTcGVlY2hTeW50aGVzaXMuaWRsICovLAogCQkJCUFBMkE1QUI4
MTZBNDg1RDUwMDk3NUEyNSAvKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwICovLAogCQkJ
CUFBMkE1QUI5MTZBNDg1RDUwMDk3NUEyNSAvKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuaCAq
LywKQEAgLTM1Mjc2LDYgKzM1Mjk2LDggQEAKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUg
LyogV2ViU29ja2V0RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUw
MDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTEy
RTlGMjRGRTc0RTIwMDkzRkZCNCAvKiBXZWJTb2NrZXRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk5M0IzOEVDMzI1ODIxREI0MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRh
c2suaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjM4RUM0MjU4MjFEQjcwMDE5OEU2MyAvKiBXZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTFGODc1NkIyMUUy
MkMzMzUwMDQyQzQwRCAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJv
cExheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU4MEZBMzE0OTY5MzkxMDBGQjVCRDggLyog
V2ViVGlsZWRCYWNraW5nTGF5ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4IGQ2ZmE4OWM1
NDgzMjYyYzEwMWEyNmQwMzAzMjM1NTcyMDZiMTJmNjEuLmM1NjhjYzQyMTg2MzFiMTdhMDQyNzZj
OGVmYmMyYTg5NGMwMTNiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKQEAgLTM2LDIyICszNiwyMCBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorCitTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2hlY2tlciYmIHBlcm1pc3Npb25DaGVja2VyLCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZN
b2NrQ2FwdHVyZURldmljZXNFbmFibGVkJiYgY2hlY2tJZkVuYWJsZWQKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQotU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNo
ZWNrZXImJiBwZXJtaXNzaW9uQ2hlY2tlciwgUmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0
aW9uJiYgZnVuY3Rpb24pCisgICAgLCBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24m
JiBmdW5jdGlvbgorI2VuZGlmCisgICAgKQogICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29u
bmVjdGlvbikpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fcGVybWlz
c2lvbkNoZWNrZXIoV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKICAgICAsIG1fcmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uKFdURk1v
dmUoZnVuY3Rpb24pKQorI2VuZGlmCiB7CiB9Ci0jZWxzZQotU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVj
dGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiBwZXJtaXNzaW9uQ2hlY2tlcikKLSAgICA6
IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQotICAgICwgbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCi0gICAgLCBtX3Blcm1pc3Npb25DaGVja2VyKFdURk1vdmUocGVybWlzc2lvbkNo
ZWNrZXIpKQotewotfQotI2VuZGlmCiAKIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnN0
YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIg
Y2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGlu
dGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmIG9yaWdpbikKIHsKQEAgLTgwLDExICs3OCwxMSBAQCB2b2lkIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpyZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaGFuZGxlUmVx
dWVzdChpZGVudGlmaWVyKTsKKyAgICAgICAgaGFuZGxlUmVxdWVzdCgqd2Vha1JlcXVlc3QpOwog
ICAgIH0pOwogfQogCi12b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgY2xp
ZW50SWRlbnRpZmllcikKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVl
c3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlm
ICghbV9yZWNvZ25pemVyKSB7CiAgICAgICAgIG1fcmVjb2duaXplciA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXplcj4oW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyldKGF1dG8mIHVwZGF0ZSkgewpAQCAtOTUsMTYgKzkzLDI1IEBAIHZvaWQgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uCiAgICAgICAgICAgICBpZiAoIW1fcmVxdWVzdHMuY29udGFpbnMoY2xpZW50SWRlbnRp
ZmllcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgICAgICBzZW5kVXBkYXRl
KHVwZGF0ZSk7CisKICAgICAgICAgICAgIGF1dG8gdHlwZSA9IHVwZGF0ZS50eXBlKCk7Ci0gICAg
ICAgICAgICBpZiAodHlwZSA9PSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6
OkVycm9yIHx8IHR5cGUgPT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpF
bmQpCi0gICAgICAgICAgICAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7
CisgICAgICAgICAgICBpZiAodHlwZSAhPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGU6OkVycm9yICYmIHR5cGUgIT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlOjpFbmQpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBzZW5kVXBk
YXRlKHVwZGF0ZSk7CisgICAgICAgICAgICBpZiAobV9pc1Jlc2V0dGluZykKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBtX2lzUmVzZXR0aW5nID0gdHJ1ZTsKKworICAgICAg
ICAgICAgbV9yZWNvZ25pemVyLT5yZXNldCgpOworICAgICAgICAgICAgbV9yZXF1ZXN0cy5yZW1v
dmUoY2xpZW50SWRlbnRpZmllcik7CisgICAgICAgICAgICBtX2lzUmVzZXR0aW5nID0gZmFsc2U7
CiAgICAgICAgIH0pOwogICAgIH0KICAgICAKICAgICBtX3JlY29nbml6ZXItPnJlc2V0KCk7CiAK
KyAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSByZXF1ZXN0LmNsaWVudElkZW50aWZpZXIoKTsK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGF1dG8gc291cmNlT3JFcnJvciA9IG1fcmVh
bHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uKCk7CiAgICAgaWYgKCFzb3VyY2VPckVycm9y
KSB7CkBAIC0xMTIsMTAgKzExOSwxMiBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpo
YW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbgogICAgICAg
ICBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJv
cihjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkF1ZGlvQ2FwdHVyZSwgc291cmNlT3JF
cnJvci5lcnJvck1lc3NhZ2UgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcmVj
b2duaXplci0+c3RhcnQoY2xpZW50SWRlbnRpZmllciwgc291cmNlT3JFcnJvci5zb3VyY2UoKSk7
CisKKyAgICBib29sIG1vY2tEZXZpY2VDYXB0dXJlc0VuYWJsZWQgPSBtX2NoZWNrSWZNb2NrQ2Fw
dHVyZURldmljZXNFbmFibGVkKCk7CisgICAgbV9yZWNvZ25pemVyLT5zdGFydChjbGllbnRJZGVu
dGlmaWVyLCBzb3VyY2VPckVycm9yLnNvdXJjZSgpLCBtb2NrRGV2aWNlQ2FwdHVyZXNFbmFibGVk
LCByZXF1ZXN0LmxhbmcoKSwgcmVxdWVzdC5jb250aW51b3VzKCksIHJlcXVlc3QuaW50ZXJpbVJl
c3VsdHMoKSwgcmVxdWVzdC5tYXhBbHRlcm5hdGl2ZXMoKSk7CiAjZWxzZQogICAgIG1fcmVxdWVz
dHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwotICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRp
ZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciwgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJy
b3JUeXBlOjpBdWRpb0NhcHR1cmUsICJBdWRpbyBjYXB0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCJ9
KTsKKyAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZTo6RXJyb3IsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3Ig
eyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVkaW9DYXB0dXJlLCAiQXVk
aW8gY2FwdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQiX3MgfSk7CiAjZW5kaWYKIH0KIApAQCAtMTM1
LDcgKzE0NCw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkCiB7CiAgICAgTUVTU0FHRV9DSEVD
SyhjbGllbnRJZGVudGlmaWVyKTsKICAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXpl
ci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKSB7Ci0gICAg
ICAgIG1fcmVjb2duaXplci0+c3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpTaG91bGRH
ZW5lcmF0ZUZpbmFsUmVzdWx0OjpObyk7CisgICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ4LDcgKzE1Nyw3IEBAIHZvaWQgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpCiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsKICAgICBp
ZiAobV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcikpIHsKICAgICAgICAgaWYgKG1f
cmVjb2duaXplciAmJiBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkgPT0g
Y2xpZW50SWRlbnRpZmllcikKLSAgICAgICAgICAgIG1fcmVjb2duaXplci0+c3RvcCgpOworICAg
ICAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggZWQ2NzI2
NGFhMTMxZTFlMTQyMWVhYTQxNGQ0MTcxM2M2OTVkODMyNC4uYzhiN2NjY2YwM2RkZjk4NDFlODEw
ZTljNDJiNGE0ZGY0NjExMTkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC00NywxNSArNDcsMTYgQEAgZW51bSBjbGFzcyBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2w7CiAKIHVzaW5nIFNwZWVj
aFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyOwog
dXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciA9IEZ1bmN0aW9uPHZvaWQo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpPjsKK3VzaW5nIFNwZWVjaFJlY29n
bml0aW9uQ2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBGdW5jdGlvbjxib29sKCk+
OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgdXNpbmcgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uID0gRnVuY3Rpb248V2ViQ29yZTo6Q2FwdHVyZVNvdXJj
ZU9yRXJyb3IoKT47Ci0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DaGVja2VyJiYsIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlv
biYmKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYm
LCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja0NhcHR1cmVEZXZp
Y2VzRW5hYmxlZCYmLCBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24mJik7CiAjZWxz
ZQotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2hlY2tlciYmKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZCYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBs
YW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFs
dGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpOwpAQCAtNjUsNyArNjYsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3Qo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7Ci0gICAgdm9pZCBoYW5kbGVSZXF1
ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIp
OworICAgIHZvaWQgaGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3QmKTsKICAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25u
ZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9IFdURjo6bnVs
bG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0
YT4+ID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIHNlbmRVcGRhdGUoY29uc3QgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKTsKIApAQCAtODEsNiArODIsOCBAQCBwcml2YXRlOgog
ICAgIEhhc2hNYXA8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dD4+IG1fcmVxdWVzdHM7CiAgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciBt
X3Blcm1pc3Npb25DaGVja2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pemVyPiBtX3JlY29nbml6ZXI7CisgICAgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9j
a0NhcHR1cmVEZXZpY2VzRW5hYmxlZCBtX2NoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVk
OworICAgIGJvb2wgbV9pc1Jlc2V0dGluZyB7IGZhbHNlIH07CiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbiBtX3JlYWx0aW1l
TWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IGFkZWU1ZmI5ZTdiYmQ4OGMwODhlNjllZjRlNTU2ZWYzYThk
MGQ1MzYuLmZlNzEyNmM1NWJmNDllYTFiODRhMzcwMThkYmM5ZDE3MTU3YTI2YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTcxNywyMCArMTcx
NywyNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIoU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudAogCiAgICAgQVNTRVJUKCFtX3NwZWVjaFJl
Y29nbml0aW9uU2VydmVyTWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBhdXRvJiBzcGVl
Y2hSZWNvZ25pdGlvblNlcnZlciA9IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAuYWRkKGlk
ZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBzcGVlY2hSZWNvZ25pdGlv
blNlcnZlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNv
bm5lY3Rpb24oKSksIGlkZW50aWZpZXIsIFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBh
Z2UpXShhdXRvJiBvcmlnaW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7Cisg
ICAgYXV0byBwZXJtaXNzaW9uQ2hlY2tlciA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdl
dFBhZ2UpXShhdXRvJiBvcmlnaW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7
CiAgICAgICAgIGlmICghd2Vha1BhZ2UpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHdlYWtQYWdlLT5yZXF1ZXN0U3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwot
ICAgIH0KKyAgICB9OworICAgIGF1dG8gY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQg
PSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oKSB7CisgICAgICAgIHJldHVy
biB3ZWFrUGFnZSAmJiB3ZWFrUGFnZS0+cHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNF
bmFibGVkKCk7CisgICAgfTsKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgLCBbd2Vh
a1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oKSB7CisgICAgYXV0byBjcmVhdGVSZWFs
dGltZU1lZGlhU291cmNlID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkg
ewogICAgICAgICByZXR1cm4gd2Vha1BhZ2UgPyB3ZWFrUGFnZS0+Y3JlYXRlUmVhbHRpbWVNZWRp
YVNvdXJjZUZvclNwZWVjaFJlY29nbml0aW9uKCkgOiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJQ
YWdlIGlzIGludmFsaWQiIH07Ci0gICAgfQorICAgIH07CisgICAgc3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25u
ZWN0aW9uKCkpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSwgV1RGTW92
ZShjaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCksIFdURk1vdmUoY3JlYXRlUmVhbHRp
bWVNZWRpYVNvdXJjZSkpOworI2Vsc2UKKyAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1h
a2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSks
IGlkZW50aWZpZXIsIFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNoZWNrSWZN
b2NrQ2FwdHVyZURldmljZXNFbmFibGVkKSk7CiAjZW5kaWYKLSAgICApOworCiAgICAgYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLCAqc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415877</attachid>
            <date>2020-12-10 08:13:16 -0800</date>
            <delta_ts>2020-12-10 08:28:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201210081316.patch</filename>
            <type>text/plain</type>
            <size>63576</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0YTVmYWYxNGM5MWEy
OGEwZTZkOTNhNGEwNDBkN2Q3M2I2ODE5OS4uYmZlOGJmOWU1NDVkZjFmOWIyMTRhYjk4NGNjOGIw
YjlhNzgxY2E1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTEyLTEwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
V2ViU3BlZWNoUmVjb2duaXplclRhc2ssIHdoaWNoIGNvbm5lY3RzIHRvIHNwZWVjaCByZWNvZ25p
dGlvbiBzZXJ2aWNlIHZpYSBTcGVlY2ggZnJhbWV3b3JrIEFQSXMuCisKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcDogTWFrZSBhdWRpbyBjYXB0dXJlIGFuZCBy
ZWNvZ25pdGlvbiBsb2dpYyBzZXBhcmF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFib3J0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0b3BDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OmRhdGFDYXB0dXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpz
dGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFi
b3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3Rv
cFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0
UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c2V0U291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BJ
bnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJD
b2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpkYXRh
Q2FwdHVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNv
Z25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2du
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25p
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVy
VGFzay5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hS
ZWNvZ25pemVyVGFzay5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBv
cnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmlu
YWw6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAoLVtX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3BlZWNoUmVjb2duaXplcjphdmFpbGFi
aWxpdHlEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNw
ZWVjaFJlY29nbml0aW9uVGFzazpkaWRIeXBvdGhlc2l6ZVRyYW5zY3JpcHRpb246XSk6CisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29nbml0aW9uVGFzazpkaWRG
aW5pc2hSZWNvZ25pdGlvbjpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sg
c3BlZWNoUmVjb2duaXRpb25UYXNrV2FzQ2FuY2VsbGVkOl0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkRmluaXNoU3VjY2Vzc2Z1
bGx5Ol0pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6
ZXJUYXNrTW9jay5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2subW06IEFkZGVkLgorICAgICAgICAoLVtXZWJTcGVlY2hS
ZWNvZ25pemVyVGFza01vY2sgaW5pdFdpdGhJZGVudGlmaWVyOmxvY2FsZTpkb011bHRpcGxlUmVj
b2duaXRpb25zOnJlcG9ydEludGVyaW1SZXN1bHRzOm1heEFsdGVybmF0aXZlczpkZWxlZ2F0ZUNh
bGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgYXVkaW9T
YW1wbGVzQXZhaWxhYmxlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2sgYWJvcnRdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIHN0b3Bd
KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0xMi0wOSAgQW5kcmVzIEdvbnphbGV6ICA8YW5k
cmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZvciBmb2N1cyB0cmFja2luZyBpbiBp
c29sYXRlZCB0cmVlIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA5NjliYmJkMWM1MTRlZjVk
ZjM1Nzk1MWJjYTY5MTQ0MDQ3OTkwNDI1Li4wMjcwZGNlZTlmOTliNTg3ZDE1ODA1YjU2ZTg0ZTYw
ZmQ0Zjc2NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMi0x
MCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
cmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHNvZnQgbGlua2luZyB0byBTcGVlY2ggZnJhbWV3b3JrIGFuZCBTUEkuCisKKyAgICAg
ICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvY29jb2Ev
U3BlZWNoU29mdExpbmsuaDogQWRkZWQuCisgICAgICAgICogcGFsL2NvY29hL1NwZWVjaFNvZnRM
aW5rLm1tOiBBZGRlZC4KKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL1NwZWVjaFNQSS5oOiBBZGRl
ZC4KKwogMjAyMC0xMi0wNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIFtDTWFrZV0gUmVtb3ZlIFdFQktJVF9XUkFQX1NPVVJDRUxJU1QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMmRiMTVjYWQyNjYyNjI5MjFkYzRlYzUwOWFjNWM3YzBhYzZjZjY5MC4uMDliNWI4MTdmODAx
YTQxM2MyZjEzNGE4ZWFlNTIzMzgyZTJkOTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMC0xMi0xMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVz
dFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QpOiBXaGVuIHRoZXJlIGlzIGFuIGVycm9yIG9yIGVuZCBl
dmVudCB1cGRhdGUsIHNlcnZlciByZXNldHMgdGhlCisgICAgICAgIHN0YXRlIG9mIFNwZWVjaFJl
Y29nbml6ZXIsIHdoaWNoIHdvdWxkIHRlcm1pbmF0ZSBvbmdvaW5nIHdvcmsuCisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcDogUGFzcyBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkIHZhbHVlIGZyb20g
d2ViIHBhZ2UgYWxsIHRoZSB3YXkgdG8gCisgICAgICAgIFNwZWVjaFJlY29nbml6ZXIgc28gaXQg
ZGVjaWRlcyB3aGV0aGVyZSB0byB1c2UgYSBtb2NrIHNwZWVjaCByZWNvZ29uaXRpb24gYmFja2Vu
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcik6CisKIDIwMjAtMTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBhZGQgc3VwcG9ydCBmb3IgY3JlYXRp
bmcgZXh0ZW5zaW9uIHRhYnMgaW4gV2ViSW5zcGVjdG9yVUkgdmlhIF9XS0luc3BlY3RvckV4dGVu
c2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
emVyLmNwcAppbmRleCBmOTE2ZDJiYTRkMjgwZjc1ODYxMmI1N2NjMTIxOTRmOWI0ZDNiNWI1Li44
MDU0M2JhYjk1YWZmZjFiOGJjYTI3OTNmYWM4MTI3MjRjZmFlNTVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcApAQCAtNDUsNDIg
KzQ1LDQ4IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXQoKQogICAgIGlmICghbV9jbGll
bnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9zb3VyY2UpCi0gICAg
ICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBzdG9wQ2FwdHVyZSgpOworICAgIHJlc2V0UmVj
b2duaXRpb24oKTsKKyAgICBtX2NsaWVudElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cit9CiAK
LSAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0
aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCAiQW5vdGhlciByZXF1ZXN0IGlzIHN0YXJ0ZWQiIH07Ci0g
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJv
cigqbV9jbGllbnRJZGVudGlmaWVyLCBlcnJvcikpOwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjph
Ym9ydCgpCit7CisgICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmllcik7CisgICAgc3RvcENhcHR1
cmUoKTsKKyAgICBhYm9ydFJlY29nbml0aW9uKCk7Cit9CiAKLSAgICBtX2NsaWVudElkZW50aWZp
ZXIgPSBXVEY6Om51bGxvcHQ7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3AoKQoreworICAg
IEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIpOworICAgIHN0b3BDYXB0dXJlKCk7CisgICAgc3Rv
cFJlY29nbml0aW9uKCk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi12b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQor
dm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZlciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
JiYgc291cmNlLCBib29sIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIGNvbnN0IFN0cmluZyYg
bG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1
aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCiB7Ci0gICAgQVNTRVJUKCFtX3NvdXJjZSk7Ci0KLSAg
ICBtX2NsaWVudElkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIEFTU0VSVCghbV9jbGllbnRJ
ZGVudGlmaWVyKTsKKyAgICBtX2NsaWVudElkZW50aWZpZXIgPSBjbGllbnRJZGVudGlmZXI7CiAg
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1f
Y2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOwog
Ci0gICAgc2V0U291cmNlKFdURk1vdmUoc291cmNlKSk7CisgICAgaWYgKCFzdGFydFJlY29nbml0
aW9uKG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIGNsaWVudElkZW50aWZlciwgbG9jYWxlSWRl
bnRpZmllciwgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcykpIHsK
KyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsICJG
YWlsZWQgdG8gc3RhcnQgcmVjb2duaXRpb24iX3MgfTsKKyAgICAgICAgYXV0byB1cGRhdGUgPSBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRp
ZmVyLCBlcnJvcik7CisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgc3RhcnRDYXB0dXJlKFdURk1vdmUoc291cmNlKSk7CiB9
CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c2V0U291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291
cmNlPiYmIHNvdXJjZSkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKFJlZjxS
ZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBhdXRvIGRhdGFDYWxsYmFjayA9
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBhdXRvJiB0aW1lLCBjb25zdCBh
dXRvJiBkYXRhLCBjb25zdCBhdXRvJiBkZXNjcmlwdGlvbiwgYXV0byBzYW1wbGVDb3VudCkgewot
ICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgICAgIGF1dG8gYnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIo
ZGF0YSwgZGVzY3JpcHRpb24sIFBBTDo6dG9DTVRpbWUodGltZSksIHNhbXBsZUNvdW50KTsKLSAg
ICAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0o
dGltZSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICAgICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0aW9uKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZUNvdW50KTsKLSNlbmRp
ZgorICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGF0YUNhcHR1
cmVkKHRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7CiAgICAgfTsKIAogICAg
IGF1dG8gc3RhdGVVcGRhdGVDYWxsYmFjayA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpXShjb25zdCBhdXRvJiB1cGRhdGUpIHsKQEAgLTg5LDQwICs5NSw0NSBAQCB2b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OnNldFNvdXJjZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3Vy
Y2UpCiAKICAgICAgICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmllciAmJiBtX2NsaWVudElkZW50
aWZpZXIudmFsdWUoKSA9PSB1cGRhdGUuY2xpZW50SWRlbnRpZmllcigpKTsKICAgICAgICAgbV9k
ZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7Ci0KLSAgICAgICAgaWYgKHVwZGF0ZS50eXBlKCkgPT0g
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvcikKLSAgICAgICAgICAgIG1fc291cmNl
ID0gbnVsbHB0cjsKICAgICB9OwogCiAgICAgbV9zb3VyY2UgPSBtYWtlVW5pcXVlPFNwZWVjaFJl
Y29nbml0aW9uQ2FwdHVyZVNvdXJjZT4oKm1fY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShkYXRh
Q2FsbGJhY2spLCBXVEZNb3ZlKHN0YXRlVXBkYXRlQ2FsbGJhY2spLCBXVEZNb3ZlKHNvdXJjZSkp
OwogfQogCi0jZW5kaWYKLQotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wKFNob3VsZEdlbmVy
YXRlRmluYWxSZXN1bHQgc2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCkKK3ZvaWQgU3BlZWNoUmVj
b2duaXplcjo6c3RvcENhcHR1cmUoKQogewotICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQor
ICAgIGlmICghbV9zb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3BJbnRlcm5hbCgp
OworICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNo
UmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkF1ZGlvRW5kKSk7Cit9CiAKLSAgICBpZiAoc2hvdWxkR2VuZXJh
dGVGaW5hbFJlc3VsdCA9PSBTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0OjpZZXMpIHsKLSAgICAg
ICAgLy8gVE9ETzogZ2VuZXJhdGUgcmVhbCByZXN1bHQgd2hlbiBzcGVlY2ggcmVjb2duaXRpb24g
YmFja2VuZCBpcyBpbXBsZW1lbnRlZC4KLSAgICAgICAgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9u
UmVzdWx0RGF0YT4gcmVzdWx0RGF0YXM7Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KCptX2NsaWVudElkZW50aWZpZXIsIHJl
c3VsdERhdGFzKSk7Ci0gICAgfQorI2VuZGlmCiAKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwotICAgIG1fY2xpZW50SWRlbnRpZmllciA9IFdU
Rjo6bnVsbG9wdDsKKyNpZiAhSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCit2b2lkIFNwZWVjaFJl
Y29nbml6ZXI6OmRhdGFDYXB0dXJlZChjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1
ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpCit7CiB9CiAK
LXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcEludGVybmFsKCkKK2Jvb2wgU3BlZWNoUmVjb2du
aXplcjo6c3RhcnRSZWNvZ25pdGlvbihib29sLCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29sLCB1aW50NjRfdCkKIHsK
LSAgICBpZiAoIW1fc291cmNlKQotICAgICAgICByZXR1cm47CisgICAgcmV0dXJuIGZhbHNlOwor
fQogCi0gICAgbV9zb3VyY2UgPSBudWxscHRyOwotICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6QXVkaW9FbmQpKTsKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6
YWJvcnRSZWNvZ25pdGlvbigpCit7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcFJl
Y29nbml0aW9uKCkKK3sKIH0KIAordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0
aW9uKCkKK3sKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaAppbmRleCBlYzVh
YzEzMGI4YTA0NzdkYTkxZmQxZTFlN2ZjMmM3MGE0YTMyNjNhLi45ZTMyMDU1YzM3ODVmZDU4NmQx
YTI0M2Y4ZWIxM2E2YWMwODVkOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoUmVjb2duaXplci5oCkBAIC0yOCw2ICsyOCwxMSBAQAogI2luY2x1ZGUgIlNw
ZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaCIKIAorI2lmIEhBVkUoU1BFRUNIUkVDT0dO
SVpFUikKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CitPQkpDX0NMQVNTIFdlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU7CkBAIC00MCwxMSArNDUsMTEgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIH5TcGVlY2hSZWNvZ25pemVyKCkgPSBkZWZhdWx0OwogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmLCBib29s
IG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmll
ciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRl
cm5hdGl2ZXMpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldCgpOwotICAg
IGVudW0gY2xhc3MgU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCB7IE5vLCBZZXMgfTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCA9IFNob3Vs
ZEdlbmVyYXRlRmluYWxSZXN1bHQ6Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9y
dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcCgpOwogCiAgICAgT3B0aW9uYWw8U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcj4gY3VycmVudENsaWVudElk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudElkZW50aWZpZXI7IH0KIApAQCAtNTIs
MTIgKzU3LDIyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wSW50ZXJuYWwoKTsKIAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0gICAgdm9pZCBzZXRTb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFT
b3VyY2U+JiYpOworICAgIHZvaWQgc3RhcnRDYXB0dXJlKFJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiYmKTsKICNlbmRpZgorICAgIHZvaWQgc3RvcENhcHR1cmUoKTsKKyAgICB2b2lkIGRhdGFDYXB0
dXJlZChjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29u
c3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCBzYW1wbGVDb3VudCk7CisgICAgYm9v
bCBzdGFydFJlY29nbml0aW9uKGJvb2wgbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCwgU3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2Nh
bGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2
NF90IGFsdGVybmF0aXZlcyk7CisgICAgdm9pZCBhYm9ydFJlY29nbml0aW9uKCk7CisgICAgdm9p
ZCBzdG9wUmVjb2duaXRpb24oKTsKKyAgICB2b2lkIHJlc2V0UmVjb2duaXRpb24oKTsKIAogICAg
IE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXI+IG1f
Y2xpZW50SWRlbnRpZmllcjsKICAgICBEZWxlZ2F0ZUNhbGxiYWNrIG1fZGVsZWdhdGVDYWxsYmFj
azsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlPiBt
X3NvdXJjZTsKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyAgICBSZXRhaW5QdHI8V2Vi
U3BlZWNoUmVjb2duaXplclRhc2s+IG1fdGFzazsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29j
b2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNDg2NjY0ZmJj
YzZkNzRhOWFmMWNkNDIxZGY2NWVkODI1NWY4ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KQEAg
LTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
U3BlZWNoUmVjb2duaXplci5oIgorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1w
b3J0ICJNZWRpYVV0aWxpdGllcy5oIgorI2ltcG9ydCAiU3BlZWNoUmVjb2duaXRpb25VcGRhdGUu
aCIKKyNpbXBvcnQgIldlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oIgorI2ltcG9ydCA8U3Bl
ZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5k
YXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6
OmRhdGFDYXB0dXJlZChjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9E
YXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6
ZV90IHNhbXBsZUNvdW50KQoreworICAgIGF1dG8gYnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVC
dWZmZXIoZGF0YSwgZGVzY3JpcHRpb24sIFBBTDo6dG9DTVRpbWUodGltZSksIHNhbXBsZUNvdW50
KTsKKyAgICBbbV90YXNrIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZTpidWZmZXIuZ2V0KCldOworfQor
Citib29sIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0UmVjb2duaXRpb24oYm9vbCBtb2NrQ2FwdHVy
ZURldmljZXNFbmFibGVkLCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBhbHRlcm5hdGl2ZXMpCit7Cisg
ICAgYXV0byB0YXNrQ2xhc3MgPSBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID8gW1dlYlNwZWVj
aFJlY29nbml6ZXJUYXNrTW9jayBjbGFzc10gOiBbV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2xh
c3NdOworICAgIG1fdGFzayA9IGFkb3B0TlMoW1t0YXNrQ2xhc3MgYWxsb2NdIGluaXRXaXRoSWRl
bnRpZmllcjppZGVudGlmaWVyIGxvY2FsZTpsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNv
Z25pdGlvbnM6Y29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czppbnRlcmltUmVzdWx0cyBt
YXhBbHRlcm5hdGl2ZXM6YWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6W3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiB1
cGRhdGUpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAgICB9XSk7CisKKyAgICByZXR1
cm4gISFtX3Rhc2s7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29nbml0aW9u
KCkKK3sKKyAgICBBU1NFUlQobV90YXNrKTsKKyAgICBbbV90YXNrIHN0b3BdOworfQorCit2b2lk
IFNwZWVjaFJlY29nbml6ZXI6OmFib3J0UmVjb2duaXRpb24oKQoreworICAgIEFTU0VSVChtX3Rh
c2spOworICAgIFttX3Rhc2sgYWJvcnRdOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJl
c2V0UmVjb2duaXRpb24oKQoreworICAgIGlmICghbV90YXNrKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIHRhc2sgPSBzdGQ6OmV4Y2hhbmdlKG1fdGFzaywgbnVsbHB0cik7CisgICAgW3Rh
c2sgYWJvcnRdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZF
KFNQRUVDSFJFQ09HTklaRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2suaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
OWM0MDM5MmQ1MTU0NmRhNzVlNTMzMDAyYWUyOGY2NTQ2N2ZhOWEzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXpl
clRhc2suaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEhBVkUoU1BFRUNIUkVD
T0dOSVpFUikKKworI2ltcG9ydCAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllci5oIgorI2ltcG9ydCAiU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCIKKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIg
KkNNU2FtcGxlQnVmZmVyUmVmOworCitAY2xhc3MgV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBs
OworCitAaW50ZXJmYWNlIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrIDogTlNPYmplY3QgeworQHBy
aXZhdGUKKyAgICBSZXRhaW5QdHI8V2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsPiBfaW1wbDsK
K30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZToo
TlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTClj
b250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFs
dGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoo
dm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNr
OworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBs
ZUJ1ZmZlcjsKKy0gKHZvaWQpYWJvcnQ7CistICh2b2lkKXN0b3A7CisKK0BlbmQKKworTlNfQVNT
VU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41Yzg3YWYxYjdkMjUyMGYzMmM2ZjRlMzc4Mjg5Y2QwNjdhMTFmYzVjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNo
UmVjb2duaXplclRhc2subW0KQEAgLTAsMCArMSwyNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmgiCisKKyNpZiBI
QVZFKFNQRUVDSFJFQ09HTklaRVIpCisKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvU3BlZWNoU1BJ
Lmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5o
PgorCisjaW1wb3J0IDxwYWwvY29jb2EvU3BlZWNoU29mdExpbmsuaD4KKworLy8gU2V0IHRoZSBt
YXhpbXVtIGR1cmF0aW9uIHRvIGJlIGFuIGhvdXI7IHdlIGNhbiBhZGp1c3QgdGhpcyBpZiBuZWVk
ZWQuCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtUmVjb2duaXRpb25EdXJhdGlvbiA9
IDYwICogNjA7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tJbXBsIDogTlNPYmplY3Q8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tE
ZWxlZ2F0ZSwgU0ZTcGVlY2hSZWNvZ25pemVyRGVsZWdhdGU+IHsKK0Bwcml2YXRlCisgICAgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBfaWRlbnRp
ZmllcjsKKyAgICBCbG9ja1B0cjx2b2lkKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlJik+IF9kZWxlZ2F0ZUNhbGxiYWNrOworICAgIGJvb2wgX2RvTXVsdGlwbGVSZWNvZ25p
dGlvbnM7CisgICAgdWludDY0X3QgX21heEFsdGVybmF0aXZlczsKKyAgICBSZXRhaW5QdHI8U0ZT
cGVlY2hSZWNvZ25pemVyPiBfcmVjb2duaXplcjsKKyAgICBSZXRhaW5QdHI8U0ZTcGVlY2hBdWRp
b0J1ZmZlclJlY29nbml0aW9uUmVxdWVzdD4gX3JlcXVlc3Q7CisgICAgV2Vha09iakNQdHI8U0ZT
cGVlY2hSZWNvZ25pdGlvblRhc2s+IF90YXNrOworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hTdGFy
dDsKKyAgICBib29sIF9oYXNTZW50U3BlZWNoRW5kOworfQorQGVuZAorCitAaW1wbGVtZW50YXRp
b24gV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRv
TXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0
czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0
ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjaworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2lkZW50aWZpZXIgPSBpZGVudGlm
aWVyOworICAgIF9kb011bHRpcGxlUmVjb2duaXRpb25zID0gY29udGludW91czsKKyAgICBfZGVs
ZWdhdGVDYWxsYmFjayA9IGNhbGxiYWNrOworCisgICAgaWYgKCFhbHRlcm5hdGl2ZXMpCisgICAg
ICAgIGFsdGVybmF0aXZlcyA9IDE7CisgICAgX21heEFsdGVybmF0aXZlcyA9IGFsdGVybmF0aXZl
czsKKworICAgIGlmICghW2xvY2FsZUlkZW50aWZpZXIgbGVuZ3RoXSkKKyAgICAgICAgX3JlY29n
bml6ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jU0ZTcGVlY2hSZWNvZ25pemVySW5zdGFuY2UoKSBp
bml0XSk7CisgICAgZWxzZQorICAgICAgICBfcmVjb2duaXplciA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NTRlNwZWVjaFJlY29nbml6ZXJJbnN0YW5jZSgpIGluaXRXaXRoTG9jYWxlOltOU0xvY2FsZSBs
b2NhbGVXaXRoTG9jYWxlSWRlbnRpZmllcjpsb2NhbGVJZGVudGlmaWVyXV0pOworICAgIGlmICgh
X3JlY29nbml6ZXIpIHsKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07CisgICAgICAgIHJldHVybiBu
aWw7CisgICAgfQorCisgICAgaWYgKCFbX3JlY29nbml6ZXIgaXNBdmFpbGFibGVdKSB7CisgICAg
ICAgIFtzZWxmIHJlbGVhc2VdOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIFtf
cmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKKworICAgIF9yZXF1ZXN0ID0gYWRvcHROUyhb
UEFMOjphbGxvY1NGU3BlZWNoQXVkaW9CdWZmZXJSZWNvZ25pdGlvblJlcXVlc3RJbnN0YW5jZSgp
IGluaXRdKTsKKyAgICBpZiAoW19yZWNvZ25pemVyIHN1cHBvcnRzT25EZXZpY2VSZWNvZ25pdGlv
bl0pCisgICAgICAgIFtfcmVxdWVzdCBzZXRSZXF1aXJlc09uRGV2aWNlUmVjb2duaXRpb246WUVT
XTsKKyAgICBbX3JlcXVlc3Qgc2V0U2hvdWxkUmVwb3J0UGFydGlhbFJlc3VsdHM6aW50ZXJpbVJl
c3VsdHNdOworICAgIFtfcmVxdWVzdCBzZXRUYXNrSGludDpTRlNwZWVjaFJlY29nbml0aW9uVGFz
a0hpbnREaWN0YXRpb25dOworCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyAgICBbX3Jl
cXVlc3Qgc2V0RGV0ZWN0TXVsdGlwbGVVdHRlcmFuY2VzOllFU107CisgICAgW19yZXF1ZXN0IF9z
ZXRNYXhpbXVtUmVjb2duaXRpb25EdXJhdGlvbjptYXhpbXVtUmVjb2duaXRpb25EdXJhdGlvbl07
CisjZW5kaWYKKworICAgIF90YXNrID0gW19yZWNvZ25pemVyIHJlY29nbml0aW9uVGFza1dpdGhS
ZXF1ZXN0Ol9yZXF1ZXN0LmdldCgpIGRlbGVnYXRlOnNlbGZdOworICAgIHJldHVybiBzZWxmOwor
fQorCistICh2b2lkKWNhbGxiYWNrV2l0aFJlc3VsdDooU0ZUcmFuc2NyaXB0aW9uICopdHJhbnNj
cmlwdGlvbiBpc0ZpbmFsOihCT09MKWlzRmluYWwKK3sKKyAgICBhdXRvIHNlZ21lbnRzID0gW3Ry
YW5zY3JpcHRpb24gc2VnbWVudHNdOworICAgIFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdERhdGE+IGRhdGFzOworICAgIGRhdGFzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
X21heEFsdGVybmF0aXZlcyA8PSBzZWdtZW50cy5jb3VudCA/IF9tYXhBbHRlcm5hdGl2ZXMgOiBz
ZWdtZW50cy5jb3VudCk7CisgICAgZm9yIChTRlRyYW5zY3JpcHRpb25TZWdtZW50KiBzZWdtZW50
IGluIHNlZ21lbnRzKSB7CisgICAgICAgIC8vIE5vdGUgc2VnbWVudCBjb25maWRlbmNlIGlzIHJl
cG9ydGVkIDAgd2hlbiByZXN1bHQgaXMgbm90IGZpbmFsLgorICAgICAgICBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdERhdGEgZGF0YTsKKyAgICAgICAgZGF0YS5pc0ZpbmFsID0gaXNG
aW5hbDsKKyAgICAgICAgZGF0YS5hbHRlcm5hdGl2ZXMuYXBwZW5kKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhIHsgW3NlZ21lbnQgc3Vic3RyaW5nXSwgW3NlZ21lbnQg
Y29uZmlkZW5jZV0gfSk7CisgICAgICAgIGZvciAoTlNTdHJpbmcqIHNlZ21lbnRBbHRlcm5hdGl2
ZSA6IFtzZWdtZW50IGFsdGVybmF0aXZlU3Vic3RyaW5nc10pIHsKKyAgICAgICAgICAgIGlmIChk
YXRhLmFsdGVybmF0aXZlcy5zaXplKCkgPT0gX21heEFsdGVybmF0aXZlcykKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBjYWxjdWxhdGUgb3IgZ2V0IGFsdGVy
bmF0aXZlIGNvbmZpZGVuY2UgaWYgcG9zc2libGUuCisgICAgICAgICAgICBkYXRhLmFsdGVybmF0
aXZlcy5hcHBlbmQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgeyBz
ZWdtZW50QWx0ZXJuYXRpdmUsIDAuMCB9KTsKKyAgICAgICAgfQorICAgICAgICBkYXRhcy5hcHBl
bmQoV1RGTW92ZShkYXRhKSk7CisgICAgfQorICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVSZXN1bHQoX2lkZW50aWZpZXIsIGRhdGFz
KSk7Cit9CisKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJl
ZilzYW1wbGVCdWZmZXIKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFtfcmVx
dWVzdCBhcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcjpzYW1wbGVCdWZmZXJdOworfQorCistICh2b2lk
KWFib3J0Cit7CisgICAgaWYgKCFfdGFzayB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3BlZWNoUmVj
b2duaXRpb25UYXNrU3RhdGVDb21wbGV0ZWQgfHwgW190YXNrIHN0YXRlXSA9PSBTRlNwZWVjaFJl
Y29nbml0aW9uVGFza1N0YXRlQ2FuY2VsaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBbc2Vs
ZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAgIFtfcmVxdWVzdCBlbmRBdWRpb107CisgICAg
W190YXNrIGNhbmNlbF07Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIGlmICghX3Rhc2sgfHwg
W190YXNrIHN0YXRlXSA9PSBTRlNwZWVjaFJlY29nbml0aW9uVGFza1N0YXRlQ29tcGxldGVkIHx8
IFtfdGFzayBzdGF0ZV0gPT0gU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tTdGF0ZUZpbmlzaGluZykK
KyAgICAgICAgcmV0dXJuOworCisgICAgW3NlbGYgc2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAg
ICBbX3JlcXVlc3QgZW5kQXVkaW9dOworICAgIFtfdGFzayBmaW5pc2hdOworfQorCistICh2b2lk
KXNlbmRTcGVlY2hTdGFydElmTmVlZGVkCit7CisgICAgaWYgKF9oYXNTZW50U3BlZWNoU3RhcnQp
CisgICAgICAgIHJldHVybjsKKworICAgIF9oYXNTZW50U3BlZWNoU3RhcnQgPSB0cnVlOworICAg
IF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVh
dGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3Bl
ZWNoU3RhcnQpKTsKK30KKworLSAodm9pZClzZW5kU3BlZWNoRW5kSWZOZWVkZWQKK3sKKyAgICBp
ZiAoIV9oYXNTZW50U3BlZWNoU3RhcnQgfHwgX2hhc1NlbnRTcGVlY2hFbmQpCisgICAgICAgIHJl
dHVybjsKKworICAgIF9oYXNTZW50U3BlZWNoRW5kID0gdHJ1ZTsKKyAgICBfZGVsZWdhdGVDYWxs
YmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVy
LCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaEVuZCkpOworfQor
CisjcHJhZ21hIG1hcmsgU0ZTcGVlY2hSZWNvZ25pemVyRGVsZWdhdGUKKworLSAodm9pZClzcGVl
Y2hSZWNvZ25pemVyOihTRlNwZWVjaFJlY29nbml6ZXIgKilzcGVlY2hSZWNvZ25pemVyIGF2YWls
YWJpbGl0eURpZENoYW5nZTooQk9PTClhdmFpbGFibGUKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgaWYgKGF2YWlsYWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFfdGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlw
ZTo6U2VydmljZU5vdEFsbG93ZWQsICJTcGVlY2ggcmVjb2duaXRpb24gc2VydmljZSBiZWNvbWVz
IHVuYXZhaWxhYmxlIl9zIH07CisgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIsIGVycm9yKTsKKyAgICBfZGVs
ZWdhdGVDYWxsYmFjayh1cGRhdGUpOworfQorCisjcHJhZ21hIG1hcmsgU0ZTcGVlY2hSZWNvZ25p
dGlvblRhc2tEZWxlZ2F0ZQorCistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFzazooU0ZTcGVl
Y2hSZWNvZ25pdGlvblRhc2sgKil0YXNrIGRpZEh5cG90aGVzaXplVHJhbnNjcmlwdGlvbjooU0ZU
cmFuc2NyaXB0aW9uICopdHJhbnNjcmlwdGlvbgoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBbc2VsZiBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF07CisgICAgW3NlbGYgY2Fs
bGJhY2tXaXRoUmVzdWx0OnRyYW5zY3JpcHRpb24gaXNGaW5hbDpOT107Cit9CisKKy0gKHZvaWQp
c3BlZWNoUmVjb2duaXRpb25UYXNrOihTRlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sgZGlk
RmluaXNoUmVjb2duaXRpb246KFNGU3BlZWNoUmVjb2duaXRpb25SZXN1bHQgKilyZWNvZ25pdGlv
blJlc3VsdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBbc2VsZiBjYWxs
YmFja1dpdGhSZXN1bHQ6cmVjb2duaXRpb25SZXN1bHQuYmVzdFRyYW5zY3JpcHRpb24gaXNGaW5h
bDpZRVNdOworICAgIGlmICghX2RvTXVsdGlwbGVSZWNvZ25pdGlvbnMpIHsKKyAgICAgICAgW3Nl
bGYgc2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKKyAgICB9Cit9CisKKy0gKHZv
aWQpc3BlZWNoUmVjb2duaXRpb25UYXNrV2FzQ2FuY2VsbGVkOihTRlNwZWVjaFJlY29nbml0aW9u
VGFzayAqKXRhc2sKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgW3NlbGYg
c2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworfQorCistICh2b2lkKXNwZWVjaFJlY29n
bml0aW9uVGFzazooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrIGRpZEZpbmlzaFN1Y2Nl
c3NmdWxseTooQk9PTClzdWNjZXNzZnVsbHkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgaWYgKHN1Y2Nlc3NmdWxseSkgeworICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJy
b3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgdGFzay5l
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbn07CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKF9pZGVudGlmaWVyLCBlcnJv
cikpOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
aworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9jYWxlOihO
U1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOihCT09MKWNv
bnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMgbWF4QWx0
ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOih2
b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikpY2FsbGJhY2sK
K3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF9pbXBsID0gYWRvcHROUyhbW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBhbGxv
Y10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIgbG9jYWxlOmxvY2FsZUlkZW50aWZpZXIg
ZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOmlu
dGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczphbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFj
azpjYWxsYmFja10pOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWF1ZGlvU2FtcGxl
c0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBbX2ltcGwgYXVkaW9TYW1wbGVzQXZhaWxhYmxlOnNhbXBs
ZUJ1ZmZlcl07Cit9CisKKy0gKHZvaWQpYWJvcnQKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIFtfaW1wbCBhYm9ydF07Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgW19pbXBsIHN0b3BdOworfQorCitAZW5kCisKK05TX0FT
U1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2Nr
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGI1MWRhYjBlMzhiYjE5OTdkYjk0MTFkMmE2MDhmMjgwMDU3ZGUyMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dl
YlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0ICJXZWJTcGVlY2hSZWNvZ25p
emVyVGFzay5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisKK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCisKK0BjbGFzcyBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2s7CisKK0BpbnRlcmZh
Y2UgV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIDogV2ViU3BlZWNoUmVjb2duaXplclRhc2sg
eworQHByaXZhdGUKKyAgICBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyIF9pZGVudGlmaWVyOworICAgIEJsb2NrUHRyPHZvaWQoY29uc3QgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKT4gX2RlbGVnYXRlQ2FsbGJhY2s7CisgICAgYm9v
bCBfaGFzU2VudFNwZWVjaFN0YXJ0OworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hFbmQ7Cit9CisK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3Ry
aW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGlu
dW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5h
dGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQo
XikoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjazsKKy0g
KHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZm
ZXI7CistICh2b2lkKWFib3J0OworLSAodm9pZClzdG9wOworCitAZW5kCisKK05TX0FTU1VNRV9O
T05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMGU1ZmY1YjlkNjBiODI4NWQ1YTJkNTM1ZGQwN2EyNDJhNzkzMDQwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5o
IgorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgorCitAaW1wbGVtZW50YXRpb24gV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrCisKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKils
b2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyBy
ZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6
KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29u
c3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjaworeworICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2lk
ZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrID0gY2FsbGJhY2s7
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihD
TVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIKK3sKKyAgICBpZiAoIV9oYXNTZW50U3BlZWNo
U3RhcnQpIHsKKyAgICAgICAgX2hhc1NlbnRTcGVlY2hTdGFydCA9IHRydWU7CisgICAgICAgIF9k
ZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUo
X2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNo
U3RhcnQpKTsKKyAgICB9Cit9CisKKy0gKHZvaWQpYWJvcnQKK3sKKyAgICBpZiAoIV9oYXNTZW50
U3BlZWNoRW5kICYmIF9oYXNTZW50U3BlZWNoU3RhcnQpIHsKKyAgICAgICAgX2hhc1NlbnRTcGVl
Y2hFbmQgPSB0cnVlOworICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaEVuZCkpOworICAgIH0KKyAgICBfZGVsZWdhdGVDYWxs
YmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVy
LCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworfQorCistICh2
b2lkKXN0b3AKK3sKKyAgICBbc2VsZiBhYm9ydF07Cit9CisKK0BlbmQKKworTlNfQVNTVU1FX05P
Tk5VTExfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM3MTU2YWMyZDE5ZDBlYjJkZTA2NGU3ZjA2YjZkZTkz
M2JlN2JkNDAuLjBkZmQ0OTkxNzU2ODNiYjk2NTBjYzQwZmYyYmFhM2E0YzAxZGU5YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE0NCw2ICsxNDQsOSBAQAogCQk2M0M3RURDNzIxQUZBRTA0MDA2QTdCOTkgLyogTlNQcm9ncmVz
c1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNF
MzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8qIE5TUHJvZ3Jlc3NTUEkuaCAqLzsgfTsKIAkJN0EzNkQw
RjkyMjNBRDlBQjAwQjA1MjJFIC8qIENvbW1vbkNyeXB0b1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EzNkQwRjgyMjNBRDlBQjAwQjA1MjJFIC8q
IENvbW1vbkNyeXB0b1NQSS5oICovOyB9OwogCQk3QTNBNkE4MDIwQ0FEQjQ3MDAzMTdBQUUgLyog
TlNJbWFnZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0EzQTZBN0YyMENBREI0NjAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCAqLzsgfTsKKwkJOTNC
MzhFQkUyNTgyMUNCNjAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCRDI1ODIxQ0I2MDAxOThFNjMg
LyogU3BlZWNoU29mdExpbmsuaCAqLzsgfTsKKwkJOTNCMzhFQzAyNTgyMUNEODAwMTk4RTYzIC8q
IFNwZWVjaFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCMzhFQkYyNTgyMUNENzAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLm1tICov
OyB9OworCQk5M0IzOEVDMjI1ODIxRDIyMDAxOThFNjMgLyogU3BlZWNoU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVDMTI1ODIxRDIyMDAx
OThFNjMgLyogU3BlZWNoU1BJLmggKi87IH07CiAJCTkzREI3RDM3MjQ2MjZCQ0QwMDRCRDhBMyAv
KiBOU1RleHRJbnB1dENvbnRleHRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzREI3RDM2MjQ2MjZCQ0MwMDRCRDhBMyAvKiBOU1RleHRJbnB1dENv
bnRleHRTUEkuaCAqLzsgfTsKIAkJOTNEQjdEM0EyNDYyNkY4NjAwNEJEOEEzIC8qIE5TVW5kb01h
bmFnZXJTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzREI3RDM5MjQ2MjZGODYwMDRCRDhBMyAvKiBOU1VuZG9NYW5hZ2VyU1BJLmggKi87IH07CiAJ
CUExMDI2NTg5MUY1Njc0N0EwMEI0Qzg0NCAvKiBISVRvb2xib3hTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMDI2NTg4MUY1Njc0N0EwMEI0Qzg0
NCAvKiBISVRvb2xib3hTUEkuaCAqLzsgfTsKQEAgLTM0MCw2ICszNDMsOSBAQAogCQk2M0UzNjlG
OTIxQUZBODNGMDAxQzE0QkMgLyogTlNQcm9ncmVzc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1By
b2dyZXNzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMzZEMEY4MjIzQUQ5
QUIwMEIwNTIyRSAvKiBDb21tb25DcnlwdG9TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29tbW9uQ3J5cHRvU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBM0E2QTdGMjBDQURCNDYwMDMxN0FBRSAvKiBOU0ltYWdlU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5TSW1hZ2VTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTNCMzhFQkQyNTgyMUNCNjAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVjaFNvZnRMaW5rLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJGMjU4MjFDRDcwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0
TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNwZWVjaFNv
ZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVDMTI1ODIxRDIy
MDAxOThFNjMgLyogU3BlZWNoU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNwZWVjaFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0RCN0QzNjI0NjI2
QkNDMDA0QkQ4QTMgLyogTlNUZXh0SW5wdXRDb250ZXh0U1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5TVGV4dElucHV0Q29udGV4dFNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0RCN0QzOTI0NjI2Rjg2MDA0QkQ4QTMgLyogTlNVbmRvTWFuYWdlclNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1VuZG9NYW5hZ2VyU1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRTU5MDlDMUY5M0JGMUUwMDY3RjhDRiAv
KiBVbmVuY29kYWJsZUhhbmRsaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZW5jb2RhYmxlSGFuZGxp
bmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxMSw2ICs1MTcsNyBAQAogCQkJ
CTQ0Mjk1NkNDMjE4QTcyREUwMDgwREI1NCAvKiBSZXZlYWxTUEkuaCAqLywKIAkJCQk1NzBBQjhG
MDIwQUUyRThEMDBCOEJFODcgLyogU2VjS2V5UHJveHlTUEkuaCAqLywKIAkJCQkwQzJEQTEzQzFG
M0JFQjQ5MDBEQkMzMTcgLyogU2VydmVyc1NQSS5oICovLAorCQkJCTkzQjM4RUMxMjU4MjFEMjIw
MDE5OEU2MyAvKiBTcGVlY2hTUEkuaCAqLywKIAkJCQkwQzJEQTEyQjFGM0JFQjQ5MDBEQkMzMTcg
LyogVVJMRm9ybWF0dGluZ1NQSS5oICovLAogCQkJCTBDMkRBMTNEMUYzQkVCNDkwMERCQzMxNyAv
KiBXZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaCAqLywKIAkJCSk7CkBAIC02ODIsNiArNjg5LDggQEAK
IAkJCQkzMTY0N0ZBRTI1MTc1OURCMDAxMEY4RkIgLyogT3BlbkdMU29mdExpbmtDb2NvYS5tbSAq
LywKIAkJCQlBMUY2M0M5RDIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLmggKi8s
CiAJCQkJQTFGNjNDOUUyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NLaXRTb2Z0TGluay5tbSAqLywK
KwkJCQk5M0IzOEVCRDI1ODIxQ0I2MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsuaCAqLywKKwkJ
CQk5M0IzOEVCRjI1ODIxQ0Q3MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsubW0gKi8sCiAJCQkJ
MDc2MTFEQjQyNDNGQTVCRTAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5oICovLAog
CQkJCTA3NjExREI1MjQzRkE1QkYwMEQ4MDcwNCAvKiBVc2FnZVRyYWNraW5nU29mdExpbmsubW0g
Ki8sCiAJCQkpOwpAQCAtOTA3LDYgKzkxNiw4IEBACiAJCQkJQTNBQjZFNTYxRjNEMUREQjAwOUMx
NEIxIC8qIFNsZWVwRGlzYWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQUI2RTYxMUYzRDFF
MzkwMDlDMTRCMSAvKiBTbGVlcERpc2FibGVyQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUEz
Nzg4RTk4MUYwNUI2Q0UwMDY3OTQyNSAvKiBTb3VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNC
MzhFQkUyNTgyMUNCNjAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5M0IzOEVDMjI1ODIxRDIyMDAxOThFNjMgLyogU3BlZWNoU1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTE3NUI0OTFGNkFGRjhFMDBDNEI5RjAgLyogU3BlZWNoU3ludGhlc2lzU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwQzVBRjkyMTFGNDNBNEM3MDAyRUFDMDIgLyogU1FMaXRlM1NQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEzMDhCMTQyMEEyMTcwNTAwM0ZCOTI5IC8qIFN5c3Rl
bVByZXZpZXdTUEkuaCBpbiBIZWFkZXJzICovLApAQCAtMTAzNyw2ICsxMDQ4LDcgQEAKIAkJCQlB
M0FCNkU2MDFGM0QxRTM5MDA5QzE0QjEgLyogU2xlZXBEaXNhYmxlckNvY29hLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEzNzg4RTlDMUYwNUI3ODIwMDY3OTQyNSAvKiBTb3VuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBMzc4OEU5RTFGMDVCNzhFMDA2Nzk0MjUgLyogU291bmRNYWMubW0gaW4g
U291cmNlcyAqLywKKwkJCQk5M0IzOEVDMDI1ODIxQ0Q4MDAxOThFNjMgLyogU3BlZWNoU29mdExp
bmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlBM0FCNkU1NzFGM0QxRERCMDA5QzE0QjEgLyogU3lz
dGVtU2xlZXBMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0FCNkU2NTFGM0QyMTdG
MDA5QzE0QjEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTJFMTM0MkNEMjE1QUExMEEwMDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1NwZWVjaFNvZnRM
aW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1NwZWVjaFNvZnRMaW5rLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTczZjc1NDk5NTBhMGEzNDlmMTYzYTBhOGJkOTk2YzhlMzJmODBlMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsu
aApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBIQVZF
KFNQRUVDSFJFQ09HTklaRVIpCisKKyNpbXBvcnQgPFNwZWVjaC9TcGVlY2guaD4KKyNpbXBvcnQg
PHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFERVIoUEFM
LCBTcGVlY2gpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBTRlNwZWVjaFJlY29n
bml0aW9uUmVzdWx0KTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgU0ZTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3QpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBTRlNw
ZWVjaEF1ZGlvQnVmZmVyUmVjb2duaXRpb25SZXF1ZXN0KTsKK1NPRlRfTElOS19DTEFTU19GT1Jf
SEVBREVSKFBBTCwgU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2spOworU09GVF9MSU5LX0NMQVNTX0ZP
Ul9IRUFERVIoUEFMLCBTRlNwZWVjaFJlY29nbml6ZXIpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9I
RUFERVIoUEFMLCBTRlRyYW5zY3JpcHRpb25TZWdtZW50KTsKK1NPRlRfTElOS19DTEFTU19GT1Jf
SEVBREVSKFBBTCwgU0ZUcmFuc2NyaXB0aW9uKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1NwZWVjaFNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmEwMzFlODYz
YjlkOGQ1NjFiZmY2NjgzODgzNmIwNmM2Zjc4OTcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5tbQpAQCAtMCwwICsxLDQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09H
TklaRVIpCisKKyNpbXBvcnQgPFNwZWVjaC9TcGVlY2guaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoUEFMLCBTcGVlY2gpCisK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBTRlNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0LCBQQUxfRVhQT1JUKTsKK1NPRlRfTElOS19DTEFTU19GT1Jf
U09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBTRlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dCwgUEFMX0VYUE9SVCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFNwZWVjaCwgU0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVzdCwgUEFMX0VY
UE9SVCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFNwZWVj
aCwgU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2ssIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXplciwg
UEFMX0VYUE9SVCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUws
IFNwZWVjaCwgU0ZUcmFuc2NyaXB0aW9uU2VnbWVudCwgUEFMX0VYUE9SVCk7CitTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFNwZWVjaCwgU0ZUcmFuc2NyaXB0aW9u
LCBQQUxfRVhQT1JUKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9TcGVlY2hTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL1NwZWVjaFNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5N2NiZGI3M2ViMWE0MDFjYWQ4MjRkMTNhMWZi
MjFkOTQ3M2NjOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jb2NvYS9TcGVlY2hTUEkuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEhB
VkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNp
bXBvcnQgPFNwZWVjaC9TRlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdF9Qcml2YXRlLmg+CisKKyNl
bHNlCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgU0ZTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3QgKCkKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGRldGVjdE11bHRp
cGxlVXR0ZXJhbmNlczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X21heGltdW1SZWNv
Z25pdGlvbkR1cmF0aW9uLCBzZXR0ZXI9X3NldE1heGltdW1SZWNvZ25pdGlvbkR1cmF0aW9uOikg
TlNUaW1lSW50ZXJ2YWwgX21heGltdW1SZWNvZ25pdGlvbkR1cmF0aW9uOworCitAZW5kCisKK05T
X0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KworI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IDhmOTlmOWExOTE4Yzk1NTg4NWZiMmFjYjk5YzhkMWE3NTI2NWFhMDMuLmI2MGU1MzJk
YjNhYzkxZmUwMWEwMzMyZDhiNTU1OWIwMmRkMTQyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dApAQCAtOTIsNiArOTIsOSBAQCBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJNYWMubW0KIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXJDb2NvYS5jcHAKIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5tbQogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKK01vZHVs
ZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQorTW9kdWxlcy9zcGVlY2gv
Y29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0KK01vZHVsZXMvc3BlZWNoL2NvY29hL1dl
YlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9E
YXRhYmFzZU1hbmFnZXJDb2NvYS5tbQogYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlP
Uy5tbQogYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJl
NGZjYWZmOWZjOTI1OWI0NmMzNTM5YjZlYTkzYWY0YWRjN2ZiMjUuLjU0NTk5MzQzNzc2OTgxYzgw
NzI3ZDFkNDYxZTdmMWYzNWMwYzRlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI4MTUsNiArMjgxNSw4IEBACiAJCTkzQTgw
NjFFMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0RvdWJsZVJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E4MDYxQTFFMDNCNTg1MDA4QTFGMjYgLyog
SlNEb3VibGVSYW5nZS5oICovOyB9OwogCQk5M0E4MDYyMDFFMDNCNTg1MDA4QTFGMjYgLyogSlNM
b25nUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQTgwNjFDMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0xvbmdSYW5nZS5oICovOyB9OwogCQk5M0Iy
RDgxNjBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjJEODE1MEY5OTIwRDIwMDZBRTZC
MiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTkzQjM4RUMzMjU4MjFEQjQwMDE5OEU2MyAvKiBXZWJTcGVlY2hS
ZWNvZ25pemVyVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNCMzhFQkEyNTgyMTkzQjAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNr
LmggKi87IH07CisJCTkzQjM4RUM0MjU4MjFEQjcwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25p
emVyVGFza01vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzQjM4RUJCMjU4MjE5M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2suaCAqLzsgfTsKIAkJOTNCNkEwRTYwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I2QTBFNTBC
MEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0I3MEQ2NDA5RUIwQzdDMDA5RDg0NjggLyogSlNE
T01CaW5kaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBENkEwOUVCMEM3QzAw
OUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENEUwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0
ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xMTUyNyw2ICsxMTUyOSwxMSBAQAogCQk5M0E4MDYxQzFFMDNCNTg1MDA4QTFGMjYgLyogSlNM
b25nUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNMb25nUmFuZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMkQ4MTUwRjk5MjBEMjAwNkFFNkIy
IC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN1ZGRlblRlcm1pbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjJE
ODE3MEY5OTIwRUUwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN1ZGRlblRlcm1pbmF0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVCODI1ODIxODk5MDAxOThFNjMgLyogU3BlZWNo
UmVjb2duaXplckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU3BlZWNoUmVjb2duaXplckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0IzOEVCOTI1ODIxOTNBMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2Nr
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU3BlZWNoUmVj
b2duaXplclRhc2tNb2NrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVC
QTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXplclRhc2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQkIyNTgyMTkzRDAwMTk4RTYzIC8qIFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTNCMzhFQkMyNTgyMTkzRTAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNr
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU3BlZWNoUmVj
b2duaXplclRhc2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjZBMEU1MEIw
QkNBNUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNC
NzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNET01CaW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzQjcwRDREMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXZlbnRMaXN0ZW5lci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzE3Myw2ICsyMzE4MCwxOCBAQAogCQkJ
cGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTkzQjM4RUI2
MjU4MjE4MzMwMDE5OEU2MyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJOTNCMzhFQjgyNTgyMTg5OTAwMTk4RTYzIC8qIFNwZWVjaFJlY29n
bml6ZXJDb2NvYS5tbSAqLywKKwkJCQk5M0IzOEVCQTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2suaCAqLywKKwkJCQk5M0IzOEVCQzI1ODIxOTNFMDAxOThFNjMgLyog
V2ViU3BlZWNoUmVjb2duaXplclRhc2subW0gKi8sCisJCQkJOTNCMzhFQkIyNTgyMTkzRDAwMTk4
RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oICovLAorCQkJCTkzQjM4RUI5MjU4
MjE5M0EwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0gKi8sCisJCQkp
OworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
OTNDMDlBODIwQjA2NEYwNTAwNUFCRDREIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNTcwNSw2ICsyNTcyNCw3IEBACiAJCUFBMkE1QUI3MTZB
NDg1QTQwMDk3NUEyNSAvKiBzcGVlY2ggKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTkzQjM4RUI2MjU4MjE4MzMwMDE5OEU2MyAvKiBjb2NvYSAqLywKIAkJ
CQlBQTJBNUFCQTE2QTQ4NUQ1MDA5NzVBMjUgLyogRE9NV2luZG93K1NwZWVjaFN5bnRoZXNpcy5p
ZGwgKi8sCiAJCQkJQUEyQTVBQjgxNkE0ODVENTAwOTc1QTI1IC8qIERPTVdpbmRvd1NwZWVjaFN5
bnRoZXNpcy5jcHAgKi8sCiAJCQkJQUEyQTVBQjkxNkE0ODVENTAwOTc1QTI1IC8qIERPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpcy5oICovLApAQCAtMzUyNzYsNiArMzUyOTYsOCBAQAogCQkJCTk3QUFC
RDI1MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTdBQUJEMjcxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDFFMTJFOUYyNEZFNzRFMjAwOTNGRkI0IC8qIFdlYlNvY2tldElkZW50
aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjM4RUMzMjU4MjFEQjQwMDE5OEU2MyAvKiBX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCMzhFQzQyNTgy
MURCNzAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUY4NzU2QjIxRTIyQzMzNTAwNDJDNDBEIC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJh
Y2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFERUE0NTYxQjM5RjREOTAwRjc3MTc4
IC8qIFdlYlN5c3RlbUJhY2tkcm9wTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwRkEz
MTQ5NjkzOTEwMEZCNUJEOCAvKiBXZWJUaWxlZEJhY2tpbmdMYXllci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5jcHAKaW5kZXggZDZmYTg5YzU0ODMyNjJjMTAxYTI2ZDAzMDMyMzU1NzIwNmIxMmY2MS4uYzU2
OGNjNDIxODYzMWIxN2EwNDI3NmM4ZWZiYzJhODk0YzAxM2IxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcApAQCAtMzYsMjIg
KzM2LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisKK1NwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24sIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIsIFNwZWVj
aFJlY29nbml0aW9uQ2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQmJiBjaGVja0lmRW5h
YmxlZAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1TcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9u
LCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3BlZWNoUmVj
b2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Npb25DaGVja2VyLCBSZWFsdGltZU1l
ZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24mJiBmdW5jdGlvbikKKyAgICAsIFJlYWx0aW1lTWVkaWFT
b3VyY2VDcmVhdGVGdW5jdGlvbiYmIGZ1bmN0aW9uCisjZW5kaWYKKyAgICApCiAgICAgOiBtX2Nv
bm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQogICAgICwgbV9wZXJtaXNzaW9uQ2hlY2tlcihXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2Vy
KSkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV9yZWFsdGltZU1lZGlhU291cmNl
Q3JlYXRlRnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCisjZW5kaWYKIHsKIH0KLSNlbHNlCi1T
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1p
c3Npb25DaGVja2VyKQotICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCi0g
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1fcGVybWlzc2lvbkNoZWNrZXIo
V1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCi17Ci19Ci0jZW5kaWYKIAogdm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29s
IGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZl
cywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luKQogewpAQCAtODAsMTEgKzc4LDExIEBA
IHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVz
dChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBoYW5kbGVSZXF1ZXN0KGlkZW50aWZpZXIpOworICAgICAgICBoYW5kbGVSZXF1
ZXN0KCp3ZWFrUmVxdWVzdCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQordm9pZCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Qm
IHJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX3JlY29nbml6ZXIpIHsKICAgICAgICAgbV9yZWNvZ25p
emVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyPihbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYgdXBkYXRlKSB7CkBAIC05NSwxNiArOTMsMjUg
QEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24KICAgICAgICAgICAgIGlmICghbV9yZXF1ZXN0cy5j
b250YWlucyhjbGllbnRJZGVudGlmaWVyKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKKyAg
ICAgICAgICAgIHNlbmRVcGRhdGUodXBkYXRlKTsKKwogICAgICAgICAgICAgYXV0byB0eXBlID0g
dXBkYXRlLnR5cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IgfHwgdHlwZSA9PSBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKLSAgICAgICAgICAgICAgICBtX3JlcXVlc3RzLnJlbW92
ZShjbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlmICh0eXBlICE9IFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IgJiYgdHlwZSAhPSBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgICAgIHNlbmRVcGRhdGUodXBkYXRlKTsKKyAgICAgICAgICAgIGlmIChtX2lzUmVz
ZXR0aW5nKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1faXNSZXNldHRp
bmcgPSB0cnVlOworCisgICAgICAgICAgICBtX3JlY29nbml6ZXItPnJlc2V0KCk7CisgICAgICAg
ICAgICBtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1f
aXNSZXNldHRpbmcgPSBmYWxzZTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIAogICAgIG1fcmVj
b2duaXplci0+cmVzZXQoKTsKIAorICAgIGF1dG8gY2xpZW50SWRlbnRpZmllciA9IHJlcXVlc3Qu
Y2xpZW50SWRlbnRpZmllcigpOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgYXV0byBz
b3VyY2VPckVycm9yID0gbV9yZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24oKTsKICAg
ICBpZiAoIXNvdXJjZU9yRXJyb3IpIHsKQEAgLTExMiwxMCArMTE5LDEyIEBAIHZvaWQgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uCiAgICAgICAgIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmNyZWF0ZUVycm9yKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVk
aW9DYXB0dXJlLCBzb3VyY2VPckVycm9yLmVycm9yTWVzc2FnZSB9KSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgbV9yZWNvZ25pemVyLT5zdGFydChjbGllbnRJZGVudGlmaWVyLCBzb3Vy
Y2VPckVycm9yLnNvdXJjZSgpKTsKKworICAgIGJvb2wgbW9ja0RldmljZUNhcHR1cmVzRW5hYmxl
ZCA9IG1fY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKTsKKyAgICBtX3JlY29nbml6
ZXItPnN0YXJ0KGNsaWVudElkZW50aWZpZXIsIHNvdXJjZU9yRXJyb3Iuc291cmNlKCksIG1vY2tE
ZXZpY2VDYXB0dXJlc0VuYWJsZWQsIHJlcXVlc3QubGFuZygpLCByZXF1ZXN0LmNvbnRpbnVvdXMo
KSwgcmVxdWVzdC5pbnRlcmltUmVzdWx0cygpLCByZXF1ZXN0Lm1heEFsdGVybmF0aXZlcygpKTsK
ICNlbHNlCiAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcik7Ci0gICAgc2Vu
ZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGU6OkVycm9yLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkF1ZGlvQ2FwdHVyZSwgIkF1ZGlvIGNhcHR1cmUg
aXMgbm90IGltcGxlbWVudGVkIn0pOworICAgIHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciwgV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBl
OjpBdWRpb0NhcHR1cmUsICJBdWRpbyBjYXB0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCJfcyB9KTsK
ICNlbmRpZgogfQogCkBAIC0xMzUsNyArMTQ0LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6YWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWQK
IHsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50aWZpZXIpOwogICAgIGlmIChtX3JlY29n
bml6ZXIgJiYgbV9yZWNvZ25pemVyLT5jdXJyZW50Q2xpZW50SWRlbnRpZmllcigpID09IGNsaWVu
dElkZW50aWZpZXIpIHsKLSAgICAgICAgbV9yZWNvZ25pemVyLT5zdG9wKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI6OlNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQ6Ok5vKTsKKyAgICAgICAgbV9y
ZWNvZ25pemVyLT5hYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNDgsNyAr
MTU3LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxpZGF0ZShXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGkKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVu
dElkZW50aWZpZXIpOwogICAgIGlmIChtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVy
KSkgewogICAgICAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y3VycmVudENs
aWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKQotICAgICAgICAgICAgbV9yZWNv
Z25pemVyLT5zdG9wKCk7CisgICAgICAgICAgICBtX3JlY29nbml6ZXItPmFib3J0KCk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIuaAppbmRleCBlZDY3MjY0YWExMzFlMWUxNDIxZWFhNDE0ZDQxNzEzYzY5NWQ4MzI0Li5j
OGI3Y2NjZjAzZGRmOTg0MWU4MTBlOWM0MmI0YTRkZjQ2MTExOTA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKQEAgLTQ3LDE1ICs0
NywxNiBAQCBlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uIDog
Ym9vbDsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyID0gV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI7CiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVj
a2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uKT4mJik+
OwordXNpbmcgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxl
ZCA9IEZ1bmN0aW9uPGJvb2woKT47CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmVyIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPiwgcHVibGljIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICB1c2luZyBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24gPSBGdW5jdGlvbjxX
ZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvcigpPjsKLSAgICBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50
aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgUmVhbHRpbWVNZWRp
YVNvdXJjZUNyZWF0ZUZ1bmN0aW9uJiYpOworICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciwg
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmLCBTcGVlY2hSZWNvZ25pdGlvbkNo
ZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkJiYsIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVh
dGVGdW5jdGlvbiYmKTsKICNlbHNlCi0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYpOworICAgIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRl
bnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmLCBTcGVlY2hSZWNv
Z25pdGlvbkNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkJiYpOwogI2VuZGlmCiAKICAg
ICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVz
dWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJik7
CkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RQ
ZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsK
LSAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllcik7CisgICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc2VuZFVwZGF0ZShXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uRXJyb3I+ID0gV1RGOjpudWxsb3B0LCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgc2VuZFVw
ZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpOwogCkBAIC04MSw2
ICs4Miw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9yZXF1ZXN0czsKICAgICBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DaGVja2VyIG1fcGVybWlzc2lvbkNoZWNrZXI7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI+IG1fcmVjb2duaXplcjsKKyAgICBTcGVlY2hS
ZWNvZ25pdGlvbkNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkIG1fY2hlY2tJZk1vY2tD
YXB0dXJlRGV2aWNlc0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzUmVzZXR0aW5nIHsgZmFsc2UgfTsK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0
ZUZ1bmN0aW9uIG1fcmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggYWRlZTVmYjllN2JiZDg4
YzA4OGU2OWVmNGU1NTZlZjNhOGQwZDUzNi4uZmU3MTI2YzU1YmY0OWVhMWI4NGEzNzAxOGRiYzlk
MTcxNTdhMjZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCkBAIC0xNzE3LDIwICsxNzE3LDI3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50CiAKICAg
ICBBU1NFUlQoIW1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAuY29udGFpbnMoaWRlbnRpZmll
cikpOwogICAgIGF1dG8mIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbV9zcGVlY2hSZWNvZ25p
dGlvblNlcnZlck1hcC5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwot
ICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllciwgW3dlYWtQYWdlID0g
bWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKGF1dG8mIG9yaWdpbiwgYXV0byYmIGNvbXBsZXRpb25I
YW5kbGVyKSBtdXRhYmxlIHsKKyAgICBhdXRvIHBlcm1pc3Npb25DaGVja2VyID0gW3dlYWtQYWdl
ID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKGF1dG8mIG9yaWdpbiwgYXV0byYmIGNvbXBsZXRp
b25IYW5kbGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrUGFnZSkgewogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb246
OkRlbnkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgd2Vha1Bh
Z2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb24ob3JpZ2luLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfQorICAgIH07CisgICAgYXV0byBjaGVja0lmTW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZCA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBhZ2Up
XSgpIHsKKyAgICAgICAgcmV0dXJuIHdlYWtQYWdlICYmIHdlYWtQYWdlLT5wcmVmZXJlbmNlcygp
Lm1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKTsKKyAgICB9OworCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLSAgICAsIFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBhZ2UpXSgpIHsK
KyAgICBhdXRvIGNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2UgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vh
a1B0cih0YXJnZXRQYWdlKV0oKSB7CiAgICAgICAgIHJldHVybiB3ZWFrUGFnZSA/IHdlYWtQYWdl
LT5jcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3BlZWNoUmVjb2duaXRpb24oKSA6IENhcHR1
cmVTb3VyY2VPckVycm9yIHsgIlBhZ2UgaXMgaW52YWxpZCIgfTsKLSAgICB9CisgICAgfTsKKyAg
ICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIsIFdURk1vdmUocGVybWlz
c2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKSwg
V1RGTW92ZShjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlKSk7CisjZWxzZQorICAgIHNwZWVjaFJl
Y29nbml0aW9uU2VydmVyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFr
ZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllciwgV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tl
ciksIFdURk1vdmUoY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpKTsKICNlbmRpZgot
ICAgICk7CisKICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIsICpzcGVlY2hSZWNv
Z25pdGlvblNlcnZlcik7CiB9CiAK
</data>
<flag name="commit-queue"
          id="433208"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415878</attachid>
            <date>2020-12-10 08:20:08 -0800</date>
            <delta_ts>2020-12-10 09:08:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201210082007.patch</filename>
            <type>text/plain</type>
            <size>63563</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0YTVmYWYxNGM5MWEy
OGEwZTZkOTNhNGEwNDBkN2Q3M2I2ODE5OS4uYmZlOGJmOWU1NDVkZjFmOWIyMTRhYjk4NGNjOGIw
YjlhNzgxY2E1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTEyLTEwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
V2ViU3BlZWNoUmVjb2duaXplclRhc2ssIHdoaWNoIGNvbm5lY3RzIHRvIHNwZWVjaCByZWNvZ25p
dGlvbiBzZXJ2aWNlIHZpYSBTcGVlY2ggZnJhbWV3b3JrIEFQSXMuCisKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcDogTWFrZSBhdWRpbyBjYXB0dXJlIGFuZCBy
ZWNvZ25pdGlvbiBsb2dpYyBzZXBhcmF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFib3J0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0b3BDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OmRhdGFDYXB0dXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpz
dGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFi
b3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3Rv
cFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0
UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c2V0U291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BJ
bnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJD
b2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpkYXRh
Q2FwdHVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNv
Z25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2du
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25p
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVy
VGFzay5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hS
ZWNvZ25pemVyVGFzay5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBv
cnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmlu
YWw6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAoLVtX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3BlZWNoUmVjb2duaXplcjphdmFpbGFi
aWxpdHlEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNw
ZWVjaFJlY29nbml0aW9uVGFzazpkaWRIeXBvdGhlc2l6ZVRyYW5zY3JpcHRpb246XSk6CisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29nbml0aW9uVGFzazpkaWRG
aW5pc2hSZWNvZ25pdGlvbjpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sg
c3BlZWNoUmVjb2duaXRpb25UYXNrV2FzQ2FuY2VsbGVkOl0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkRmluaXNoU3VjY2Vzc2Z1
bGx5Ol0pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6
ZXJUYXNrTW9jay5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2subW06IEFkZGVkLgorICAgICAgICAoLVtXZWJTcGVlY2hS
ZWNvZ25pemVyVGFza01vY2sgaW5pdFdpdGhJZGVudGlmaWVyOmxvY2FsZTpkb011bHRpcGxlUmVj
b2duaXRpb25zOnJlcG9ydEludGVyaW1SZXN1bHRzOm1heEFsdGVybmF0aXZlczpkZWxlZ2F0ZUNh
bGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgYXVkaW9T
YW1wbGVzQXZhaWxhYmxlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2sgYWJvcnRdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIHN0b3Bd
KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0xMi0wOSAgQW5kcmVzIEdvbnphbGV6ICA8YW5k
cmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZvciBmb2N1cyB0cmFja2luZyBpbiBp
c29sYXRlZCB0cmVlIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA5NjliYmJkMWM1MTRlZjVk
ZjM1Nzk1MWJjYTY5MTQ0MDQ3OTkwNDI1Li4wMjcwZGNlZTlmOTliNTg3ZDE1ODA1YjU2ZTg0ZTYw
ZmQ0Zjc2NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMi0x
MCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
cmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHNvZnQgbGlua2luZyB0byBTcGVlY2ggZnJhbWV3b3JrIGFuZCBTUEkuCisKKyAgICAg
ICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvY29jb2Ev
U3BlZWNoU29mdExpbmsuaDogQWRkZWQuCisgICAgICAgICogcGFsL2NvY29hL1NwZWVjaFNvZnRM
aW5rLm1tOiBBZGRlZC4KKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL1NwZWVjaFNQSS5oOiBBZGRl
ZC4KKwogMjAyMC0xMi0wNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIFtDTWFrZV0gUmVtb3ZlIFdFQktJVF9XUkFQX1NPVVJDRUxJU1QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMmRiMTVjYWQyNjYyNjI5MjFkYzRlYzUwOWFjNWM3YzBhYzZjZjY5MC4uMDliNWI4MTdmODAx
YTQxM2MyZjEzNGE4ZWFlNTIzMzgyZTJkOTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMC0xMi0xMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVz
dFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QpOiBXaGVuIHRoZXJlIGlzIGFuIGVycm9yIG9yIGVuZCBl
dmVudCB1cGRhdGUsIHNlcnZlciByZXNldHMgdGhlCisgICAgICAgIHN0YXRlIG9mIFNwZWVjaFJl
Y29nbml6ZXIsIHdoaWNoIHdvdWxkIHRlcm1pbmF0ZSBvbmdvaW5nIHdvcmsuCisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcDogUGFzcyBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkIHZhbHVlIGZyb20g
d2ViIHBhZ2UgYWxsIHRoZSB3YXkgdG8gCisgICAgICAgIFNwZWVjaFJlY29nbml6ZXIgc28gaXQg
ZGVjaWRlcyB3aGV0aGVyZSB0byB1c2UgYSBtb2NrIHNwZWVjaCByZWNvZ29uaXRpb24gYmFja2Vu
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcik6CisKIDIwMjAtMTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBhZGQgc3VwcG9ydCBmb3IgY3JlYXRp
bmcgZXh0ZW5zaW9uIHRhYnMgaW4gV2ViSW5zcGVjdG9yVUkgdmlhIF9XS0luc3BlY3RvckV4dGVu
c2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
emVyLmNwcAppbmRleCBmOTE2ZDJiYTRkMjgwZjc1ODYxMmI1N2NjMTIxOTRmOWI0ZDNiNWI1Li5h
OTY3OTUyMDMwYmViNDgyMmJjMmY3Y2QzNGU4ZDc5NjY2YjcwNWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcApAQCAtNDUsNDIg
KzQ1LDQ4IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXQoKQogICAgIGlmICghbV9jbGll
bnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9zb3VyY2UpCi0gICAg
ICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBzdG9wQ2FwdHVyZSgpOworICAgIHJlc2V0UmVj
b2duaXRpb24oKTsKKyAgICBtX2NsaWVudElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cit9CiAK
LSAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0
aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCAiQW5vdGhlciByZXF1ZXN0IGlzIHN0YXJ0ZWQiIH07Ci0g
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJv
cigqbV9jbGllbnRJZGVudGlmaWVyLCBlcnJvcikpOwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjph
Ym9ydCgpCit7CisgICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmllcik7CisgICAgc3RvcENhcHR1
cmUoKTsKKyAgICBhYm9ydFJlY29nbml0aW9uKCk7Cit9CiAKLSAgICBtX2NsaWVudElkZW50aWZp
ZXIgPSBXVEY6Om51bGxvcHQ7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3AoKQoreworICAg
IEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIpOworICAgIHN0b3BDYXB0dXJlKCk7CisgICAgc3Rv
cFJlY29nbml0aW9uKCk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi12b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQor
dm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZlciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
JiYgc291cmNlLCBib29sIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIGNvbnN0IFN0cmluZyYg
bG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1
aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCiB7Ci0gICAgQVNTRVJUKCFtX3NvdXJjZSk7Ci0KLSAg
ICBtX2NsaWVudElkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIEFTU0VSVCghbV9jbGllbnRJ
ZGVudGlmaWVyKTsKKyAgICBtX2NsaWVudElkZW50aWZpZXIgPSBjbGllbnRJZGVudGlmZXI7CiAg
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1f
Y2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOwog
Ci0gICAgc2V0U291cmNlKFdURk1vdmUoc291cmNlKSk7CisgICAgaWYgKCFzdGFydFJlY29nbml0
aW9uKG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIGNsaWVudElkZW50aWZlciwgbG9jYWxlSWRl
bnRpZmllciwgY29udGludW91cywgaW50ZXJpbVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcykpIHsK
KyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsICJG
YWlsZWQgdG8gc3RhcnQgcmVjb2duaXRpb24iX3MgfTsKKyAgICAgICAgYXV0byB1cGRhdGUgPSBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRp
ZmVyLCBlcnJvcik7CisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgc3RhcnRDYXB0dXJlKFdURk1vdmUoc291cmNlKSk7CiB9
CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c2V0U291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291
cmNlPiYmIHNvdXJjZSkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKFJlZjxS
ZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBhdXRvIGRhdGFDYWxsYmFjayA9
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBhdXRvJiB0aW1lLCBjb25zdCBh
dXRvJiBkYXRhLCBjb25zdCBhdXRvJiBkZXNjcmlwdGlvbiwgYXV0byBzYW1wbGVDb3VudCkgewot
ICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgICAgIGF1dG8gYnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIo
ZGF0YSwgZGVzY3JpcHRpb24sIFBBTDo6dG9DTVRpbWUodGltZSksIHNhbXBsZUNvdW50KTsKLSAg
ICAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0jZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0o
dGltZSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICAgICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0aW9uKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZUNvdW50KTsKLSNlbmRp
ZgorICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGF0YUNhcHR1
cmVkKHRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7CiAgICAgfTsKIAogICAg
IGF1dG8gc3RhdGVVcGRhdGVDYWxsYmFjayA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpXShjb25zdCBhdXRvJiB1cGRhdGUpIHsKQEAgLTg5LDkgKzk1LDYgQEAgdm9pZCBTcGVl
Y2hSZWNvZ25pemVyOjpzZXRTb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNl
KQogCiAgICAgICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIgJiYgbV9jbGllbnRJZGVudGlm
aWVyLnZhbHVlKCkgPT0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKSk7CiAgICAgICAgIG1fZGVs
ZWdhdGVDYWxsYmFjayh1cGRhdGUpOwotCi0gICAgICAgIGlmICh1cGRhdGUudHlwZSgpID09IFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IpCi0gICAgICAgICAgICBtX3NvdXJjZSA9
IG51bGxwdHI7CiAgICAgfTsKIAogICAgIG1fc291cmNlID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2U+KCptX2NsaWVudElkZW50aWZpZXIsIFdURk1vdmUoZGF0YUNh
bGxiYWNrKSwgV1RGTW92ZShzdGF0ZVVwZGF0ZUNhbGxiYWNrKSwgV1RGTW92ZShzb3VyY2UpKTsK
QEAgLTk5LDMwICsxMDIsMzggQEAgdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzZXRTb3VyY2UoUmVm
PFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQogCiAjZW5kaWYKIAotdm9pZCBTcGVlY2hS
ZWNvZ25pemVyOjpzdG9wKFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgc2hvdWxkR2VuZXJhdGVG
aW5hbFJlc3VsdCkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUoKQogewotICAg
IGlmICghbV9jbGllbnRJZGVudGlmaWVyKQorICAgIGlmICghbV9zb3VyY2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHN0b3BJbnRlcm5hbCgpOworICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAg
ICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9j
bGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkF1ZGlvRW5kKSk7
Cit9CiAKLSAgICBpZiAoc2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCA9PSBTaG91bGRHZW5lcmF0
ZUZpbmFsUmVzdWx0OjpZZXMpIHsKLSAgICAgICAgLy8gVE9ETzogZ2VuZXJhdGUgcmVhbCByZXN1
bHQgd2hlbiBzcGVlY2ggcmVjb2duaXRpb24gYmFja2VuZCBpcyBpbXBsZW1lbnRlZC4KLSAgICAg
ICAgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4gcmVzdWx0RGF0YXM7Ci0gICAg
ICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVz
dWx0KCptX2NsaWVudElkZW50aWZpZXIsIHJlc3VsdERhdGFzKSk7Ci0gICAgfQorI2lmICFIQVZF
KFNQRUVDSFJFQ09HTklaRVIpCiAKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OkVuZCkpOwotICAgIG1fY2xpZW50SWRlbnRpZmllciA9IFdURjo6bnVsbG9w
dDsKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVkKGNvbnN0IE1lZGlhVGltZSYs
IGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYs
IHNpemVfdCkKK3sKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wSW50ZXJuYWwoKQor
Ym9vbCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKGJvb2wsIFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJv
b2wsIHVpbnQ2NF90KQogewotICAgIGlmICghbV9zb3VyY2UpCi0gICAgICAgIHJldHVybjsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CiAKLSAgICBtX3NvdXJjZSA9IG51bGxwdHI7Ci0gICAgbV9kZWxl
Z2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRl
bnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpBdWRpb0VuZCkpOwordm9pZCBT
cGVlY2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKCkKK3sKIH0KIAordm9pZCBTcGVlY2hS
ZWNvZ25pemVyOjpzdG9wUmVjb2duaXRpb24oKQoreworfQorCit2b2lkIFNwZWVjaFJlY29nbml6
ZXI6OnJlc2V0UmVjb2duaXRpb24oKQoreworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXplci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXplci5oCmluZGV4IGVjNWFjMTMwYjhhMDQ3N2RhOTFmZDFlMWU3ZmMyYzcwYTRhMzI2M2EuLjll
MzIwNTVjMzc4NWZkNTg2ZDFhMjQzZjhlYjEzYTZhYzA4NWQ5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKQEAgLTI4LDYgKzI4LDEx
IEBACiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVk
ZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCisjaWYg
SEFWRShTUEVFQ0hSRUNPR05JWkVSKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK09CSkNf
Q0xBU1MgV2ViU3BlZWNoUmVjb2duaXplclRhc2s7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTsKQEAgLTQwLDExICs0NSwxMSBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgflNwZWVjaFJlY29nbml6ZXIoKSA9IGRlZmF1
bHQ7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgUmVmPFJl
YWx0aW1lTWVkaWFTb3VyY2U+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVk
aWFTb3VyY2U+JiYsIGJvb2wgbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCwgY29uc3QgU3RyaW5n
JiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMs
IHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyk7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc2V0KCk7Ci0gICAgZW51bSBjbGFzcyBTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0IHsg
Tm8sIFllcyB9OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcChTaG91bGRHZW5lcmF0ZUZp
bmFsUmVzdWx0ID0gU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6WWVzKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFib3J0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wKCk7CiAK
ICAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
PiBjdXJyZW50Q2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRp
ZmllcjsgfQogCkBAIC01MiwxMiArNTcsMjIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BJbnRl
cm5hbCgpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB2b2lkIHNldFNvdXJjZShS
ZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CisgICAgdm9pZCBzdGFydENhcHR1cmUoUmVmPFJl
YWx0aW1lTWVkaWFTb3VyY2U+JiYpOwogI2VuZGlmCisgICAgdm9pZCBzdG9wQ2FwdHVyZSgpOwor
ICAgIHZvaWQgZGF0YUNhcHR1cmVkKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90IHNhbXBs
ZUNvdW50KTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oYm9vbCBtb2NrQ2FwdHVyZURldmlj
ZXNFbmFibGVkLCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRl
cmltUmVzdWx0cywgdWludDY0X3QgYWx0ZXJuYXRpdmVzKTsKKyAgICB2b2lkIGFib3J0UmVjb2du
aXRpb24oKTsKKyAgICB2b2lkIHN0b3BSZWNvZ25pdGlvbigpOworICAgIHZvaWQgcmVzZXRSZWNv
Z25pdGlvbigpOwogCiAgICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcj4gbV9jbGllbnRJZGVudGlmaWVyOwogICAgIERlbGVnYXRlQ2FsbGJhY2sg
bV9kZWxlZ2F0ZUNhbGxiYWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlv
bkNhcHR1cmVTb3VyY2U+IG1fc291cmNlOworCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQor
ICAgIFJldGFpblB0cjxXZWJTcGVlY2hSZWNvZ25pemVyVGFzaz4gbV90YXNrOworI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmE0ODY2NjRmYmNjNmQ3NGE5YWYxY2Q0MjFkZjY1ZWQ4MjU1Zjg4NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29n
bml6ZXJDb2NvYS5tbQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pemVyLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJF
Q09HTklaRVIpCisKKyNpbXBvcnQgIk1lZGlhVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZS5oIgorI2ltcG9ydCAiV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2Nr
LmgiCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+CisjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9u
L01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQg
U3BlZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVkKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgYXV0byBidWZmZXIgPSBj
cmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcihkYXRhLCBkZXNjcmlwdGlvbiwgUEFMOjp0b0NNVGltZSh0
aW1lKSwgc2FtcGxlQ291bnQpOworICAgIFttX3Rhc2sgYXVkaW9TYW1wbGVzQXZhaWxhYmxlOmJ1
ZmZlci5nZXQoKV07Cit9CisKK2Jvb2wgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlv
bihib29sIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVu
dGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IGFs
dGVybmF0aXZlcykKK3sKKyAgICBhdXRvIHRhc2tDbGFzcyA9IG1vY2tDYXB0dXJlRGV2aWNlc0Vu
YWJsZWQgPyBbV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIGNsYXNzXSA6IFtXZWJTcGVlY2hS
ZWNvZ25pemVyVGFzayBjbGFzc107CisgICAgbV90YXNrID0gYWRvcHROUyhbW3Rhc2tDbGFzcyBh
bGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIgbG9jYWxlOmxvY2FsZUlkZW50aWZp
ZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRz
OmludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczphbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxs
YmFjazpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29uc3QgU3BlZWNoUmVj
b2duaXRpb25VcGRhdGUmIHVwZGF0ZSkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOworICAg
IH1dKTsKKworICAgIHJldHVybiAhIW1fdGFzazsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pemVy
OjpzdG9wUmVjb2duaXRpb24oKQoreworICAgIEFTU0VSVChtX3Rhc2spOworICAgIFttX3Rhc2sg
c3RvcF07Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbigpCit7
CisgICAgQVNTRVJUKG1fdGFzayk7CisgICAgW21fdGFzayBhYm9ydF07Cit9CisKK3ZvaWQgU3Bl
ZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbigpCit7CisgICAgaWYgKCFtX3Rhc2spCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFzayA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrLCBu
dWxscHRyKTsKKyAgICBbdGFzayBhYm9ydF07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFz
ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM5YzQwMzkyZDUxNTQ2ZGE3NWU1MzMwMDJhZTI4ZjY1NDY3ZmE5YTMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9X
ZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZS5oIgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCit0eXBlZGVmIHN0cnVjdCBvcGFx
dWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKK0BjbGFzcyBXZWJTcGVlY2hS
ZWNvZ25pemVyVGFza0ltcGw7CisKK0BpbnRlcmZhY2UgV2ViU3BlZWNoUmVjb2duaXplclRhc2sg
OiBOU09iamVjdCB7CitAcHJpdmF0ZQorICAgIFJldGFpblB0cjxXZWJTcGVlY2hSZWNvZ25pemVy
VGFza0ltcGw+IF9pbXBsOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVy
OihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlk
ZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVj
b2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50
ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBk
ZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlJikpY2FsbGJhY2s7CistICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1w
bGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyOworLSAodm9pZClhYm9ydDsKKy0gKHZvaWQpc3RvcDsK
KworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFz
ay5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29n
bml6ZXJUYXNrLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNWU5MmRlNjk1OTkzMTlkNzY3ZDZkMzA3Njk5Njky
ZTk4MzM4NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQpAQCAtMCwwICsxLDI1OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViU3BlZWNoUmVjb2duaXpl
clRhc2suaCIKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9TcGVlY2hTUEkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8
d3RmL1dlYWtPYmpDUHRyLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5o
PgorCisvLyBTZXQgdGhlIG1heGltdW0gZHVyYXRpb24gdG8gYmUgYW4gaG91cjsgd2UgY2FuIGFk
anVzdCB0aGlzIGlmIG5lZWRlZC4KK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGltdW1SZWNv
Z25pdGlvbkR1cmF0aW9uID0gNjAgKiA2MDsKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwor
QGludGVyZmFjZSBXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgOiBOU09iamVjdDxTRlNwZWVj
aFJlY29nbml0aW9uVGFza0RlbGVnYXRlLCBTRlNwZWVjaFJlY29nbml6ZXJEZWxlZ2F0ZT4gewor
QHByaXZhdGUKKyAgICBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyIF9pZGVudGlmaWVyOworICAgIEJsb2NrUHRyPHZvaWQoY29uc3QgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKT4gX2RlbGVnYXRlQ2FsbGJhY2s7CisgICAgYm9vbCBf
ZG9NdWx0aXBsZVJlY29nbml0aW9uczsKKyAgICB1aW50NjRfdCBfbWF4QWx0ZXJuYXRpdmVzOwor
ICAgIFJldGFpblB0cjxTRlNwZWVjaFJlY29nbml6ZXI+IF9yZWNvZ25pemVyOworICAgIFJldGFp
blB0cjxTRlNwZWVjaEF1ZGlvQnVmZmVyUmVjb2duaXRpb25SZXF1ZXN0PiBfcmVxdWVzdDsKKyAg
ICBXZWFrT2JqQ1B0cjxTRlNwZWVjaFJlY29nbml0aW9uVGFzaz4gX3Rhc2s7CisgICAgYm9vbCBf
aGFzU2VudFNwZWVjaFN0YXJ0OworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hFbmQ7Cit9CitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwKKworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxv
Y2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJl
cG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoo
dW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25z
dCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaWRl
bnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgX2RvTXVsdGlwbGVSZWNvZ25pdGlvbnMgPSBjb250
aW51b3VzOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrID0gY2FsbGJhY2s7CisKKyAgICBpZiAoIWFs
dGVybmF0aXZlcykKKyAgICAgICAgYWx0ZXJuYXRpdmVzID0gMTsKKyAgICBfbWF4QWx0ZXJuYXRp
dmVzID0gYWx0ZXJuYXRpdmVzOworCisgICAgaWYgKCFbbG9jYWxlSWRlbnRpZmllciBsZW5ndGhd
KQorICAgICAgICBfcmVjb2duaXplciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NTRlNwZWVjaFJlY29n
bml6ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBlbHNlCisgICAgICAgIF9yZWNvZ25pemVyID0g
YWRvcHROUyhbUEFMOjphbGxvY1NGU3BlZWNoUmVjb2duaXplckluc3RhbmNlKCkgaW5pdFdpdGhM
b2NhbGU6W05TTG9jYWxlIGxvY2FsZVdpdGhMb2NhbGVJZGVudGlmaWVyOmxvY2FsZUlkZW50aWZp
ZXJdXSk7CisgICAgaWYgKCFfcmVjb2duaXplcikgeworICAgICAgICBbc2VsZiByZWxlYXNlXTsK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBpZiAoIVtfcmVjb2duaXplciBpc0F2
YWlsYWJsZV0pIHsKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07CisgICAgICAgIHJldHVybiBuaWw7
CisgICAgfQorCisgICAgW19yZWNvZ25pemVyIHNldERlbGVnYXRlOnNlbGZdOworCisgICAgX3Jl
cXVlc3QgPSBhZG9wdE5TKFtQQUw6OmFsbG9jU0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9u
UmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOworICAgIGlmIChbX3JlY29nbml6ZXIgc3VwcG9ydHNP
bkRldmljZVJlY29nbml0aW9uXSkKKyAgICAgICAgW19yZXF1ZXN0IHNldFJlcXVpcmVzT25EZXZp
Y2VSZWNvZ25pdGlvbjpZRVNdOworICAgIFtfcmVxdWVzdCBzZXRTaG91bGRSZXBvcnRQYXJ0aWFs
UmVzdWx0czppbnRlcmltUmVzdWx0c107CisgICAgW19yZXF1ZXN0IHNldFRhc2tIaW50OlNGU3Bl
ZWNoUmVjb2duaXRpb25UYXNrSGludERpY3RhdGlvbl07CisKKyNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorICAgIFtfcmVxdWVzdCBzZXREZXRlY3RNdWx0aXBsZVV0dGVyYW5jZXM6WUVTXTsK
KyAgICBbX3JlcXVlc3QgX3NldE1heGltdW1SZWNvZ25pdGlvbkR1cmF0aW9uOm1heGltdW1SZWNv
Z25pdGlvbkR1cmF0aW9uXTsKKyNlbmRpZgorCisgICAgX3Rhc2sgPSBbX3JlY29nbml6ZXIgcmVj
b2duaXRpb25UYXNrV2l0aFJlcXVlc3Q6X3JlcXVlc3QuZ2V0KCkgZGVsZWdhdGU6c2VsZl07Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpY2FsbGJhY2tXaXRoUmVzdWx0OihTRlRyYW5z
Y3JpcHRpb24gKil0cmFuc2NyaXB0aW9uIGlzRmluYWw6KEJPT0wpaXNGaW5hbAoreworICAgIGF1
dG8gc2VnbWVudHMgPSBbdHJhbnNjcmlwdGlvbiBzZWdtZW50c107CisgICAgVmVjdG9yPFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4gZGF0YXM7CisgICAgZGF0YXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShfbWF4QWx0ZXJuYXRpdmVzIDw9IHNlZ21lbnRzLmNvdW50ID8gX21h
eEFsdGVybmF0aXZlcyA6IHNlZ21lbnRzLmNvdW50KTsKKyAgICBmb3IgKFNGVHJhbnNjcmlwdGlv
blNlZ21lbnQqIHNlZ21lbnQgaW4gc2VnbWVudHMpIHsKKyAgICAgICAgLy8gTm90ZSBzZWdtZW50
IGNvbmZpZGVuY2UgaXMgcmVwb3J0ZWQgMCB3aGVuIHJlc3VsdCBpcyBub3QgZmluYWwuCisgICAg
ICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YSBkYXRhOworICAgICAgICBk
YXRhLmlzRmluYWwgPSBpc0ZpbmFsOworICAgICAgICBkYXRhLmFsdGVybmF0aXZlcy5hcHBlbmQo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgeyBbc2VnbWVudCBzdWJz
dHJpbmddLCBbc2VnbWVudCBjb25maWRlbmNlXSB9KTsKKyAgICAgICAgZm9yIChOU1N0cmluZyog
c2VnbWVudEFsdGVybmF0aXZlIDogW3NlZ21lbnQgYWx0ZXJuYXRpdmVTdWJzdHJpbmdzXSkgewor
ICAgICAgICAgICAgaWYgKGRhdGEuYWx0ZXJuYXRpdmVzLnNpemUoKSA9PSBfbWF4QWx0ZXJuYXRp
dmVzKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8gRklYTUU6IGNhbGN1
bGF0ZSBvciBnZXQgYWx0ZXJuYXRpdmUgY29uZmlkZW5jZSBpZiBwb3NzaWJsZS4KKyAgICAgICAg
ICAgIGRhdGEuYWx0ZXJuYXRpdmVzLmFwcGVuZChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkFs
dGVybmF0aXZlRGF0YSB7IHNlZ21lbnRBbHRlcm5hdGl2ZSwgMC4wIH0pOworICAgICAgICB9Cisg
ICAgICAgIGRhdGFzLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICB9CisgICAgX2RlbGVnYXRl
Q2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJlc3VsdChf
aWRlbnRpZmllciwgZGF0YXMpKTsKK30KKworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6
KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgW19yZXF1ZXN0IGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyOnNhbXBsZUJ1ZmZl
cl07Cit9CisKKy0gKHZvaWQpYWJvcnQKK3sKKyAgICBpZiAoIV90YXNrIHx8IFtfdGFzayBzdGF0
ZV0gPT0gU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tTdGF0ZUNvbXBsZXRlZCB8fCBbX3Rhc2sgc3Rh
dGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25UYXNrU3RhdGVDYW5jZWxpbmcpCisgICAgICAgIHJl
dHVybjsKKworICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgW19yZXF1ZXN0
IGVuZEF1ZGlvXTsKKyAgICBbX3Rhc2sgY2FuY2VsXTsKK30KKworLSAodm9pZClzdG9wCit7Cisg
ICAgaWYgKCFfdGFzayB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25UYXNr
U3RhdGVDb21wbGV0ZWQgfHwgW190YXNrIHN0YXRlXSA9PSBTRlNwZWVjaFJlY29nbml0aW9uVGFz
a1N0YXRlRmluaXNoaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBbc2VsZiBzZW5kU3BlZWNo
RW5kSWZOZWVkZWRdOworICAgIFtfcmVxdWVzdCBlbmRBdWRpb107CisgICAgW190YXNrIGZpbmlz
aF07Cit9CisKKy0gKHZvaWQpc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWQKK3sKKyAgICBpZiAoX2hh
c1NlbnRTcGVlY2hTdGFydCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2hhc1NlbnRTcGVlY2hT
dGFydCA9IHRydWU7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpTcGVlY2hTdGFydCkpOworfQorCistICh2b2lkKXNlbmRTcGVlY2hFbmRJ
Zk5lZWRlZAoreworICAgIGlmICghX2hhc1NlbnRTcGVlY2hTdGFydCB8fCBfaGFzU2VudFNwZWVj
aEVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2hhc1NlbnRTcGVlY2hFbmQgPSB0cnVlOwor
ICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
U3BlZWNoRW5kKSk7Cit9CisKKyNwcmFnbWEgbWFyayBTRlNwZWVjaFJlY29nbml6ZXJEZWxlZ2F0
ZQorCistICh2b2lkKXNwZWVjaFJlY29nbml6ZXI6KFNGU3BlZWNoUmVjb2duaXplciAqKXNwZWVj
aFJlY29nbml6ZXIgYXZhaWxhYmlsaXR5RGlkQ2hhbmdlOihCT09MKWF2YWlsYWJsZQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoYXZhaWxhYmxlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIV90YXNrKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGVy
cm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxsb3dlZCwgIlNwZWVjaCByZWNvZ25pdGlv
biBzZXJ2aWNlIGJlY29tZXMgdW5hdmFpbGFibGUiX3MgfTsKKyAgICBhdXRvIHVwZGF0ZSA9IFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwg
ZXJyb3IpOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7Cit9CisKKyNwcmFnbWEgbWFy
ayBTRlNwZWVjaFJlY29nbml0aW9uVGFza0RlbGVnYXRlCisKKy0gKHZvaWQpc3BlZWNoUmVjb2du
aXRpb25UYXNrOihTRlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sgZGlkSHlwb3RoZXNpemVU
cmFuc2NyaXB0aW9uOihTRlRyYW5zY3JpcHRpb24gKil0cmFuc2NyaXB0aW9uCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFtzZWxmIHNlbmRTcGVlY2hTdGFydElmTmVlZGVk
XTsKKyAgICBbc2VsZiBjYWxsYmFja1dpdGhSZXN1bHQ6dHJhbnNjcmlwdGlvbiBpc0ZpbmFsOk5P
XTsKK30KKworLSAodm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2s6KFNGU3BlZWNoUmVjb2duaXRp
b25UYXNrICopdGFzayBkaWRGaW5pc2hSZWNvZ25pdGlvbjooU0ZTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdCAqKXJlY29nbml0aW9uUmVzdWx0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KworICAgIFtzZWxmIGNhbGxiYWNrV2l0aFJlc3VsdDpyZWNvZ25pdGlvblJlc3VsdC5iZXN0VHJh
bnNjcmlwdGlvbiBpc0ZpbmFsOllFU107CisgICAgaWYgKCFfZG9NdWx0aXBsZVJlY29nbml0aW9u
cykgeworICAgICAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAgICAgICBfZGVs
ZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9p
ZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwor
ICAgIH0KK30KKworLSAodm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2tXYXNDYW5jZWxsZWQ6KFNG
U3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzaworeworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAgIF9kZWxlZ2F0ZUNh
bGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZp
ZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7Cit9CisKKy0g
KHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrOihTRlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRh
c2sgZGlkRmluaXNoU3VjY2Vzc2Z1bGx5OihCT09MKXN1Y2Nlc3NmdWxseQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoc3VjY2Vzc2Z1bGx5KSB7CisgICAgICAgIF9k
ZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUo
X2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBl
OjpBYm9ydGVkLCB0YXNrLmVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9ufTsKKyAgICBfZGVsZWdh
dGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3Io
X2lkZW50aWZpZXIsIGVycm9yKSk7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRl
bnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNv
Z25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRl
cmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRl
bGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGUmKSljYWxsYmFjaworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgX2ltcGwgPSBhZG9wdE5TKFtbV2ViU3BlZWNoUmVjb2du
aXplclRhc2tJbXBsIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6aWRlbnRpZmllciBsb2NhbGU6
bG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOmNvbnRpbnVvdXMgcmVwb3J0
SW50ZXJpbVJlc3VsdHM6aW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOmFsdGVybmF0aXZl
cyBkZWxlZ2F0ZUNhbGxiYWNrOmNhbGxiYWNrXSk7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZm
ZXIKK3sKKyAgICBbX2ltcGwgYXVkaW9TYW1wbGVzQXZhaWxhYmxlOnNhbXBsZUJ1ZmZlcl07Cit9
CisKKy0gKHZvaWQpYWJvcnQKK3sKKyAgICBbX2ltcGwgYWJvcnRdOworfQorCistICh2b2lkKXN0
b3AKK3sKKyAgICBbX2ltcGwgc3RvcF07Cit9CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExf
RU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
Y29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYjUxZGFiMGUzOGJiMTk5N2RiOTQxMWQyYTYwOGYyODAwNTdkZTIzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2du
aXplclRhc2tNb2NrLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBIQVZFKFNQ
RUVDSFJFQ09HTklaRVIpCisKKyNpbXBvcnQgIldlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmgiCisj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGNs
YXNzIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jazsKKworQGludGVyZmFjZSBXZWJTcGVlY2hS
ZWNvZ25pemVyVGFza01vY2sgOiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzayB7CitAcHJpdmF0ZQor
ICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIg
X2lkZW50aWZpZXI7CisgICAgQmxvY2tQdHI8dm9pZChjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZSYpPiBfZGVsZWdhdGVDYWxsYmFjazsKKyAgICBib29sIF9oYXNTZW50U3Bl
ZWNoU3RhcnQ7CisgICAgYm9vbCBfaGFzU2VudFNwZWVjaEVuZDsKK30KKworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlk
ZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydElu
dGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWdu
ZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrOworLSAodm9pZClhdWRpb1Nh
bXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcjsKKy0gKHZvaWQp
YWJvcnQ7CistICh2b2lkKXN0b3A7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2Ev
V2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIw
ZTVmZjViOWQ2MGI4Mjg1ZDVhMmQ1MzVkZDA3YTI0MmE3OTMwNDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVy
VGFza01vY2subW0KQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmgiCisKKyNpZiBIQVZF
KFNQRUVDSFJFQ09HTklaRVIpCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbXBsZW1l
bnRhdGlvbiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZp
ZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1S
ZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9u
ZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaWRlbnRpZmllciA9IGlk
ZW50aWZpZXI7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICByZXR1cm4g
c2VsZjsKK30KKworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVy
UmVmKXNhbXBsZUJ1ZmZlcgoreworICAgIGlmICghX2hhc1NlbnRTcGVlY2hTdGFydCkgeworICAg
ICAgICBfaGFzU2VudFNwZWVjaFN0YXJ0ID0gdHJ1ZTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJh
Y2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hTdGFydCkpOworICAg
IH0KK30KKworLSAodm9pZClhYm9ydAoreworICAgIGlmICghX2hhc1NlbnRTcGVlY2hFbmQgJiYg
X2hhc1NlbnRTcGVlY2hTdGFydCkgeworICAgICAgICBfaGFzU2VudFNwZWVjaEVuZCA9IHRydWU7
CisgICAgICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6U3BlZWNoRW5kKSk7CisgICAgfQorICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7Cit9CisKKy0gKHZvaWQpc3RvcAorewor
ICAgIFtzZWxmIGFib3J0XTsKK30KKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYzcxNTZhYzJkMTlkMGViMmRlMDY0ZTdmMDZiNmRlOTMzYmU3YmQ0MC4uMGRm
ZDQ5OTE3NTY4M2JiOTY1MGNjNDBmZjJiYWEzYTRjMDFkZTliYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0LDYgKzE0NCw5
IEBACiAJCTYzQzdFREM3MjFBRkFFMDQwMDZBN0I5OSAvKiBOU1Byb2dyZXNzU1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0UzNjlGOTIxQUZBODNG
MDAxQzE0QkMgLyogTlNQcm9ncmVzc1NQSS5oICovOyB9OwogCQk3QTM2RDBGOTIyM0FEOUFCMDBC
MDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTM2RDBGODIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRv
U1BJLmggKi87IH07CiAJCTdBM0E2QTgwMjBDQURCNDcwMDMxN0FBRSAvKiBOU0ltYWdlU1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNBNkE3RjIw
Q0FEQjQ2MDAzMTdBQUUgLyogTlNJbWFnZVNQSS5oICovOyB9OworCQk5M0IzOEVCRTI1ODIxQ0I2
MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJEMjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0
TGluay5oICovOyB9OworCQk5M0IzOEVDMDI1ODIxQ0Q4MDAxOThFNjMgLyogU3BlZWNoU29mdExp
bmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Iz
OEVCRjI1ODIxQ0Q3MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsubW0gKi87IH07CisJCTkzQjM4
RUMyMjU4MjFEMjIwMDE5OEU2MyAvKiBTcGVlY2hTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUMxMjU4MjFEMjIwMDE5OEU2MyAvKiBTcGVl
Y2hTUEkuaCAqLzsgfTsKIAkJOTNEQjdEMzcyNDYyNkJDRDAwNEJEOEEzIC8qIE5TVGV4dElucHV0
Q29udGV4dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNEQjdEMzYyNDYyNkJDQzAwNEJEOEEzIC8qIE5TVGV4dElucHV0Q29udGV4dFNQSS5oICov
OyB9OwogCQk5M0RCN0QzQTI0NjI2Rjg2MDA0QkQ4QTMgLyogTlNVbmRvTWFuYWdlclNQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEQjdEMzkyNDYy
NkY4NjAwNEJEOEEzIC8qIE5TVW5kb01hbmFnZXJTUEkuaCAqLzsgfTsKIAkJQTEwMjY1ODkxRjU2
NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJv
eFNQSS5oICovOyB9OwpAQCAtMzQwLDYgKzM0Myw5IEBACiAJCTYzRTM2OUY5MjFBRkE4M0YwMDFD
MTRCQyAvKiBOU1Byb2dyZXNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TUHJvZ3Jlc3NTUEkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EzNkQwRjgyMjNBRDlBQjAwQjA1MjJFIC8q
IENvbW1vbkNyeXB0b1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21t
b25DcnlwdG9TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EzQTZBN0YyMENB
REI0NjAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTlNJbWFnZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVC
RDI1ODIxQ0I2MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3BlZWNoU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTNCMzhFQkYyNTgyMUNENzAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3BlZWNoU29mdExpbmsubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUMxMjU4MjFEMjIwMDE5OEU2MyAvKiBT
cGVlY2hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoU1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzREI3RDM2MjQ2MjZCQ0MwMDRCRDhBMyAv
KiBOU1RleHRJbnB1dENvbnRleHRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTlNUZXh0SW5wdXRDb250ZXh0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzREI3RDM5MjQ2MjZGODYwMDRCRDhBMyAvKiBOU1VuZG9NYW5hZ2VyU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TVW5kb01hbmFnZXJTUEkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNTkwOUMxRjkzQkYxRTAwNjdGOENGIC8qIFVuZW5jb2RhYmxl
SGFuZGxpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5lbmNvZGFibGVIYW5kbGluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTExLDYgKzUxNyw3IEBACiAJCQkJNDQyOTU2Q0MyMThB
NzJERTAwODBEQjU0IC8qIFJldmVhbFNQSS5oICovLAogCQkJCTU3MEFCOEYwMjBBRTJFOEQwMEI4
QkU4NyAvKiBTZWNLZXlQcm94eVNQSS5oICovLAogCQkJCTBDMkRBMTNDMUYzQkVCNDkwMERCQzMx
NyAvKiBTZXJ2ZXJzU1BJLmggKi8sCisJCQkJOTNCMzhFQzEyNTgyMUQyMjAwMTk4RTYzIC8qIFNw
ZWVjaFNQSS5oICovLAogCQkJCTBDMkRBMTJCMUYzQkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0
aW5nU1BJLmggKi8sCiAJCQkJMEMyREExM0QxRjNCRUI0OTAwREJDMzE3IC8qIFdlYkZpbHRlckV2
YWx1YXRvclNQSS5oICovLAogCQkJKTsKQEAgLTY4Miw2ICs2ODksOCBAQAogCQkJCTMxNjQ3RkFF
MjUxNzU5REIwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAogCQkJCUExRjYz
QzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLywKIAkJCQlBMUY2M0M5
RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovLAorCQkJCTkzQjM4RUJE
MjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5oICovLAorCQkJCTkzQjM4RUJGMjU4
MjFDRDcwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5tbSAqLywKIAkJCQkwNzYxMURCNDI0M0ZB
NUJFMDBEODA3MDQgLyogVXNhZ2VUcmFja2luZ1NvZnRMaW5rLmggKi8sCiAJCQkJMDc2MTFEQjUy
NDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLywKIAkJCSk7CkBA
IC05MDcsNiArOTE2LDggQEAKIAkJCQlBM0FCNkU1NjFGM0QxRERCMDA5QzE0QjEgLyogU2xlZXBE
aXNhYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNBQjZFNjExRjNEMUUzOTAwOUMxNEIxIC8q
IFNsZWVwRGlzYWJsZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTM3ODhFOTgxRjA1QjZD
RTAwNjc5NDI1IC8qIFNvdW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0IzOEVCRTI1ODIxQ0I2
MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjM4RUMy
MjU4MjFEMjIwMDE5OEU2MyAvKiBTcGVlY2hTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMTc1
QjQ5MUY2QUZGOEUwMEM0QjlGMCAvKiBTcGVlY2hTeW50aGVzaXNTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBDNUFGOTIxMUY0M0E0QzcwMDJFQUMwMiAvKiBTUUxpdGUzU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTMwOEIxNDIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMDM3LDYgKzEwNDgsNyBAQAogCQkJCUEzQUI2RTYwMUYzRDFF
MzkwMDlDMTRCMSAvKiBTbGVlcERpc2FibGVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTM3ODhFOUMxRjA1Qjc4MjAwNjc5NDI1IC8qIFNvdW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUEzNzg4RTlFMUYwNUI3OEUwMDY3OTQyNSAvKiBTb3VuZE1hYy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTkzQjM4RUMwMjU4MjFDRDgwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUEzQUI2RTU3MUYzRDFEREIwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3Rl
bmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRCMSAvKiBT
eXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUxMzQyQ0QyMTVB
QTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzNm
NzU0OTk1MGEwYTM0OWYxNjNhMGE4YmQ5OTZjOGUzMmY4MGUzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5oCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dO
SVpFUikKKworI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5r
aW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQQUwsIFNwZWVjaCk7CitT
T0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNoUmVjb2duaXRpb25SZXN1bHQp
OworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBTRlNwZWVjaFJlY29nbml0aW9uUmVx
dWVzdCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNoQXVkaW9CdWZm
ZXJSZWNvZ25pdGlvblJlcXVlc3QpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBT
RlNwZWVjaFJlY29nbml0aW9uVGFzayk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUws
IFNGU3BlZWNoUmVjb2duaXplcik7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNG
VHJhbnNjcmlwdGlvblNlZ21lbnQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBT
RlRyYW5zY3JpcHRpb24pOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Nv
Y29hL1NwZWVjaFNvZnRMaW5rLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YTAzMWU4NjNiOWQ4ZDU2MWJmZjY2
ODM4ODM2YjA2YzZmNzg5NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NvY29hL1NwZWVjaFNvZnRMaW5rLm1tCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2lt
cG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NP
RlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIFNwZWVjaCkKKworU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXRp
b25SZXN1bHQsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LCBQQUxfRVhQT1JU
KTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBT
RlNwZWVjaEF1ZGlvQnVmZmVyUmVjb2duaXRpb25SZXF1ZXN0LCBQQUxfRVhQT1JUKTsKK1NPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBTRlNwZWVjaFJl
Y29nbml0aW9uVGFzaywgUEFMX0VYUE9SVCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pemVyLCBQQUxfRVhQT1JUKTsK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBTRlRy
YW5zY3JpcHRpb25TZWdtZW50LCBQQUxfRVhQT1JUKTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09V
UkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBTRlRyYW5zY3JpcHRpb24sIFBBTF9FWFBPUlQp
OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29h
L1NwZWVjaFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvU3BlZWNoU1BJ
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTk3Y2JkYjczZWIxYTQwMWNhZDgyNGQxM2ExZmIyMWQ5NDczY2M4Ywot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1NwZWVj
aFNQSS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgSEFWRShTUEVFQ0hSRUNP
R05JWkVSKQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8U3BlZWNo
L1NGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0X1ByaXZhdGUuaD4KKworI2Vsc2UKKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBTRlNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dCAoKQorQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgZGV0ZWN0TXVsdGlwbGVVdHRlcmFuY2Vz
OworQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1fbWF4aW11bVJlY29nbml0aW9uRHVyYXRp
b24sIHNldHRlcj1fc2V0TWF4aW11bVJlY29nbml0aW9uRHVyYXRpb246KSBOU1RpbWVJbnRlcnZh
bCBfbWF4aW11bVJlY29nbml0aW9uRHVyYXRpb247CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5V
TExfRU5ECisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjZW5kaWYgLy8g
SEFWRShTUEVFQ0hSRUNPR05JWkVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggOGY5OWY5
YTE5MThjOTU1ODg1ZmIyYWNiOTljOGQxYTc1MjY1YWEwMy4uYjYwZTUzMmRiM2FjOTFmZTAxYTAz
MzJkOGI1NTU5YjAyZGQxNDI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC05Miw2ICs5
Miw5IEBAIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1h
Yy5tbQogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNw
cAogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCiBNb2R1bGVz
L3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorTW9kdWxlcy9zcGVlY2gvY29j
b2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCitNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVl
Y2hSZWNvZ25pemVyVGFzay5tbQorTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2du
aXplclRhc2tNb2NrLm1tCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdl
ckNvY29hLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3Np
YmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmU0ZmNhZmY5ZmM5MjU5
YjQ2YzM1MzliNmVhOTNhZjRhZGM3ZmIyNS4uNTQ1OTkzNDM3NzY5ODFjODA3MjdkMWQ0NjFlN2Yx
ZjM1YzBjNGU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjgxNSw2ICsyODE1LDggQEAKIAkJOTNBODA2MUUxRTAzQjU4NTAw
OEExRjI2IC8qIEpTRG91YmxlUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQTgwNjFBMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0RvdWJsZVJhbmdl
LmggKi87IH07CiAJCTkzQTgwNjIwMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0xvbmdSYW5nZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBODA2MUMxRTAz
QjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggKi87IH07CiAJCTkzQjJEODE2MEY5OTIwRDIw
MDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRl
cm1pbmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTNCMzhFQzMyNTgyMURCNDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVC
QTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCAqLzsgfTsKKwkJ
OTNCMzhFQzQyNTgyMURCNzAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMzhFQkIy
NTgyMTkzRDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oICovOyB9Owog
CQk5M0I2QTBFNjBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjZBMEU1MEIwQkNBNUMwMEY1MDI3
QSAvKiBDb250ZXh0TWVudS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTkzQjcwRDY0MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjcwRDQ4MDlF
QjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0I3MEQ2QTA5RUIwQzdDMDA5RDg0NjggLyogSlNF
dmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0I3MEQ0RTA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTI3LDYgKzEx
NTI5LDExIEBACiAJCTkzQTgwNjFDMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0xvbmdSYW5nZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0xvbmdSYW5nZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0IyRDgxNTBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVy
bWluYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VkZGVuVGVybWlu
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMkQ4MTcwRjk5MjBFRTAw
NkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU3VkZGVuVGVybWluYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzQjM4RUI4MjU4MjE4OTkwMDE5OEU2MyAvKiBTcGVlY2hSZWNvZ25pemVyQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTcGVlY2hSZWNv
Z25pemVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUI5MjU4
MjE5M0EwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJBMjU4MjE5M0IwMDE5
OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXpl
clRhc2tNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVC
QzI1ODIxOTNFMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdB
IC8qIENvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250
ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ0ODA5RUIwQzdD
MDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RPTUJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBE
NEQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVudExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMTczLDYgKzIzMTgwLDE4IEBACiAJCQlwYXRoID0gbWFjOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJOTNCMzhFQjYyNTgyMTgzMzAwMTk4
RTYzIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQk5M0IzOEVCODI1ODIxODk5MDAxOThFNjMgLyogU3BlZWNoUmVjb2duaXplckNvY29hLm1t
ICovLAorCQkJCTkzQjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVy
VGFzay5oICovLAorCQkJCTkzQjM4RUJDMjU4MjE5M0UwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNv
Z25pemVyVGFzay5tbSAqLywKKwkJCQk5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyogV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi8sCisJCQkJOTNCMzhFQjkyNTgyMTkzQTAwMTk4RTYz
IC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0g
Y29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk5M0MwOUE4MjBCMDY0
RjA1MDA1QUJENEQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTI1NzA1LDYgKzI1NzI0LDcgQEAKIAkJQUEyQTVBQjcxNkE0ODVBNDAwOTc1QTI1
IC8qIHNwZWVjaCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJOTNCMzhFQjYyNTgyMTgzMzAwMTk4RTYzIC8qIGNvY29hICovLAogCQkJCUFBMkE1QUJBMTZB
NDg1RDUwMDk3NUEyNSAvKiBET01XaW5kb3crU3BlZWNoU3ludGhlc2lzLmlkbCAqLywKIAkJCQlB
QTJBNUFCODE2QTQ4NUQ1MDA5NzVBMjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCAq
LywKIAkJCQlBQTJBNUFCOTE2QTQ4NUQ1MDA5NzVBMjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhl
c2lzLmggKi8sCkBAIC0zNTI3Niw2ICszNTI5Niw4IEBACiAJCQkJOTdBQUJEMjUxNEZBMDlENTAw
NzQ1N0FFIC8qIFdlYlNvY2tldEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQyNzE0
RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MUUxMkU5RjI0RkU3NEUyMDA5M0ZGQjQgLyogV2ViU29ja2V0SWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTNCMzhFQzMyNTgyMURCNDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29n
bml6ZXJUYXNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0IzOEVDNDI1ODIxREI3MDAxOThFNjMg
LyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjg3
NTZCMjFFMjJDMzM1MDA0MkM0MEQgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMURFQTQ1NjFCMzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVt
QmFja2Ryb3BMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBGQTMxNDk2OTM5MTAwRkI1
QkQ4IC8qIFdlYlRpbGVkQmFja2luZ0xheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAppbmRleCBk
NmZhODljNTQ4MzI2MmMxMDFhMjZkMDMwMzIzNTU3MjA2YjEyZjYxLi5jNTY4Y2M0MjE4NjMxYjE3
YTA0Mjc2YzhlZmJjMmE4OTRjMDEzYjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCkBAIC0zNiwyMiArMzYsMjAgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKKworU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJl
Y29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNoZWNrZXImJiBwZXJtaXNzaW9uQ2hlY2tlciwgU3BlZWNoUmVjb2duaXRpb25D
aGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCYmIGNoZWNrSWZFbmFibGVkCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLVNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29n
bml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIsIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVh
dGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQorICAgICwgUmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1
bmN0aW9uJiYgZnVuY3Rpb24KKyNlbmRpZgorICAgICkKICAgICA6IG1fY29ubmVjdGlvbihXVEZN
b3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBt
X3Blcm1pc3Npb25DaGVja2VyKFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpKQorI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAgICAgLCBtX3JlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlv
bihXVEZNb3ZlKGZ1bmN0aW9uKSkKKyNlbmRpZgogewogfQotI2Vsc2UKLVNwZWVjaFJlY29nbml0
aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24sIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIp
Ci0gICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAsIG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKQotICAgICwgbV9wZXJtaXNzaW9uQ2hlY2tlcihXVEZNb3ZlKHBlcm1p
c3Npb25DaGVja2VyKSkKLXsKLX0KLSNlbmRpZgogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGludW91cywg
Ym9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mJiBvcmlnaW4pCiB7CkBAIC04MCwxMSArNzgsMTEgQEAgdm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNw
ZWVjaFJlY29nbmkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGhh
bmRsZVJlcXVlc3QoaWRlbnRpZmllcik7CisgICAgICAgIGhhbmRsZVJlcXVlc3QoKndlYWtSZXF1
ZXN0KTsKICAgICB9KTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxl
UmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5k
bGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsK
ICAgICBpZiAoIW1fcmVjb2duaXplcikgewogICAgICAgICBtX3JlY29nbml6ZXIgPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI+KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpXShhdXRvJiB1cGRhdGUpIHsKQEAgLTk1LDE2ICs5MywyNSBAQCB2b2lkIFNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbgogICAgICAgICAgICAgaWYgKCFtX3JlcXVlc3RzLmNvbnRhaW5zKGNsaWVu
dElkZW50aWZpZXIpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAgICAgc2Vu
ZFVwZGF0ZSh1cGRhdGUpOworCiAgICAgICAgICAgICBhdXRvIHR5cGUgPSB1cGRhdGUudHlwZSgp
OwotICAgICAgICAgICAgaWYgKHR5cGUgPT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpFcnJvciB8fCB0eXBlID09IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RW5kKQotICAgICAgICAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50
aWZpZXIpOworICAgICAgICAgICAgaWYgKHR5cGUgIT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpFcnJvciAmJiB0eXBlICE9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZTo6RW5kKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAg
c2VuZFVwZGF0ZSh1cGRhdGUpOworICAgICAgICAgICAgaWYgKG1faXNSZXNldHRpbmcpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9pc1Jlc2V0dGluZyA9IHRydWU7CisK
KyAgICAgICAgICAgIG1fcmVjb2duaXplci0+cmVzZXQoKTsKKyAgICAgICAgICAgIG1fcmVxdWVz
dHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOworICAgICAgICAgICAgbV9pc1Jlc2V0dGluZyA9
IGZhbHNlOwogICAgICAgICB9KTsKICAgICB9CiAgICAgCiAgICAgbV9yZWNvZ25pemVyLT5yZXNl
dCgpOwogCisgICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0gcmVxdWVzdC5jbGllbnRJZGVudGlm
aWVyKCk7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBhdXRvIHNvdXJjZU9yRXJyb3Ig
PSBtX3JlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbigpOwogICAgIGlmICghc291cmNl
T3JFcnJvcikgewpAQCAtMTEyLDEwICsxMTksMTIgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24K
ICAgICAgICAgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3Jl
YXRlRXJyb3IoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
ciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsIHNv
dXJjZU9yRXJyb3IuZXJyb3JNZXNzYWdlIH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBtX3JlY29nbml6ZXItPnN0YXJ0KGNsaWVudElkZW50aWZpZXIsIHNvdXJjZU9yRXJyb3Iuc291
cmNlKCkpOworCisgICAgYm9vbCBtb2NrRGV2aWNlQ2FwdHVyZXNFbmFibGVkID0gbV9jaGVja0lm
TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOworICAgIG1fcmVjb2duaXplci0+c3RhcnQoY2xp
ZW50SWRlbnRpZmllciwgc291cmNlT3JFcnJvci5zb3VyY2UoKSwgbW9ja0RldmljZUNhcHR1cmVz
RW5hYmxlZCwgcmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY29udGludW91cygpLCByZXF1ZXN0Lmlu
dGVyaW1SZXN1bHRzKCksIHJlcXVlc3QubWF4QWx0ZXJuYXRpdmVzKCkpOwogI2Vsc2UKICAgICBt
X3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKLSAgICBzZW5kVXBkYXRlKGNsaWVu
dElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3Is
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkVycm9yVHlwZTo6QXVkaW9DYXB0dXJlLCAiQXVkaW8gY2FwdHVyZSBpcyBub3QgaW1wbGVt
ZW50ZWQifSk7CisgICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkF1ZGlvQ2FwdHVy
ZSwgIkF1ZGlvIGNhcHR1cmUgaXMgbm90IGltcGxlbWVudGVkIl9zIH0pOwogI2VuZGlmCiB9CiAK
QEAgLTEzNSw3ICsxNDQsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZAogewogICAgIE1FU1NB
R0VfQ0hFQ0soY2xpZW50SWRlbnRpZmllcik7CiAgICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3Jl
Y29nbml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikg
ewotICAgICAgICBtX3JlY29nbml6ZXItPnN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6
U2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6Tm8pOworICAgICAgICBtX3JlY29nbml6ZXItPmFi
b3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0OCw3ICsxNTcsNyBAQCB2b2lk
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaQogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SWRlbnRpZmllcik7
CiAgICAgaWYgKG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpKSB7CiAgICAgICAg
IGlmIChtX3JlY29nbml6ZXIgJiYgbV9yZWNvZ25pemVyLT5jdXJyZW50Q2xpZW50SWRlbnRpZmll
cigpID09IGNsaWVudElkZW50aWZpZXIpCi0gICAgICAgICAgICBtX3JlY29nbml6ZXItPnN0b3Ao
KTsKKyAgICAgICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4
IGVkNjcyNjRhYTEzMWUxZTE0MjFlYWE0MTRkNDE3MTNjNjk1ZDgzMjQuLmM4YjdjY2NmMDNkZGY5
ODQxZTgxMGU5YzQyYjRhNGRmNDYxMTE5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaApAQCAtNDcsMTUgKzQ3LDE2IEBAIGVudW0g
Y2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24gOiBib29sOwogCiB1c2lu
ZyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllcjsKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgPSBGdW5jdGlv
bjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmKT47Cit1c2luZyBTcGVl
Y2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gRnVuY3Rpb248
Ym9vbCgpPjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHVzaW5nIFJl
YWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbiA9IEZ1bmN0aW9uPFdlYkNvcmU6OkNhcHR1
cmVTb3VyY2VPckVycm9yKCk+OwotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmLCBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRl
RnVuY3Rpb24mJik7CisgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DaGVja2VyJiYsIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJZk1vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQmJiwgUmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uJiYp
OwogI2Vsc2UKLSAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9u
PiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNoZWNrZXImJik7CisgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYsIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJ
Zk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQmJik7CiAjZW5kaWYKIAogICAgIHZvaWQgc3RhcnQo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3Ry
aW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRf
dCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKTsKQEAgLTY1LDcgKzY2
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb25Gb3JS
ZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOwotICAgIHZvaWQgaGFu
ZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gPSBX
VEY6Om51bGxvcHQsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdERhdGE+PiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZW5kVXBkYXRlKGNvbnN0IFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik7CiAKQEAgLTgxLDYgKzgyLDggQEAgcHJp
dmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3Q+PiBtX3JlcXVlc3RzOwogICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNo
ZWNrZXIgbV9wZXJtaXNzaW9uQ2hlY2tlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
U3BlZWNoUmVjb2duaXplcj4gbV9yZWNvZ25pemVyOworICAgIFNwZWVjaFJlY29nbml0aW9uQ2hl
Y2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgbV9jaGVja0lmTW9ja0NhcHR1cmVEZXZpY2Vz
RW5hYmxlZDsKKyAgICBib29sIG1faXNSZXNldHRpbmcgeyBmYWxzZSB9OwogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24gbV9y
ZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhZGVlNWZiOWU3YmJkODhjMDg4ZTY5ZWY0ZTU1
NmVmM2E4ZDBkNTM2Li5mZTcxMjZjNTViZjQ5ZWExYjg0YTM3MDE4ZGJjOWQxNzE1N2EyNmExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE3MTcs
MjAgKzE3MTcsMjcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0
aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKIAogICAgIEFTU0VSVCghbV9z
cGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgYXV0
byYgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFw
LmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgc3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtl
UmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyLCBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0
YXJnZXRQYWdlKV0oYXV0byYgb3JpZ2luLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFi
bGUgeworICAgIGF1dG8gcGVybWlzc2lvbkNoZWNrZXIgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0
cih0YXJnZXRQYWdlKV0oYXV0byYgb3JpZ2luLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11
dGFibGUgewogICAgICAgICBpZiAoIXdlYWtQYWdlKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICB3ZWFrUGFnZS0+cmVxdWVzdFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLSAgICB9CisgICAgfTsKKyAgICBhdXRvIGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNF
bmFibGVkID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkgeworICAgICAg
ICByZXR1cm4gd2Vha1BhZ2UgJiYgd2Vha1BhZ2UtPnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVE
ZXZpY2VzRW5hYmxlZCgpOworICAgIH07CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAg
ICwgW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkgeworICAgIGF1dG8gY3Jl
YXRlUmVhbHRpbWVNZWRpYVNvdXJjZSA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBh
Z2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHdlYWtQYWdlID8gd2Vha1BhZ2UtPmNyZWF0ZVJlYWx0
aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZWNvZ25pdGlvbigpIDogQ2FwdHVyZVNvdXJjZU9yRXJy
b3IgeyAiUGFnZSBpcyBpbnZhbGlkIiB9OwotICAgIH0KKyAgICB9OworICAgIHNwZWVjaFJlY29n
bml0aW9uU2VydmVyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJl
ZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllciwgV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlciks
IFdURk1vdmUoY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpLCBXVEZNb3ZlKGNyZWF0
ZVJlYWx0aW1lTWVkaWFTb3VyY2UpKTsKKyNlbHNlCisgICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0
aW9uKCkpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSwgV1RGTW92ZShj
aGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCkpOwogI2VuZGlmCi0gICAgKTsKKwogICAg
IGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllciwgKnNwZWVjaFJlY29nbml0aW9uU2VydmVy
KTsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="433213"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415881</attachid>
            <date>2020-12-10 09:05:11 -0800</date>
            <delta_ts>2020-12-10 11:06:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201210090510.patch</filename>
            <type>text/plain</type>
            <size>63885</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0YTVmYWYxNGM5MWEy
OGEwZTZkOTNhNGEwNDBkN2Q3M2I2ODE5OS4uYmZlOGJmOWU1NDVkZjFmOWIyMTRhYjk4NGNjOGIw
YjlhNzgxY2E1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTEyLTEwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
V2ViU3BlZWNoUmVjb2duaXplclRhc2ssIHdoaWNoIGNvbm5lY3RzIHRvIHNwZWVjaCByZWNvZ25p
dGlvbiBzZXJ2aWNlIHZpYSBTcGVlY2ggZnJhbWV3b3JrIEFQSXMuCisKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcDogTWFrZSBhdWRpbyBjYXB0dXJlIGFuZCBy
ZWNvZ25pdGlvbiBsb2dpYyBzZXBhcmF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFib3J0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0b3BDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OmRhdGFDYXB0dXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpz
dGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFi
b3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3Rv
cFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0
UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c2V0U291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BJ
bnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJD
b2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpkYXRh
Q2FwdHVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNv
Z25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2du
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25p
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVy
VGFzay5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hS
ZWNvZ25pemVyVGFzay5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBv
cnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmlu
YWw6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAoLVtX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3BlZWNoUmVjb2duaXplcjphdmFpbGFi
aWxpdHlEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNw
ZWVjaFJlY29nbml0aW9uVGFzazpkaWRIeXBvdGhlc2l6ZVRyYW5zY3JpcHRpb246XSk6CisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29nbml0aW9uVGFzazpkaWRG
aW5pc2hSZWNvZ25pdGlvbjpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sg
c3BlZWNoUmVjb2duaXRpb25UYXNrV2FzQ2FuY2VsbGVkOl0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkRmluaXNoU3VjY2Vzc2Z1
bGx5Ol0pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6
ZXJUYXNrTW9jay5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2subW06IEFkZGVkLgorICAgICAgICAoLVtXZWJTcGVlY2hS
ZWNvZ25pemVyVGFza01vY2sgaW5pdFdpdGhJZGVudGlmaWVyOmxvY2FsZTpkb011bHRpcGxlUmVj
b2duaXRpb25zOnJlcG9ydEludGVyaW1SZXN1bHRzOm1heEFsdGVybmF0aXZlczpkZWxlZ2F0ZUNh
bGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgYXVkaW9T
YW1wbGVzQXZhaWxhYmxlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2sgYWJvcnRdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIHN0b3Bd
KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0xMi0wOSAgQW5kcmVzIEdvbnphbGV6ICA8YW5k
cmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZvciBmb2N1cyB0cmFja2luZyBpbiBp
c29sYXRlZCB0cmVlIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA5NjliYmJkMWM1MTRlZjVk
ZjM1Nzk1MWJjYTY5MTQ0MDQ3OTkwNDI1Li4wMjcwZGNlZTlmOTliNTg3ZDE1ODA1YjU2ZTg0ZTYw
ZmQ0Zjc2NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMi0x
MCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
cmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHNvZnQgbGlua2luZyB0byBTcGVlY2ggZnJhbWV3b3JrIGFuZCBTUEkuCisKKyAgICAg
ICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvY29jb2Ev
U3BlZWNoU29mdExpbmsuaDogQWRkZWQuCisgICAgICAgICogcGFsL2NvY29hL1NwZWVjaFNvZnRM
aW5rLm1tOiBBZGRlZC4KKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL1NwZWVjaFNQSS5oOiBBZGRl
ZC4KKwogMjAyMC0xMi0wNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIFtDTWFrZV0gUmVtb3ZlIFdFQktJVF9XUkFQX1NPVVJDRUxJU1QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMmRiMTVjYWQyNjYyNjI5MjFkYzRlYzUwOWFjNWM3YzBhYzZjZjY5MC4uMDliNWI4MTdmODAx
YTQxM2MyZjEzNGE4ZWFlNTIzMzgyZTJkOTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMC0xMi0xMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVz
dFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QpOiBXaGVuIHRoZXJlIGlzIGFuIGVycm9yIG9yIGVuZCBl
dmVudCB1cGRhdGUsIHNlcnZlciByZXNldHMgdGhlCisgICAgICAgIHN0YXRlIG9mIFNwZWVjaFJl
Y29nbml6ZXIsIHdoaWNoIHdvdWxkIHRlcm1pbmF0ZSBvbmdvaW5nIHdvcmsuCisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcDogUGFzcyBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkIHZhbHVlIGZyb20g
d2ViIHBhZ2UgYWxsIHRoZSB3YXkgdG8gCisgICAgICAgIFNwZWVjaFJlY29nbml6ZXIgc28gaXQg
ZGVjaWRlcyB3aGV0aGVyZSB0byB1c2UgYSBtb2NrIHNwZWVjaCByZWNvZ29uaXRpb24gYmFja2Vu
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcik6CisKIDIwMjAtMTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBhZGQgc3VwcG9ydCBmb3IgY3JlYXRp
bmcgZXh0ZW5zaW9uIHRhYnMgaW4gV2ViSW5zcGVjdG9yVUkgdmlhIF9XS0luc3BlY3RvckV4dGVu
c2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
emVyLmNwcAppbmRleCBmOTE2ZDJiYTRkMjgwZjc1ODYxMmI1N2NjMTIxOTRmOWI0ZDNiNWI1Li45
ODVhNmZmZmIwZjI3OTE0ZDdiNTRiYjUyNjI4ZTdlYmY2NmViNmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcApAQCAtMjcsMTAg
KzI3LDEwIEBACiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXplci5oIgogCiAjaW5jbHVkZSAiU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJNZWRpYVV0aWxpdGllcy5oIgotI2luY2x1ZGUg
PHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNDIgKzQ1LDQ4IEBAIHZvaWQgU3BlZWNoUmVjb2duaXpl
cjo6cmVzZXQoKQogICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBz
dG9wQ2FwdHVyZSgpOworICAgIHJlc2V0UmVjb2duaXRpb24oKTsKKyAgICBtX2NsaWVudElkZW50
aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cit9CiAKLSAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2du
aXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCAiQW5vdGhl
ciByZXF1ZXN0IGlzIHN0YXJ0ZWQiIH07Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcigqbV9jbGllbnRJZGVudGlmaWVyLCBlcnJvcikp
Owordm9pZCBTcGVlY2hSZWNvZ25pemVyOjphYm9ydCgpCit7CisgICAgQVNTRVJUKG1fY2xpZW50
SWRlbnRpZmllcik7CisgICAgc3RvcENhcHR1cmUoKTsKKyAgICBhYm9ydFJlY29nbml0aW9uKCk7
Cit9CiAKLSAgICBtX2NsaWVudElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cit2b2lkIFNwZWVj
aFJlY29nbml6ZXI6OnN0b3AoKQoreworICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIpOwor
ICAgIHN0b3BDYXB0dXJlKCk7CisgICAgc3RvcFJlY29nbml0aW9uKCk7CiB9CiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFJlYWx0
aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydChT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZl
ciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlLCBib29sIG1vY2tDYXB0dXJlRGV2
aWNlc0VuYWJsZWQsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51
b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCiB7Ci0g
ICAgQVNTRVJUKCFtX3NvdXJjZSk7Ci0KLSAgICBtX2NsaWVudElkZW50aWZpZXIgPSBpZGVudGlm
aWVyOworICAgIEFTU0VSVCghbV9jbGllbnRJZGVudGlmaWVyKTsKKyAgICBtX2NsaWVudElkZW50
aWZpZXIgPSBjbGllbnRJZGVudGlmZXI7CiAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOwogCi0gICAgc2V0U291cmNlKFdURk1vdmUoc291cmNl
KSk7CisgICAgaWYgKCFzdGFydFJlY29nbml0aW9uKG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQs
IGNsaWVudElkZW50aWZlciwgbG9jYWxlSWRlbnRpZmllciwgY29udGludW91cywgaW50ZXJpbVJl
c3VsdHMsIG1heEFsdGVybmF0aXZlcykpIHsKKyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9y
VHlwZTo6U2VydmljZU5vdEFsbG93ZWQsICJGYWlsZWQgdG8gc3RhcnQgcmVjb2duaXRpb24iX3Mg
fTsKKyAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRpZmVyLCBlcnJvcik7CisgICAgICAgIG1fZGVsZWdh
dGVDYWxsYmFjayh1cGRhdGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RhcnRD
YXB0dXJlKFdURk1vdmUoc291cmNlKSk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c2V0
U291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKK3ZvaWQgU3BlZWNoUmVj
b2duaXplcjo6c3RhcnRDYXB0dXJlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkK
IHsKICAgICBhdXRvIGRhdGFDYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
XShjb25zdCBhdXRvJiB0aW1lLCBjb25zdCBhdXRvJiBkYXRhLCBjb25zdCBhdXRvJiBkZXNjcmlw
dGlvbiwgYXV0byBzYW1wbGVDb3VudCkgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGF1dG8gYnVmZmVy
ID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIoZGF0YSwgZGVzY3JpcHRpb24sIFBBTDo6dG9DTVRp
bWUodGltZSksIHNhbXBsZUNvdW50KTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0j
ZWxzZQotICAgICAgICBVTlVTRURfUEFSQU0odGltZSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShk
YXRhKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0aW9uKTsKLSAgICAgICAgVU5VU0VE
X1BBUkFNKHNhbXBsZUNvdW50KTsKLSNlbmRpZgorICAgICAgICBpZiAod2Vha1RoaXMpCisgICAg
ICAgICAgICB3ZWFrVGhpcy0+ZGF0YUNhcHR1cmVkKHRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBz
YW1wbGVDb3VudCk7CiAgICAgfTsKIAogICAgIGF1dG8gc3RhdGVVcGRhdGVDYWxsYmFjayA9IFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBhdXRvJiB1cGRhdGUpIHsK
QEAgLTg5LDkgKzk1LDYgQEAgdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzZXRTb3VyY2UoUmVmPFJl
YWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQogCiAgICAgICAgIEFTU0VSVChtX2NsaWVudElk
ZW50aWZpZXIgJiYgbV9jbGllbnRJZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRlLmNsaWVudElk
ZW50aWZpZXIoKSk7CiAgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwotCi0gICAg
ICAgIGlmICh1cGRhdGUudHlwZSgpID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJy
b3IpCi0gICAgICAgICAgICBtX3NvdXJjZSA9IG51bGxwdHI7CiAgICAgfTsKIAogICAgIG1fc291
cmNlID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U+KCptX2NsaWVu
dElkZW50aWZpZXIsIFdURk1vdmUoZGF0YUNhbGxiYWNrKSwgV1RGTW92ZShzdGF0ZVVwZGF0ZUNh
bGxiYWNrKSwgV1RGTW92ZShzb3VyY2UpKTsKQEAgLTk5LDMwICsxMDIsMzggQEAgdm9pZCBTcGVl
Y2hSZWNvZ25pemVyOjpzZXRTb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNl
KQogCiAjZW5kaWYKIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wKFNob3VsZEdlbmVyYXRl
RmluYWxSZXN1bHQgc2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCkKK3ZvaWQgU3BlZWNoUmVjb2du
aXplcjo6c3RvcENhcHR1cmUoKQogewotICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQorICAg
IGlmICghbV9zb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0b3BJbnRlcm5hbCgpOwor
ICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVj
b2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZVR5cGU6OkF1ZGlvRW5kKSk7Cit9CiAKLSAgICBpZiAoc2hvdWxkR2VuZXJhdGVG
aW5hbFJlc3VsdCA9PSBTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0OjpZZXMpIHsKLSAgICAgICAg
Ly8gVE9ETzogZ2VuZXJhdGUgcmVhbCByZXN1bHQgd2hlbiBzcGVlY2ggcmVjb2duaXRpb24gYmFj
a2VuZCBpcyBpbXBsZW1lbnRlZC4KLSAgICAgICAgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVz
dWx0RGF0YT4gcmVzdWx0RGF0YXM7Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KCptX2NsaWVudElkZW50aWZpZXIsIHJlc3Vs
dERhdGFzKSk7Ci0gICAgfQorI2lmICFIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiAKLSAgICBtX2Rl
bGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJ
ZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwotICAgIG1fY2xp
ZW50SWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6ZGF0
YUNhcHR1cmVkKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29u
c3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkKK3sKIH0KIAotdm9pZCBTcGVlY2hS
ZWNvZ25pemVyOjpzdG9wSW50ZXJuYWwoKQorYm9vbCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJl
Y29nbml0aW9uKGJvb2wsIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90KQogewotICAgIGlmICghbV9z
b3VyY2UpCi0gICAgICAgIHJldHVybjsKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAKLSAgICBtX3Nv
dXJjZSA9IG51bGxwdHI7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpBdWRpb0VuZCkpOwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0
aW9uKCkKK3sKIH0KIAordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2duaXRpb24oKQor
eworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24oKQoreworfQor
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCmluZGV4IGVjNWFjMTMwYjhhMDQ3N2Rh
OTFmZDFlMWU3ZmMyYzcwYTRhMzI2M2EuLjllMzIwNTVjMzc4NWZkNTg2ZDFhMjQzZjhlYjEzYTZh
YzA4NWQ5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pemVyLmgKQEAgLTI4LDYgKzI4LDExIEBACiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRp
b25DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllci5oIgogCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK09CSkNfQ0xBU1MgV2ViU3BlZWNoUmVjb2duaXplclRhc2s7
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTsKQEAgLTQwLDExICs0NSwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
flNwZWVjaFJlY29nbml6ZXIoKSA9IGRlZmF1bHQ7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uQ2xpZW50SWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIGJvb2wgbW9ja0NhcHR1cmVE
ZXZpY2VzRW5hYmxlZCwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRp
bnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyk7CiAj
ZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgZW51bSBjbGFzcyBT
aG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0IHsgTm8sIFllcyB9OwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc3RvcChTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0ID0gU2hvdWxkR2VuZXJhdGVGaW5h
bFJlc3VsdDo6WWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0KCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdG9wKCk7CiAKICAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlv
bkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBjdXJyZW50Q2xpZW50SWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRpZmllcjsgfQogCkBAIC01MiwxMiArNTcsMjIgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHN0b3BJbnRlcm5hbCgpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLSAgICB2b2lkIHNldFNvdXJjZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7Cisg
ICAgdm9pZCBzdGFydENhcHR1cmUoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpOwogI2VuZGlm
CisgICAgdm9pZCBzdG9wQ2FwdHVyZSgpOworICAgIHZvaWQgZGF0YUNhcHR1cmVkKGNvbnN0IFdU
Rjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90IHNhbXBsZUNvdW50KTsKKyAgICBib29sIHN0YXJ0UmVjb2du
aXRpb24oYm9vbCBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkLCBTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIs
IGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgYWx0ZXJuYXRp
dmVzKTsKKyAgICB2b2lkIGFib3J0UmVjb2duaXRpb24oKTsKKyAgICB2b2lkIHN0b3BSZWNvZ25p
dGlvbigpOworICAgIHZvaWQgcmVzZXRSZWNvZ25pdGlvbigpOwogCiAgICAgT3B0aW9uYWw8U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcj4gbV9jbGllbnRJZGVudGlm
aWVyOwogICAgIERlbGVnYXRlQ2FsbGJhY2sgbV9kZWxlZ2F0ZUNhbGxiYWNrOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U+IG1fc291cmNlOworCisj
aWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorICAgIFJldGFpblB0cjxXZWJTcGVlY2hSZWNvZ25p
emVyVGFzaz4gbV90YXNrOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNv
Z25pemVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVl
Y2hSZWNvZ25pemVyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE0ODY2NjRmYmNjNmQ3NGE5YWYxY2Q0
MjFkZjY1ZWQ4MjU1Zjg4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpAQCAtMCwwICsxLDgxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25p
emVyLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKKyNpbXBvcnQgIk1lZGlhVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIgorI2ltcG9ydCAi
V2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmgiCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+
CisjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVk
KGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291
bnQpCit7CisgICAgYXV0byBidWZmZXIgPSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcihkYXRhLCBk
ZXNjcmlwdGlvbiwgUEFMOjp0b0NNVGltZSh0aW1lKSwgc2FtcGxlQ291bnQpOworICAgIFttX3Rh
c2sgYXVkaW9TYW1wbGVzQXZhaWxhYmxlOmJ1ZmZlci5nZXQoKV07Cit9CisKK2Jvb2wgU3BlZWNo
UmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlvbihib29sIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJs
ZWQsIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wg
aW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IGFsdGVybmF0aXZlcykKK3sKKyAgICBhdXRvIHRhc2tD
bGFzcyA9IG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPyBbV2ViU3BlZWNoUmVjb2duaXplclRh
c2tNb2NrIGNsYXNzXSA6IFtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBjbGFzc107CisgICAgbV90
YXNrID0gYWRvcHROUyhbW3Rhc2tDbGFzcyBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50
aWZpZXIgbG9jYWxlOmxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250
aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOmludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZl
czphbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKV0oY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkgeworICAg
ICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGVs
ZWdhdGVDYWxsYmFjayh1cGRhdGUpOworICAgIH1dKTsKKworICAgIHJldHVybiAhIW1fdGFzazsK
K30KKwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2duaXRpb24oKQoreworICAgIEFT
U0VSVChtX3Rhc2spOworICAgIFttX3Rhc2sgc3RvcF07Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2du
aXplcjo6YWJvcnRSZWNvZ25pdGlvbigpCit7CisgICAgQVNTRVJUKG1fdGFzayk7CisgICAgW21f
dGFzayBhYm9ydF07Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlv
bigpCit7CisgICAgaWYgKCFtX3Rhc2spCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFz
ayA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrLCBudWxscHRyKTsKKyAgICBbdGFzayBhYm9ydF07Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dO
SVpFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dl
YlNwZWVjaFJlY29nbml6ZXJUYXNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9j
b2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YzQwMzkyZDUxNTQ2
ZGE3NWU1MzMwMDJhZTI4ZjY1NDY3ZmE5YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisj
aW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLmgiCisj
aW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIgorCitOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgorCit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZm
ZXJSZWY7CisKK0BjbGFzcyBXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGw7CisKK0BpbnRlcmZh
Y2UgV2ViU3BlZWNoUmVjb2duaXplclRhc2sgOiBOU09iamVjdCB7CitAcHJpdmF0ZQorICAgIFJl
dGFpblB0cjxXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGw+IF9pbXBsOworfQorCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9j
YWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVw
b3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1
bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikpY2FsbGJhY2s7CistICh2b2lkKWF1
ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyOworLSAo
dm9pZClhYm9ydDsKKy0gKHZvaWQpc3RvcDsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9F
TkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9j
b2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNWU5
MmRlNjk1OTkzMTlkNzY3ZDZkMzA3Njk5NjkyZTk4MzM4NGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFz
ay5tbQpAQCAtMCwwICsxLDI1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCIKKworI2lmIEhBVkUoU1BFRUNIUkVD
T0dOSVpFUikKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9TcGVlY2hTUEkuaD4KKyNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKKyNpbXBvcnQg
PHBhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5oPgorCisvLyBTZXQgdGhlIG1heGltdW0gZHVyYXRp
b24gdG8gYmUgYW4gaG91cjsgd2UgY2FuIGFkanVzdCB0aGlzIGlmIG5lZWRlZC4KK3N0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IG1heGltdW1SZWNvZ25pdGlvbkR1cmF0aW9uID0gNjAgKiA2MDsKKwor
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBXZWJTcGVlY2hSZWNvZ25pemVy
VGFza0ltcGwgOiBOU09iamVjdDxTRlNwZWVjaFJlY29nbml0aW9uVGFza0RlbGVnYXRlLCBTRlNw
ZWVjaFJlY29nbml6ZXJEZWxlZ2F0ZT4geworQHByaXZhdGUKKyAgICBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIF9pZGVudGlmaWVyOworICAgIEJs
b2NrUHRyPHZvaWQoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKT4gX2Rl
bGVnYXRlQ2FsbGJhY2s7CisgICAgYm9vbCBfZG9NdWx0aXBsZVJlY29nbml0aW9uczsKKyAgICB1
aW50NjRfdCBfbWF4QWx0ZXJuYXRpdmVzOworICAgIFJldGFpblB0cjxTRlNwZWVjaFJlY29nbml6
ZXI+IF9yZWNvZ25pemVyOworICAgIFJldGFpblB0cjxTRlNwZWVjaEF1ZGlvQnVmZmVyUmVjb2du
aXRpb25SZXF1ZXN0PiBfcmVxdWVzdDsKKyAgICBXZWFrT2JqQ1B0cjxTRlNwZWVjaFJlY29nbml0
aW9uVGFzaz4gX3Rhc2s7CisgICAgYm9vbCBfaGFzU2VudFNwZWVjaFN0YXJ0OworICAgIGJvb2wg
X2hhc1NlbnRTcGVlY2hFbmQ7Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTcGVlY2hS
ZWNvZ25pemVyVGFza0ltcGwKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjoo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVu
dGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29n
bml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVy
aW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVs
ZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBfaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgX2Rv
TXVsdGlwbGVSZWNvZ25pdGlvbnMgPSBjb250aW51b3VzOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNr
ID0gY2FsbGJhY2s7CisKKyAgICBpZiAoIWFsdGVybmF0aXZlcykKKyAgICAgICAgYWx0ZXJuYXRp
dmVzID0gMTsKKyAgICBfbWF4QWx0ZXJuYXRpdmVzID0gYWx0ZXJuYXRpdmVzOworCisgICAgaWYg
KCFbbG9jYWxlSWRlbnRpZmllciBsZW5ndGhdKQorICAgICAgICBfcmVjb2duaXplciA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NTRlNwZWVjaFJlY29nbml6ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBl
bHNlCisgICAgICAgIF9yZWNvZ25pemVyID0gYWRvcHROUyhbUEFMOjphbGxvY1NGU3BlZWNoUmVj
b2duaXplckluc3RhbmNlKCkgaW5pdFdpdGhMb2NhbGU6W05TTG9jYWxlIGxvY2FsZVdpdGhMb2Nh
bGVJZGVudGlmaWVyOmxvY2FsZUlkZW50aWZpZXJdXSk7CisgICAgaWYgKCFfcmVjb2duaXplcikg
eworICAgICAgICBbc2VsZiByZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisK
KyAgICBpZiAoIVtfcmVjb2duaXplciBpc0F2YWlsYWJsZV0pIHsKKyAgICAgICAgW3NlbGYgcmVs
ZWFzZV07CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgW19yZWNvZ25pemVyIHNl
dERlbGVnYXRlOnNlbGZdOworCisgICAgX3JlcXVlc3QgPSBhZG9wdE5TKFtQQUw6OmFsbG9jU0ZT
cGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVzdEluc3RhbmNlKCkgaW5pdF0pOworICAg
IGlmIChbX3JlY29nbml6ZXIgc3VwcG9ydHNPbkRldmljZVJlY29nbml0aW9uXSkKKyAgICAgICAg
W19yZXF1ZXN0IHNldFJlcXVpcmVzT25EZXZpY2VSZWNvZ25pdGlvbjpZRVNdOworICAgIFtfcmVx
dWVzdCBzZXRTaG91bGRSZXBvcnRQYXJ0aWFsUmVzdWx0czppbnRlcmltUmVzdWx0c107CisgICAg
W19yZXF1ZXN0IHNldFRhc2tIaW50OlNGU3BlZWNoUmVjb2duaXRpb25UYXNrSGludERpY3RhdGlv
bl07CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAgIFtfcmVxdWVzdCBzZXREZXRl
Y3RNdWx0aXBsZVV0dGVyYW5jZXM6WUVTXTsKKyAgICBbX3JlcXVlc3QgX3NldE1heGltdW1SZWNv
Z25pdGlvbkR1cmF0aW9uOm1heGltdW1SZWNvZ25pdGlvbkR1cmF0aW9uXTsKKyNlbmRpZgorCisg
ICAgX3Rhc2sgPSBbX3JlY29nbml6ZXIgcmVjb2duaXRpb25UYXNrV2l0aFJlcXVlc3Q6X3JlcXVl
c3QuZ2V0KCkgZGVsZWdhdGU6c2VsZl07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQp
Y2FsbGJhY2tXaXRoUmVzdWx0OihTRlRyYW5zY3JpcHRpb24gKil0cmFuc2NyaXB0aW9uIGlzRmlu
YWw6KEJPT0wpaXNGaW5hbAoreworICAgIGF1dG8gc2VnbWVudHMgPSBbdHJhbnNjcmlwdGlvbiBz
ZWdtZW50c107CisgICAgVmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0
YT4gZGF0YXM7CisgICAgZGF0YXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShfbWF4QWx0ZXJuYXRp
dmVzIDw9IHNlZ21lbnRzLmNvdW50ID8gX21heEFsdGVybmF0aXZlcyA6IHNlZ21lbnRzLmNvdW50
KTsKKyAgICBmb3IgKFNGVHJhbnNjcmlwdGlvblNlZ21lbnQqIHNlZ21lbnQgaW4gc2VnbWVudHMp
IHsKKyAgICAgICAgLy8gTm90ZSBzZWdtZW50IGNvbmZpZGVuY2UgaXMgcmVwb3J0ZWQgMCB3aGVu
IHJlc3VsdCBpcyBub3QgZmluYWwuCisgICAgICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0RGF0YSBkYXRhOworICAgICAgICBkYXRhLmlzRmluYWwgPSBpc0ZpbmFsOworICAgICAg
ICBkYXRhLmFsdGVybmF0aXZlcy5hcHBlbmQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRl
cm5hdGl2ZURhdGEgeyBbc2VnbWVudCBzdWJzdHJpbmddLCBbc2VnbWVudCBjb25maWRlbmNlXSB9
KTsKKyAgICAgICAgZm9yIChOU1N0cmluZyogc2VnbWVudEFsdGVybmF0aXZlIDogW3NlZ21lbnQg
YWx0ZXJuYXRpdmVTdWJzdHJpbmdzXSkgeworICAgICAgICAgICAgaWYgKGRhdGEuYWx0ZXJuYXRp
dmVzLnNpemUoKSA9PSBfbWF4QWx0ZXJuYXRpdmVzKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgLy8gRklYTUU6IGNhbGN1bGF0ZSBvciBnZXQgYWx0ZXJuYXRpdmUgY29uZmlk
ZW5jZSBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgIGRhdGEuYWx0ZXJuYXRpdmVzLmFwcGVuZChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YSB7IHNlZ21lbnRBbHRlcm5h
dGl2ZSwgMC4wIH0pOworICAgICAgICB9CisgICAgICAgIGRhdGFzLmFwcGVuZChXVEZNb3ZlKGRh
dGEpKTsKKyAgICB9CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZVJlc3VsdChfaWRlbnRpZmllciwgZGF0YXMpKTsKK30KKworLSAo
dm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZl
cgoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgW19yZXF1ZXN0IGFwcGVuZEF1
ZGlvU2FtcGxlQnVmZmVyOnNhbXBsZUJ1ZmZlcl07Cit9CisKKy0gKHZvaWQpYWJvcnQKK3sKKyAg
ICBpZiAoIV90YXNrIHx8IFtfdGFzayBzdGF0ZV0gPT0gU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tT
dGF0ZUNvbXBsZXRlZCB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25UYXNr
U3RhdGVDYW5jZWxpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIFtzZWxmIHNlbmRTcGVlY2hF
bmRJZk5lZWRlZF07CisgICAgW19yZXF1ZXN0IGVuZEF1ZGlvXTsKKyAgICBbX3Rhc2sgY2FuY2Vs
XTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgaWYgKCFfdGFzayB8fCBbX3Rhc2sgc3RhdGVd
ID09IFNGU3BlZWNoUmVjb2duaXRpb25UYXNrU3RhdGVDb21wbGV0ZWQgfHwgW190YXNrIHN0YXRl
XSA9PSBTRlNwZWVjaFJlY29nbml0aW9uVGFza1N0YXRlRmluaXNoaW5nKQorICAgICAgICByZXR1
cm47CisKKyAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAgIFtfcmVxdWVzdCBl
bmRBdWRpb107CisgICAgW190YXNrIGZpbmlzaF07Cit9CisKKy0gKHZvaWQpc2VuZFNwZWVjaFN0
YXJ0SWZOZWVkZWQKK3sKKyAgICBpZiAoX2hhc1NlbnRTcGVlY2hTdGFydCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgX2hhc1NlbnRTcGVlY2hTdGFydCA9IHRydWU7CisgICAgX2RlbGVnYXRlQ2Fs
bGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmll
ciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hTdGFydCkpOwor
fQorCistICh2b2lkKXNlbmRTcGVlY2hFbmRJZk5lZWRlZAoreworICAgIGlmICghX2hhc1NlbnRT
cGVlY2hTdGFydCB8fCBfaGFzU2VudFNwZWVjaEVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
X2hhc1NlbnRTcGVlY2hFbmQgPSB0cnVlOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoRW5kKSk7Cit9CisKKyNwcmFnbWEgbWFy
ayBTRlNwZWVjaFJlY29nbml6ZXJEZWxlZ2F0ZQorCistICh2b2lkKXNwZWVjaFJlY29nbml6ZXI6
KFNGU3BlZWNoUmVjb2duaXplciAqKXNwZWVjaFJlY29nbml6ZXIgYXZhaWxhYmlsaXR5RGlkQ2hh
bmdlOihCT09MKWF2YWlsYWJsZQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBpZiAoYXZhaWxhYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIV90YXNrKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90
QWxsb3dlZCwgIlNwZWVjaCByZWNvZ25pdGlvbiBzZXJ2aWNlIGJlY29tZXMgdW5hdmFpbGFibGUi
X3MgfTsKKyAgICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgZXJyb3IpOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNr
KHVwZGF0ZSk7Cit9CisKKyNwcmFnbWEgbWFyayBTRlNwZWVjaFJlY29nbml0aW9uVGFza0RlbGVn
YXRlCisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrOihTRlNwZWVjaFJlY29nbml0aW9u
VGFzayAqKXRhc2sgZGlkSHlwb3RoZXNpemVUcmFuc2NyaXB0aW9uOihTRlRyYW5zY3JpcHRpb24g
Kil0cmFuc2NyaXB0aW9uCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFtz
ZWxmIHNlbmRTcGVlY2hTdGFydElmTmVlZGVkXTsKKyAgICBbc2VsZiBjYWxsYmFja1dpdGhSZXN1
bHQ6dHJhbnNjcmlwdGlvbiBpc0ZpbmFsOk5PXTsKK30KKworLSAodm9pZClzcGVlY2hSZWNvZ25p
dGlvblRhc2s6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzayBkaWRGaW5pc2hSZWNvZ25p
dGlvbjooU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCAqKXJlY29nbml0aW9uUmVzdWx0Cit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFtzZWxmIGNhbGxiYWNrV2l0aFJlc3Vs
dDpyZWNvZ25pdGlvblJlc3VsdC5iZXN0VHJhbnNjcmlwdGlvbiBpc0ZpbmFsOllFU107CisgICAg
aWYgKCFfZG9NdWx0aXBsZVJlY29nbml0aW9ucykgeworICAgICAgICBbc2VsZiBzZW5kU3BlZWNo
RW5kSWZOZWVkZWRdOworICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworICAgIH0KK30KKworLSAodm9pZClzcGVlY2hSZWNv
Z25pdGlvblRhc2tXYXNDYW5jZWxsZWQ6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzawor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBbc2VsZiBzZW5kU3BlZWNoRW5k
SWZOZWVkZWRdOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlVHlwZTo6RW5kKSk7Cit9CisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrOihT
RlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sgZGlkRmluaXNoU3VjY2Vzc2Z1bGx5OihCT09M
KXN1Y2Nlc3NmdWxseQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAo
c3VjY2Vzc2Z1bGx5KSB7CisgICAgICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCB0YXNrLmVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9ufTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIsIGVycm9yKSk7Cit9CisKK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrCisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2Nh
bGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBv
cnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVu
c2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3Qg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjaworeworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2ltcGwg
PSBhZG9wdE5TKFtbV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIGFsbG9jXSBpbml0V2l0aElk
ZW50aWZpZXI6aWRlbnRpZmllciBsb2NhbGU6bG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVj
b2duaXRpb25zOmNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6aW50ZXJpbVJlc3VsdHMg
bWF4QWx0ZXJuYXRpdmVzOmFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOmNhbGxiYWNrXSk7
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihD
TVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIKK3sKKyAgICBbX2ltcGwgYXVkaW9TYW1wbGVz
QXZhaWxhYmxlOnNhbXBsZUJ1ZmZlcl07Cit9CisKKy0gKHZvaWQpYWJvcnQKK3sKKyAgICBbX2lt
cGwgYWJvcnRdOworfQorCistICh2b2lkKXN0b3AKK3sKKyAgICBbX2ltcGwgc3RvcF07Cit9CisK
K0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tN
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNv
Z25pemVyVGFza01vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjUxZGFiMGUzOGJiMTk5N2RiOTQxMWQyYTYw
OGYyODAwNTdkZTIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmgKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKKyNpbXBvcnQgIldl
YlNwZWVjaFJlY29nbml6ZXJUYXNrLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworQGNsYXNzIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9j
azsKKworQGludGVyZmFjZSBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgOiBXZWJTcGVlY2hS
ZWNvZ25pemVyVGFzayB7CitAcHJpdmF0ZQorICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgX2lkZW50aWZpZXI7CisgICAgQmxvY2tQdHI8dm9p
ZChjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpPiBfZGVsZWdhdGVDYWxs
YmFjazsKKyAgICBib29sIF9oYXNTZW50U3BlZWNoU3RhcnQ7CisgICAgYm9vbCBfaGFzU2VudFNw
ZWVjaEVuZDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVy
IGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9u
czooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1
bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVD
YWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYp
KWNhbGxiYWNrOworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVy
UmVmKXNhbXBsZUJ1ZmZlcjsKKy0gKHZvaWQpYWJvcnQ7CistICh2b2lkKXN0b3A7CisKK0BlbmQK
KworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1t
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXpl
clRhc2tNb2NrLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwZTVmZjViOWQ2MGI4Mjg1ZDVhMmQ1MzVkZDA3YTI0
MmE3OTMwNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KQEAgLTAsMCArMSw3MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViU3BlZWNoUmVjb2du
aXplclRhc2tNb2NrLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKK05TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
a01vY2sKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2Fs
ZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9P
TCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1h
eEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFj
azoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxi
YWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBu
aWw7CisKKyAgICBfaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgX2RlbGVnYXRlQ2FsbGJh
Y2sgPSBjYWxsYmFjazsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClhdWRpb1NhbXBs
ZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgoreworICAgIGlmICgh
X2hhc1NlbnRTcGVlY2hTdGFydCkgeworICAgICAgICBfaGFzU2VudFNwZWVjaFN0YXJ0ID0gdHJ1
ZTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpTcGVlY2hTdGFydCkpOworICAgIH0KK30KKworLSAodm9pZClhYm9ydAoreworICAg
IGlmICghX2hhc1NlbnRTcGVlY2hFbmQgJiYgX2hhc1NlbnRTcGVlY2hTdGFydCkgeworICAgICAg
ICBfaGFzU2VudFNwZWVjaEVuZCA9IHRydWU7CisgICAgICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoRW5kKSk7CisgICAgfQorICAg
IF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVh
dGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5k
KSk7Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIFtzZWxmIGFib3J0XTsKK30KKworQGVuZAor
CitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzcxNTZhYzJkMTlkMGViMmRl
MDY0ZTdmMDZiNmRlOTMzYmU3YmQ0MC4uMGRmZDQ5OTE3NTY4M2JiOTY1MGNjNDBmZjJiYWEzYTRj
MDFkZTliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTQ0LDYgKzE0NCw5IEBACiAJCTYzQzdFREM3MjFBRkFFMDQwMDZBN0I5
OSAvKiBOU1Byb2dyZXNzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2M0UzNjlGOTIxQUZBODNGMDAxQzE0QkMgLyogTlNQcm9ncmVzc1NQSS5oICov
OyB9OwogCQk3QTM2RDBGOTIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTM2RDBGODIyM0FE
OUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi87IH07CiAJCTdBM0E2QTgwMjBDQURC
NDcwMDMxN0FBRSAvKiBOU0ltYWdlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTNBNkE3RjIwQ0FEQjQ2MDAzMTdBQUUgLyogTlNJbWFnZVNQSS5o
ICovOyB9OworCQk5M0IzOEVCRTI1ODIxQ0I2MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJEMjU4
MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5oICovOyB9OworCQk5M0IzOEVDMDI1ODIx
Q0Q4MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCRjI1ODIxQ0Q3MDAxOThFNjMgLyogU3BlZWNo
U29mdExpbmsubW0gKi87IH07CisJCTkzQjM4RUMyMjU4MjFEMjIwMDE5OEU2MyAvKiBTcGVlY2hT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4
RUMxMjU4MjFEMjIwMDE5OEU2MyAvKiBTcGVlY2hTUEkuaCAqLzsgfTsKIAkJOTNEQjdEMzcyNDYy
NkJDRDAwNEJEOEEzIC8qIE5TVGV4dElucHV0Q29udGV4dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEQjdEMzYyNDYyNkJDQzAwNEJEOEEzIC8q
IE5TVGV4dElucHV0Q29udGV4dFNQSS5oICovOyB9OwogCQk5M0RCN0QzQTI0NjI2Rjg2MDA0QkQ4
QTMgLyogTlNVbmRvTWFuYWdlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNEQjdEMzkyNDYyNkY4NjAwNEJEOEEzIC8qIE5TVW5kb01hbmFnZXJT
UEkuaCAqLzsgfTsKIAkJQTEwMjY1ODkxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1ODgx
RjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQSS5oICovOyB9OwpAQCAtMzQwLDYgKzM0Myw5
IEBACiAJCTYzRTM2OUY5MjFBRkE4M0YwMDFDMTRCQyAvKiBOU1Byb2dyZXNzU1BJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5TUHJvZ3Jlc3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0EzNkQwRjgyMjNBRDlBQjAwQjA1MjJFIC8qIENvbW1vbkNyeXB0b1NQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25DcnlwdG9TUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0EzQTZBN0YyMENBREI0NjAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNJbWFnZVNQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVCRDI1ODIxQ0I2MDAxOThFNjMgLyogU3BlZWNoU29m
dExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoU29mdExpbmsu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQkYyNTgyMUNENzAwMTk4RTYz
IC8qIFNwZWVjaFNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU3BlZWNoU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
QjM4RUMxMjU4MjFEMjIwMDE5OEU2MyAvKiBTcGVlY2hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3BlZWNoU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzREI3RDM2MjQ2MjZCQ0MwMDRCRDhBMyAvKiBOU1RleHRJbnB1dENvbnRleHRTUEkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNUZXh0SW5wdXRDb250ZXh0U1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzREI3RDM5MjQ2MjZGODYwMDRCRDhBMyAvKiBO
U1VuZG9NYW5hZ2VyU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TVW5k
b01hbmFnZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNTkwOUMxRjkz
QkYxRTAwNjdGOENGIC8qIFVuZW5jb2RhYmxlSGFuZGxpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5l
bmNvZGFibGVIYW5kbGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTExLDYg
KzUxNyw3IEBACiAJCQkJNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0IC8qIFJldmVhbFNQSS5oICov
LAogCQkJCTU3MEFCOEYwMjBBRTJFOEQwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVNQSS5oICovLAog
CQkJCTBDMkRBMTNDMUYzQkVCNDkwMERCQzMxNyAvKiBTZXJ2ZXJzU1BJLmggKi8sCisJCQkJOTNC
MzhFQzEyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5oICovLAogCQkJCTBDMkRBMTJCMUYz
QkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmggKi8sCiAJCQkJMEMyREExM0QxRjNC
RUI0OTAwREJDMzE3IC8qIFdlYkZpbHRlckV2YWx1YXRvclNQSS5oICovLAogCQkJKTsKQEAgLTY4
Miw2ICs2ODksOCBAQAogCQkJCTMxNjQ3RkFFMjUxNzU5REIwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0
TGlua0NvY29hLm1tICovLAogCQkJCUExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0
U29mdExpbmsuaCAqLywKIAkJCQlBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNv
ZnRMaW5rLm1tICovLAorCQkJCTkzQjM4RUJEMjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0
TGluay5oICovLAorCQkJCTkzQjM4RUJGMjU4MjFDRDcwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGlu
ay5tbSAqLywKIAkJCQkwNzYxMURCNDI0M0ZBNUJFMDBEODA3MDQgLyogVXNhZ2VUcmFja2luZ1Nv
ZnRMaW5rLmggKi8sCiAJCQkJMDc2MTFEQjUyNDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tp
bmdTb2Z0TGluay5tbSAqLywKIAkJCSk7CkBAIC05MDcsNiArOTE2LDggQEAKIAkJCQlBM0FCNkU1
NjFGM0QxRERCMDA5QzE0QjEgLyogU2xlZXBEaXNhYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTNBQjZFNjExRjNEMUUzOTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXJDb2NvYS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTM3ODhFOTgxRjA1QjZDRTAwNjc5NDI1IC8qIFNvdW5kLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0IzOEVCRTI1ODIxQ0I2MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsuaCBp
biBIZWFkZXJzICovLAorCQkJCTkzQjM4RUMyMjU4MjFEMjIwMDE5OEU2MyAvKiBTcGVlY2hTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJCUExMTc1QjQ5MUY2QUZGOEUwMEM0QjlGMCAvKiBTcGVlY2hT
eW50aGVzaXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTIxMUY0M0E0QzcwMDJFQUMw
MiAvKiBTUUxpdGUzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTMwOEIxNDIwQTIxNzA1MDAz
RkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDM3LDYgKzEw
NDgsNyBAQAogCQkJCUEzQUI2RTYwMUYzRDFFMzkwMDlDMTRCMSAvKiBTbGVlcERpc2FibGVyQ29j
b2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTM3ODhFOUMxRjA1Qjc4MjAwNjc5NDI1IC8qIFNv
dW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzNzg4RTlFMUYwNUI3OEUwMDY3OTQyNSAvKiBT
b3VuZE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTkzQjM4RUMwMjU4MjFDRDgwMDE5OEU2MyAv
KiBTcGVlY2hTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEzQUI2RTU3MUYzRDFEREIw
MDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEz
QUI2RTY1MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkUxMzQyQ0QyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29j
b2EvU3BlZWNoU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNo
U29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzNmNzU0OTk1MGEwYTM0OWYxNjNhMGE4YmQ5OTZjOGUz
MmY4MGUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9T
cGVlY2hTb2Z0TGluay5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCA8U3BlZWNoL1NwZWVj
aC5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktf
Rk9SX0hFQURFUihQQUwsIFNwZWVjaCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUws
IFNGU3BlZWNoUmVjb2duaXRpb25SZXN1bHQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIo
UEFMLCBTRlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihQQUwsIFNGU3BlZWNoQXVkaW9CdWZmZXJSZWNvZ25pdGlvblJlcXVlc3QpOworU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBTRlNwZWVjaFJlY29nbml0aW9uVGFzayk7CitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNoUmVjb2duaXplcik7CitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGVHJhbnNjcmlwdGlvblNlZ21lbnQpOworU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBTRlRyYW5zY3JpcHRpb24pOworCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1NwZWVjaFNvZnRMaW5rLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ2YTAzMWU4NjNiOWQ4ZDU2MWJmZjY2ODM4ODM2YjA2YzZmNzg5NzEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1NwZWVjaFNvZnRMaW5rLm1tCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEhB
VkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorI2ltcG9y
dCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQ
QUwsIFNwZWVjaCkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXRpb25SZXN1bHQsIFBBTF9FWFBPUlQpOworU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0LCBQQUxfRVhQT1JUKTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBTRlNwZWVjaEF1ZGlvQnVmZmVyUmVjb2duaXRpb25S
ZXF1ZXN0LCBQQUxfRVhQT1JUKTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgU3BlZWNoLCBTRlNwZWVjaFJlY29nbml0aW9uVGFzaywgUEFMX0VYUE9SVCk7CitT
T0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFNwZWVjaCwgU0ZTcGVl
Y2hSZWNvZ25pemVyLCBQQUxfRVhQT1JUKTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBTRlRyYW5zY3JpcHRpb25TZWdtZW50LCBQQUxfRVhQT1JU
KTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBT
RlRyYW5zY3JpcHRpb24sIFBBTF9FWFBPUlQpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1NwZWVjaFNQSS5oIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk3Y2JkYjczZWIxYTQw
MWNhZDgyNGQxM2ExZmIyMWQ5NDczY2M4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL1NwZWVjaFNQSS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKKworI2ltcG9ydCA8U3BlZWNoL1NGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0X1By
aXZhdGUuaD4KKworI2Vsc2UKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFj
ZSBTRlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCAoKQorQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgZGV0ZWN0TXVsdGlwbGVVdHRlcmFuY2VzOworQHByb3BlcnR5IChub25hdG9taWMsIGdldHRl
cj1fbWF4aW11bVJlY29nbml0aW9uRHVyYXRpb24sIHNldHRlcj1fc2V0TWF4aW11bVJlY29nbml0
aW9uRHVyYXRpb246KSBOU1RpbWVJbnRlcnZhbCBfbWF4aW11bVJlY29nbml0aW9uRHVyYXRpb247
CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAvLyBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorCisjZW5kaWYgLy8gSEFWRShTUEVFQ0hSRUNPR05JWkVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggOGY5OWY5YTE5MThjOTU1ODg1ZmIyYWNiOTljOGQxYTc1MjY1
YWEwMy4uYjYwZTUzMmRiM2FjOTFmZTAxYTAzMzJkOGI1NTU5YjAyZGQxNDI0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CkBAIC05Miw2ICs5Miw5IEBAIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcAogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50Lm1tCiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcAorTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCitN
b2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQorTW9kdWxlcy9z
cGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCiBNb2R1bGVzL3dlYmRh
dGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9B
WE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0
SU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYmU0ZmNhZmY5ZmM5MjU5YjQ2YzM1MzliNmVhOTNhZjRhZGM3ZmIyNS4uNTQ1
OTkzNDM3NzY5ODFjODA3MjdkMWQ0NjFlN2YxZjM1YzBjNGU1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjgxNSw2ICsyODE1
LDggQEAKIAkJOTNBODA2MUUxRTAzQjU4NTAwOEExRjI2IC8qIEpTRG91YmxlUmFuZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTgwNjFBMUUwM0I1
ODUwMDhBMUYyNiAvKiBKU0RvdWJsZVJhbmdlLmggKi87IH07CiAJCTkzQTgwNjIwMUUwM0I1ODUw
MDhBMUYyNiAvKiBKU0xvbmdSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNBODA2MUMxRTAzQjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmgg
Ki87IH07CiAJCTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMkQ4MTUw
Rjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNCMzhFQzMyNTgyMURCNDAwMTk4RTYz
IC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCQTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3BlZWNo
UmVjb2duaXplclRhc2suaCAqLzsgfTsKKwkJOTNCMzhFQzQyNTgyMURCNzAwMTk4RTYzIC8qIFdl
YlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNCMzhFQkIyNTgyMTkzRDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrTW9jay5oICovOyB9OwogCQk5M0I2QTBFNjBCMEJDQTVDMDBGNTAyN0EgLyog
Q29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzQjZBMEU1MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQjcwRDY0MDlFQjBDN0Mw
MDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0I3
MEQ2QTA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I3MEQ0RTA5RUIwQzdDMDA5RDg0Njgg
LyogSlNFdmVudExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTExNTI3LDYgKzExNTI5LDExIEBACiAJCTkzQTgwNjFDMUUwM0I1ODUw
MDhBMUYyNiAvKiBKU0xvbmdSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0xvbmdSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyRDgxNTBG
OTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3VkZGVuVGVybWluYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNCMkQ4MTcwRjk5MjBFRTAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3VkZGVuVGVybWluYXRp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUI4MjU4MjE4OTkwMDE5
OEU2MyAvKiBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzQjM4RUI5MjU4MjE5M0EwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNv
Z25pemVyVGFza01vY2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzQjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVy
VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVCQjI1ODIxOTNEMDAx
OThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVCQzI1ODIxOTNFMDAxOThFNjMgLyogV2ViU3BlZWNo
UmVjb2duaXplclRhc2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUJpbmRpbmcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBENEQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRM
aXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVu
dExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMTczLDYgKzIz
MTgwLDE4IEBACiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKKwkJOTNCMzhFQjYyNTgyMTgzMzAwMTk4RTYzIC8qIGNvY29hICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5M0IzOEVCODI1ODIxODk5MDAxOThFNjMg
LyogU3BlZWNoUmVjb2duaXplckNvY29hLm1tICovLAorCQkJCTkzQjM4RUJBMjU4MjE5M0IwMDE5
OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovLAorCQkJCTkzQjM4RUJDMjU4MjE5
M0UwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbSAqLywKKwkJCQk5M0IzOEVC
QjI1ODIxOTNEMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi8sCisJ
CQkJOTNCMzhFQjkyNTgyMTkzQTAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9j
ay5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OwogCQk5M0MwOUE4MjBCMDY0RjA1MDA1QUJENEQgLyogbWFjICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1NzA1LDYgKzI1NzI0LDcgQEAK
IAkJQUEyQTVBQjcxNkE0ODVBNDAwOTc1QTI1IC8qIHNwZWVjaCAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTNCMzhFQjYyNTgyMTgzMzAwMTk4RTYzIC8q
IGNvY29hICovLAogCQkJCUFBMkE1QUJBMTZBNDg1RDUwMDk3NUEyNSAvKiBET01XaW5kb3crU3Bl
ZWNoU3ludGhlc2lzLmlkbCAqLywKIAkJCQlBQTJBNUFCODE2QTQ4NUQ1MDA5NzVBMjUgLyogRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCAqLywKIAkJCQlBQTJBNUFCOTE2QTQ4NUQ1MDA5NzVB
MjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmggKi8sCkBAIC0zNTI3Niw2ICszNTI5Niw4
IEBACiAJCQkJOTdBQUJEMjUxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEZyYW1lLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5N0FBQkQyNzE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFu
ZHNoYWtlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUUxMkU5RjI0RkU3NEUyMDA5M0ZGQjQgLyog
V2ViU29ja2V0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCMzhFQzMyNTgyMURC
NDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5M0IzOEVDNDI1ODIxREI3MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2Nr
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjg3NTZCMjFFMjJDMzM1MDA0MkM0MEQgLyogV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMURFQTQ1NjFC
MzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY1ODBGQTMxNDk2OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVkQmFja2luZ0xheWVyLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVj
aFJlY29nbml0aW9uU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJl
Y29nbml0aW9uU2VydmVyLmNwcAppbmRleCBkNmZhODljNTQ4MzI2MmMxMDFhMjZkMDMwMzIzNTU3
MjA2YjEyZjYxLi41NDcwYzE4ZWQ3YTI3MzQzOTA3YzhiYTcxMTk0MWFmMDIzOTk2NjUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
Y3BwCkBAIC0zNiwyMiArMzYsMjEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKworU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiBwZXJtaXNzaW9u
Q2hlY2tlciwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxl
ZCYmIGNoZWNrSWZFbmFibGVkCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVNwZWVjaFJlY29n
bml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNr
ZXIsIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQorICAgICwg
UmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uJiYgZnVuY3Rpb24KKyNlbmRpZgorICAg
ICkKICAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3Blcm1pc3Npb25DaGVja2VyKFdURk1vdmUocGVy
bWlzc2lvbkNoZWNrZXIpKQorICAgICwgbV9jaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxl
ZChXVEZNb3ZlKGNoZWNrSWZFbmFibGVkKSkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAg
ICwgbV9yZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikp
CisjZW5kaWYKIHsKIH0KLSNlbHNlCi1TcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Npb25DaGVja2VyKQotICAgIDogbV9jb25uZWN0aW9u
KFdURk1vdmUoY29ubmVjdGlvbikpCi0gICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAg
ICAsIG1fcGVybWlzc2lvbkNoZWNrZXIoV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCi17Ci19
Ci0jZW5kaWYKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlm
aWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMs
IHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2lu
KQogewpAQCAtODAsMTEgKzc5LDExIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJl
cXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBoYW5kbGVSZXF1ZXN0KGlkZW50aWZp
ZXIpOworICAgICAgICBoYW5kbGVSZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CiAgICAgfSk7CiB9CiAK
LXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
KQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX3JlY29nbml6
ZXIpIHsKICAgICAgICAgbV9yZWNvZ25pemVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pemVyPihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYgdXBk
YXRlKSB7CkBAIC05NSwxNiArOTQsMjUgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24KICAgICAg
ICAgICAgIGlmICghbV9yZXF1ZXN0cy5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgICAgIHNlbmRVcGRhdGUodXBkYXRlKTsKKwog
ICAgICAgICAgICAgYXV0byB0eXBlID0gdXBkYXRlLnR5cGUoKTsKLSAgICAgICAgICAgIGlmICh0
eXBlID09IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IgfHwgdHlw
ZSA9PSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKLSAgICAgICAg
ICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgICAg
IGlmICh0eXBlICE9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3Ig
JiYgdHlwZSAhPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHNlbmRVcGRhdGUodXBkYXRlKTsK
KyAgICAgICAgICAgIGlmIChtX2lzUmVzZXR0aW5nKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIG1faXNSZXNldHRpbmcgPSB0cnVlOworCisgICAgICAgICAgICBtX3JlY29n
bml6ZXItPnJlc2V0KCk7CisgICAgICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgIG1faXNSZXNldHRpbmcgPSBmYWxzZTsKICAgICAgICAgfSk7
CiAgICAgfQogICAgIAogICAgIG1fcmVjb2duaXplci0+cmVzZXQoKTsKIAorICAgIGF1dG8gY2xp
ZW50SWRlbnRpZmllciA9IHJlcXVlc3QuY2xpZW50SWRlbnRpZmllcigpOwogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgYXV0byBzb3VyY2VPckVycm9yID0gbV9yZWFsdGltZU1lZGlhU291
cmNlQ3JlYXRlRnVuY3Rpb24oKTsKICAgICBpZiAoIXNvdXJjZU9yRXJyb3IpIHsKQEAgLTExMiwx
MCArMTIwLDEyIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3Qo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uCiAgICAgICAgIHNlbmRVcGRhdGUo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKGNsaWVudElkZW50
aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVkaW9DYXB0dXJlLCBzb3VyY2VPckVycm9yLmVycm9yTWVz
c2FnZSB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9yZWNvZ25pemVyLT5zdGFy
dChjbGllbnRJZGVudGlmaWVyLCBzb3VyY2VPckVycm9yLnNvdXJjZSgpKTsKKworICAgIGJvb2wg
bW9ja0RldmljZUNhcHR1cmVzRW5hYmxlZCA9IG1fY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0Vu
YWJsZWQoKTsKKyAgICBtX3JlY29nbml6ZXItPnN0YXJ0KGNsaWVudElkZW50aWZpZXIsIHNvdXJj
ZU9yRXJyb3Iuc291cmNlKCksIG1vY2tEZXZpY2VDYXB0dXJlc0VuYWJsZWQsIHJlcXVlc3QubGFu
ZygpLCByZXF1ZXN0LmNvbnRpbnVvdXMoKSwgcmVxdWVzdC5pbnRlcmltUmVzdWx0cygpLCByZXF1
ZXN0Lm1heEFsdGVybmF0aXZlcygpKTsKICNlbHNlCiAgICAgbV9yZXF1ZXN0cy5yZW1vdmUoY2xp
ZW50SWRlbnRpZmllcik7Ci0gICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkF1ZGlv
Q2FwdHVyZSwgIkF1ZGlvIGNhcHR1cmUgaXMgbm90IGltcGxlbWVudGVkIn0pOworICAgIHNlbmRV
cGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlOjpFcnJvciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsICJBdWRpbyBjYXB0dXJlIGlz
IG5vdCBpbXBsZW1lbnRlZCJfcyB9KTsKICNlbmRpZgogfQogCkBAIC0xMzUsNyArMTQ1LDcgQEAg
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWQKIHsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50
aWZpZXIpOwogICAgIGlmIChtX3JlY29nbml6ZXIgJiYgbV9yZWNvZ25pemVyLT5jdXJyZW50Q2xp
ZW50SWRlbnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpIHsKLSAgICAgICAgbV9yZWNvZ25p
emVyLT5zdG9wKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OlNob3VsZEdlbmVyYXRlRmluYWxS
ZXN1bHQ6Ok5vKTsKKyAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xNDgsNyArMTU4LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcjo6aW52YWxpZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGkK
ICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElkZW50aWZpZXIpOwogICAgIGlmIChtX3JlcXVlc3Rz
LnJlbW92ZShjbGllbnRJZGVudGlmaWVyKSkgewogICAgICAgICBpZiAobV9yZWNvZ25pemVyICYm
IG1fcmVjb2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlm
aWVyKQotICAgICAgICAgICAgbV9yZWNvZ25pemVyLT5zdG9wKCk7CisgICAgICAgICAgICBtX3Jl
Y29nbml6ZXItPmFib3J0KCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAppbmRleCBlZDY3MjY0YWExMzFlMWUxNDIx
ZWFhNDE0ZDQxNzEzYzY5NWQ4MzI0Li5jOGI3Y2NjZjAzZGRmOTg0MWU4MTBlOWM0MmI0YTRkZjQ2
MTExOTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmgKQEAgLTQ3LDE1ICs0NywxNiBAQCBlbnVtIGNsYXNzIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkRlY2lzaW9uIDogYm9vbDsKIAogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXJJZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7CiB1c2luZyBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkRlY2lzaW9uKT4mJik+OwordXNpbmcgU3BlZWNoUmVjb2duaXRpb25DaGVja0lm
TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IEZ1bmN0aW9uPGJvb2woKT47CiAKIGNsYXNzIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNwZWVjaFJlY29n
bml0aW9uU2VydmVyPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6
TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICB1c2luZyBSZWFsdGltZU1lZGlhU291cmNlQ3Jl
YXRlRnVuY3Rpb24gPSBGdW5jdGlvbjxXZWJDb3JlOjpDYXB0dXJlU291cmNlT3JFcnJvcigpPjsK
LSAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNoZWNrZXImJiwgUmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uJiYpOworICAgIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29n
bml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tl
ciYmLCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkJiYs
IFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbiYmKTsKICNlbHNlCi0gICAgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXJJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYp
OworICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2hlY2tlciYmLCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNF
bmFibGVkJiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29u
dGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJik7CkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKLSAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcik7CisgICAgdm9pZCBo
YW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOwogICAgIHZv
aWQgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9wdGlvbmFs
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+ID0gV1RGOjpudWxsb3B0LCBPcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBXVEY6Om51
bGxvcHQpOwogICAgIHZvaWQgc2VuZFVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZSYpOwogCkBAIC04MSw2ICs4Miw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Pj4gbV9yZXF1ZXN0
czsKICAgICBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyIG1fcGVybWlzc2lvbkNo
ZWNrZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI+IG1f
cmVjb2duaXplcjsKKyAgICBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrQ2FwdHVyZURldmlj
ZXNFbmFibGVkIG1fY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQ7CisgICAgYm9vbCBt
X2lzUmVzZXR0aW5nIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uIG1fcmVhbHRpbWVNZWRpYVNvdXJjZUNy
ZWF0ZUZ1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKaW5kZXggYWRlZTVmYjllN2JiZDg4YzA4OGU2OWVmNGU1NTZlZjNhOGQwZDUzNi4uZmU3MTI2
YzU1YmY0OWVhMWI4NGEzNzAxOGRiYzlkMTcxNTdhMjZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNzE3LDIwICsxNzE3LDI3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcklkZW50CiAKICAgICBBU1NFUlQoIW1fc3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJNYXAuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIGF1dG8mIHNwZWVjaFJlY29nbml0aW9u
U2VydmVyID0gbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5hZGQoaWRlbnRpZmllciwgbnVs
bHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbWFr
ZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwg
aWRlbnRpZmllciwgW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKGF1dG8mIG9y
aWdpbiwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICBhdXRvIHBlcm1p
c3Npb25DaGVja2VyID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKGF1dG8m
IG9yaWdpbiwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCF3ZWFrUGFnZSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uRGVjaXNpb246OkRlbnkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgd2Vha1BhZ2UtPnJlcXVlc3RTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb24ob3JpZ2luLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfQorICAgIH07
CisgICAgYXV0byBjaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFt3ZWFrUGFnZSA9
IG1ha2VXZWFrUHRyKHRhcmdldFBhZ2UpXSgpIHsKKyAgICAgICAgcmV0dXJuIHdlYWtQYWdlICYm
IHdlYWtQYWdlLT5wcmVmZXJlbmNlcygpLm1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoKTsKKyAg
ICB9OworCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICAsIFt3ZWFrUGFnZSA9IG1ha2VX
ZWFrUHRyKHRhcmdldFBhZ2UpXSgpIHsKKyAgICBhdXRvIGNyZWF0ZVJlYWx0aW1lTWVkaWFTb3Vy
Y2UgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oKSB7CiAgICAgICAgIHJl
dHVybiB3ZWFrUGFnZSA/IHdlYWtQYWdlLT5jcmVhdGVSZWFsdGltZU1lZGlhU291cmNlRm9yU3Bl
ZWNoUmVjb2duaXRpb24oKSA6IENhcHR1cmVTb3VyY2VPckVycm9yIHsgIlBhZ2UgaXMgaW52YWxp
ZCIgfTsKLSAgICB9CisgICAgfTsKKyAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1ha2VV
bmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlk
ZW50aWZpZXIsIFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNoZWNrSWZNb2Nr
Q2FwdHVyZURldmljZXNFbmFibGVkKSwgV1RGTW92ZShjcmVhdGVSZWFsdGltZU1lZGlhU291cmNl
KSk7CisjZWxzZQorICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbWFrZVVuaXF1ZTxTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllciwg
V1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlciksIFdURk1vdmUoY2hlY2tJZk1vY2tDYXB0dXJlRGV2
aWNlc0VuYWJsZWQpKTsKICNlbmRpZgotICAgICk7CisKICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IGlkZW50aWZpZXIsICpzcGVlY2hSZWNvZ25pdGlvblNlcnZlcik7CiB9CiAK
</data>
<flag name="commit-queue"
          id="433246"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415903</attachid>
            <date>2020-12-10 11:05:55 -0800</date>
            <delta_ts>2020-12-10 14:57:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201210110554.patch</filename>
            <type>text/plain</type>
            <size>64361</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0YTVmYWYxNGM5MWEy
OGEwZTZkOTNhNGEwNDBkN2Q3M2I2ODE5OS4uYmZlOGJmOWU1NDVkZjFmOWIyMTRhYjk4NGNjOGIw
YjlhNzgxY2E1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIwLTEyLTEwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
V2ViU3BlZWNoUmVjb2duaXplclRhc2ssIHdoaWNoIGNvbm5lY3RzIHRvIHNwZWVjaCByZWNvZ25p
dGlvbiBzZXJ2aWNlIHZpYSBTcGVlY2ggZnJhbWV3b3JrIEFQSXMuCisKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcDogTWFrZSBhdWRpbyBjYXB0dXJlIGFuZCBy
ZWNvZ25pdGlvbiBsb2dpYyBzZXBhcmF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml6ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFib3J0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0b3BDYXB0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OmRhdGFDYXB0dXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpz
dGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFi
b3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3Rv
cFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0
UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c2V0U291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BJ
bnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJD
b2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpkYXRh
Q2FwdHVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNv
Z25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2du
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25p
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVy
VGFzay5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hS
ZWNvZ25pemVyVGFzay5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBv
cnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmlu
YWw6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAoLVtX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3BlZWNoUmVjb2duaXplcjphdmFpbGFi
aWxpdHlEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNw
ZWVjaFJlY29nbml0aW9uVGFzazpkaWRIeXBvdGhlc2l6ZVRyYW5zY3JpcHRpb246XSk6CisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHNwZWVjaFJlY29nbml0aW9uVGFzazpkaWRG
aW5pc2hSZWNvZ25pdGlvbjpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sg
c3BlZWNoUmVjb2duaXRpb25UYXNrV2FzQ2FuY2VsbGVkOl0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzayBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkRmluaXNoU3VjY2Vzc2Z1
bGx5Ol0pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6
ZXJUYXNrTW9jay5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2subW06IEFkZGVkLgorICAgICAgICAoLVtXZWJTcGVlY2hS
ZWNvZ25pemVyVGFza01vY2sgaW5pdFdpdGhJZGVudGlmaWVyOmxvY2FsZTpkb011bHRpcGxlUmVj
b2duaXRpb25zOnJlcG9ydEludGVyaW1SZXN1bHRzOm1heEFsdGVybmF0aXZlczpkZWxlZ2F0ZUNh
bGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgYXVkaW9T
YW1wbGVzQXZhaWxhYmxlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2sgYWJvcnRdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIHN0b3Bd
KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0xMi0wOSAgQW5kcmVzIEdvbnphbGV6ICA8YW5k
cmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZvciBmb2N1cyB0cmFja2luZyBpbiBp
c29sYXRlZCB0cmVlIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA5NjliYmJkMWM1MTRlZjVk
ZjM1Nzk1MWJjYTY5MTQ0MDQ3OTkwNDI1Li4wMjcwZGNlZTlmOTliNTg3ZDE1ODA1YjU2ZTg0ZTYw
ZmQ0Zjc2NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMi0x
MCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
cmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHNvZnQgbGlua2luZyB0byBTcGVlY2ggZnJhbWV3b3JrIGFuZCBTUEkuCisKKyAgICAg
ICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvY29jb2Ev
U3BlZWNoU29mdExpbmsuaDogQWRkZWQuCisgICAgICAgICogcGFsL2NvY29hL1NwZWVjaFNvZnRM
aW5rLm1tOiBBZGRlZC4KKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL1NwZWVjaFNQSS5oOiBBZGRl
ZC4KKwogMjAyMC0xMi0wNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgog
CiAgICAgICAgIFtDTWFrZV0gUmVtb3ZlIFdFQktJVF9XUkFQX1NPVVJDRUxJU1QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggMmRiMTVjYWQyNjYyNjI5MjFkYzRlYzUwOWFjNWM3YzBhYzZjZjY5MC4uMDliNWI4MTdmODAx
YTQxM2MyZjEzNGE4ZWFlNTIzMzgyZTJkOTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMC0xMi0xMCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVz
dFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QpOiBXaGVuIHRoZXJlIGlzIGFuIGVycm9yIG9yIGVuZCBl
dmVudCB1cGRhdGUsIHNlcnZlciByZXNldHMgdGhlCisgICAgICAgIHN0YXRlIG9mIFNwZWVjaFJl
Y29nbml6ZXIsIHdoaWNoIHdvdWxkIHRlcm1pbmF0ZSBvbmdvaW5nIHdvcmsuCisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcDogUGFzcyBtb2NrQ2FwdHVyZURldmljZXNFbmFibGVkIHZhbHVlIGZyb20g
d2ViIHBhZ2UgYWxsIHRoZSB3YXkgdG8gCisgICAgICAgIFNwZWVjaFJlY29nbml6ZXIgc28gaXQg
ZGVjaWRlcyB3aGV0aGVyZSB0byB1c2UgYSBtb2NrIHNwZWVjaCByZWNvZ29uaXRpb24gYmFja2Vu
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcik6CisKIDIwMjAtMTEtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBhZGQgc3VwcG9ydCBmb3IgY3JlYXRp
bmcgZXh0ZW5zaW9uIHRhYnMgaW4gV2ViSW5zcGVjdG9yVUkgdmlhIF9XS0luc3BlY3RvckV4dGVu
c2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
emVyLmNwcAppbmRleCBmOTE2ZDJiYTRkMjgwZjc1ODYxMmI1N2NjMTIxOTRmOWI0ZDNiNWI1Li40
NTVjZGQwMmE0ZmY2N2U0YWI0YzI5OThhMWUxMWRiMzgzZWQ5OGRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcApAQCAtMjcsMTAg
KzI3LDEwIEBACiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXplci5oIgogCiAjaW5jbHVkZSAiU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJNZWRpYVV0aWxpdGllcy5oIgotI2luY2x1ZGUg
PHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNDIgKzQ1LDQ4IEBAIHZvaWQgU3BlZWNoUmVjb2duaXpl
cjo6cmVzZXQoKQogICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBz
dG9wQ2FwdHVyZSgpOworICAgIHJlc2V0UmVjb2duaXRpb24oKTsKKyAgICBtX2NsaWVudElkZW50
aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cit9CiAKLSAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2du
aXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCAiQW5vdGhl
ciByZXF1ZXN0IGlzIHN0YXJ0ZWQiIH07Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcigqbV9jbGllbnRJZGVudGlmaWVyLCBlcnJvcikp
Owordm9pZCBTcGVlY2hSZWNvZ25pemVyOjphYm9ydCgpCit7CisgICAgQVNTRVJUKG1fY2xpZW50
SWRlbnRpZmllcik7CisgICAgc3RvcENhcHR1cmUoKTsKKyAgICBhYm9ydFJlY29nbml0aW9uKCk7
Cit9CiAKLSAgICBtX2NsaWVudElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cit2b2lkIFNwZWVj
aFJlY29nbml6ZXI6OnN0b3AoKQoreworICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIpOwor
ICAgIHN0b3BDYXB0dXJlKCk7CisgICAgc3RvcFJlY29nbml0aW9uKCk7CiB9CiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFJlYWx0
aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydChT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZp
ZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgYm9vbCBtb2NrQ2FwdHVyZURl
dmljZXNFbmFibGVkLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGlu
dW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKQogewot
ICAgIEFTU0VSVCghbV9zb3VyY2UpOwotCi0gICAgbV9jbGllbnRJZGVudGlmaWVyID0gaWRlbnRp
ZmllcjsKKyAgICBBU1NFUlQoIW1fY2xpZW50SWRlbnRpZmllcik7CisgICAgbV9jbGllbnRJZGVu
dGlmaWVyID0gY2xpZW50SWRlbnRpZmllcjsKICAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNo
UmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OlN0YXJ0KSk7CiAKLSAgICBzZXRTb3VyY2UoV1RGTW92ZShzb3Vy
Y2UpKTsKKyAgICBpZiAoIXN0YXJ0UmVjb2duaXRpb24obW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxl
ZCwgY2xpZW50SWRlbnRpZmllciwgbG9jYWxlSWRlbnRpZmllciwgY29udGludW91cywgaW50ZXJp
bVJlc3VsdHMsIG1heEFsdGVybmF0aXZlcykpIHsKKyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsICJGYWlsZWQgdG8gc3RhcnQgcmVjb2duaXRpb24i
X3MgfTsKKyAgICAgICAgYXV0byB1cGRhdGUgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRpZmllciwgZXJyb3IpOworICAgICAgICBtX2Rl
bGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0
YXJ0Q2FwdHVyZShXVEZNb3ZlKHNvdXJjZSkpOwogfQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6
OnNldFNvdXJjZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UpCit2b2lkIFNwZWVj
aFJlY29nbml6ZXI6OnN0YXJ0Q2FwdHVyZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3Vy
Y2UpCiB7CiAgICAgYXV0byBkYXRhQ2FsbGJhY2sgPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKV0oY29uc3QgYXV0byYgdGltZSwgY29uc3QgYXV0byYgZGF0YSwgY29uc3QgYXV0byYgZGVz
Y3JpcHRpb24sIGF1dG8gc2FtcGxlQ291bnQpIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAg
ICAgICAgICAgIHJldHVybjsKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBhdXRvIGJ1
ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGRhdGEsIGRlc2NyaXB0aW9uLCBQQUw6OnRv
Q01UaW1lKHRpbWUpLCBzYW1wbGVDb3VudCk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShidWZmZXIp
OwotI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKHRpbWUpOwotICAgICAgICBVTlVTRURfUEFS
QU0oZGF0YSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdGlvbik7Ci0gICAgICAgIFVO
VVNFRF9QQVJBTShzYW1wbGVDb3VudCk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKHdlYWtUaGlzKQor
ICAgICAgICAgICAgd2Vha1RoaXMtPmRhdGFDYXB0dXJlZCh0aW1lLCBkYXRhLCBkZXNjcmlwdGlv
biwgc2FtcGxlQ291bnQpOwogICAgIH07CiAKICAgICBhdXRvIHN0YXRlVXBkYXRlQ2FsbGJhY2sg
PSBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29uc3QgYXV0byYgdXBkYXRl
KSB7CkBAIC04OSw5ICs5NSw2IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6c2V0U291cmNlKFJl
ZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKIAogICAgICAgICBBU1NFUlQobV9jbGll
bnRJZGVudGlmaWVyICYmIG1fY2xpZW50SWRlbnRpZmllci52YWx1ZSgpID09IHVwZGF0ZS5jbGll
bnRJZGVudGlmaWVyKCkpOwogICAgICAgICBtX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsKLQot
ICAgICAgICBpZiAodXBkYXRlLnR5cGUoKSA9PSBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6
OkVycm9yKQotICAgICAgICAgICAgbV9zb3VyY2UgPSBudWxscHRyOwogICAgIH07CiAKICAgICBt
X3NvdXJjZSA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlPigqbV9j
bGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGFDYWxsYmFjayksIFdURk1vdmUoc3RhdGVVcGRh
dGVDYWxsYmFjayksIFdURk1vdmUoc291cmNlKSk7CkBAIC05OSwzMCArMTAyLDQwIEBAIHZvaWQg
U3BlZWNoUmVjb2duaXplcjo6c2V0U291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNv
dXJjZSkKIAogI2VuZGlmCiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcChTaG91bGRHZW5l
cmF0ZUZpbmFsUmVzdWx0IHNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQpCit2b2lkIFNwZWVjaFJl
Y29nbml6ZXI6OnN0b3BDYXB0dXJlKCkKIHsKLSAgICBpZiAoIW1fY2xpZW50SWRlbnRpZmllcikK
KyAgICBpZiAoIW1fc291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9wSW50ZXJuYWwo
KTsKKyAgICBtX3NvdXJjZSA9IG51bGxwdHI7CisgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVj
b2duaXRpb25VcGRhdGVUeXBlOjpBdWRpb0VuZCkpOworfQorCisjaWYgIUhBVkUoU1BFRUNIUkVD
T0dOSVpFUikKIAotICAgIGlmIChzaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0ID09IFNob3VsZEdl
bmVyYXRlRmluYWxSZXN1bHQ6OlllcykgewotICAgICAgICAvLyBUT0RPOiBnZW5lcmF0ZSByZWFs
IHJlc3VsdCB3aGVuIHNwZWVjaCByZWNvZ25pdGlvbiBiYWNrZW5kIGlzIGltcGxlbWVudGVkLgot
ICAgICAgICBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiByZXN1bHREYXRhczsK
LSAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVh
dGVSZXN1bHQoKm1fY2xpZW50SWRlbnRpZmllciwgcmVzdWx0RGF0YXMpKTsKLSAgICB9Cit2b2lk
IFNwZWVjaFJlY29nbml6ZXI6OmRhdGFDYXB0dXJlZChjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3Qp
Cit7Cit9CiAKK2Jvb2wgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlvbihib29sLCBT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
LCBib29sLCBib29sLCB1aW50NjRfdCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBT
cGVlY2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKCkKK3sKICAgICBtX2RlbGVnYXRlQ2Fs
bGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVy
LCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOwotICAgIG1fY2xpZW50SWRlbnRp
ZmllciA9IFdURjo6bnVsbG9wdDsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wSW50
ZXJuYWwoKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2duaXRpb24oKQogewotICAg
IGlmICghbV9zb3VyY2UpCi0gICAgICAgIHJldHVybjsKKyAgICBtX2RlbGVnYXRlQ2FsbGJhY2so
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworfQogCi0gICAgbV9zb3VyY2UgPSBudWxs
cHRyOwotICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3Jl
YXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6QXVk
aW9FbmQpKTsKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbigpCit7CiB9
CiAKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKaW5kZXggZWM1YWMxMzBiOGEwNDc3
ZGE5MWZkMWUxZTdmYzJjNzBhNGEzMjYzYS4uOWUzMjA1NWMzNzg1ZmQ1ODZkMWEyNDNmOGViMTNh
NmFjMDg1ZDkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml6ZXIuaApAQCAtMjgsNiArMjgsMTEgQEAKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25p
dGlvbkNhcHR1cmVTb3VyY2UuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyLmgiCiAKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorT0JKQ19DTEFTUyBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
azsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOwpAQCAtNDAsMTEgKzQ1LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB+U3BlZWNoUmVjb2duaXplcigpID0gZGVmYXVsdDsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiwgYm9vbCBtb2NrQ2FwdHVy
ZURldmljZXNFbmFibGVkLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29u
dGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKTsK
ICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBlbnVtIGNsYXNz
IFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgeyBObywgWWVzIH07Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdG9wKFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgPSBTaG91bGRHZW5lcmF0ZUZp
bmFsUmVzdWx0OjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnQoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3AoKTsKIAogICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXI+IGN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyOyB9CiAKQEAgLTUyLDEyICs1NywyMiBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3RvcEludGVybmFsKCk7CiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgIHZvaWQgc2V0U291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmKTsK
KyAgICB2b2lkIHN0YXJ0Q2FwdHVyZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CiAjZW5k
aWYKKyAgICB2b2lkIHN0b3BDYXB0dXJlKCk7CisgICAgdm9pZCBkYXRhQ2FwdHVyZWQoY29uc3Qg
V1RGOjpNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCBzaXplX3Qgc2FtcGxlQ291bnQpOworICAgIGJvb2wgc3RhcnRSZWNv
Z25pdGlvbihib29sIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbG9jYWxlSWRlbnRpZmll
ciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBhbHRlcm5h
dGl2ZXMpOworICAgIHZvaWQgYWJvcnRSZWNvZ25pdGlvbigpOworICAgIHZvaWQgc3RvcFJlY29n
bml0aW9uKCk7CisgICAgdm9pZCByZXNldFJlY29nbml0aW9uKCk7CiAKICAgICBPcHRpb25hbDxT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBtX2NsaWVudElkZW50
aWZpZXI7CiAgICAgRGVsZWdhdGVDYWxsYmFjayBtX2RlbGVnYXRlQ2FsbGJhY2s7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZT4gbV9zb3VyY2U7CisK
KyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisgICAgUmV0YWluUHRyPFdlYlNwZWVjaFJlY29n
bml6ZXJUYXNrPiBtX3Rhc2s7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJl
Y29nbml6ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1Nw
ZWVjaFJlY29nbml6ZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTQ4NjY2NGZiY2M2ZDc0YTlhZjFj
ZDQyMWRmNjVlZDgyNTVmODg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCkBAIC0wLDAgKzEsODEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNwZWVjaFJlY29n
bml6ZXIuaCIKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCAiTWVkaWFV
dGlsaXRpZXMuaCIKKyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCisjaW1wb3J0
ICJXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaCIKKyNpbXBvcnQgPFNwZWVjaC9TcGVlY2gu
aD4KKyNpbXBvcnQgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpkYXRhQ2FwdHVy
ZWQoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwg
Y29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVD
b3VudCkKK3sKKyAgICBhdXRvIGJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyKGRhdGEs
IGRlc2NyaXB0aW9uLCBQQUw6OnRvQ01UaW1lKHRpbWUpLCBzYW1wbGVDb3VudCk7CisgICAgW21f
dGFzayBhdWRpb1NhbXBsZXNBdmFpbGFibGU6YnVmZmVyLmdldCgpXTsKK30KKworYm9vbCBTcGVl
Y2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKGJvb2wgbW9ja0NhcHR1cmVEZXZpY2VzRW5h
YmxlZCwgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9v
bCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgYWx0ZXJuYXRpdmVzKQoreworICAgIGF1dG8gdGFz
a0NsYXNzID0gbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA/IFtXZWJTcGVlY2hSZWNvZ25pemVy
VGFza01vY2sgY2xhc3NdIDogW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGNsYXNzXTsKKyAgICBt
X3Rhc2sgPSBhZG9wdE5TKFtbdGFza0NsYXNzIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6aWRl
bnRpZmllciBsb2NhbGU6bG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOmNv
bnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6aW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRp
dmVzOmFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOlt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpXShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYgdXBkYXRlKSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9k
ZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7CisgICAgfV0pOworCisgICAgcmV0dXJuICEhbV90YXNr
OworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbigpCit7CisgICAg
QVNTRVJUKG1fdGFzayk7CisgICAgW21fdGFzayBzdG9wXTsKK30KKwordm9pZCBTcGVlY2hSZWNv
Z25pemVyOjphYm9ydFJlY29nbml0aW9uKCkKK3sKKyAgICBBU1NFUlQobV90YXNrKTsKKyAgICBb
bV90YXNrIGFib3J0XTsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0
aW9uKCkKK3sKKyAgICBpZiAoIW1fdGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byB0
YXNrID0gc3RkOjpleGNoYW5nZShtX3Rhc2ssIG51bGxwdHIpOworICAgIFt0YXNrIGFib3J0XTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSEFWRShTUEVFQ0hSRUNP
R05JWkVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2Ev
V2ViU3BlZWNoUmVjb2duaXplclRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzljNDAzOTJkNTE1
NDZkYTc1ZTUzMzAwMmFlMjhmNjU0NjdmYTlhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmgKQEAg
LTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisK
KyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaCIK
KyNpbXBvcnQgIlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCisKK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCisKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1
ZmZlclJlZjsKKworQGNsYXNzIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbDsKKworQGludGVy
ZmFjZSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzayA6IE5TT2JqZWN0IHsKK0Bwcml2YXRlCisgICAg
UmV0YWluUHRyPFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbD4gX2ltcGw7Cit9CisKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKils
b2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyBy
ZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6
KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29u
c3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjazsKKy0gKHZvaWQp
YXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXI7Cist
ICh2b2lkKWFib3J0OworLSAodm9pZClzdG9wOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxM
X0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE1
ZTkyZGU2OTU5OTMxOWQ3NjdkNmQzMDc2OTk2OTJlOTgzMzg0ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJU
YXNrLm1tCkBAIC0wLDAgKzEsMjU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oIgorCisjaWYgSEFWRShTUEVFQ0hS
RUNPR05JWkVSKQorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1NwZWVjaFNQSS5oPgorI2ltcG9y
dCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKworI2ltcG9y
dCA8cGFsL2NvY29hL1NwZWVjaFNvZnRMaW5rLmg+CisKKy8vIFNldCB0aGUgbWF4aW11bSBkdXJh
dGlvbiB0byBiZSBhbiBob3VyOyB3ZSBjYW4gYWRqdXN0IHRoaXMgaWYgbmVlZGVkLgorc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgbWF4aW11bVJlY29nbml0aW9uRHVyYXRpb24gPSA2MCAqIDYwOwor
CitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdlYlNwZWVjaFJlY29nbml6
ZXJUYXNrSW1wbCA6IE5TT2JqZWN0PFNGU3BlZWNoUmVjb2duaXRpb25UYXNrRGVsZWdhdGUsIFNG
U3BlZWNoUmVjb2duaXplckRlbGVnYXRlPiB7CitAcHJpdmF0ZQorICAgIFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgX2lkZW50aWZpZXI7CisgICAg
QmxvY2tQdHI8dm9pZChjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpPiBf
ZGVsZWdhdGVDYWxsYmFjazsKKyAgICBib29sIF9kb011bHRpcGxlUmVjb2duaXRpb25zOworICAg
IHVpbnQ2NF90IF9tYXhBbHRlcm5hdGl2ZXM7CisgICAgUmV0YWluUHRyPFNGU3BlZWNoUmVjb2du
aXplcj4gX3JlY29nbml6ZXI7CisgICAgUmV0YWluUHRyPFNGU3BlZWNoQXVkaW9CdWZmZXJSZWNv
Z25pdGlvblJlcXVlc3Q+IF9yZXF1ZXN0OworICAgIFdlYWtPYmpDUHRyPFNGU3BlZWNoUmVjb2du
aXRpb25UYXNrPiBfdGFzazsKKyAgICBib29sIF9oYXNTZW50U3BlZWNoU3RhcnQ7CisgICAgYm9v
bCBfaGFzU2VudFNwZWVjaEVuZDsKK30KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlNwZWVj
aFJlY29nbml6ZXJUYXNrSW1wbAorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVy
OihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlk
ZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVj
b2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50
ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBk
ZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlJikpY2FsbGJhY2sKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBf
ZG9NdWx0aXBsZVJlY29nbml0aW9ucyA9IGNvbnRpbnVvdXM7CisgICAgX2RlbGVnYXRlQ2FsbGJh
Y2sgPSBjYWxsYmFjazsKKworICAgIGlmICghYWx0ZXJuYXRpdmVzKQorICAgICAgICBhbHRlcm5h
dGl2ZXMgPSAxOworICAgIF9tYXhBbHRlcm5hdGl2ZXMgPSBhbHRlcm5hdGl2ZXM7CisKKyAgICBp
ZiAoIVtsb2NhbGVJZGVudGlmaWVyIGxlbmd0aF0pCisgICAgICAgIF9yZWNvZ25pemVyID0gYWRv
cHROUyhbUEFMOjphbGxvY1NGU3BlZWNoUmVjb2duaXplckluc3RhbmNlKCkgaW5pdF0pOworICAg
IGVsc2UKKyAgICAgICAgX3JlY29nbml6ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jU0ZTcGVlY2hS
ZWNvZ25pemVySW5zdGFuY2UoKSBpbml0V2l0aExvY2FsZTpbTlNMb2NhbGUgbG9jYWxlV2l0aExv
Y2FsZUlkZW50aWZpZXI6bG9jYWxlSWRlbnRpZmllcl1dKTsKKyAgICBpZiAoIV9yZWNvZ25pemVy
KSB7CisgICAgICAgIFtzZWxmIHJlbGVhc2VdOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0K
KworICAgIGlmICghW19yZWNvZ25pemVyIGlzQXZhaWxhYmxlXSkgeworICAgICAgICBbc2VsZiBy
ZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBbX3JlY29nbml6ZXIg
c2V0RGVsZWdhdGU6c2VsZl07CisKKyAgICBfcmVxdWVzdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NT
RlNwZWVjaEF1ZGlvQnVmZmVyUmVjb2duaXRpb25SZXF1ZXN0SW5zdGFuY2UoKSBpbml0XSk7Cisg
ICAgaWYgKFtfcmVjb2duaXplciBzdXBwb3J0c09uRGV2aWNlUmVjb2duaXRpb25dKQorICAgICAg
ICBbX3JlcXVlc3Qgc2V0UmVxdWlyZXNPbkRldmljZVJlY29nbml0aW9uOllFU107CisgICAgW19y
ZXF1ZXN0IHNldFNob3VsZFJlcG9ydFBhcnRpYWxSZXN1bHRzOmludGVyaW1SZXN1bHRzXTsKKyAg
ICBbX3JlcXVlc3Qgc2V0VGFza0hpbnQ6U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tIaW50RGljdGF0
aW9uXTsKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgW19yZXF1ZXN0IHNldERl
dGVjdE11bHRpcGxlVXR0ZXJhbmNlczpZRVNdOworICAgIFtfcmVxdWVzdCBfc2V0TWF4aW11bVJl
Y29nbml0aW9uRHVyYXRpb246bWF4aW11bVJlY29nbml0aW9uRHVyYXRpb25dOworI2VuZGlmCisK
KyAgICBfdGFzayA9IFtfcmVjb2duaXplciByZWNvZ25pdGlvblRhc2tXaXRoUmVxdWVzdDpfcmVx
dWVzdC5nZXQoKSBkZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9p
ZCljYWxsYmFja1dpdGhSZXN1bHQ6KFNGVHJhbnNjcmlwdGlvbiAqKXRyYW5zY3JpcHRpb24gaXNG
aW5hbDooQk9PTClpc0ZpbmFsCit7CisgICAgYXV0byBzZWdtZW50cyA9IFt0cmFuc2NyaXB0aW9u
IHNlZ21lbnRzXTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHRE
YXRhPiBkYXRhczsKKyAgICBkYXRhcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KF9tYXhBbHRlcm5h
dGl2ZXMgPD0gc2VnbWVudHMuY291bnQgPyBfbWF4QWx0ZXJuYXRpdmVzIDogc2VnbWVudHMuY291
bnQpOworICAgIGZvciAoU0ZUcmFuc2NyaXB0aW9uU2VnbWVudCogc2VnbWVudCBpbiBzZWdtZW50
cykgeworICAgICAgICAvLyBOb3RlIHNlZ21lbnQgY29uZmlkZW5jZSBpcyByZXBvcnRlZCAwIHdo
ZW4gcmVzdWx0IGlzIG5vdCBmaW5hbC4KKyAgICAgICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXN1bHREYXRhIGRhdGE7CisgICAgICAgIGRhdGEuaXNGaW5hbCA9IGlzRmluYWw7CisgICAg
ICAgIGRhdGEuYWx0ZXJuYXRpdmVzLmFwcGVuZChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkFs
dGVybmF0aXZlRGF0YSB7IFtzZWdtZW50IHN1YnN0cmluZ10sIFtzZWdtZW50IGNvbmZpZGVuY2Vd
IH0pOworICAgICAgICBmb3IgKE5TU3RyaW5nKiBzZWdtZW50QWx0ZXJuYXRpdmUgOiBbc2VnbWVu
dCBhbHRlcm5hdGl2ZVN1YnN0cmluZ3NdKSB7CisgICAgICAgICAgICBpZiAoZGF0YS5hbHRlcm5h
dGl2ZXMuc2l6ZSgpID09IF9tYXhBbHRlcm5hdGl2ZXMpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAvLyBGSVhNRTogY2FsY3VsYXRlIG9yIGdldCBhbHRlcm5hdGl2ZSBjb25m
aWRlbmNlIGlmIHBvc3NpYmxlLgorICAgICAgICAgICAgZGF0YS5hbHRlcm5hdGl2ZXMuYXBwZW5k
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhIHsgc2VnbWVudEFsdGVy
bmF0aXZlLCAwLjAgfSk7CisgICAgICAgIH0KKyAgICAgICAgZGF0YXMuYXBwZW5kKFdURk1vdmUo
ZGF0YSkpOworICAgIH0KKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KF9pZGVudGlmaWVyLCBkYXRhcykpOworfQorCist
ICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVm
ZmVyCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBbX3JlcXVlc3QgYXBwZW5k
QXVkaW9TYW1wbGVCdWZmZXI6c2FtcGxlQnVmZmVyXTsKK30KKworLSAodm9pZClhYm9ydAorewor
ICAgIGlmICghX3Rhc2sgfHwgW190YXNrIHN0YXRlXSA9PSBTRlNwZWVjaFJlY29nbml0aW9uVGFz
a1N0YXRlQ29tcGxldGVkIHx8IFtfdGFzayBzdGF0ZV0gPT0gU0ZTcGVlY2hSZWNvZ25pdGlvblRh
c2tTdGF0ZUNhbmNlbGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgW3NlbGYgc2VuZFNwZWVj
aEVuZElmTmVlZGVkXTsKKyAgICBbX3JlcXVlc3QgZW5kQXVkaW9dOworICAgIFtfdGFzayBjYW5j
ZWxdOworfQorCistICh2b2lkKXN0b3AKK3sKKyAgICBpZiAoIV90YXNrIHx8IFtfdGFzayBzdGF0
ZV0gPT0gU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tTdGF0ZUNvbXBsZXRlZCB8fCBbX3Rhc2sgc3Rh
dGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25UYXNrU3RhdGVGaW5pc2hpbmcpCisgICAgICAgIHJl
dHVybjsKKworICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgW19yZXF1ZXN0
IGVuZEF1ZGlvXTsKKyAgICBbX3Rhc2sgZmluaXNoXTsKK30KKworLSAodm9pZClzZW5kU3BlZWNo
U3RhcnRJZk5lZWRlZAoreworICAgIGlmIChfaGFzU2VudFNwZWVjaFN0YXJ0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBfaGFzU2VudFNwZWVjaFN0YXJ0ID0gdHJ1ZTsKKyAgICBfZGVsZWdhdGVD
YWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlm
aWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaFN0YXJ0KSk7
Cit9CisKKy0gKHZvaWQpc2VuZFNwZWVjaEVuZElmTmVlZGVkCit7CisgICAgaWYgKCFfaGFzU2Vu
dFNwZWVjaFN0YXJ0IHx8IF9oYXNTZW50U3BlZWNoRW5kKQorICAgICAgICByZXR1cm47CisKKyAg
ICBfaGFzU2VudFNwZWVjaEVuZCA9IHRydWU7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hFbmQpKTsKK30KKworI3ByYWdtYSBt
YXJrIFNGU3BlZWNoUmVjb2duaXplckRlbGVnYXRlCisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXpl
cjooU0ZTcGVlY2hSZWNvZ25pemVyICopc3BlZWNoUmVjb2duaXplciBhdmFpbGFiaWxpdHlEaWRD
aGFuZ2U6KEJPT0wpYXZhaWxhYmxlCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIGlmIChhdmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghX3Rhc2spCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VO
b3RBbGxvd2VkLCAiU3BlZWNoIHJlY29nbml0aW9uIHNlcnZpY2UgYmVjb21lcyB1bmF2YWlsYWJs
ZSJfcyB9OworICAgIGF1dG8gdXBkYXRlID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGU6OmNyZWF0ZUVycm9yKF9pZGVudGlmaWVyLCBlcnJvcik7CisgICAgX2RlbGVnYXRlQ2FsbGJh
Y2sodXBkYXRlKTsKK30KKworI3ByYWdtYSBtYXJrIFNGU3BlZWNoUmVjb2duaXRpb25UYXNrRGVs
ZWdhdGUKKworLSAodm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2s6KFNGU3BlZWNoUmVjb2duaXRp
b25UYXNrICopdGFzayBkaWRIeXBvdGhlc2l6ZVRyYW5zY3JpcHRpb246KFNGVHJhbnNjcmlwdGlv
biAqKXRyYW5zY3JpcHRpb24KK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
W3NlbGYgc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWRdOworICAgIFtzZWxmIGNhbGxiYWNrV2l0aFJl
c3VsdDp0cmFuc2NyaXB0aW9uIGlzRmluYWw6Tk9dOworfQorCistICh2b2lkKXNwZWVjaFJlY29n
bml0aW9uVGFzazooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrIGRpZEZpbmlzaFJlY29n
bml0aW9uOihTRlNwZWVjaFJlY29nbml0aW9uUmVzdWx0ICopcmVjb2duaXRpb25SZXN1bHQKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgW3NlbGYgY2FsbGJhY2tXaXRoUmVz
dWx0OnJlY29nbml0aW9uUmVzdWx0LmJlc3RUcmFuc2NyaXB0aW9uIGlzRmluYWw6WUVTXTsKKyAg
ICBpZiAoIV9kb011bHRpcGxlUmVjb2duaXRpb25zKSB7CisgICAgICAgIFtzZWxmIHNlbmRTcGVl
Y2hFbmRJZk5lZWRlZF07CisgICAgICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgfQorfQorCistICh2b2lkKXNwZWVjaFJl
Y29nbml0aW9uVGFza1dhc0NhbmNlbGxlZDooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNr
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFtzZWxmIHNlbmRTcGVlY2hF
bmRJZk5lZWRlZF07CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpFbmQpKTsKK30KKworLSAodm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2s6
KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzayBkaWRGaW5pc2hTdWNjZXNzZnVsbHk6KEJP
T0wpc3VjY2Vzc2Z1bGx5Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlm
IChzdWNjZXNzZnVsbHkpIHsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsIHRhc2suZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb259OworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgZXJyb3IpKTsKK30KKwor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViU3BlZWNoUmVjb2duaXplclRhc2sKKworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxv
Y2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJl
cG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoo
dW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25z
dCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaW1w
bCA9IGFkb3B0TlMoW1tXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgYWxsb2NdIGluaXRXaXRo
SWRlbnRpZmllcjppZGVudGlmaWVyIGxvY2FsZTpsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVS
ZWNvZ25pdGlvbnM6Y29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czppbnRlcmltUmVzdWx0
cyBtYXhBbHRlcm5hdGl2ZXM6YWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6Y2FsbGJhY2td
KTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6
KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgoreworICAgIFtfaW1wbCBhdWRpb1NhbXBs
ZXNBdmFpbGFibGU6c2FtcGxlQnVmZmVyXTsKK30KKworLSAodm9pZClhYm9ydAoreworICAgIFtf
aW1wbCBhYm9ydF07Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIFtfaW1wbCBzdG9wXTsKK30K
KworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFz
a01vY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrTW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNTFkYWIwZTM4YmIxOTk3ZGI5NDExZDJh
NjA4ZjI4MDA1N2RlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaApAQCAtMCwwICsxLDUy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCAi
V2ViU3BlZWNoUmVjb2duaXplclRhc2suaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorCitO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAY2xhc3MgV2ViU3BlZWNoUmVjb2duaXplclRhc2tN
b2NrOworCitAaW50ZXJmYWNlIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayA6IFdlYlNwZWVj
aFJlY29nbml6ZXJUYXNrIHsKK0Bwcml2YXRlCisgICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBfaWRlbnRpZmllcjsKKyAgICBCbG9ja1B0cjx2
b2lkKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+IF9kZWxlZ2F0ZUNh
bGxiYWNrOworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hTdGFydDsKKyAgICBib29sIF9oYXNTZW50
U3BlZWNoRW5kOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZp
ZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRp
b25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJl
c3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0
ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
JikpY2FsbGJhY2s7CistICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZm
ZXJSZWYpc2FtcGxlQnVmZmVyOworLSAodm9pZClhYm9ydDsKKy0gKHZvaWQpc3RvcDsKKworQGVu
ZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2su
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25p
emVyVGFza01vY2subW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBlNWZmNWI5ZDYwYjgyODVkNWEyZDUzNWRkMDdh
MjQyYTc5MzA0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQpAQCAtMCwwICsxLDcxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJTcGVlY2hSZWNv
Z25pemVyVGFza01vY2suaCIKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworQGltcGxlbWVudGF0aW9uIFdlYlNwZWVjaFJlY29nbml6ZXJU
YXNrTW9jaworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9j
YWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOihC
T09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMg
bWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxi
YWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikpY2Fs
bGJhY2sKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIF9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBfZGVsZWdhdGVDYWxs
YmFjayA9IGNhbGxiYWNrOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyCit7CisgICAgaWYg
KCFfaGFzU2VudFNwZWVjaFN0YXJ0KSB7CisgICAgICAgIF9oYXNTZW50U3BlZWNoU3RhcnQgPSB0
cnVlOworICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OlNwZWVjaFN0YXJ0KSk7CisgICAgfQorfQorCistICh2b2lkKWFib3J0Cit7Cisg
ICAgaWYgKCFfaGFzU2VudFNwZWVjaEVuZCAmJiBfaGFzU2VudFNwZWVjaFN0YXJ0KSB7CisgICAg
ICAgIF9oYXNTZW50U3BlZWNoRW5kID0gdHJ1ZTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2so
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hFbmQpKTsKKyAgICB9Cisg
ICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNy
ZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpF
bmQpKTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW3NlbGYgYWJvcnRdOworfQorCitAZW5k
CisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNzE1NmFjMmQxOWQwZWIy
ZGUwNjRlN2YwNmI2ZGU5MzNiZTdiZDQwLi4wZGZkNDk5MTc1NjgzYmI5NjUwY2M0MGZmMmJhYTNh
NGMwMWRlOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDQsNiArMTQ0LDkgQEAKIAkJNjNDN0VEQzcyMUFGQUUwNDAwNkE3
Qjk5IC8qIE5TUHJvZ3Jlc3NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDYzRTM2OUY5MjFBRkE4M0YwMDFDMTRCQyAvKiBOU1Byb2dyZXNzU1BJLmgg
Ki87IH07CiAJCTdBMzZEMEY5MjIzQUQ5QUIwMEIwNTIyRSAvKiBDb21tb25DcnlwdG9TUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMzZEMEY4MjIz
QUQ5QUIwMEIwNTIyRSAvKiBDb21tb25DcnlwdG9TUEkuaCAqLzsgfTsKIAkJN0EzQTZBODAyMENB
REI0NzAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBM0E2QTdGMjBDQURCNDYwMDMxN0FBRSAvKiBOU0ltYWdlU1BJ
LmggKi87IH07CisJCTkzQjM4RUJFMjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMzhFQkQy
NTgyMUNCNjAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLmggKi87IH07CisJCTkzQjM4RUMwMjU4
MjFDRDgwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJGMjU4MjFDRDcwMDE5OEU2MyAvKiBTcGVl
Y2hTb2Z0TGluay5tbSAqLzsgfTsKKwkJOTNCMzhFQzIyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVj
aFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
MzhFQzEyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5oICovOyB9OwogCQk5M0RCN0QzNzI0
NjI2QkNEMDA0QkQ4QTMgLyogTlNUZXh0SW5wdXRDb250ZXh0U1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0RCN0QzNjI0NjI2QkNDMDA0QkQ4QTMg
LyogTlNUZXh0SW5wdXRDb250ZXh0U1BJLmggKi87IH07CiAJCTkzREI3RDNBMjQ2MjZGODYwMDRC
RDhBMyAvKiBOU1VuZG9NYW5hZ2VyU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0RCN0QzOTI0NjI2Rjg2MDA0QkQ4QTMgLyogTlNVbmRvTWFuYWdl
clNQSS5oICovOyB9OwogCQlBMTAyNjU4OTFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTAyNjU4
ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmggKi87IH07CkBAIC0zNDAsNiArMzQz
LDkgQEAKIAkJNjNFMzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8qIE5TUHJvZ3Jlc3NTUEkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTlNQcm9ncmVzc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QTM2RDBGODIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbkNyeXB0b1NQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QTNBNkE3RjIwQ0FEQjQ2MDAzMTdBQUUgLyogTlNJbWFnZVNQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0ltYWdlU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJEMjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hT
b2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hTb2Z0TGlu
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVCRjI1ODIxQ0Q3MDAxOThF
NjMgLyogU3BlZWNoU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBTcGVlY2hTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTNCMzhFQzEyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTcGVlY2hTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNEQjdEMzYyNDYyNkJDQzAwNEJEOEEzIC8qIE5TVGV4dElucHV0Q29udGV4dFNQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1RleHRJbnB1dENvbnRleHRTUEkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEQjdEMzkyNDYyNkY4NjAwNEJEOEEzIC8q
IE5TVW5kb01hbmFnZXJTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNV
bmRvTWFuYWdlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U1OTA5QzFG
OTNCRjFFMDA2N0Y4Q0YgLyogVW5lbmNvZGFibGVIYW5kbGluZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
bmVuY29kYWJsZUhhbmRsaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTEs
NiArNTE3LDcgQEAKIAkJCQk0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2ZWFsU1BJLmgg
Ki8sCiAJCQkJNTcwQUI4RjAyMEFFMkU4RDAwQjhCRTg3IC8qIFNlY0tleVByb3h5U1BJLmggKi8s
CiAJCQkJMEMyREExM0MxRjNCRUI0OTAwREJDMzE3IC8qIFNlcnZlcnNTUEkuaCAqLywKKwkJCQk5
M0IzOEVDMTI1ODIxRDIyMDAxOThFNjMgLyogU3BlZWNoU1BJLmggKi8sCiAJCQkJMEMyREExMkIx
RjNCRUI0OTAwREJDMzE3IC8qIFVSTEZvcm1hdHRpbmdTUEkuaCAqLywKIAkJCQkwQzJEQTEzRDFG
M0JFQjQ5MDBEQkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmggKi8sCiAJCQkpOwpAQCAt
NjgyLDYgKzY4OSw4IEBACiAJCQkJMzE2NDdGQUUyNTE3NTlEQjAwMTBGOEZCIC8qIE9wZW5HTFNv
ZnRMaW5rQ29jb2EubW0gKi8sCiAJCQkJQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBhc3NL
aXRTb2Z0TGluay5oICovLAogCQkJCUExRjYzQzlFMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0
U29mdExpbmsubW0gKi8sCisJCQkJOTNCMzhFQkQyNTgyMUNCNjAwMTk4RTYzIC8qIFNwZWVjaFNv
ZnRMaW5rLmggKi8sCisJCQkJOTNCMzhFQkYyNTgyMUNENzAwMTk4RTYzIC8qIFNwZWVjaFNvZnRM
aW5rLm1tICovLAogCQkJCTA3NjExREI0MjQzRkE1QkUwMEQ4MDcwNCAvKiBVc2FnZVRyYWNraW5n
U29mdExpbmsuaCAqLywKIAkJCQkwNzYxMURCNTI0M0ZBNUJGMDBEODA3MDQgLyogVXNhZ2VUcmFj
a2luZ1NvZnRMaW5rLm1tICovLAogCQkJKTsKQEAgLTkwNyw2ICs5MTYsOCBAQAogCQkJCUEzQUI2
RTU2MUYzRDFEREIwMDlDMTRCMSAvKiBTbGVlcERpc2FibGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBM0FCNkU2MTFGM0QxRTM5MDA5QzE0QjEgLyogU2xlZXBEaXNhYmxlckNvY29hLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMzc4OEU5ODFGMDVCNkNFMDA2Nzk0MjUgLyogU291bmQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzQjM4RUJFMjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTNCMzhFQzIyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTExNzVCNDkxRjZBRkY4RTAwQzRCOUYwIC8qIFNwZWVj
aFN5bnRoZXNpc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MjExRjQzQTRDNzAwMkVB
QzAyIC8qIFNRTGl0ZTNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMzA4QjE0MjBBMjE3MDUw
MDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMzcsNiAr
MTA0OCw3IEBACiAJCQkJQTNBQjZFNjAxRjNEMUUzOTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXJD
b2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzc4OEU5QzFGMDVCNzgyMDA2Nzk0MjUgLyog
U291bmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTM3ODhFOUUxRjA1Qjc4RTAwNjc5NDI1IC8q
IFNvdW5kTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTNCMzhFQzAyNTgyMUNEODAwMTk4RTYz
IC8qIFNwZWVjaFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNTcxRjNEMURE
QjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTNBQjZFNjUxRjNEMjE3RjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkyRTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGlu
ay5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
b2NvYS9TcGVlY2hTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9TcGVl
Y2hTb2Z0TGluay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3M2Y3NTQ5OTUwYTBhMzQ5ZjE2M2EwYThiZDk5NmM4
ZTMyZjgwZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1NwZWVjaFNvZnRMaW5rLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0IDxTcGVlY2gvU3Bl
ZWNoLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09S
S19GT1JfSEVBREVSKFBBTCwgU3BlZWNoKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBB
TCwgU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURF
UihQQUwsIFNGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KTsKK1NPRlRfTElOS19DTEFTU19GT1Jf
SEVBREVSKFBBTCwgU0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVzdCk7CitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNoUmVjb2duaXRpb25UYXNrKTsKK1NP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgU0ZTcGVlY2hSZWNvZ25pemVyKTsKK1NPRlRf
TElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgU0ZUcmFuc2NyaXB0aW9uU2VnbWVudCk7CitTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGVHJhbnNjcmlwdGlvbik7CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5t
bSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDZhMDMxZTg2M2I5ZDhkNTYxYmZmNjY4Mzg4MzZiMDZjNmY3ODk3MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsubW0K
QEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYg
SEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+CisjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNF
KFBBTCwgU3BlZWNoKQorCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCwgUEFMX0VYUE9SVCk7CitTT0ZU
X0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFNwZWVjaCwgU0ZTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3QsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoQXVkaW9CdWZmZXJSZWNvZ25pdGlv
blJlcXVlc3QsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9F
WFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXRpb25UYXNrLCBQQUxfRVhQT1JUKTsK
K1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBTRlNw
ZWVjaFJlY29nbml6ZXIsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGVHJhbnNjcmlwdGlvblNlZ21lbnQsIFBBTF9FWFBP
UlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gs
IFNGVHJhbnNjcmlwdGlvbiwgUEFMX0VYUE9SVCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9jb2NvYS9TcGVlY2hTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTdjYmRiNzNlYjFh
NDAxY2FkODI0ZDEzYTFmYjIxZDk0NzNjYzhjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmgKQEAgLTAsMCArMSw0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKKyNpZiBVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQorCisjaW1wb3J0IDxTcGVlY2gvU0ZTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Rf
UHJpdmF0ZS5oPgorCisjZWxzZQorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJm
YWNlIFNGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0ICgpCitAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCBkZXRlY3RNdWx0aXBsZVV0dGVyYW5jZXM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0
dGVyPV9tYXhpbXVtUmVjb2duaXRpb25EdXJhdGlvbiwgc2V0dGVyPV9zZXRNYXhpbXVtUmVjb2du
aXRpb25EdXJhdGlvbjopIE5TVGltZUludGVydmFsIF9tYXhpbXVtUmVjb2duaXRpb25EdXJhdGlv
bjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCisKKyNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAppbmRleCA4Zjk5ZjlhMTkxOGM5NTU4ODVmYjJhY2I5OWM4ZDFhNzUy
NjVhYTAzLi5iNjBlNTMyZGIzYWM5MWZlMDFhMDMzMmQ4YjU1NTliMDJkZDE0MjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKQEAgLTkyLDYgKzkyLDkgQEAgTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwCitNb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0K
K01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCitNb2R1bGVz
L3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KIGFjY2Vzc2liaWxpdHkvaW9z
L0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmpl
Y3RJT1MubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBiZTRmY2FmZjlmYzkyNTliNDZjMzUzOWI2ZWE5M2FmNGFkYzdmYjI1Li41
NDU5OTM0Mzc3Njk4MWM4MDcyN2QxZDQ2MWU3ZjFmMzVjMGM0ZTUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yODE1LDYgKzI4
MTUsOCBAQAogCQk5M0E4MDYxRTFFMDNCNTg1MDA4QTFGMjYgLyogSlNEb3VibGVSYW5nZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBODA2MUExRTAz
QjU4NTAwOEExRjI2IC8qIEpTRG91YmxlUmFuZ2UuaCAqLzsgfTsKIAkJOTNBODA2MjAxRTAzQjU4
NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0E4MDYxQzFFMDNCNTg1MDA4QTFGMjYgLyogSlNMb25nUmFuZ2Uu
aCAqLzsgfTsKIAkJOTNCMkQ4MTYwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyRDgx
NTBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0IzOEVDMzI1ODIxREI0MDAxOThF
NjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAvKiBXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzay5oICovOyB9OworCQk5M0IzOEVDNDI1ODIxREI3MDAxOThFNjMgLyog
V2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyogV2ViU3BlZWNo
UmVjb2duaXplclRhc2tNb2NrLmggKi87IH07CiAJCTkzQjZBMEU2MEIwQkNBNUMwMEY1MDI3QSAv
KiBDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBENjQwOUVCMEM3
QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGlu
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkz
QjcwRDZBMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjcwRDRFMDlFQjBDN0MwMDlEODQ2
OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTE1MjcsNiArMTE1MjksMTEgQEAKIAkJOTNBODA2MUMxRTAzQjU4
NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTG9uZ1JhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjJEODE1
MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdWRkZW5UZXJtaW5hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0IyRDgxNzBGOTkyMEVFMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdWRkZW5UZXJtaW5h
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQjgyNTgyMTg5OTAw
MTk4RTYzIC8qIFNwZWVjaFJlY29nbml6ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml6ZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQjkyNTgyMTkzQTAwMTk4RTYzIC8qIFdlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrTW9jay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNCMzhFQkEyNTgyMTkzQjAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJU
YXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6
ZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJCMjU4MjE5M0Qw
MDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJDMjU4MjE5M0UwMDE5OEU2MyAvKiBXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0I2QTBFNTBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQmluZGluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ0RDA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVu
dExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V2
ZW50TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMxNzMsNiAr
MjMxODAsMTggQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQk5M0IzOEVCNjI1ODIxODMzMDAxOThFNjMgLyogY29jb2EgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTkzQjM4RUI4MjU4MjE4OTkwMDE5OEU2
MyAvKiBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gKi8sCisJCQkJOTNCMzhFQkEyNTgyMTkzQjAw
MTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggKi8sCisJCQkJOTNCMzhFQkMyNTgy
MTkzRTAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tICovLAorCQkJCTkzQjM4
RUJCMjU4MjE5M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaCAqLywK
KwkJCQk5M0IzOEVCOTI1ODIxOTNBMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tN
b2NrLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCTkzQzA5QTgyMEIwNjRGMDUwMDVBQkQ0RCAvKiBtYWMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjU3MDUsNiArMjU3MjQsNyBA
QAogCQlBQTJBNUFCNzE2QTQ4NUE0MDA5NzVBMjUgLyogc3BlZWNoICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5M0IzOEVCNjI1ODIxODMzMDAxOThFNjMg
LyogY29jb2EgKi8sCiAJCQkJQUEyQTVBQkExNkE0ODVENTAwOTc1QTI1IC8qIERPTVdpbmRvdytT
cGVlY2hTeW50aGVzaXMuaWRsICovLAogCQkJCUFBMkE1QUI4MTZBNDg1RDUwMDk3NUEyNSAvKiBE
T01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwICovLAogCQkJCUFBMkE1QUI5MTZBNDg1RDUwMDk3
NUEyNSAvKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuaCAqLywKQEAgLTM1Mjc2LDYgKzM1Mjk2
LDggQEAKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRI
YW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTEyRTlGMjRGRTc0RTIwMDkzRkZCNCAv
KiBXZWJTb2NrZXRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0IzOEVDMzI1ODIx
REI0MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCBpbiBIZWFkZXJzICovLAor
CQkJCTkzQjM4RUM0MjU4MjFEQjcwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCTFGODc1NkIyMUUyMkMzMzUwMDQyQzQwRCAvKiBXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVBNDU2
MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjU4MEZBMzE0OTY5MzkxMDBGQjVCRDggLyogV2ViVGlsZWRCYWNraW5nTGF5ZXIu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4IGQ2ZmE4OWM1NDgzMjYyYzEwMWEyNmQwMzAzMjM1
NTcyMDZiMTJmNjEuLjYwNWZmNjBmMTVkNDZmZTkxZDc5YjVmZWJkN2I0ZmE0MjZhNGI3M2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZl
ci5jcHAKQEAgLTM2LDIyICszNiwyMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorCitTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Np
b25DaGVja2VyLCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFi
bGVkJiYgY2hlY2tJZkVuYWJsZWQKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiBwZXJtaXNzaW9uQ2hl
Y2tlciwgUmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uJiYgZnVuY3Rpb24pCisgICAg
LCBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24mJiBmdW5jdGlvbgorI2VuZGlmCisg
ICAgKQogICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fcGVybWlzc2lvbkNoZWNrZXIoV1RGTW92ZShw
ZXJtaXNzaW9uQ2hlY2tlcikpCisgICAgLCBtX2NoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFi
bGVkKFdURk1vdmUoY2hlY2tJZkVuYWJsZWQpKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgLCBtX3JlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9u
KSkKKyNlbmRpZgogewogfQotI2Vsc2UKLVNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVj
aFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blBlcm1pc3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIpCi0gICAgOiBtX2Nvbm5lY3Rp
b24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQot
ICAgICwgbV9wZXJtaXNzaW9uQ2hlY2tlcihXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSkKLXsK
LX0KLSNlbmRpZgogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0
cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmln
aW4pCiB7CkBAIC04MCwxMSArNzksMTEgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbmkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGhhbmRsZVJlcXVlc3QoaWRlbnRp
Zmllcik7CisgICAgICAgIGhhbmRsZVJlcXVlc3QoKndlYWtSZXF1ZXN0KTsKICAgICB9KTsKIH0K
IAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZp
ZXIpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1fcmVjb2du
aXplcikgewogICAgICAgICBtX3JlY29nbml6ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml6ZXI+KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiB1
cGRhdGUpIHsKQEAgLTk1LDE2ICs5NCwyOSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbgogICAg
ICAgICAgICAgaWYgKCFtX3JlcXVlc3RzLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAgICAgc2VuZFVwZGF0ZSh1cGRhdGUpOwor
CiAgICAgICAgICAgICBhdXRvIHR5cGUgPSB1cGRhdGUudHlwZSgpOwotICAgICAgICAgICAgaWYg
KHR5cGUgPT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciB8fCB0
eXBlID09IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKQotICAgICAg
ICAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOworICAgICAgICAg
ICAgaWYgKHR5cGUgIT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJv
ciAmJiB0eXBlICE9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgc2VuZFVwZGF0ZSh1cGRhdGUp
OworICAgICAgICAgICAgaWYgKG1faXNSZXNldHRpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgbV9pc1Jlc2V0dGluZyA9IHRydWU7CisKKyAgICAgICAgICAgIG1fcmVj
b2duaXplci0+cmVzZXQoKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElk
ZW50aWZpZXIpOworICAgICAgICAgICAgbV9pc1Jlc2V0dGluZyA9IGZhbHNlOwogICAgICAgICB9
KTsKICAgICB9Ci0gICAgCi0gICAgbV9yZWNvZ25pemVyLT5yZXNldCgpOwogCisgICAgaWYgKGF1
dG8gY3VycmVudENsaWVudElkZW50aWZpZXIgPSBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJ
ZGVudGlmaWVyKCkpIHsKKyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRl
ZCwgIkFub3RoZXIgcmVxdWVzdCBpcyBzdGFydGVkIl9zIH07CisgICAgICAgIHNlbmRVcGRhdGUo
KmN1cnJlbnRDbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGU6OkVycm9yLCBlcnJvcik7CisgICAgICAgIG1fcmVjb2duaXplci0+cmVzZXQoKTsKKyAg
ICB9CisKKyAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSByZXF1ZXN0LmNsaWVudElkZW50aWZp
ZXIoKTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGF1dG8gc291cmNlT3JFcnJvciA9
IG1fcmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uKCk7CiAgICAgaWYgKCFzb3VyY2VP
ckVycm9yKSB7CkBAIC0xMTIsMTAgKzEyNCwxMiBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbgog
ICAgICAgICBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVh
dGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9y
IHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkF1ZGlvQ2FwdHVyZSwgc291
cmNlT3JFcnJvci5lcnJvck1lc3NhZ2UgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IG1fcmVjb2duaXplci0+c3RhcnQoY2xpZW50SWRlbnRpZmllciwgc291cmNlT3JFcnJvci5zb3Vy
Y2UoKSk7CisKKyAgICBib29sIG1vY2tEZXZpY2VDYXB0dXJlc0VuYWJsZWQgPSBtX2NoZWNrSWZN
b2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCk7CisgICAgbV9yZWNvZ25pemVyLT5zdGFydChjbGll
bnRJZGVudGlmaWVyLCBzb3VyY2VPckVycm9yLnNvdXJjZSgpLCBtb2NrRGV2aWNlQ2FwdHVyZXNF
bmFibGVkLCByZXF1ZXN0LmxhbmcoKSwgcmVxdWVzdC5jb250aW51b3VzKCksIHJlcXVlc3QuaW50
ZXJpbVJlc3VsdHMoKSwgcmVxdWVzdC5tYXhBbHRlcm5hdGl2ZXMoKSk7CiAjZWxzZQogICAgIG1f
cmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwotICAgIHNlbmRVcGRhdGUoY2xpZW50
SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciwg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsICJBdWRpbyBjYXB0dXJlIGlzIG5vdCBpbXBsZW1l
bnRlZCJ9KTsKKyAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
RXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVkaW9DYXB0dXJl
LCAiQXVkaW8gY2FwdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQiX3MgfSk7CiAjZW5kaWYKIH0KIApA
QCAtMTM1LDcgKzE0OSw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkCiB7CiAgICAgTUVTU0FH
RV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsKICAgICBpZiAobV9yZWNvZ25pemVyICYmIG1fcmVj
b2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVyKSB7
Ci0gICAgICAgIG1fcmVjb2duaXplci0+c3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpT
aG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0OjpObyk7CisgICAgICAgIG1fcmVjb2duaXplci0+YWJv
cnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ4LDcgKzE2Miw3IEBAIHZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpCiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsK
ICAgICBpZiAobV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcikpIHsKICAgICAgICAg
aWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlmaWVy
KCkgPT0gY2xpZW50SWRlbnRpZmllcikKLSAgICAgICAgICAgIG1fcmVjb2duaXplci0+c3RvcCgp
OworICAgICAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXgg
ZWQ2NzI2NGFhMTMxZTFlMTQyMWVhYTQxNGQ0MTcxM2M2OTVkODMyNC4uYzhiN2NjY2YwM2RkZjk4
NDFlODEwZTljNDJiNGE0ZGY0NjExMTkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC00NywxNSArNDcsMTYgQEAgZW51bSBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2w7CiAKIHVzaW5n
IFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyOwogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciA9IEZ1bmN0aW9u
PHZvaWQoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpPjsKK3VzaW5nIFNwZWVj
aFJlY29nbml0aW9uQ2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBGdW5jdGlvbjxi
b29sKCk+OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgdXNpbmcgUmVh
bHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uID0gRnVuY3Rpb248V2ViQ29yZTo6Q2FwdHVy
ZVNvdXJjZU9yRXJyb3IoKT47Ci0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyLCBTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYsIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVG
dW5jdGlvbiYmKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0
aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja0NhcHR1
cmVEZXZpY2VzRW5hYmxlZCYmLCBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24mJik7
CiAjZWxzZQotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uQ2hlY2tlciYmKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBD
OjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lm
TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJp
bmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90
IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpOwpAQCAtNjUsNyArNjYs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvclJl
cXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7Ci0gICAgdm9pZCBoYW5k
bGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIpOworICAgIHZvaWQgaGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3QmKTsKICAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9IFdU
Rjo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVz
dWx0RGF0YT4+ID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIHNlbmRVcGRhdGUoY29uc3QgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKTsKIApAQCAtODEsNiArODIsOCBAQCBwcml2
YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVxdWVzdD4+IG1fcmVxdWVzdHM7CiAgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hl
Y2tlciBtX3Blcm1pc3Npb25DaGVja2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyPiBtX3JlY29nbml6ZXI7CisgICAgU3BlZWNoUmVjb2duaXRpb25DaGVj
a0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCBtX2NoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNF
bmFibGVkOworICAgIGJvb2wgbV9pc1Jlc2V0dGluZyB7IGZhbHNlIH07CiAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbiBtX3Jl
YWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGFkZWU1ZmI5ZTdiYmQ4OGMwODhlNjllZjRlNTU2
ZWYzYThkMGQ1MzYuLmU4ZTAwN2U2NGRmNWY3NmZmZTZiZDVhZWYxZmQzZDc4NmUxNDk4ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTcxNywy
MCArMTcxNywyNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudAogCiAgICAgQVNTRVJUKCFtX3Nw
ZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBhdXRv
JiBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAu
YWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBzcGVlY2hSZWNv
Z25pdGlvblNlcnZlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VS
ZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIsIFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRh
cmdldFBhZ2UpXShhdXRvJiBvcmlnaW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJs
ZSB7CisgICAgYXV0byBwZXJtaXNzaW9uQ2hlY2tlciA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRy
KHRhcmdldFBhZ2UpXShhdXRvJiBvcmlnaW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1BhZ2UpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHdlYWtQYWdlLT5yZXF1ZXN0U3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotICAgIH0KKyAgICB9OworICAgIGF1dG8gY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0Vu
YWJsZWQgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oKSB7CisgICAgICAg
IHJldHVybiAhd2Vha1BhZ2UgfHwgd2Vha1BhZ2UtPnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVE
ZXZpY2VzRW5hYmxlZCgpOworICAgIH07CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAg
ICwgW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkgeworICAgIGF1dG8gY3Jl
YXRlUmVhbHRpbWVNZWRpYVNvdXJjZSA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBh
Z2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHdlYWtQYWdlID8gd2Vha1BhZ2UtPmNyZWF0ZVJlYWx0
aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZWNvZ25pdGlvbigpIDogQ2FwdHVyZVNvdXJjZU9yRXJy
b3IgeyAiUGFnZSBpcyBpbnZhbGlkIiB9OwotICAgIH0KKyAgICB9OworICAgIHNwZWVjaFJlY29n
bml0aW9uU2VydmVyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJl
ZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllciwgV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlciks
IFdURk1vdmUoY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpLCBXVEZNb3ZlKGNyZWF0
ZVJlYWx0aW1lTWVkaWFTb3VyY2UpKTsKKyNlbHNlCisgICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0
aW9uKCkpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSwgV1RGTW92ZShj
aGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCkpOwogI2VuZGlmCi0gICAgKTsKKwogICAg
IGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllciwgKnNwZWVjaFJlY29nbml0aW9uU2VydmVy
KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415936</attachid>
            <date>2020-12-10 14:57:29 -0800</date>
            <delta_ts>2020-12-11 11:26:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201210145729.patch</filename>
            <type>text/plain</type>
            <size>65390</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0YTVmYWYxNGM5MWEy
OGEwZTZkOTNhNGEwNDBkN2Q3M2I2ODE5OS4uZDI4NDMxOGNhZDA3Njk3MDM3OTkzNTAwMzJiMjVl
NGZmZjY5MGRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIwLTEyLTEwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
V2ViU3BlZWNoUmVjb2duaXplclRhc2ssIHdoaWNoIGNvbm5lY3RzIHRvIHNwZWVjaCByZWNvZ25p
dGlvbiBzZXJ2aWNlIHVzaW5nIFNwZWVjaCBmcmFtZXdvcmsgQVBJcy4KKworICAgICAgICBNYW51
YWxseSB0ZXN0ZWQgaW4gTWluaUJyb3dzZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9T
cGVlY2hSZWNvZ25pemVyLmNwcDogU2VwYXJhdGUgYXVkaW8gY2FwdHVyZSBhbmQgcmVjb2duaXRp
b24uCisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldCk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjphYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6
ZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0Q2Fw
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdG9wQ2FwdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpkYXRhQ2FwdHVyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnNldFNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdG9wSW50ZXJuYWwpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0UmVjb2duaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OmFib3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbik6CisgICAgICAgICogTW9kdWxl
cy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2suaDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW06IEFkZGVk
LgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgaW5pdFdpdGhJZGVudGlm
aWVyOmxvY2FsZTpkb011bHRpcGxlUmVjb2duaXRpb25zOnJlcG9ydEludGVyaW1SZXN1bHRzOm1h
eEFsdGVybmF0aXZlczpkZWxlZ2F0ZUNhbGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hS
ZWNvZ25pemVyVGFza0ltcGwgY2FsbGJhY2tXaXRoUmVzdWx0OmlzRmluYWw6XSk6CisgICAgICAg
ICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBhdWRpb1NhbXBsZXNBdmFpbGFibGU6XSk6
CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBhYm9ydF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgc3RvcF0pOgorICAgICAgICAoLVtXZWJT
cGVlY2hSZWNvZ25pemVyVGFza0ltcGwgc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWRdKToKKyAgICAg
ICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF0p
OgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgc2VuZEVuZElmTmVlZGVk
XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzcGVlY2hSZWNvZ25p
emVyOmF2YWlsYWJpbGl0eURpZENoYW5nZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2du
aXplclRhc2tJbXBsIHNwZWVjaFJlY29nbml0aW9uVGFzazpkaWRIeXBvdGhlc2l6ZVRyYW5zY3Jp
cHRpb246XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzcGVlY2hS
ZWNvZ25pdGlvblRhc2s6ZGlkRmluaXNoUmVjb2duaXRpb246XSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzcGVlY2hSZWNvZ25pdGlvblRhc2tXYXNDYW5jZWxsZWQ6
XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzcGVlY2hSZWNvZ25p
dGlvblRhc2s6ZGlkRmluaXNoU3VjY2Vzc2Z1bGx5Ol0pOgorICAgICAgICAoLVtXZWJTcGVlY2hS
ZWNvZ25pemVyVGFzayBpbml0V2l0aElkZW50aWZpZXI6bG9jYWxlOmRvTXVsdGlwbGVSZWNvZ25p
dGlvbnM6cmVwb3J0SW50ZXJpbVJlc3VsdHM6bWF4QWx0ZXJuYXRpdmVzOmRlbGVnYXRlQ2FsbGJh
Y2s6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYWJvcnRdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgc3RvcF0pOgorICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oOiBBZGRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2subW06IEFkZGVkLgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgaW5p
dFdpdGhJZGVudGlmaWVyOmxvY2FsZTpkb011bHRpcGxlUmVjb2duaXRpb25zOnJlcG9ydEludGVy
aW1SZXN1bHRzOm1heEFsdGVybmF0aXZlczpkZWxlZ2F0ZUNhbGxiYWNrOl0pOgorICAgICAgICAo
LVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgYXVkaW9TYW1wbGVzQXZhaWxhYmxlOl0pOgor
ICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgYWJvcnRdKToKKyAgICAgICAg
KC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIHN0b3BdKToKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KwogMjAyMC0xMi0wOSAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IGZvciBmb2N1cyB0cmFja2luZyBpbiBpc29sYXRlZCB0cmVlIG1vZGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwppbmRleCA5NjliYmJkMWM1MTRlZjVkZjM1Nzk1MWJjYTY5MTQ0MDQ3OTkw
NDI1Li4wMjcwZGNlZTlmOTliNTg3ZDE1ODA1YjU2ZTg0ZTYwZmQ0Zjc2NTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMi0xMCAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNo
UmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvZnQgbGlua2luZyB0
byBTcGVlY2ggZnJhbWV3b3JrIGFuZCBTUEkuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvY29jb2EvU3BlZWNoU29mdExpbmsuaDogQWRk
ZWQuCisgICAgICAgICogcGFsL2NvY29hL1NwZWVjaFNvZnRMaW5rLm1tOiBBZGRlZC4KKyAgICAg
ICAgKiBwYWwvc3BpL2NvY29hL1NwZWVjaFNQSS5oOiBBZGRlZC4KKwogMjAyMC0xMi0wNyAgRG9u
IE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0gUmVt
b3ZlIFdFQktJVF9XUkFQX1NPVVJDRUxJU1QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmRiMTVjYWQyNjYyNjI5MjFk
YzRlYzUwOWFjNWM3YzBhYzZjZjY5MC4uMzI5YTU3YzNkZjIwZWVmYzkxZDFiMmNkMjYwMGVmMTZk
MjU0ZjBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0xMi0xMCAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcmVjb2duaXplciBm
b3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE5MTQ0NjU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxpZGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorCiAyMDIwLTExLTMwICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gV2ViIEluc3Bl
Y3RvcjogYWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGV4dGVuc2lvbiB0YWJzIGluIFdlYkluc3Bl
Y3RvclVJIHZpYSBfV0tJbnNwZWN0b3JFeHRlbnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5jcHAKaW5kZXggZjkxNmQyYmE0ZDI4MGY3
NTg2MTJiNTdjYzEyMTk0ZjliNGQzYjViNS4uNDU1Y2RkMDJhNGZmNjdlNGFiNGMyOTk4YTFlMTFk
YjM4M2VkOThkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXplci5jcHAKQEAgLTI3LDEwICsyNywxMCBAQAogI2luY2x1ZGUgIlNwZWVjaFJl
Y29nbml6ZXIuaCIKIAogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgiCisjaW5j
bHVkZSA8d3RmL01lZGlhVGltZS5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAi
TWVkaWFVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFW
Rm91bmRhdGlvbi5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDQyICs0
NSw0OCBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0KCkKICAgICBpZiAoIW1fY2xpZW50
SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fc291cmNlKQotICAgICAg
ICBtX3NvdXJjZSA9IG51bGxwdHI7CisgICAgc3RvcENhcHR1cmUoKTsKKyAgICByZXNldFJlY29n
bml0aW9uKCk7CisgICAgbV9jbGllbnRJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworfQogCi0g
ICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlv
bkVycm9yVHlwZTo6QWJvcnRlZCwgIkFub3RoZXIgcmVxdWVzdCBpcyBzdGFydGVkIiB9OwotICAg
IG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3Io
Km1fY2xpZW50SWRlbnRpZmllciwgZXJyb3IpKTsKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJv
cnQoKQoreworICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIpOworICAgIHN0b3BDYXB0dXJl
KCk7CisgICAgYWJvcnRSZWNvZ25pdGlvbigpOworfQogCi0gICAgbV9jbGllbnRJZGVudGlmaWVy
ID0gV1RGOjpudWxsb3B0Owordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wKCkKK3sKKyAgICBB
U1NFUlQobV9jbGllbnRJZGVudGlmaWVyKTsKKyAgICBzdG9wQ2FwdHVyZSgpOworICAgIHN0b3BS
ZWNvZ25pdGlvbigpOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotdm9pZCBTcGVl
Y2hSZWNvZ25pemVyOjpzdGFydChTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKK3Zv
aWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4m
JiBzb3VyY2UsIGJvb2wgbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCwgY29uc3QgU3RyaW5nJiBs
b2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVp
bnQ2NF90IG1heEFsdGVybmF0aXZlcykKIHsKLSAgICBBU1NFUlQoIW1fc291cmNlKTsKLQotICAg
IG1fY2xpZW50SWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgQVNTRVJUKCFtX2NsaWVudElk
ZW50aWZpZXIpOworICAgIG1fY2xpZW50SWRlbnRpZmllciA9IGNsaWVudElkZW50aWZpZXI7CiAg
ICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1f
Y2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTdGFydCkpOwog
Ci0gICAgc2V0U291cmNlKFdURk1vdmUoc291cmNlKSk7CisgICAgaWYgKCFzdGFydFJlY29nbml0
aW9uKG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIGNsaWVudElkZW50aWZpZXIsIGxvY2FsZUlk
ZW50aWZpZXIsIGNvbnRpbnVvdXMsIGludGVyaW1SZXN1bHRzLCBtYXhBbHRlcm5hdGl2ZXMpKSB7
CisgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxvd2VkLCAi
RmFpbGVkIHRvIHN0YXJ0IHJlY29nbml0aW9uIl9zIH07CisgICAgICAgIGF1dG8gdXBkYXRlID0g
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKGNsaWVudElkZW50
aWZpZXIsIGVycm9yKTsKKyAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGFydENhcHR1cmUoV1RGTW92ZShzb3VyY2UpKTsK
IH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzZXRTb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFT
b3VyY2U+JiYgc291cmNlKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydENhcHR1cmUoUmVm
PFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQogewogICAgIGF1dG8gZGF0YUNhbGxiYWNr
ID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHRpbWUsIGNvbnN0
IGF1dG8mIGRhdGEsIGNvbnN0IGF1dG8mIGRlc2NyaXB0aW9uLCBhdXRvIHNhbXBsZUNvdW50KSB7
Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICAgICAgYXV0byBidWZmZXIgPSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZl
cihkYXRhLCBkZXNjcmlwdGlvbiwgUEFMOjp0b0NNVGltZSh0aW1lKSwgc2FtcGxlQ291bnQpOwot
ICAgICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJB
TSh0aW1lKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgICAgICBVTlVTRURfUEFS
QU0oZGVzY3JpcHRpb24pOwotICAgICAgICBVTlVTRURfUEFSQU0oc2FtcGxlQ291bnQpOwotI2Vu
ZGlmCisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kYXRhQ2Fw
dHVyZWQodGltZSwgZGF0YSwgZGVzY3JpcHRpb24sIHNhbXBsZUNvdW50KTsKICAgICB9OwogCiAg
ICAgYXV0byBzdGF0ZVVwZGF0ZUNhbGxiYWNrID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyldKGNvbnN0IGF1dG8mIHVwZGF0ZSkgewpAQCAtODksOSArOTUsNiBAQCB2b2lkIFNw
ZWVjaFJlY29nbml6ZXI6OnNldFNvdXJjZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3Vy
Y2UpCiAKICAgICAgICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmllciAmJiBtX2NsaWVudElkZW50
aWZpZXIudmFsdWUoKSA9PSB1cGRhdGUuY2xpZW50SWRlbnRpZmllcigpKTsKICAgICAgICAgbV9k
ZWxlZ2F0ZUNhbGxiYWNrKHVwZGF0ZSk7Ci0KLSAgICAgICAgaWYgKHVwZGF0ZS50eXBlKCkgPT0g
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvcikKLSAgICAgICAgICAgIG1fc291cmNl
ID0gbnVsbHB0cjsKICAgICB9OwogCiAgICAgbV9zb3VyY2UgPSBtYWtlVW5pcXVlPFNwZWVjaFJl
Y29nbml0aW9uQ2FwdHVyZVNvdXJjZT4oKm1fY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShkYXRh
Q2FsbGJhY2spLCBXVEZNb3ZlKHN0YXRlVXBkYXRlQ2FsbGJhY2spLCBXVEZNb3ZlKHNvdXJjZSkp
OwpAQCAtOTksMzAgKzEwMiw0MCBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnNldFNvdXJjZShS
ZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UpCiAKICNlbmRpZgogCi12b2lkIFNwZWVj
aFJlY29nbml6ZXI6OnN0b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCBzaG91bGRHZW5lcmF0
ZUZpbmFsUmVzdWx0KQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wQ2FwdHVyZSgpCiB7Ci0g
ICAgaWYgKCFtX2NsaWVudElkZW50aWZpZXIpCisgICAgaWYgKCFtX3NvdXJjZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgc3RvcEludGVybmFsKCk7CisgICAgbV9zb3VyY2UgPSBudWxscHRyOwor
ICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCpt
X2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6QXVkaW9FbmQp
KTsKK30KKworI2lmICFIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiAKLSAgICBpZiAoc2hvdWxkR2Vu
ZXJhdGVGaW5hbFJlc3VsdCA9PSBTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0OjpZZXMpIHsKLSAg
ICAgICAgLy8gVE9ETzogZ2VuZXJhdGUgcmVhbCByZXN1bHQgd2hlbiBzcGVlY2ggcmVjb2duaXRp
b24gYmFja2VuZCBpcyBpbXBsZW1lbnRlZC4KLSAgICAgICAgVmVjdG9yPFNwZWVjaFJlY29nbml0
aW9uUmVzdWx0RGF0YT4gcmVzdWx0RGF0YXM7Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayhT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KCptX2NsaWVudElkZW50aWZpZXIs
IHJlc3VsdERhdGFzKSk7Ci0gICAgfQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpkYXRhQ2FwdHVy
ZWQoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KQoreworfQogCitib29sIFNwZWVjaFJlY29nbml6
ZXI6OnN0YXJ0UmVjb2duaXRpb24oYm9vbCwgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QpCit7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25p
dGlvbigpCit7CiAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpFbmQpKTsKLSAgICBtX2NsaWVudElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLXZv
aWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcEludGVybmFsKCkKK3ZvaWQgU3BlZWNoUmVjb2duaXpl
cjo6c3RvcFJlY29nbml0aW9uKCkKIHsKLSAgICBpZiAoIW1fc291cmNlKQotICAgICAgICByZXR1
cm47CisgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVh
dGUoKm1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQp
KTsKK30KIAotICAgIG1fc291cmNlID0gbnVsbHB0cjsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2so
U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkF1ZGlvRW5kKSk7Cit2b2lkIFNwZWVjaFJlY29nbml6
ZXI6OnJlc2V0UmVjb2duaXRpb24oKQorewogfQogCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXplci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXplci5oCmluZGV4IGVjNWFjMTMwYjhhMDQ3N2RhOTFmZDFlMWU3ZmMyYzcwYTRhMzI2M2EuLjll
MzIwNTVjMzc4NWZkNTg2ZDFhMjQzZjhlYjEzYTZhYzA4NWQ5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKQEAgLTI4LDYgKzI4LDEx
IEBACiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVk
ZSAiU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCisjaWYg
SEFWRShTUEVFQ0hSRUNPR05JWkVSKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK09CSkNf
Q0xBU1MgV2ViU3BlZWNoUmVjb2duaXplclRhc2s7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTsKQEAgLTQwLDExICs0NSwxMSBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgflNwZWVjaFJlY29nbml6ZXIoKSA9IGRlZmF1
bHQ7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgUmVmPFJl
YWx0aW1lTWVkaWFTb3VyY2U+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVk
aWFTb3VyY2U+JiYsIGJvb2wgbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCwgY29uc3QgU3RyaW5n
JiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMs
IHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcyk7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc2V0KCk7Ci0gICAgZW51bSBjbGFzcyBTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0IHsg
Tm8sIFllcyB9OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcChTaG91bGRHZW5lcmF0ZUZp
bmFsUmVzdWx0ID0gU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6WWVzKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFib3J0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wKCk7CiAK
ICAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
PiBjdXJyZW50Q2xpZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRp
ZmllcjsgfQogCkBAIC01MiwxMiArNTcsMjIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BJbnRl
cm5hbCgpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB2b2lkIHNldFNvdXJjZShS
ZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CisgICAgdm9pZCBzdGFydENhcHR1cmUoUmVmPFJl
YWx0aW1lTWVkaWFTb3VyY2U+JiYpOwogI2VuZGlmCisgICAgdm9pZCBzdG9wQ2FwdHVyZSgpOwor
ICAgIHZvaWQgZGF0YUNhcHR1cmVkKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90IHNhbXBs
ZUNvdW50KTsKKyAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oYm9vbCBtb2NrQ2FwdHVyZURldmlj
ZXNFbmFibGVkLCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRl
cmltUmVzdWx0cywgdWludDY0X3QgYWx0ZXJuYXRpdmVzKTsKKyAgICB2b2lkIGFib3J0UmVjb2du
aXRpb24oKTsKKyAgICB2b2lkIHN0b3BSZWNvZ25pdGlvbigpOworICAgIHZvaWQgcmVzZXRSZWNv
Z25pdGlvbigpOwogCiAgICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcj4gbV9jbGllbnRJZGVudGlmaWVyOwogICAgIERlbGVnYXRlQ2FsbGJhY2sg
bV9kZWxlZ2F0ZUNhbGxiYWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlv
bkNhcHR1cmVTb3VyY2U+IG1fc291cmNlOworCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQor
ICAgIFJldGFpblB0cjxXZWJTcGVlY2hSZWNvZ25pemVyVGFzaz4gbV90YXNrOworI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmE0ODY2NjRmYmNjNmQ3NGE5YWYxY2Q0MjFkZjY1ZWQ4MjU1Zjg4NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29n
bml6ZXJDb2NvYS5tbQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pemVyLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJF
Q09HTklaRVIpCisKKyNpbXBvcnQgIk1lZGlhVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZS5oIgorI2ltcG9ydCAiV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2Nr
LmgiCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+CisjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9u
L01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQg
U3BlZWNoUmVjb2duaXplcjo6ZGF0YUNhcHR1cmVkKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgYXV0byBidWZmZXIgPSBj
cmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcihkYXRhLCBkZXNjcmlwdGlvbiwgUEFMOjp0b0NNVGltZSh0
aW1lKSwgc2FtcGxlQ291bnQpOworICAgIFttX3Rhc2sgYXVkaW9TYW1wbGVzQXZhaWxhYmxlOmJ1
ZmZlci5nZXQoKV07Cit9CisKK2Jvb2wgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlv
bihib29sIG1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIFNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVu
dGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IGFs
dGVybmF0aXZlcykKK3sKKyAgICBhdXRvIHRhc2tDbGFzcyA9IG1vY2tDYXB0dXJlRGV2aWNlc0Vu
YWJsZWQgPyBbV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIGNsYXNzXSA6IFtXZWJTcGVlY2hS
ZWNvZ25pemVyVGFzayBjbGFzc107CisgICAgbV90YXNrID0gYWRvcHROUyhbW3Rhc2tDbGFzcyBh
bGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIgbG9jYWxlOmxvY2FsZUlkZW50aWZp
ZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRz
OmludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczphbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxs
YmFjazpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29uc3QgU3BlZWNoUmVj
b2duaXRpb25VcGRhdGUmIHVwZGF0ZSkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOworICAg
IH1dKTsKKworICAgIHJldHVybiAhIW1fdGFzazsKK30KKwordm9pZCBTcGVlY2hSZWNvZ25pemVy
OjpzdG9wUmVjb2duaXRpb24oKQoreworICAgIEFTU0VSVChtX3Rhc2spOworICAgIFttX3Rhc2sg
c3RvcF07Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbigpCit7
CisgICAgQVNTRVJUKG1fdGFzayk7CisgICAgW21fdGFzayBhYm9ydF07Cit9CisKK3ZvaWQgU3Bl
ZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbigpCit7CisgICAgaWYgKCFtX3Rhc2spCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFzayA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrLCBu
dWxscHRyKTsKKyAgICBbdGFzayBhYm9ydF07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFz
ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM5YzQwMzkyZDUxNTQ2ZGE3NWU1MzMwMDJhZTI4ZjY1NDY3ZmE5YTMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9X
ZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZS5oIgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCit0eXBlZGVmIHN0cnVjdCBvcGFx
dWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKK0BjbGFzcyBXZWJTcGVlY2hS
ZWNvZ25pemVyVGFza0ltcGw7CisKK0BpbnRlcmZhY2UgV2ViU3BlZWNoUmVjb2duaXplclRhc2sg
OiBOU09iamVjdCB7CitAcHJpdmF0ZQorICAgIFJldGFpblB0cjxXZWJTcGVlY2hSZWNvZ25pemVy
VGFza0ltcGw+IF9pbXBsOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVy
OihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlk
ZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVj
b2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50
ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBk
ZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlJikpY2FsbGJhY2s7CistICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1w
bGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyOworLSAodm9pZClhYm9ydDsKKy0gKHZvaWQpc3RvcDsK
KworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFz
ay5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29n
bml6ZXJUYXNrLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0ZWY5ZWFjYzkzZWVlOGMwZTY2MzgxNzBhY2Y2OTQz
ZjA2YzgzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQpAQCAtMCwwICsxLDI5NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViU3BlZWNoUmVjb2duaXpl
clRhc2suaCIKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9TcGVlY2hTUEkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8
d3RmL1dlYWtPYmpDUHRyLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5o
PgorCisvLyBTZXQgdGhlIG1heGltdW0gZHVyYXRpb24gdG8gYmUgYW4gaG91cjsgd2UgY2FuIGFk
anVzdCB0aGlzIGlmIG5lZWRlZC4KK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGltdW1SZWNv
Z25pdGlvbkR1cmF0aW9uID0gNjAgKiA2MDsKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwor
QGludGVyZmFjZSBXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgOiBOU09iamVjdDxTRlNwZWVj
aFJlY29nbml0aW9uVGFza0RlbGVnYXRlLCBTRlNwZWVjaFJlY29nbml6ZXJEZWxlZ2F0ZT4gewor
QHByaXZhdGUKKyAgICBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyIF9pZGVudGlmaWVyOworICAgIEJsb2NrUHRyPHZvaWQoY29uc3QgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKT4gX2RlbGVnYXRlQ2FsbGJhY2s7CisgICAgYm9vbCBf
ZG9NdWx0aXBsZVJlY29nbml0aW9uczsKKyAgICB1aW50NjRfdCBfbWF4QWx0ZXJuYXRpdmVzOwor
ICAgIFJldGFpblB0cjxTRlNwZWVjaFJlY29nbml6ZXI+IF9yZWNvZ25pemVyOworICAgIFJldGFp
blB0cjxTRlNwZWVjaEF1ZGlvQnVmZmVyUmVjb2duaXRpb25SZXF1ZXN0PiBfcmVxdWVzdDsKKyAg
ICBXZWFrT2JqQ1B0cjxTRlNwZWVjaFJlY29nbml0aW9uVGFzaz4gX3Rhc2s7CisgICAgYm9vbCBf
aGFzU2VudFNwZWVjaFN0YXJ0OworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hFbmQ7CisgICAgYm9v
bCBfaGFzU2VudEVuZDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjoo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVu
dGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29n
bml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVy
aW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVs
ZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSYpKWNhbGxiYWNrOworLSAodm9pZCljYWxsYmFja1dpdGhSZXN1bHQ6KFNGVHJhbnNjcmlw
dGlvbiAqKXRyYW5zY3JpcHRpb24gaXNGaW5hbDooQk9PTClpc0ZpbmFsOworLSAodm9pZClhdWRp
b1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcjsKKy0gKHZv
aWQpYWJvcnQ7CistICh2b2lkKXN0b3A7CistICh2b2lkKXNlbmRTcGVlY2hTdGFydElmTmVlZGVk
OworLSAodm9pZClzZW5kU3BlZWNoRW5kSWZOZWVkZWQ7CistICh2b2lkKXNlbmRFbmRJZk5lZWRl
ZDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBs
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5T
U3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29u
dGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRl
cm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZv
aWQoXikoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjawor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9kb011bHRpcGxlUmVjb2duaXRp
b25zID0gY29udGludW91czsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayA9IGNhbGxiYWNrOworICAg
IF9oYXNTZW50U3BlZWNoU3RhcnQgPSBmYWxzZTsKKyAgICBfaGFzU2VudFNwZWVjaEVuZCA9IGZh
bHNlOworICAgIF9oYXNTZW50RW5kID0gZmFsc2U7CisKKyAgICBpZiAoIWFsdGVybmF0aXZlcykK
KyAgICAgICAgYWx0ZXJuYXRpdmVzID0gMTsKKyAgICBfbWF4QWx0ZXJuYXRpdmVzID0gYWx0ZXJu
YXRpdmVzOworCisgICAgaWYgKCFbbG9jYWxlSWRlbnRpZmllciBsZW5ndGhdKQorICAgICAgICBf
cmVjb2duaXplciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NTRlNwZWVjaFJlY29nbml6ZXJJbnN0YW5j
ZSgpIGluaXRdKTsKKyAgICBlbHNlCisgICAgICAgIF9yZWNvZ25pemVyID0gYWRvcHROUyhbUEFM
OjphbGxvY1NGU3BlZWNoUmVjb2duaXplckluc3RhbmNlKCkgaW5pdFdpdGhMb2NhbGU6W05TTG9j
YWxlIGxvY2FsZVdpdGhMb2NhbGVJZGVudGlmaWVyOmxvY2FsZUlkZW50aWZpZXJdXSk7CisgICAg
aWYgKCFfcmVjb2duaXplcikgeworICAgICAgICBbc2VsZiByZWxlYXNlXTsKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICB9CisKKyAgICBpZiAoIVtfcmVjb2duaXplciBpc0F2YWlsYWJsZV0pIHsK
KyAgICAgICAgW3NlbGYgcmVsZWFzZV07CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisg
ICAgW19yZWNvZ25pemVyIHNldERlbGVnYXRlOnNlbGZdOworCisgICAgX3JlcXVlc3QgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jU0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVzdEluc3Rh
bmNlKCkgaW5pdF0pOworICAgIGlmIChbX3JlY29nbml6ZXIgc3VwcG9ydHNPbkRldmljZVJlY29n
bml0aW9uXSkKKyAgICAgICAgW19yZXF1ZXN0IHNldFJlcXVpcmVzT25EZXZpY2VSZWNvZ25pdGlv
bjpZRVNdOworICAgIFtfcmVxdWVzdCBzZXRTaG91bGRSZXBvcnRQYXJ0aWFsUmVzdWx0czppbnRl
cmltUmVzdWx0c107CisgICAgW19yZXF1ZXN0IHNldFRhc2tIaW50OlNGU3BlZWNoUmVjb2duaXRp
b25UYXNrSGludERpY3RhdGlvbl07CisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAg
IFtfcmVxdWVzdCBzZXREZXRlY3RNdWx0aXBsZVV0dGVyYW5jZXM6WUVTXTsKKyAgICBbX3JlcXVl
c3QgX3NldE1heGltdW1SZWNvZ25pdGlvbkR1cmF0aW9uOm1heGltdW1SZWNvZ25pdGlvbkR1cmF0
aW9uXTsKKyNlbmRpZgorCisgICAgX3Rhc2sgPSBbX3JlY29nbml6ZXIgcmVjb2duaXRpb25UYXNr
V2l0aFJlcXVlc3Q6X3JlcXVlc3QuZ2V0KCkgZGVsZWdhdGU6c2VsZl07CisgICAgcmV0dXJuIHNl
bGY7Cit9CisKKy0gKHZvaWQpY2FsbGJhY2tXaXRoUmVzdWx0OihTRlRyYW5zY3JpcHRpb24gKil0
cmFuc2NyaXB0aW9uIGlzRmluYWw6KEJPT0wpaXNGaW5hbAoreworICAgIGF1dG8gc2VnbWVudHMg
PSBbdHJhbnNjcmlwdGlvbiBzZWdtZW50c107CisgICAgVmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVzdWx0RGF0YT4gZGF0YXM7CisgICAgZGF0YXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShfbWF4QWx0ZXJuYXRpdmVzIDw9IHNlZ21lbnRzLmNvdW50ID8gX21heEFsdGVybmF0aXZl
cyA6IHNlZ21lbnRzLmNvdW50KTsKKyAgICBmb3IgKFNGVHJhbnNjcmlwdGlvblNlZ21lbnQqIHNl
Z21lbnQgaW4gc2VnbWVudHMpIHsKKyAgICAgICAgLy8gTm90ZSBzZWdtZW50IGNvbmZpZGVuY2Ug
aXMgcmVwb3J0ZWQgMCB3aGVuIHJlc3VsdCBpcyBub3QgZmluYWwuCisgICAgICAgIFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YSBkYXRhOworICAgICAgICBkYXRhLmlzRmluYWwg
PSBpc0ZpbmFsOworICAgICAgICBkYXRhLmFsdGVybmF0aXZlcy5hcHBlbmQoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgeyBbc2VnbWVudCBzdWJzdHJpbmddLCBbc2Vn
bWVudCBjb25maWRlbmNlXSB9KTsKKyAgICAgICAgZm9yIChOU1N0cmluZyogc2VnbWVudEFsdGVy
bmF0aXZlIDogW3NlZ21lbnQgYWx0ZXJuYXRpdmVTdWJzdHJpbmdzXSkgeworICAgICAgICAgICAg
aWYgKGRhdGEuYWx0ZXJuYXRpdmVzLnNpemUoKSA9PSBfbWF4QWx0ZXJuYXRpdmVzKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8gRklYTUU6IGNhbGN1bGF0ZSBvciBnZXQg
YWx0ZXJuYXRpdmUgY29uZmlkZW5jZSBpZiBwb3NzaWJsZS4KKyAgICAgICAgICAgIGRhdGEuYWx0
ZXJuYXRpdmVzLmFwcGVuZChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0
YSB7IHNlZ21lbnRBbHRlcm5hdGl2ZSwgMC4wIH0pOworICAgICAgICB9CisgICAgICAgIGRhdGFz
LmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICB9CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJlc3VsdChfaWRlbnRpZmllciwg
ZGF0YXMpKTsKK30KKworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVm
ZmVyUmVmKXNhbXBsZUJ1ZmZlcgoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
W19yZXF1ZXN0IGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyOnNhbXBsZUJ1ZmZlcl07Cit9CisKKy0g
KHZvaWQpYWJvcnQKK3sKKyAgICBpZiAoIV90YXNrIHx8IFtfdGFzayBzdGF0ZV0gPT0gU0ZTcGVl
Y2hSZWNvZ25pdGlvblRhc2tTdGF0ZUNhbmNlbGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKFtfdGFzayBzdGF0ZV0gPT0gU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tTdGF0ZUNvbXBsZXRl
ZCkgeworICAgICAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAgICAgICBbc2Vs
ZiBzZW5kRW5kSWZOZWVkZWRdOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW3NlbGYg
c2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICBbX3JlcXVlc3QgZW5kQXVkaW9dOworICAgIFtf
dGFzayBjYW5jZWxdOworfQorCistICh2b2lkKXN0b3AKK3sKKyAgICBpZiAoIV90YXNrIHx8IFtf
dGFzayBzdGF0ZV0gPT0gU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tTdGF0ZUNhbmNlbGluZykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKFtfdGFzayBzdGF0ZV0gPT0gU0ZTcGVlY2hSZWNvZ25p
dGlvblRhc2tTdGF0ZUNvbXBsZXRlZCkgeworICAgICAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZO
ZWVkZWRdOworICAgICAgICBbc2VsZiBzZW5kRW5kSWZOZWVkZWRdOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgW3NlbGYgc2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICBbX3JlcXVl
c3QgZW5kQXVkaW9dOworICAgIFtfdGFzayBmaW5pc2hdOworfQorCistICh2b2lkKXNlbmRTcGVl
Y2hTdGFydElmTmVlZGVkCit7CisgICAgaWYgKF9oYXNTZW50U3BlZWNoU3RhcnQpCisgICAgICAg
IHJldHVybjsKKworICAgIF9oYXNTZW50U3BlZWNoU3RhcnQgPSB0cnVlOworICAgIF9kZWxlZ2F0
ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50
aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoU3RhcnQp
KTsKK30KKworLSAodm9pZClzZW5kU3BlZWNoRW5kSWZOZWVkZWQKK3sKKyAgICBpZiAoIV9oYXNT
ZW50U3BlZWNoU3RhcnQgfHwgX2hhc1NlbnRTcGVlY2hFbmQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIF9oYXNTZW50U3BlZWNoRW5kID0gdHJ1ZTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaEVuZCkpOworfQorCistICh2b2lk
KXNlbmRFbmRJZk5lZWRlZAoreworICAgIGlmIChfaGFzU2VudEVuZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgX2hhc1NlbnRFbmQgPSB0cnVlOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7Cit9CisKKyNwcmFnbWEgbWFyayBT
RlNwZWVjaFJlY29nbml6ZXJEZWxlZ2F0ZQorCistICh2b2lkKXNwZWVjaFJlY29nbml6ZXI6KFNG
U3BlZWNoUmVjb2duaXplciAqKXNwZWVjaFJlY29nbml6ZXIgYXZhaWxhYmlsaXR5RGlkQ2hhbmdl
OihCT09MKWF2YWlsYWJsZQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBp
ZiAoYXZhaWxhYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIV90YXNrKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25F
cnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxs
b3dlZCwgIlNwZWVjaCByZWNvZ25pdGlvbiBzZXJ2aWNlIGJlY29tZXMgdW5hdmFpbGFibGUiX3Mg
fTsKKyAgICBhdXRvIHVwZGF0ZSA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGVFcnJvcihfaWRlbnRpZmllciwgZXJyb3IpOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKHVw
ZGF0ZSk7Cit9CisKKyNwcmFnbWEgbWFyayBTRlNwZWVjaFJlY29nbml0aW9uVGFza0RlbGVnYXRl
CisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrOihTRlNwZWVjaFJlY29nbml0aW9uVGFz
ayAqKXRhc2sgZGlkSHlwb3RoZXNpemVUcmFuc2NyaXB0aW9uOihTRlRyYW5zY3JpcHRpb24gKil0
cmFuc2NyaXB0aW9uCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFtzZWxm
IHNlbmRTcGVlY2hTdGFydElmTmVlZGVkXTsKKyAgICBbc2VsZiBjYWxsYmFja1dpdGhSZXN1bHQ6
dHJhbnNjcmlwdGlvbiBpc0ZpbmFsOk5PXTsKK30KKworLSAodm9pZClzcGVlY2hSZWNvZ25pdGlv
blRhc2s6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzayBkaWRGaW5pc2hSZWNvZ25pdGlv
bjooU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCAqKXJlY29nbml0aW9uUmVzdWx0Cit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFtzZWxmIGNhbGxiYWNrV2l0aFJlc3VsdDpy
ZWNvZ25pdGlvblJlc3VsdC5iZXN0VHJhbnNjcmlwdGlvbiBpc0ZpbmFsOllFU107CisKKyAgICBp
ZiAoIV9kb011bHRpcGxlUmVjb2duaXRpb25zKSB7CisgICAgICAgIFtzZWxmIHNlbmRTcGVlY2hF
bmRJZk5lZWRlZF07CisgICAgICAgIFtzZWxmIHNlbmRFbmRJZk5lZWRlZF07CisgICAgfQorfQor
CistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFza1dhc0NhbmNlbGxlZDooU0ZTcGVlY2hSZWNv
Z25pdGlvblRhc2sgKil0YXNrCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgW3NlbGYgc2VuZEVuZElmTmVlZGVk
XTsKK30KKworLSAodm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2s6KFNGU3BlZWNoUmVjb2duaXRp
b25UYXNrICopdGFzayBkaWRGaW5pc2hTdWNjZXNzZnVsbHk6KEJPT0wpc3VjY2Vzc2Z1bGx5Cit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChzdWNjZXNzZnVsbHkpIHsK
KyAgICAgICAgW3NlbGYgc2VuZEVuZElmTmVlZGVkXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsIHRhc2suZXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb259OworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgZXJyb3IpKTsKK30K
KworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViU3BlZWNoUmVjb2duaXplclRhc2sKKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcq
KWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3Vz
IHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZl
czoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShj
b25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7CisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBf
aW1wbCA9IGFkb3B0TlMoW1tXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgYWxsb2NdIGluaXRX
aXRoSWRlbnRpZmllcjppZGVudGlmaWVyIGxvY2FsZTpsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlw
bGVSZWNvZ25pdGlvbnM6Y29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czppbnRlcmltUmVz
dWx0cyBtYXhBbHRlcm5hdGl2ZXM6YWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6Y2FsbGJh
Y2tdKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFi
bGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgoreworICAgIFtfaW1wbCBhdWRpb1Nh
bXBsZXNBdmFpbGFibGU6c2FtcGxlQnVmZmVyXTsKK30KKworLSAodm9pZClhYm9ydAoreworICAg
IFtfaW1wbCBhYm9ydF07Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIFtfaW1wbCBzdG9wXTsK
K30KKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVy
VGFza01vY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVj
aFJlY29nbml6ZXJUYXNrTW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNTFkYWIwZTM4YmIxOTk3ZGI5NDEx
ZDJhNjA4ZjI4MDA1N2RlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaApAQCAtMCwwICsx
LDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9y
dCAiV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgor
CitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAY2xhc3MgV2ViU3BlZWNoUmVjb2duaXplclRh
c2tNb2NrOworCitAaW50ZXJmYWNlIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayA6IFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrIHsKK0Bwcml2YXRlCisgICAgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBfaWRlbnRpZmllcjsKKyAgICBCbG9ja1B0
cjx2b2lkKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+IF9kZWxlZ2F0
ZUNhbGxiYWNrOworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hTdGFydDsKKyAgICBib29sIF9oYXNT
ZW50U3BlZWNoRW5kOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50
aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2du
aXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJp
bVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxl
Z2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJikpY2FsbGJhY2s7CistICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVC
dWZmZXJSZWYpc2FtcGxlQnVmZmVyOworLSAodm9pZClhYm9ydDsKKy0gKHZvaWQpc3RvcDsKKwor
QGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2subW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNv
Z25pemVyVGFza01vY2subW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBlNWZmNWI5ZDYwYjgyODVkNWEyZDUzNWRk
MDdhMjQyYTc5MzA0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQpAQCAtMCwwICsxLDcx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJTcGVlY2hS
ZWNvZ25pemVyVGFza01vY2suaCIKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworQGltcGxlbWVudGF0aW9uIFdlYlNwZWVjaFJlY29nbml6
ZXJUYXNrTW9jaworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIg
bG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25z
OihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3Vs
dHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNh
bGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikp
Y2FsbGJhY2sKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIF9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBfZGVsZWdhdGVD
YWxsYmFjayA9IGNhbGxiYWNrOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWF1ZGlv
U2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyCit7CisgICAg
aWYgKCFfaGFzU2VudFNwZWVjaFN0YXJ0KSB7CisgICAgICAgIF9oYXNTZW50U3BlZWNoU3RhcnQg
PSB0cnVlOworICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OlNwZWVjaFN0YXJ0KSk7CisgICAgfQorfQorCistICh2b2lkKWFib3J0Cit7
CisgICAgaWYgKCFfaGFzU2VudFNwZWVjaEVuZCAmJiBfaGFzU2VudFNwZWVjaFN0YXJ0KSB7Cisg
ICAgICAgIF9oYXNTZW50U3BlZWNoRW5kID0gdHJ1ZTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJh
Y2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hFbmQpKTsKKyAgICB9
CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6
OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpFbmQpKTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW3NlbGYgYWJvcnRdOworfQorCitA
ZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNzE1NmFjMmQxOWQw
ZWIyZGUwNjRlN2YwNmI2ZGU5MzNiZTdiZDQwLi4wZGZkNDk5MTc1NjgzYmI5NjUwY2M0MGZmMmJh
YTNhNGMwMWRlOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xNDQsNiArMTQ0LDkgQEAKIAkJNjNDN0VEQzcyMUFGQUUwNDAw
NkE3Qjk5IC8qIE5TUHJvZ3Jlc3NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDYzRTM2OUY5MjFBRkE4M0YwMDFDMTRCQyAvKiBOU1Byb2dyZXNzU1BJ
LmggKi87IH07CiAJCTdBMzZEMEY5MjIzQUQ5QUIwMEIwNTIyRSAvKiBDb21tb25DcnlwdG9TUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBMzZEMEY4
MjIzQUQ5QUIwMEIwNTIyRSAvKiBDb21tb25DcnlwdG9TUEkuaCAqLzsgfTsKIAkJN0EzQTZBODAy
MENBREI0NzAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBM0E2QTdGMjBDQURCNDYwMDMxN0FBRSAvKiBOU0ltYWdl
U1BJLmggKi87IH07CisJCTkzQjM4RUJFMjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMzhF
QkQyNTgyMUNCNjAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLmggKi87IH07CisJCTkzQjM4RUMw
MjU4MjFDRDgwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJGMjU4MjFDRDcwMDE5OEU2MyAvKiBT
cGVlY2hTb2Z0TGluay5tbSAqLzsgfTsKKwkJOTNCMzhFQzIyNTgyMUQyMjAwMTk4RTYzIC8qIFNw
ZWVjaFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNCMzhFQzEyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5oICovOyB9OwogCQk5M0RCN0Qz
NzI0NjI2QkNEMDA0QkQ4QTMgLyogTlNUZXh0SW5wdXRDb250ZXh0U1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0RCN0QzNjI0NjI2QkNDMDA0QkQ4
QTMgLyogTlNUZXh0SW5wdXRDb250ZXh0U1BJLmggKi87IH07CiAJCTkzREI3RDNBMjQ2MjZGODYw
MDRCRDhBMyAvKiBOU1VuZG9NYW5hZ2VyU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0RCN0QzOTI0NjI2Rjg2MDA0QkQ4QTMgLyogTlNVbmRvTWFu
YWdlclNQSS5oICovOyB9OwogCQlBMTAyNjU4OTFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTAy
NjU4ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmggKi87IH07CkBAIC0zNDAsNiAr
MzQzLDkgQEAKIAkJNjNFMzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8qIE5TUHJvZ3Jlc3NTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTlNQcm9ncmVzc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QTM2RDBGODIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbkNyeXB0b1NQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QTNBNkE3RjIwQ0FEQjQ2MDAzMTdBQUUgLyogTlNJbWFnZVNQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0ltYWdlU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJEMjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVl
Y2hTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hTb2Z0
TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVCRjI1ODIxQ0Q3MDAx
OThFNjMgLyogU3BlZWNoU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBTcGVlY2hTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTNCMzhFQzEyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNEQjdEMzYyNDYyNkJDQzAwNEJEOEEzIC8qIE5TVGV4dElucHV0Q29udGV4dFNQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1RleHRJbnB1dENvbnRleHRTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEQjdEMzkyNDYyNkY4NjAwNEJEOEEz
IC8qIE5TVW5kb01hbmFnZXJTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TlNVbmRvTWFuYWdlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0U1OTA5
QzFGOTNCRjFFMDA2N0Y4Q0YgLyogVW5lbmNvZGFibGVIYW5kbGluZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVbmVuY29kYWJsZUhhbmRsaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
MTEsNiArNTE3LDcgQEAKIAkJCQk0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2ZWFsU1BJ
LmggKi8sCiAJCQkJNTcwQUI4RjAyMEFFMkU4RDAwQjhCRTg3IC8qIFNlY0tleVByb3h5U1BJLmgg
Ki8sCiAJCQkJMEMyREExM0MxRjNCRUI0OTAwREJDMzE3IC8qIFNlcnZlcnNTUEkuaCAqLywKKwkJ
CQk5M0IzOEVDMTI1ODIxRDIyMDAxOThFNjMgLyogU3BlZWNoU1BJLmggKi8sCiAJCQkJMEMyREEx
MkIxRjNCRUI0OTAwREJDMzE3IC8qIFVSTEZvcm1hdHRpbmdTUEkuaCAqLywKIAkJCQkwQzJEQTEz
RDFGM0JFQjQ5MDBEQkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmggKi8sCiAJCQkpOwpA
QCAtNjgyLDYgKzY4OSw4IEBACiAJCQkJMzE2NDdGQUUyNTE3NTlEQjAwMTBGOEZCIC8qIE9wZW5H
TFNvZnRMaW5rQ29jb2EubW0gKi8sCiAJCQkJQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNCIC8qIFBh
c3NLaXRTb2Z0TGluay5oICovLAogCQkJCUExRjYzQzlFMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNz
S2l0U29mdExpbmsubW0gKi8sCisJCQkJOTNCMzhFQkQyNTgyMUNCNjAwMTk4RTYzIC8qIFNwZWVj
aFNvZnRMaW5rLmggKi8sCisJCQkJOTNCMzhFQkYyNTgyMUNENzAwMTk4RTYzIC8qIFNwZWVjaFNv
ZnRMaW5rLm1tICovLAogCQkJCTA3NjExREI0MjQzRkE1QkUwMEQ4MDcwNCAvKiBVc2FnZVRyYWNr
aW5nU29mdExpbmsuaCAqLywKIAkJCQkwNzYxMURCNTI0M0ZBNUJGMDBEODA3MDQgLyogVXNhZ2VU
cmFja2luZ1NvZnRMaW5rLm1tICovLAogCQkJKTsKQEAgLTkwNyw2ICs5MTYsOCBAQAogCQkJCUEz
QUI2RTU2MUYzRDFEREIwMDlDMTRCMSAvKiBTbGVlcERpc2FibGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBM0FCNkU2MTFGM0QxRTM5MDA5QzE0QjEgLyogU2xlZXBEaXNhYmxlckNvY29hLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMzc4OEU5ODFGMDVCNkNFMDA2Nzk0MjUgLyogU291bmQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTkzQjM4RUJFMjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCMzhFQzIyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVj
aFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTExNzVCNDkxRjZBRkY4RTAwQzRCOUYwIC8qIFNw
ZWVjaFN5bnRoZXNpc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MjExRjQzQTRDNzAw
MkVBQzAyIC8qIFNRTGl0ZTNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMzA4QjE0MjBBMjE3
MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMzcs
NiArMTA0OCw3IEBACiAJCQkJQTNBQjZFNjAxRjNEMUUzOTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJs
ZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzc4OEU5QzFGMDVCNzgyMDA2Nzk0MjUg
LyogU291bmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTM3ODhFOUUxRjA1Qjc4RTAwNjc5NDI1
IC8qIFNvdW5kTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTNCMzhFQzAyNTgyMUNEODAwMTk4
RTYzIC8qIFNwZWVjaFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZFNTcxRjNE
MUREQjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTNBQjZFNjUxRjNEMjE3RjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyRTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0
TGluay5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jb2NvYS9TcGVlY2hTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9T
cGVlY2hTb2Z0TGluay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3M2Y3NTQ5OTUwYTBhMzQ5ZjE2M2EwYThiZDk5
NmM4ZTMyZjgwZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Nv
Y29hL1NwZWVjaFNvZnRMaW5rLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0IDxTcGVlY2gv
U3BlZWNoLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1F
V09SS19GT1JfSEVBREVSKFBBTCwgU3BlZWNoKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVS
KFBBTCwgU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihQQUwsIFNGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KTsKK1NPRlRfTElOS19DTEFTU19G
T1JfSEVBREVSKFBBTCwgU0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVzdCk7CitT
T0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNoUmVjb2duaXRpb25UYXNrKTsK
K1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgU0ZTcGVlY2hSZWNvZ25pemVyKTsKK1NP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgU0ZUcmFuc2NyaXB0aW9uU2VnbWVudCk7CitT
T0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGVHJhbnNjcmlwdGlvbik7CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9TcGVlY2hTb2Z0TGlu
ay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDZhMDMxZTg2M2I5ZDhkNTYxYmZmNjY4Mzg4MzZiMDZjNmY3ODk3MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsu
bW0KQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisj
aWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNoLmg+Cisj
aW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09V
UkNFKFBBTCwgU3BlZWNoKQorCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCwgUEFMX0VYUE9SVCk7CitT
T0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFNwZWVjaCwgU0ZTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3QsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoQXVkaW9CdWZmZXJSZWNvZ25p
dGlvblJlcXVlc3QsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXRpb25UYXNrLCBQQUxfRVhQT1JU
KTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBT
RlNwZWVjaFJlY29nbml6ZXIsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGVHJhbnNjcmlwdGlvblNlZ21lbnQsIFBBTF9F
WFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVl
Y2gsIFNGVHJhbnNjcmlwdGlvbiwgUEFMX0VYUE9SVCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmggYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9jb2NvYS9TcGVlY2hTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTdjYmRiNzNl
YjFhNDAxY2FkODI0ZDEzYTFmYjIxZDk0NzNjYzhjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmgKQEAgLTAsMCArMSw0NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKKyNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxTcGVlY2gvU0ZTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3RfUHJpdmF0ZS5oPgorCisjZWxzZQorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50
ZXJmYWNlIFNGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0ICgpCitAcHJvcGVydHkgKG5vbmF0b21p
YykgQk9PTCBkZXRlY3RNdWx0aXBsZVV0dGVyYW5jZXM7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Z2V0dGVyPV9tYXhpbXVtUmVjb2duaXRpb25EdXJhdGlvbiwgc2V0dGVyPV9zZXRNYXhpbXVtUmVj
b2duaXRpb25EdXJhdGlvbjopIE5TVGltZUludGVydmFsIF9tYXhpbXVtUmVjb2duaXRpb25EdXJh
dGlvbjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCisKKyNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCA4Zjk5ZjlhMTkxOGM5NTU4ODVmYjJhY2I5OWM4ZDFh
NzUyNjVhYTAzLi5iNjBlNTMyZGIzYWM5MWZlMDFhMDMzMmQ4YjU1NTliMDJkZDE0MjQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTkyLDYgKzkyLDkgQEAgTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tU
aW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVw
bGFjZW1lbnQuY3BwCitNb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2Eu
bW0KK01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCitNb2R1
bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KIE1vZHVsZXMv
d2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KIGFjY2Vzc2liaWxpdHkv
aW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlP
YmplY3RJT1MubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBiZTRmY2FmZjlmYzkyNTliNDZjMzUzOWI2ZWE5M2FmNGFkYzdmYjI1
Li41NDU5OTM0Mzc3Njk4MWM4MDcyN2QxZDQ2MWU3ZjFmMzVjMGM0ZTUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yODE1LDYg
KzI4MTUsOCBAQAogCQk5M0E4MDYxRTFFMDNCNTg1MDA4QTFGMjYgLyogSlNEb3VibGVSYW5nZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBODA2MUEx
RTAzQjU4NTAwOEExRjI2IC8qIEpTRG91YmxlUmFuZ2UuaCAqLzsgfTsKIAkJOTNBODA2MjAxRTAz
QjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E4MDYxQzFFMDNCNTg1MDA4QTFGMjYgLyogSlNMb25nUmFu
Z2UuaCAqLzsgfTsKIAkJOTNCMkQ4MTYwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Iy
RDgxNTBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0IzOEVDMzI1ODIxREI0MDAx
OThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAvKiBXZWJT
cGVlY2hSZWNvZ25pemVyVGFzay5oICovOyB9OworCQk5M0IzOEVDNDI1ODIxREI3MDAxOThFNjMg
LyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyogV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi87IH07CiAJCTkzQjZBMEU2MEIwQkNBNUMwMEY1MDI3
QSAvKiBDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBENjQwOUVC
MEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmlu
ZGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzQjcwRDZBMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjcwRDRFMDlFQjBDN0MwMDlE
ODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTE1MjcsNiArMTE1MjksMTEgQEAKIAkJOTNBODA2MUMxRTAz
QjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTG9uZ1JhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjJE
ODE1MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdWRkZW5UZXJtaW5hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0IyRDgxNzBGOTkyMEVFMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdWRkZW5UZXJt
aW5hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQjgyNTgyMTg5
OTAwMTk4RTYzIC8qIFNwZWVjaFJlY29nbml6ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml6ZXJDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQjkyNTgyMTkzQTAwMTk4RTYzIC8qIFdlYlNwZWVj
aFJlY29nbml6ZXJUYXNrTW9jay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNCMzhFQkEyNTgyMTkzQjAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6
ZXJUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29n
bml6ZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJCMjU4MjE5
M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJDMjU4MjE5M0UwMDE5OEU2MyAvKiBXZWJT
cGVlY2hSZWNvZ25pemVyVGFzay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0I2QTBFNTBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRNZW51Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQmluZGluZy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ0RDA5RUIwQzdDMDA5RDg0NjggLyogSlNF
dmVudExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0V2ZW50TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMxNzMs
NiArMjMxODAsMTggQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQk5M0IzOEVCNjI1ODIxODMzMDAxOThFNjMgLyogY29jb2EgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTkzQjM4RUI4MjU4MjE4OTkwMDE5
OEU2MyAvKiBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gKi8sCisJCQkJOTNCMzhFQkEyNTgyMTkz
QjAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggKi8sCisJCQkJOTNCMzhFQkMy
NTgyMTkzRTAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tICovLAorCQkJCTkz
QjM4RUJCMjU4MjE5M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaCAq
LywKKwkJCQk5M0IzOEVCOTI1ODIxOTNBMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRh
c2tNb2NrLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CiAJCTkzQzA5QTgyMEIwNjRGMDUwMDVBQkQ0RCAvKiBtYWMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjU3MDUsNiArMjU3MjQs
NyBAQAogCQlBQTJBNUFCNzE2QTQ4NUE0MDA5NzVBMjUgLyogc3BlZWNoICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5M0IzOEVCNjI1ODIxODMzMDAxOThF
NjMgLyogY29jb2EgKi8sCiAJCQkJQUEyQTVBQkExNkE0ODVENTAwOTc1QTI1IC8qIERPTVdpbmRv
dytTcGVlY2hTeW50aGVzaXMuaWRsICovLAogCQkJCUFBMkE1QUI4MTZBNDg1RDUwMDk3NUEyNSAv
KiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwICovLAogCQkJCUFBMkE1QUI5MTZBNDg1RDUw
MDk3NUEyNSAvKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuaCAqLywKQEAgLTM1Mjc2LDYgKzM1
Mjk2LDggQEAKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RnJhbWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTEyRTlGMjRGRTc0RTIwMDkzRkZC
NCAvKiBXZWJTb2NrZXRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0IzOEVDMzI1
ODIxREI0MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCBpbiBIZWFkZXJzICov
LAorCQkJCTkzQjM4RUM0MjU4MjFEQjcwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
a01vY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTFGODc1NkIyMUUyMkMzMzUwMDQyQzQwRCAvKiBX
ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxREVB
NDU2MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjU4MEZBMzE0OTY5MzkxMDBGQjVCRDggLyogV2ViVGlsZWRCYWNraW5nTGF5
ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4IGQ2ZmE4OWM1NDgzMjYyYzEwMWEyNmQwMzAz
MjM1NTcyMDZiMTJmNjEuLjYwNWZmNjBmMTVkNDZmZTkxZDc5YjVmZWJkN2I0ZmE0MjZhNGI3M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNl
cnZlci5jcHAKQEAgLTM2LDIyICszNiwyMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorCitT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1p
c3Npb25DaGVja2VyLCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNF
bmFibGVkJiYgY2hlY2tJZkVuYWJsZWQKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiBwZXJtaXNzaW9u
Q2hlY2tlciwgUmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uJiYgZnVuY3Rpb24pCisg
ICAgLCBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24mJiBmdW5jdGlvbgorI2VuZGlm
CisgICAgKQogICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fcGVybWlzc2lvbkNoZWNrZXIoV1RGTW92
ZShwZXJtaXNzaW9uQ2hlY2tlcikpCisgICAgLCBtX2NoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNF
bmFibGVkKFdURk1vdmUoY2hlY2tJZkVuYWJsZWQpKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAgICAgLCBtX3JlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbihXVEZNb3ZlKGZ1bmN0
aW9uKSkKKyNlbmRpZgogewogfQotI2Vsc2UKLVNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIpCi0gICAgOiBtX2Nvbm5l
Y3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQotICAgICwgbV9wZXJtaXNzaW9uQ2hlY2tlcihXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSkK
LXsKLX0KLSNlbmRpZgogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpzdGFydChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElk
ZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVz
dWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBv
cmlnaW4pCiB7CkBAIC04MCwxMSArNzksMTEgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbmkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGhhbmRsZVJlcXVlc3QoaWRl
bnRpZmllcik7CisgICAgICAgIGhhbmRsZVJlcXVlc3QoKndlYWtSZXF1ZXN0KTsKICAgICB9KTsK
IH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIW1fcmVj
b2duaXplcikgewogICAgICAgICBtX3JlY29nbml6ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml6ZXI+KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRv
JiB1cGRhdGUpIHsKQEAgLTk1LDE2ICs5NCwyOSBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbgog
ICAgICAgICAgICAgaWYgKCFtX3JlcXVlc3RzLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAgICAgc2VuZFVwZGF0ZSh1cGRhdGUp
OworCiAgICAgICAgICAgICBhdXRvIHR5cGUgPSB1cGRhdGUudHlwZSgpOwotICAgICAgICAgICAg
aWYgKHR5cGUgPT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciB8
fCB0eXBlID09IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKQotICAg
ICAgICAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOworICAgICAg
ICAgICAgaWYgKHR5cGUgIT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpF
cnJvciAmJiB0eXBlICE9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5k
KQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgc2VuZFVwZGF0ZSh1cGRh
dGUpOworICAgICAgICAgICAgaWYgKG1faXNSZXNldHRpbmcpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgbV9pc1Jlc2V0dGluZyA9IHRydWU7CisKKyAgICAgICAgICAgIG1f
cmVjb2duaXplci0+cmVzZXQoKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVu
dElkZW50aWZpZXIpOworICAgICAgICAgICAgbV9pc1Jlc2V0dGluZyA9IGZhbHNlOwogICAgICAg
ICB9KTsKICAgICB9Ci0gICAgCi0gICAgbV9yZWNvZ25pemVyLT5yZXNldCgpOwogCisgICAgaWYg
KGF1dG8gY3VycmVudENsaWVudElkZW50aWZpZXIgPSBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGll
bnRJZGVudGlmaWVyKCkpIHsKKyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJv
cnRlZCwgIkFub3RoZXIgcmVxdWVzdCBpcyBzdGFydGVkIl9zIH07CisgICAgICAgIHNlbmRVcGRh
dGUoKmN1cnJlbnRDbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OkVycm9yLCBlcnJvcik7CisgICAgICAgIG1fcmVjb2duaXplci0+cmVzZXQoKTsK
KyAgICB9CisKKyAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSByZXF1ZXN0LmNsaWVudElkZW50
aWZpZXIoKTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGF1dG8gc291cmNlT3JFcnJv
ciA9IG1fcmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uKCk7CiAgICAgaWYgKCFzb3Vy
Y2VPckVycm9yKSB7CkBAIC0xMTIsMTAgKzEyNCwxMiBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bgogICAgICAgICBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkF1ZGlvQ2FwdHVyZSwg
c291cmNlT3JFcnJvci5lcnJvck1lc3NhZ2UgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIG1fcmVjb2duaXplci0+c3RhcnQoY2xpZW50SWRlbnRpZmllciwgc291cmNlT3JFcnJvci5z
b3VyY2UoKSk7CisKKyAgICBib29sIG1vY2tEZXZpY2VDYXB0dXJlc0VuYWJsZWQgPSBtX2NoZWNr
SWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCk7CisgICAgbV9yZWNvZ25pemVyLT5zdGFydChj
bGllbnRJZGVudGlmaWVyLCBzb3VyY2VPckVycm9yLnNvdXJjZSgpLCBtb2NrRGV2aWNlQ2FwdHVy
ZXNFbmFibGVkLCByZXF1ZXN0LmxhbmcoKSwgcmVxdWVzdC5jb250aW51b3VzKCksIHJlcXVlc3Qu
aW50ZXJpbVJlc3VsdHMoKSwgcmVxdWVzdC5tYXhBbHRlcm5hdGl2ZXMoKSk7CiAjZWxzZQogICAg
IG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwotICAgIHNlbmRVcGRhdGUoY2xp
ZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJv
ciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsICJBdWRpbyBjYXB0dXJlIGlzIG5vdCBpbXBs
ZW1lbnRlZCJ9KTsKKyAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVkaW9DYXB0
dXJlLCAiQXVkaW8gY2FwdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQiX3MgfSk7CiAjZW5kaWYKIH0K
IApAQCAtMTM1LDcgKzE0OSw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkCiB7CiAgICAgTUVT
U0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsKICAgICBpZiAobV9yZWNvZ25pemVyICYmIG1f
cmVjb2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9PSBjbGllbnRJZGVudGlmaWVy
KSB7Ci0gICAgICAgIG1fcmVjb2duaXplci0+c3RvcChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVy
OjpTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0OjpObyk7CisgICAgICAgIG1fcmVjb2duaXplci0+
YWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ4LDcgKzE2Miw3IEBAIHZv
aWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpCiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVy
KTsKICAgICBpZiAobV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRpZmllcikpIHsKICAgICAg
ICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlm
aWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikKLSAgICAgICAgICAgIG1fcmVjb2duaXplci0+c3Rv
cCgpOworICAgICAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5k
ZXggZWQ2NzI2NGFhMTMxZTFlMTQyMWVhYTQxNGQ0MTcxM2M2OTVkODMyNC4uYzhiN2NjY2YwM2Rk
Zjk4NDFlODEwZTljNDJiNGE0ZGY0NjExMTkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC00NywxNSArNDcsMTYgQEAgZW51
bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbiA6IGJvb2w7CiAKIHVz
aW5nIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyOwogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciA9IEZ1bmN0
aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+JiYpPjsKK3VzaW5nIFNw
ZWVjaFJlY29nbml0aW9uQ2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBGdW5jdGlv
bjxib29sKCk+OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlciA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgdXNpbmcg
UmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uID0gRnVuY3Rpb248V2ViQ29yZTo6Q2Fw
dHVyZVNvdXJjZU9yRXJyb3IoKT47Ci0gICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyLCBTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYsIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVh
dGVGdW5jdGlvbiYmKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmTW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZCYmLCBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24m
Jik7CiAjZWxzZQotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRp
b25QZXJtaXNzaW9uQ2hlY2tlciYmKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8
SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNw
ZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2duaXRpb25DaGVj
a0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdGFy
dChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBT
dHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2
NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYpOwpAQCAtNjUsNyAr
NjYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbkZv
clJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7Ci0gICAgdm9pZCBo
YW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIpOworICAgIHZvaWQgaGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlcXVlc3QmKTsKICAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9
IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0RGF0YT4+ID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIHNlbmRVcGRhdGUoY29uc3Qg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKTsKIApAQCAtODEsNiArODIsOCBAQCBw
cml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uUmVxdWVzdD4+IG1fcmVxdWVzdHM7CiAgICAgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2hlY2tlciBtX3Blcm1pc3Npb25DaGVja2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pemVyPiBtX3JlY29nbml6ZXI7CisgICAgU3BlZWNoUmVjb2duaXRpb25D
aGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCBtX2NoZWNrSWZNb2NrQ2FwdHVyZURldmlj
ZXNFbmFibGVkOworICAgIGJvb2wgbV9pc1Jlc2V0dGluZyB7IGZhbHNlIH07CiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbiBt
X3JlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGFkZWU1ZmI5ZTdiYmQ4OGMwODhlNjllZjRl
NTU2ZWYzYThkMGQ1MzYuLmU4ZTAwN2U2NGRmNWY3NmZmZTZiZDVhZWYxZmQzZDc4NmUxNDk4ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTcx
NywyMCArMTcxNywyNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudAogCiAgICAgQVNTRVJUKCFt
X3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBh
dXRvJiBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJN
YXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBzcGVlY2hS
ZWNvZ25pdGlvblNlcnZlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1h
a2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIsIFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRy
KHRhcmdldFBhZ2UpXShhdXRvJiBvcmlnaW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0
YWJsZSB7CisgICAgYXV0byBwZXJtaXNzaW9uQ2hlY2tlciA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFr
UHRyKHRhcmdldFBhZ2UpXShhdXRvJiBvcmlnaW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1BhZ2UpIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHdlYWtQYWdlLT5yZXF1ZXN0
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwotICAgIH0KKyAgICB9OworICAgIGF1dG8gY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNl
c0VuYWJsZWQgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oKSB7CisgICAg
ICAgIHJldHVybiAhd2Vha1BhZ2UgfHwgd2Vha1BhZ2UtPnByZWZlcmVuY2VzKCkubW9ja0NhcHR1
cmVEZXZpY2VzRW5hYmxlZCgpOworICAgIH07CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
ICAgICwgW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkgeworICAgIGF1dG8g
Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZSA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdl
dFBhZ2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHdlYWtQYWdlID8gd2Vha1BhZ2UtPmNyZWF0ZVJl
YWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZWNvZ25pdGlvbigpIDogQ2FwdHVyZVNvdXJjZU9y
RXJyb3IgeyAiUGFnZSBpcyBpbnZhbGlkIiB9OwotICAgIH0KKyAgICB9OworICAgIHNwZWVjaFJl
Y29nbml0aW9uU2VydmVyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFr
ZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllciwgV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tl
ciksIFdURk1vdmUoY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpLCBXVEZNb3ZlKGNy
ZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2UpKTsKKyNlbHNlCisgICAgc3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25u
ZWN0aW9uKCkpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSwgV1RGTW92
ZShjaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCkpOwogI2VuZGlmCi0gICAgKTsKKwog
ICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllciwgKnNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416017</attachid>
            <date>2020-12-11 11:26:40 -0800</date>
            <delta_ts>2020-12-11 12:47:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201211112639.patch</filename>
            <type>text/plain</type>
            <size>70244</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjJjMmZmNTQ1OWJjOGFj
OGQzMzllZWZkZjg0MjEzMjdmYzlhOWMwNi4uNTAwMjRhMDljM2E2OWIyYzI3NWM5Y2FjYmQ1ODhk
Njk4NzgzMjBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIwLTEyLTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
V2ViU3BlZWNoUmVjb2duaXplclRhc2ssIHdoaWNoIGNvbm5lY3RzIHRvIHNwZWVjaCByZWNvZ25p
dGlvbiBzZXJ2aWNlIHVzaW5nIFNwZWVjaCBmcmFtZXdvcmsgQVBJcy4KKworICAgICAgICBUZXN0
OmZhc3Qvc3BlZWNocmVjb2duaXRpb24vaW9zL3N0YXJ0LXJlY29nbml0aW9uLXRoZW4tc3RvcC5o
dG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BDYXB0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmRhdGFDYXB0dXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFib3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXplcjo6c2V0U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pemVyOjpkYXRhQ2FwdHVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbTogQWRkZWQuCisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBpbml0V2l0aElkZW50aWZpZXI6bG9j
YWxlOmRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6cmVwb3J0SW50ZXJpbVJlc3VsdHM6bWF4QWx0ZXJu
YXRpdmVzOmRlbGVnYXRlQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6
ZXJUYXNrSW1wbCBjYWxsYmFja1dpdGhSZXN1bHQ6aXNGaW5hbDpdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tJbXBsIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZTpdKToKKyAgICAg
ICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIGFib3J0XSk6CisgICAgICAgICgtW1dl
YlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzdG9wXSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrSW1wbCBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAgICAoLVtX
ZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgc2VuZFNwZWVjaEVuZElmTmVlZGVkXSk6CisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzZW5kRW5kSWZOZWVkZWRdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHNwZWVjaFJlY29nbml6ZXI6YXZh
aWxhYmlsaXR5RGlkQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFz
a0ltcGwgc3BlZWNoUmVjb2duaXRpb25UYXNrOmRpZEh5cG90aGVzaXplVHJhbnNjcmlwdGlvbjpd
KToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHNwZWVjaFJlY29nbml0
aW9uVGFzazpkaWRGaW5pc2hSZWNvZ25pdGlvbjpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVj
b2duaXplclRhc2tJbXBsIHNwZWVjaFJlY29nbml0aW9uVGFza1dhc0NhbmNlbGxlZDpdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHNwZWVjaFJlY29nbml0aW9uVGFz
azpkaWRGaW5pc2hTdWNjZXNzZnVsbHk6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6
ZXJUYXNrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpy
ZXBvcnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYXVkaW9TYW1wbGVzQXZhaWxhYmxl
Ol0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBhYm9ydF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzdG9wXSk6CisgICAgICAgICogTW9kdWxlcy9z
cGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmg6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbTog
QWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBpbml0V2l0aElk
ZW50aWZpZXI6bG9jYWxlOmRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6cmVwb3J0SW50ZXJpbVJlc3Vs
dHM6bWF4QWx0ZXJuYXRpdmVzOmRlbGVnYXRlQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrTW9jayBhdWRpb1NhbXBsZXNBdmFpbGFibGU6XSk6CisgICAgICAg
ICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBhYm9ydF0pOgorICAgICAgICAoLVtXZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2sgc3RvcF0pOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIw
LTEyLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQWNjZXB0IGNsaWNrIG1lYXN1cmVtZW50IGRhdGEgZnJvbSBob3N0aW5nIGFwcGxpY2F0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiYjg5MWYxOGJmYTJkMWNkZGZhODc2YjgzZDAxYTNk
ZDVjODk4OGEyLi4wY2E5NGQwZTVmNjY2YTE5NWIyODFhNGFkOTJlOGQ3ZDlmZDAyYWVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMi0xMSAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcmVjb2duaXplciBmb3Ig
U3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvZnQgbGlu
a2luZyB0byBTcGVlY2ggZnJhbWV3b3JrIGFuZCBTUEkuCisKKyAgICAgICAgKiBQQUwueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvY29jb2EvU3BlZWNoU29mdExpbmsu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXplci5oLgorICAgICAgICAqIHBhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5tbTogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oLgorICAg
ICAgICAqIHBhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaC4KKwogMjAyMC0xMi0xMCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQ3JlYXRlIGEgZm9y
bWF0IHJlYWRlciBwbHVnLWluIGZvciBXZWJNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRiOWZkZDhhNGZiMmMxYmZh
OWZlZDA5YjdlM2JkMWQ3MTJlZmIyNDguLjQ2YWE4Zjk1YjFmZjA1MmNlZjYyMDM2NWU3Y2UyNzA2
NjUxNjA5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTItMTEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHJlY29nbml6ZXIg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTk0NTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxOTE0NDY1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKwogMjAyMC0xMi0xMCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFj
Y2VwdCBjbGljayBtZWFzdXJlbWVudCBkYXRhIGZyb20gaG9zdGluZyBhcHBsaWNhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcApp
bmRleCBmOTE2ZDJiYTRkMjgwZjc1ODYxMmI1N2NjMTIxOTRmOWI0ZDNiNWI1Li5mODlkNWUxZDZk
YmRjMTRmOTFjZTg5ZDEzMzNhYWU5ZWRiNzFjMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcApAQCAtMjcsMTAgKzI3LDEwIEBA
CiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXplci5oIgogCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb25VcGRhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICNpbmNsdWRlICJNZWRpYVV0aWxpdGllcy5oIgotI2luY2x1ZGUgPHBhbC9hdmZv
dW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDUsNDIgKzQ1LDQ3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXQo
KQogICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBzdG9wQ2FwdHVy
ZSgpOworICAgIHJlc2V0UmVjb2duaXRpb24oKTsKKyAgICBtX2NsaWVudElkZW50aWZpZXIgPSBX
VEY6Om51bGxvcHQ7Cit9CiAKLSAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25FcnJv
ciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCAiQW5vdGhlciByZXF1ZXN0
IGlzIHN0YXJ0ZWQiIH07Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpjcmVhdGVFcnJvcigqbV9jbGllbnRJZGVudGlmaWVyLCBlcnJvcikpOwordm9pZCBT
cGVlY2hSZWNvZ25pemVyOjphYm9ydCgpCit7CisgICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmll
cik7CisgICAgc3RvcENhcHR1cmUoKTsKKyAgICBhYm9ydFJlY29nbml0aW9uKCk7Cit9CiAKLSAg
ICBtX2NsaWVudElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cit2b2lkIFNwZWVjaFJlY29nbml6
ZXI6OnN0b3AoKQoreworICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIpOworICAgIHN0b3BD
YXB0dXJlKCk7CisgICAgc3RvcFJlY29nbml0aW9uKCk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFT
b3VyY2U+JiYgc291cmNlKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydChTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFJlZjxS
ZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25F
bmFibGVkLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywg
Ym9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKQogewotICAgIEFT
U0VSVCghbV9zb3VyY2UpOwotCi0gICAgbV9jbGllbnRJZGVudGlmaWVyID0gaWRlbnRpZmllcjsK
KyAgICBBU1NFUlQoIW1fY2xpZW50SWRlbnRpZmllcik7CisgICAgbV9jbGllbnRJZGVudGlmaWVy
ID0gY2xpZW50SWRlbnRpZmllcjsKICAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OlN0YXJ0KSk7CiAKLSAgICBzZXRTb3VyY2UoV1RGTW92ZShzb3VyY2UpKTsK
KyAgICBpZiAoIXN0YXJ0UmVjb2duaXRpb24obW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCwg
Y2xpZW50SWRlbnRpZmllciwgbG9jYWxlSWRlbnRpZmllciwgY29udGludW91cywgaW50ZXJpbVJl
c3VsdHMsIG1heEFsdGVybmF0aXZlcykpIHsKKyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9y
VHlwZTo6U2VydmljZU5vdEFsbG93ZWQsICJGYWlsZWQgdG8gc3RhcnQgcmVjb2duaXRpb24iX3Mg
fTsKKyAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGVycm9yKSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RhcnRDYXB0dXJlKFdURk1vdmUoc291cmNl
KSk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c2V0U291cmNlKFJlZjxSZWFsdGltZU1l
ZGlhU291cmNlPiYmIHNvdXJjZSkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJl
KFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBhdXRvIGRhdGFDYWxs
YmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBhdXRvJiB0aW1lLCBj
b25zdCBhdXRvJiBkYXRhLCBjb25zdCBhdXRvJiBkZXNjcmlwdGlvbiwgYXV0byBzYW1wbGVDb3Vu
dCkgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGF1dG8gYnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVC
dWZmZXIoZGF0YSwgZGVzY3JpcHRpb24sIFBBTDo6dG9DTVRpbWUodGltZSksIHNhbXBsZUNvdW50
KTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0jZWxzZQotICAgICAgICBVTlVTRURf
UEFSQU0odGltZSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICAgICAgVU5VU0VE
X1BBUkFNKGRlc2NyaXB0aW9uKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZUNvdW50KTsK
LSNlbmRpZgorICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGF0
YUNhcHR1cmVkKHRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7CiAgICAgfTsK
IAogICAgIGF1dG8gc3RhdGVVcGRhdGVDYWxsYmFjayA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpXShjb25zdCBhdXRvJiB1cGRhdGUpIHsKQEAgLTg5LDkgKzk0LDYgQEAgdm9p
ZCBTcGVlY2hSZWNvZ25pemVyOjpzZXRTb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYg
c291cmNlKQogCiAgICAgICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIgJiYgbV9jbGllbnRJ
ZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKSk7CiAgICAgICAg
IG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwotCi0gICAgICAgIGlmICh1cGRhdGUudHlwZSgp
ID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IpCi0gICAgICAgICAgICBtX3Nv
dXJjZSA9IG51bGxwdHI7CiAgICAgfTsKIAogICAgIG1fc291cmNlID0gbWFrZVVuaXF1ZTxTcGVl
Y2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U+KCptX2NsaWVudElkZW50aWZpZXIsIFdURk1vdmUo
ZGF0YUNhbGxiYWNrKSwgV1RGTW92ZShzdGF0ZVVwZGF0ZUNhbGxiYWNrKSwgV1RGTW92ZShzb3Vy
Y2UpKTsKQEAgLTk5LDMwICsxMDEsNDAgQEAgdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzZXRTb3Vy
Y2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQogCiAjZW5kaWYKIAotdm9pZCBT
cGVlY2hSZWNvZ25pemVyOjpzdG9wKFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgc2hvdWxkR2Vu
ZXJhdGVGaW5hbFJlc3VsdCkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUoKQog
ewotICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQorICAgIGlmICghbV9zb3VyY2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHN0b3BJbnRlcm5hbCgpOworICAgIG1fc291cmNlID0gbnVsbHB0
cjsKKyAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0
ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkF1ZGlv
RW5kKSk7Cit9CiAKLSAgICBpZiAoc2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCA9PSBTaG91bGRH
ZW5lcmF0ZUZpbmFsUmVzdWx0OjpZZXMpIHsKLSAgICAgICAgLy8gVE9ETzogZ2VuZXJhdGUgcmVh
bCByZXN1bHQgd2hlbiBzcGVlY2ggcmVjb2duaXRpb24gYmFja2VuZCBpcyBpbXBsZW1lbnRlZC4K
LSAgICAgICAgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4gcmVzdWx0RGF0YXM7
Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3Jl
YXRlUmVzdWx0KCptX2NsaWVudElkZW50aWZpZXIsIHJlc3VsdERhdGFzKSk7Ci0gICAgfQorI2lm
ICFIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6ZGF0YUNh
cHR1cmVkKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3Qg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkKK3sKK30KIAorYm9vbCBTcGVlY2hSZWNv
Z25pemVyOjpzdGFydFJlY29nbml0aW9uKGJvb2wsIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90KQor
eworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0UmVj
b2duaXRpb24oKQorewogICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RW5kKSk7Ci0gICAgbV9jbGllbnRJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OwogfQog
Ci12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3BJbnRlcm5hbCgpCit2b2lkIFNwZWVjaFJlY29n
bml6ZXI6OnN0b3BSZWNvZ25pdGlvbigpCiB7Ci0gICAgaWYgKCFtX3NvdXJjZSkKLSAgICAgICAg
cmV0dXJuOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
RW5kKSk7Cit9CiAKLSAgICBtX3NvdXJjZSA9IG51bGxwdHI7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxi
YWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpBdWRpb0VuZCkpOwordm9pZCBTcGVlY2hSZWNv
Z25pemVyOjpyZXNldFJlY29nbml0aW9uKCkKK3sKIH0KIAorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml6ZXIuaAppbmRleCBlYzVhYzEzMGI4YTA0NzdkYTkxZmQxZTFlN2ZjMmM3MGE0YTMyNjNh
Li4xNDk1ZGEyOWE0OGM1MDg5N2JiYmZiZDAxZDQzYTJhNGYwZGEwYjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCkBAIC0yOCw2ICsy
OCwxMSBAQAogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oIgogI2lu
Y2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaCIKIAor
I2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CitP
QkpDX0NMQVNTIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrOworI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU7CkBAIC00MCwxMSArNDUs
MTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIH5TcGVlY2hSZWNvZ25pemVyKCkgPSBk
ZWZhdWx0OwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFJl
ZjxSZWFsdGltZU1lZGlhU291cmNlPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFJlZjxSZWFsdGlt
ZU1lZGlhU291cmNlPiYmLCBib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIGNvbnN0
IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1S
ZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXNldCgpOwotICAgIGVudW0gY2xhc3MgU2hvdWxkR2VuZXJhdGVGaW5hbFJl
c3VsdCB7IE5vLCBZZXMgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3AoU2hvdWxkR2Vu
ZXJhdGVGaW5hbFJlc3VsdCA9IFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQ6Olllcyk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rv
cCgpOwogCiAgICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcj4gY3VycmVudENsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dElkZW50aWZpZXI7IH0KIApAQCAtNTIsMTIgKzU3LDIyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dG9wSW50ZXJuYWwoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgdm9pZCBzZXRT
b3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpOworICAgIHZvaWQgc3RhcnRDYXB0dXJl
KFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmKTsKICNlbmRpZgorICAgIHZvaWQgc3RvcENhcHR1
cmUoKTsKKyAgICB2b2lkIGRhdGFDYXB0dXJlZChjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0
IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVf
dCBzYW1wbGVDb3VudCk7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGJvb2wgbW9ja1NwZWVj
aFJlY29nbml0aW9uRW5hYmxlZCwgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMs
IGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IGFsdGVybmF0aXZlcyk7CisgICAgdm9pZCBh
Ym9ydFJlY29nbml0aW9uKCk7CisgICAgdm9pZCBzdG9wUmVjb2duaXRpb24oKTsKKyAgICB2b2lk
IHJlc2V0UmVjb2duaXRpb24oKTsKIAogICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXI+IG1fY2xpZW50SWRlbnRpZmllcjsKICAgICBEZWxlZ2F0
ZUNhbGxiYWNrIG1fZGVsZWdhdGVDYWxsYmFjazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlZWNo
UmVjb2duaXRpb25DYXB0dXJlU291cmNlPiBtX3NvdXJjZTsKKworI2lmIEhBVkUoU1BFRUNIUkVD
T0dOSVpFUikKKyAgICBSZXRhaW5QdHI8V2ViU3BlZWNoUmVjb2duaXplclRhc2s+IG1fdGFzazsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29h
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFmNDI4ZjRmNmIzZTRkOTg4YTVlZTc0YjYwM2VjYjkyY2Y5ZGU2ZTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9T
cGVlY2hSZWNvZ25pemVyQ29jb2EubW0KQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU3BlZWNoUmVjb2duaXplci5oIgorCisjaWYgSEFW
RShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0ICJNZWRpYVV0aWxpdGllcy5oIgorI2ltcG9y
dCAiU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCIKKyNpbXBvcnQgIldlYlNwZWVjaFJlY29nbml6
ZXJUYXNrTW9jay5oIgorI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8cGFsL2F2
Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmRhdGFDYXB0dXJlZChjb25zdCBNZWRpYVRpbWUm
IHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIGF1dG8g
YnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIoZGF0YSwgZGVzY3JpcHRpb24sIFBBTDo6
dG9DTVRpbWUodGltZSksIHNhbXBsZUNvdW50KTsKKyAgICBbbV90YXNrIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZTpidWZmZXIuZ2V0KCldOworfQorCitib29sIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0
UmVjb2duaXRpb24oYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRz
LCB1aW50NjRfdCBhbHRlcm5hdGl2ZXMpCit7CisgICAgYXV0byB0YXNrQ2xhc3MgPSBtb2NrU3Bl
ZWNoUmVjb2duaXRpb25FbmFibGVkID8gW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBjbGFz
c10gOiBbV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2xhc3NdOworICAgIG1fdGFzayA9IGFkb3B0
TlMoW1t0YXNrQ2xhc3MgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIGxvY2Fs
ZTpsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6Y29udGludW91cyByZXBv
cnRJbnRlcmltUmVzdWx0czppbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6YWx0ZXJuYXRp
dmVzIGRlbGVnYXRlQ2FsbGJhY2s6W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
KGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiB1cGRhdGUpIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2RlbGVnYXRlQ2FsbGJh
Y2sodXBkYXRlKTsKKyAgICB9XSk7CisKKyAgICByZXR1cm4gISFtX3Rhc2s7Cit9CisKK3ZvaWQg
U3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29nbml0aW9uKCkKK3sKKyAgICBBU1NFUlQobV90YXNr
KTsKKyAgICBbbV90YXNrIHN0b3BdOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0
UmVjb2duaXRpb24oKQoreworICAgIEFTU0VSVChtX3Rhc2spOworICAgIFttX3Rhc2sgYWJvcnRd
OworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24oKQoreworICAg
IGlmICghbV90YXNrKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRhc2sgPSBzdGQ6OmV4
Y2hhbmdlKG1fdGFzaywgbnVsbHB0cik7CisgICAgW3Rhc2sgYWJvcnRdOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNv
Z25pemVyVGFzay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWM0MDM5MmQ1MTU0NmRhNzVlNTMzMDAy
YWUyOGY2NTQ2N2ZhOWEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2suaApAQCAtMCwwICsxLDUxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCAiU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgorI2ltcG9ydCAiU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUuaCIKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwordHlw
ZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOworCitA
Y2xhc3MgV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsOworCitAaW50ZXJmYWNlIFdlYlNwZWVj
aFJlY29nbml6ZXJUYXNrIDogTlNPYmplY3QgeworQHByaXZhdGUKKyAgICBSZXRhaW5QdHI8V2Vi
U3BlZWNoUmVjb2duaXplclRhc2tJbXBsPiBfaW1wbDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZp
ZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1S
ZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9u
ZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrOworLSAodm9pZClhdWRpb1NhbXBsZXNB
dmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcjsKKy0gKHZvaWQpYWJvcnQ7
CistICh2b2lkKXN0b3A7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2subW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2Nv
YS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzc5YWUwMmExYTJjZjgz
ODhiZjJhNTQwNzQzOTg4ODQ3ZTU2ZGFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0KQEAgLTAs
MCArMSwyOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldl
YlNwZWVjaFJlY29nbml6ZXJUYXNrLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisK
KyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCisjaW1wb3J0IDxwYWwvY29jb2Ev
U3BlZWNoU29mdExpbmsuaD4KKworLy8gU2V0IHRoZSBtYXhpbXVtIGR1cmF0aW9uIHRvIGJlIGFu
IGhvdXI7IHdlIGNhbiBhZGp1c3QgdGhpcyBpZiBuZWVkZWQuCitzdGF0aWMgY29uc3RleHByIHNp
emVfdCBtYXhpbXVtUmVjb2duaXRpb25EdXJhdGlvbiA9IDYwICogNjA7CisKK05TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIDog
TlNPYmplY3Q8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tEZWxlZ2F0ZSwgU0ZTcGVlY2hSZWNvZ25p
emVyRGVsZWdhdGU+IHsKK0Bwcml2YXRlCisgICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBfaWRlbnRpZmllcjsKKyAgICBCbG9ja1B0cjx2b2lk
KGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+IF9kZWxlZ2F0ZUNhbGxi
YWNrOworICAgIGJvb2wgX2RvTXVsdGlwbGVSZWNvZ25pdGlvbnM7CisgICAgdWludDY0X3QgX21h
eEFsdGVybmF0aXZlczsKKyAgICBSZXRhaW5QdHI8U0ZTcGVlY2hSZWNvZ25pemVyPiBfcmVjb2du
aXplcjsKKyAgICBSZXRhaW5QdHI8U0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVz
dD4gX3JlcXVlc3Q7CisgICAgV2Vha09iakNQdHI8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2s+IF90
YXNrOworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hTdGFydDsKKyAgICBib29sIF9oYXNTZW50U3Bl
ZWNoRW5kOworICAgIGJvb2wgX2hhc1NlbnRFbmQ7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVy
IGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVz
dWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcp
YWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjazsKKy0gKHZvaWQpY2FsbGJhY2tXaXRoUmVz
dWx0OihTRlRyYW5zY3JpcHRpb24gKil0cmFuc2NyaXB0aW9uIGlzRmluYWw6KEJPT0wpaXNGaW5h
bDsKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1w
bGVCdWZmZXI7CistICh2b2lkKWFib3J0OworLSAodm9pZClzdG9wOworLSAodm9pZClzZW5kU3Bl
ZWNoU3RhcnRJZk5lZWRlZDsKKy0gKHZvaWQpc2VuZFNwZWVjaEVuZElmTmVlZGVkOworLSAodm9p
ZClzZW5kRW5kSWZOZWVkZWQ7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrSW1wbAorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50
aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2du
aXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJp
bVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxl
Z2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlJikpY2FsbGJhY2sKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIF9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICBfZG9N
dWx0aXBsZVJlY29nbml0aW9ucyA9IGNvbnRpbnVvdXM7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sg
PSBjYWxsYmFjazsKKyAgICBfaGFzU2VudFNwZWVjaFN0YXJ0ID0gZmFsc2U7CisgICAgX2hhc1Nl
bnRTcGVlY2hFbmQgPSBmYWxzZTsKKyAgICBfaGFzU2VudEVuZCA9IGZhbHNlOworCisgICAgaWYg
KCFhbHRlcm5hdGl2ZXMpCisgICAgICAgIGFsdGVybmF0aXZlcyA9IDE7CisgICAgX21heEFsdGVy
bmF0aXZlcyA9IGFsdGVybmF0aXZlczsKKworICAgIGlmICghW2xvY2FsZUlkZW50aWZpZXIgbGVu
Z3RoXSkKKyAgICAgICAgX3JlY29nbml6ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jU0ZTcGVlY2hS
ZWNvZ25pemVySW5zdGFuY2UoKSBpbml0XSk7CisgICAgZWxzZQorICAgICAgICBfcmVjb2duaXpl
ciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NTRlNwZWVjaFJlY29nbml6ZXJJbnN0YW5jZSgpIGluaXRX
aXRoTG9jYWxlOltOU0xvY2FsZSBsb2NhbGVXaXRoTG9jYWxlSWRlbnRpZmllcjpsb2NhbGVJZGVu
dGlmaWVyXV0pOworICAgIGlmICghX3JlY29nbml6ZXIpIHsKKyAgICAgICAgW3NlbGYgcmVsZWFz
ZV07CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgaWYgKCFbX3JlY29nbml6ZXIg
aXNBdmFpbGFibGVdKSB7CisgICAgICAgIFtzZWxmIHJlbGVhc2VdOworICAgICAgICByZXR1cm4g
bmlsOworICAgIH0KKworICAgIFtfcmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKKworICAg
IF9yZXF1ZXN0ID0gYWRvcHROUyhbUEFMOjphbGxvY1NGU3BlZWNoQXVkaW9CdWZmZXJSZWNvZ25p
dGlvblJlcXVlc3RJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBpZiAoW19yZWNvZ25pemVyIHN1cHBv
cnRzT25EZXZpY2VSZWNvZ25pdGlvbl0pCisgICAgICAgIFtfcmVxdWVzdCBzZXRSZXF1aXJlc09u
RGV2aWNlUmVjb2duaXRpb246WUVTXTsKKyAgICBbX3JlcXVlc3Qgc2V0U2hvdWxkUmVwb3J0UGFy
dGlhbFJlc3VsdHM6aW50ZXJpbVJlc3VsdHNdOworICAgIFtfcmVxdWVzdCBzZXRUYXNrSGludDpT
RlNwZWVjaFJlY29nbml0aW9uVGFza0hpbnREaWN0YXRpb25dOworCisjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKKyAgICBbX3JlcXVlc3Qgc2V0RGV0ZWN0TXVsdGlwbGVVdHRlcmFuY2VzOllF
U107CisgICAgW19yZXF1ZXN0IF9zZXRNYXhpbXVtUmVjb2duaXRpb25EdXJhdGlvbjptYXhpbXVt
UmVjb2duaXRpb25EdXJhdGlvbl07CisjZW5kaWYKKworICAgIF90YXNrID0gW19yZWNvZ25pemVy
IHJlY29nbml0aW9uVGFza1dpdGhSZXF1ZXN0Ol9yZXF1ZXN0LmdldCgpIGRlbGVnYXRlOnNlbGZd
OworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWNhbGxiYWNrV2l0aFJlc3VsdDooU0ZU
cmFuc2NyaXB0aW9uICopdHJhbnNjcmlwdGlvbiBpc0ZpbmFsOihCT09MKWlzRmluYWwKK3sKKyAg
ICBhdXRvIHNlZ21lbnRzID0gW3RyYW5zY3JpcHRpb24gc2VnbWVudHNdOworICAgIFZlY3RvcjxX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+IGRhdGFzOworICAgIGRhdGFzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoc2VnbWVudHMuY291bnQpOworICAgIGZvciAoU0ZUcmFuc2Ny
aXB0aW9uU2VnbWVudCogc2VnbWVudCBpbiBzZWdtZW50cykgeworICAgICAgICAvLyBOb3RlIHNl
Z21lbnQgY29uZmlkZW5jZSBpcyByZXBvcnRlZCAwIHdoZW4gcmVzdWx0IGlzIG5vdCBmaW5hbC4K
KyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRh
PiBhbHRlcm5hdGl2ZXM7CisgICAgICAgIGFsdGVybmF0aXZlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KF9tYXhBbHRlcm5hdGl2ZXMpOworICAgICAgICBhbHRlcm5hdGl2ZXMudW5jaGVja2VkQXBw
ZW5kKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhIHsgW3NlZ21lbnQg
c3Vic3RyaW5nXSwgW3NlZ21lbnQgY29uZmlkZW5jZV0gfSk7CisgICAgICAgIGZvciAoTlNTdHJp
bmcqIHNlZ21lbnRBbHRlcm5hdGl2ZSA6IFtzZWdtZW50IGFsdGVybmF0aXZlU3Vic3RyaW5nc10p
IHsKKyAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZXMuc2l6ZSgpID09IF9tYXhBbHRlcm5hdGl2
ZXMpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvLyBGSVhNRTogY2FsY3Vs
YXRlIG9yIGdldCBhbHRlcm5hdGl2ZSBjb25maWRlbmNlIGlmIHBvc3NpYmxlLgorICAgICAgICAg
ICAgYWx0ZXJuYXRpdmVzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkFsdGVybmF0aXZlRGF0YSB7IHNlZ21lbnRBbHRlcm5hdGl2ZSwgMC4wIH0pOworICAgICAgICB9
CisgICAgICAgIGRhdGFzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blJlc3VsdERhdGEgeyBXVEZNb3ZlKGFsdGVybmF0aXZlcyksIGJvb2woaXNGaW5hbCkgfSk7Cisg
ICAgfQorICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlOjpjcmVhdGVSZXN1bHQoX2lkZW50aWZpZXIsIGRhdGFzKSk7Cit9CisKKy0gKHZvaWQpYXVk
aW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFtfcmVxdWVzdCBhcHBlbmRBdWRpb1NhbXBs
ZUJ1ZmZlcjpzYW1wbGVCdWZmZXJdOworfQorCistICh2b2lkKWFib3J0Cit7CisgICAgaWYgKCFf
dGFzayB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25UYXNrU3RhdGVDYW5j
ZWxpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChbX3Rhc2sgc3RhdGVdID09IFNGU3Bl
ZWNoUmVjb2duaXRpb25UYXNrU3RhdGVDb21wbGV0ZWQpIHsKKyAgICAgICAgW3NlbGYgc2VuZFNw
ZWVjaEVuZElmTmVlZGVkXTsKKyAgICAgICAgW3NlbGYgc2VuZEVuZElmTmVlZGVkXTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07Cisg
ICAgW19yZXF1ZXN0IGVuZEF1ZGlvXTsKKyAgICBbX3Rhc2sgY2FuY2VsXTsKK30KKworLSAodm9p
ZClzdG9wCit7CisgICAgaWYgKCFfdGFzayB8fCBbX3Rhc2sgc3RhdGVdID09IFNGU3BlZWNoUmVj
b2duaXRpb25UYXNrU3RhdGVDYW5jZWxpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChb
X3Rhc2sgc3RhdGVdID09IFNGU3BlZWNoUmVjb2duaXRpb25UYXNrU3RhdGVDb21wbGV0ZWQpIHsK
KyAgICAgICAgW3NlbGYgc2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICAgICAgW3NlbGYgc2Vu
ZEVuZElmTmVlZGVkXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtzZWxmIHNlbmRT
cGVlY2hFbmRJZk5lZWRlZF07CisgICAgW19yZXF1ZXN0IGVuZEF1ZGlvXTsKKyAgICBbX3Rhc2sg
ZmluaXNoXTsKK30KKworLSAodm9pZClzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZAoreworICAgIGlm
IChfaGFzU2VudFNwZWVjaFN0YXJ0KQorICAgICAgICByZXR1cm47CisKKyAgICBfaGFzU2VudFNw
ZWVjaFN0YXJ0ID0gdHJ1ZTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaFN0YXJ0KSk7Cit9CisKKy0gKHZvaWQpc2VuZFNwZWVj
aEVuZElmTmVlZGVkCit7CisgICAgaWYgKCFfaGFzU2VudFNwZWVjaFN0YXJ0IHx8IF9oYXNTZW50
U3BlZWNoRW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBfaGFzU2VudFNwZWVjaEVuZCA9IHRy
dWU7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlOjpTcGVlY2hFbmQpKTsKK30KKworLSAodm9pZClzZW5kRW5kSWZOZWVkZWQKK3sKKyAgICBp
ZiAoX2hhc1NlbnRFbmQpCisgICAgICAgIHJldHVybjsKKworICAgIF9oYXNTZW50RW5kID0gdHJ1
ZTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5
cGU6OkVuZCkpOworfQorCisjcHJhZ21hIG1hcmsgU0ZTcGVlY2hSZWNvZ25pemVyRGVsZWdhdGUK
KworLSAodm9pZClzcGVlY2hSZWNvZ25pemVyOihTRlNwZWVjaFJlY29nbml6ZXIgKilzcGVlY2hS
ZWNvZ25pemVyIGF2YWlsYWJpbGl0eURpZENoYW5nZTooQk9PTClhdmFpbGFibGUKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGF2YWlsYWJsZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFfdGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBlcnJv
ciA9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsICJTcGVlY2ggcmVjb2duaXRpb24g
c2VydmljZSBiZWNvbWVzIHVuYXZhaWxhYmxlIl9zIH07CisgICAgYXV0byB1cGRhdGUgPSBXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIsIFdU
Rk1vdmUoZXJyb3IpKTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOworfQorCisjcHJh
Z21hIG1hcmsgU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tEZWxlZ2F0ZQorCistICh2b2lkKXNwZWVj
aFJlY29nbml0aW9uVGFzazooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrIGRpZEh5cG90
aGVzaXplVHJhbnNjcmlwdGlvbjooU0ZUcmFuc2NyaXB0aW9uICopdHJhbnNjcmlwdGlvbgorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBbc2VsZiBzZW5kU3BlZWNoU3RhcnRJ
Zk5lZWRlZF07CisgICAgW3NlbGYgY2FsbGJhY2tXaXRoUmVzdWx0OnRyYW5zY3JpcHRpb24gaXNG
aW5hbDpOT107Cit9CisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrOihTRlNwZWVjaFJl
Y29nbml0aW9uVGFzayAqKXRhc2sgZGlkRmluaXNoUmVjb2duaXRpb246KFNGU3BlZWNoUmVjb2du
aXRpb25SZXN1bHQgKilyZWNvZ25pdGlvblJlc3VsdAoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBbc2VsZiBjYWxsYmFja1dpdGhSZXN1bHQ6cmVjb2duaXRpb25SZXN1bHQu
YmVzdFRyYW5zY3JpcHRpb24gaXNGaW5hbDpZRVNdOworCisgICAgaWYgKCFfZG9NdWx0aXBsZVJl
Y29nbml0aW9ucykgeworICAgICAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAg
ICAgICBbc2VsZiBzZW5kRW5kSWZOZWVkZWRdOworICAgIH0KK30KKworLSAodm9pZClzcGVlY2hS
ZWNvZ25pdGlvblRhc2tXYXNDYW5jZWxsZWQ6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFz
aworeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBbc2VsZiBzZW5kU3BlZWNo
RW5kSWZOZWVkZWRdOworICAgIFtzZWxmIHNlbmRFbmRJZk5lZWRlZF07Cit9CisKKy0gKHZvaWQp
c3BlZWNoUmVjb2duaXRpb25UYXNrOihTRlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sgZGlk
RmluaXNoU3VjY2Vzc2Z1bGx5OihCT09MKXN1Y2Nlc3NmdWxseQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIXN1Y2Nlc3NmdWxseSkgeworICAgICAgICBhdXRvIGVy
cm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCB0YXNrLmVycm9yLmxvY2FsaXplZERlc2NyaXB0
aW9uIH07CisgICAgICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgV1RGTW92ZShlcnJvcikpKTsKKyAg
ICB9CisgICAgCisgICAgW3NlbGYgc2VuZEVuZElmTmVlZGVkXTsKK30KKworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gV2ViU3BlZWNoUmVjb2duaXplclRhc2sKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZp
ZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1S
ZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9u
ZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaW1wbCA9IGFkb3B0TlMo
W1tXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpp
ZGVudGlmaWVyIGxvY2FsZTpsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6
Y29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czppbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5h
dGl2ZXM6YWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6Y2FsbGJhY2tdKTsKKworICAgIGlm
ICghX2ltcGwpIHsKKyAgICAgICAgW3NlbGYgcmVsZWFzZV07CisgICAgICAgIHJldHVybiBuaWw7
CisgICAgfQorCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZh
aWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIKK3sKKyAgICBbX2ltcGwgYXVk
aW9TYW1wbGVzQXZhaWxhYmxlOnNhbXBsZUJ1ZmZlcl07Cit9CisKKy0gKHZvaWQpYWJvcnQKK3sK
KyAgICBbX2ltcGwgYWJvcnRdOworfQorCistICh2b2lkKXN0b3AKK3sKKyAgICBbX2ltcGwgc3Rv
cF07Cit9CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2du
aXplclRhc2tNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmZmZWZkMzIyMThjZjRmYTky
MjZmOTliZTVmYzk0NGVlZDk5N2QwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmgKQEAgLTAs
MCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKKyNp
bXBvcnQgIldlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmgiCisjaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGNsYXNzIFdlYlNwZWVjaFJlY29nbml6
ZXJUYXNrTW9jazsKKworQGludGVyZmFjZSBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sgOiBX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzayB7CitAcHJpdmF0ZQorICAgIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgX2lkZW50aWZpZXI7CisgICAgQmxv
Y2tQdHI8dm9pZChjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpPiBfZGVs
ZWdhdGVDYWxsYmFjazsKKyAgICBib29sIF9kb011bHRpcGxlUmVjb2duaXRpb25zOworICAgIGJv
b2wgX2hhc1NlbnRTcGVlY2hTdGFydDsKKyAgICBib29sIF9oYXNTZW50U3BlZWNoRW5kOworICAg
IGJvb2wgX2NvbXBsZXRlZDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmll
cjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilp
ZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJl
Y29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWlu
dGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMg
ZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSYpKWNhbGxiYWNrOworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2Ft
cGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcjsKKy0gKHZvaWQpYWJvcnQ7CistICh2b2lkKXN0b3A7
CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRh
c2tNb2NrLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNo
UmVjb2duaXplclRhc2tNb2NrLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MzZiY2JiZWE4MjI3YTE0M2Q3MDg4
ZDg5N2Y0YjA3MGQ4NTA5ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KQEAgLTAsMCAr
MSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tNb2NrLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisK
K05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTcGVlY2hSZWNv
Z25pemVyVGFza01vY2sKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlm
aWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0
aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1S
ZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdh
dGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZSYpKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBfZG9NdWx0aXBsZVJlY29nbml0aW9ucyA9IGNvbnRpbnVvdXM7
CisgICAgX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrID0g
Y2FsbGJhY2s7CisgICAgX2NvbXBsZXRlZCA9IGZhbHNlOworICAgIF9oYXNTZW50U3BlZWNoU3Rh
cnQgPSBmYWxzZTsKKyAgICBfaGFzU2VudFNwZWVjaEVuZCA9IGZhbHNlOworCisgICAgcmV0dXJu
IHNlbGY7Cit9CisKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZl
clJlZilzYW1wbGVCdWZmZXIKK3sKKyAgICBpZiAoIV9oYXNTZW50U3BlZWNoU3RhcnQpIHsKKyAg
ICAgICAgX2hhc1NlbnRTcGVlY2hTdGFydCA9IHRydWU7CisgICAgICAgIF9kZWxlZ2F0ZUNhbGxi
YWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIs
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoU3RhcnQpKTsKKyAg
ICB9CisKKyAgICAvLyBGYWtlIHNvbWUgcmVjb2duaXRpb24gcmVzdWx0cy4KKyAgICBWZWN0b3I8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGE+IGFsdGVybmF0aXZlczsK
KyAgICBhbHRlcm5hdGl2ZXMuYXBwZW5kKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQWx0ZXJu
YXRpdmVEYXRhIHsgIlRlc3QiLCAxLjAgfSk7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uUmVzdWx0RGF0YT4gZGF0YXM7CisgICAgZGF0YXMuYXBwZW5kKFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YSB7IFdURk1vdmUoYWx0ZXJuYXRpdmVzKSwgdHJ1ZSAg
fSk7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRh
dGU6OmNyZWF0ZVJlc3VsdChfaWRlbnRpZmllciwgZGF0YXMpKTsKKworICAgIGlmICghX2RvTXVs
dGlwbGVSZWNvZ25pdGlvbnMpCisgICAgICAgIFtzZWxmIGFib3J0XTsKK30KKworLSAodm9pZClh
Ym9ydAoreworICAgIGlmIChfY29tcGxldGVkKQorICAgICAgICByZXR1cm47CisgICAgX2NvbXBs
ZXRlZCA9IHRydWU7CisKKyAgICBpZiAoIV9oYXNTZW50U3BlZWNoRW5kICYmIF9oYXNTZW50U3Bl
ZWNoU3RhcnQpIHsKKyAgICAgICAgX2hhc1NlbnRTcGVlY2hFbmQgPSB0cnVlOworICAgICAgICBf
ZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
KF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlNwZWVj
aEVuZCkpOworICAgIH0KKworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIFtzZWxm
IGFib3J0XTsKK30KKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYzcxNTZhYzJkMTlkMGViMmRlMDY0ZTdmMDZiNmRlOTMzYmU3YmQ0MC4uMGRmZDQ5OTE3NTY4
M2JiOTY1MGNjNDBmZjJiYWEzYTRjMDFkZTliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0LDYgKzE0NCw5IEBACiAJCTYz
QzdFREM3MjFBRkFFMDQwMDZBN0I5OSAvKiBOU1Byb2dyZXNzU1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0UzNjlGOTIxQUZBODNGMDAxQzE0QkMg
LyogTlNQcm9ncmVzc1NQSS5oICovOyB9OwogCQk3QTM2RDBGOTIyM0FEOUFCMDBCMDUyMkUgLyog
Q29tbW9uQ3J5cHRvU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QTM2RDBGODIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi87
IH07CiAJCTdBM0E2QTgwMjBDQURCNDcwMDMxN0FBRSAvKiBOU0ltYWdlU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTNBNkE3RjIwQ0FEQjQ2MDAz
MTdBQUUgLyogTlNJbWFnZVNQSS5oICovOyB9OworCQk5M0IzOEVCRTI1ODIxQ0I2MDAxOThFNjMg
LyogU3BlZWNoU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQjM4RUJEMjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5oICov
OyB9OworCQk5M0IzOEVDMDI1ODIxQ0Q4MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCRjI1ODIx
Q0Q3MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsubW0gKi87IH07CisJCTkzQjM4RUMyMjU4MjFE
MjIwMDE5OEU2MyAvKiBTcGVlY2hTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQjM4RUMxMjU4MjFEMjIwMDE5OEU2MyAvKiBTcGVlY2hTUEkuaCAq
LzsgfTsKIAkJOTNEQjdEMzcyNDYyNkJDRDAwNEJEOEEzIC8qIE5TVGV4dElucHV0Q29udGV4dFNQ
SS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEQjdE
MzYyNDYyNkJDQzAwNEJEOEEzIC8qIE5TVGV4dElucHV0Q29udGV4dFNQSS5oICovOyB9OwogCQk5
M0RCN0QzQTI0NjI2Rjg2MDA0QkQ4QTMgLyogTlNVbmRvTWFuYWdlclNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEQjdEMzkyNDYyNkY4NjAwNEJE
OEEzIC8qIE5TVW5kb01hbmFnZXJTUEkuaCAqLzsgfTsKIAkJQTEwMjY1ODkxRjU2NzQ3QTAwQjRD
ODQ0IC8qIEhJVG9vbGJveFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTEwMjY1ODgxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQSS5oICov
OyB9OwpAQCAtMzQwLDYgKzM0Myw5IEBACiAJCTYzRTM2OUY5MjFBRkE4M0YwMDFDMTRCQyAvKiBO
U1Byb2dyZXNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TUHJvZ3Jlc3NTUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EzNkQwRjgyMjNBRDlBQjAwQjA1MjJFIC8qIENvbW1vbkNy
eXB0b1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25DcnlwdG9T
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EzQTZBN0YyMENBREI0NjAwMzE3
QUFFIC8qIE5TSW1hZ2VTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNJ
bWFnZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVCRDI1ODIxQ0I2
MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3BlZWNoU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNC
MzhFQkYyNTgyMUNENzAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3BlZWNoU29mdExpbmsubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUMxMjU4MjFEMjIwMDE5OEU2MyAvKiBTcGVlY2hTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzREI3RDM2MjQ2MjZCQ0MwMDRCRDhBMyAvKiBOU1RleHRJ
bnB1dENvbnRleHRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNUZXh0
SW5wdXRDb250ZXh0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzREI3RDM5
MjQ2MjZGODYwMDRCRDhBMyAvKiBOU1VuZG9NYW5hZ2VyU1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5TVW5kb01hbmFnZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNFNTkwOUMxRjkzQkYxRTAwNjdGOENGIC8qIFVuZW5jb2RhYmxlSGFuZGxpbmcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVW5lbmNvZGFibGVIYW5kbGluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTExLDYgKzUxNyw3IEBACiAJCQkJNDQyOTU2Q0MyMThBNzJERTAwODBE
QjU0IC8qIFJldmVhbFNQSS5oICovLAogCQkJCTU3MEFCOEYwMjBBRTJFOEQwMEI4QkU4NyAvKiBT
ZWNLZXlQcm94eVNQSS5oICovLAogCQkJCTBDMkRBMTNDMUYzQkVCNDkwMERCQzMxNyAvKiBTZXJ2
ZXJzU1BJLmggKi8sCisJCQkJOTNCMzhFQzEyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5o
ICovLAogCQkJCTBDMkRBMTJCMUYzQkVCNDkwMERCQzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmgg
Ki8sCiAJCQkJMEMyREExM0QxRjNCRUI0OTAwREJDMzE3IC8qIFdlYkZpbHRlckV2YWx1YXRvclNQ
SS5oICovLAogCQkJKTsKQEAgLTY4Miw2ICs2ODksOCBAQAogCQkJCTMxNjQ3RkFFMjUxNzU5REIw
MDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlua0NvY29hLm1tICovLAogCQkJCUExRjYzQzlEMjFBNERC
RjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsuaCAqLywKIAkJCQlBMUY2M0M5RTIxQTREQkY3
MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1tICovLAorCQkJCTkzQjM4RUJEMjU4MjFDQjYw
MDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5oICovLAorCQkJCTkzQjM4RUJGMjU4MjFDRDcwMDE5
OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5tbSAqLywKIAkJCQkwNzYxMURCNDI0M0ZBNUJFMDBEODA3
MDQgLyogVXNhZ2VUcmFja2luZ1NvZnRMaW5rLmggKi8sCiAJCQkJMDc2MTFEQjUyNDNGQTVCRjAw
RDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGluay5tbSAqLywKIAkJCSk7CkBAIC05MDcsNiAr
OTE2LDggQEAKIAkJCQlBM0FCNkU1NjFGM0QxRERCMDA5QzE0QjEgLyogU2xlZXBEaXNhYmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTNBQjZFNjExRjNEMUUzOTAwOUMxNEIxIC8qIFNsZWVwRGlz
YWJsZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTM3ODhFOTgxRjA1QjZDRTAwNjc5NDI1
IC8qIFNvdW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0IzOEVCRTI1ODIxQ0I2MDAxOThFNjMg
LyogU3BlZWNoU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjM4RUMyMjU4MjFEMjIw
MDE5OEU2MyAvKiBTcGVlY2hTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMTc1QjQ5MUY2QUZG
OEUwMEM0QjlGMCAvKiBTcGVlY2hTeW50aGVzaXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
NUFGOTIxMUY0M0E0QzcwMDJFQUMwMiAvKiBTUUxpdGUzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzMTMwOEIxNDIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMDM3LDYgKzEwNDgsNyBAQAogCQkJCUEzQUI2RTYwMUYzRDFFMzkwMDlDMTRC
MSAvKiBTbGVlcERpc2FibGVyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTM3ODhFOUMx
RjA1Qjc4MjAwNjc5NDI1IC8qIFNvdW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzNzg4RTlF
MUYwNUI3OEUwMDY3OTQyNSAvKiBTb3VuZE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTkzQjM4
RUMwMjU4MjFDRDgwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUEzQUI2RTU3MUYzRDFEREIwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVl
cExpc3RlbmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUxMzQyQ0QyMTVBQTEwQTAwNzE5
OUQyIC8qIFVJS2l0U29mdExpbmsubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzNmNzU0OTk1MGEw
YTM0OWYxNjNhMGE4YmQ5OTZjOGUzMmY4MGUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5oCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKwor
I2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisK
K1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQQUwsIFNwZWVjaCk7CitTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNoUmVjb2duaXRpb25SZXN1bHQpOworU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBTRlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCk7CitT
T0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNoQXVkaW9CdWZmZXJSZWNvZ25p
dGlvblJlcXVlc3QpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBTRlNwZWVjaFJl
Y29nbml0aW9uVGFzayk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNo
UmVjb2duaXplcik7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGVHJhbnNjcmlw
dGlvblNlZ21lbnQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBTRlRyYW5zY3Jp
cHRpb24pOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29j
b2EvU3BlZWNoU29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1NwZWVj
aFNvZnRMaW5rLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YTAzMWU4NjNiOWQ4ZDU2MWJmZjY2ODM4ODM2YjA2
YzZmNzg5NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29h
L1NwZWVjaFNvZnRMaW5rLm1tCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCA8U3Bl
ZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19G
UkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIFNwZWVjaCkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9T
T1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXRpb25SZXN1bHQs
IFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0LCBQQUxfRVhQT1JUKTsKK1NPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBTRlNwZWVjaEF1
ZGlvQnVmZmVyUmVjb2duaXRpb25SZXF1ZXN0LCBQQUxfRVhQT1JUKTsKK1NPRlRfTElOS19DTEFT
U19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBTRlNwZWVjaFJlY29nbml0aW9u
VGFzaywgUEFMX0VYUE9SVCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pemVyLCBQQUxfRVhQT1JUKTsKK1NPRlRfTElO
S19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBTRlRyYW5zY3JpcHRp
b25TZWdtZW50LCBQQUxfRVhQT1JUKTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhf
RVhQT1JUKFBBTCwgU3BlZWNoLCBTRlRyYW5zY3JpcHRpb24sIFBBTF9FWFBPUlQpOworCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1NwZWVjaFNQ
SS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTk3Y2JkYjczZWIxYTQwMWNhZDgyNGQxM2ExZmIyMWQ5NDczY2M4YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL1NwZWVjaFNQSS5oCkBA
IC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQor
CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8U3BlZWNoL1NGU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0X1ByaXZhdGUuaD4KKworI2Vsc2UKKworTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KKworQGludGVyZmFjZSBTRlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCAoKQorQHBy
b3BlcnR5IChub25hdG9taWMpIEJPT0wgZGV0ZWN0TXVsdGlwbGVVdHRlcmFuY2VzOworQHByb3Bl
cnR5IChub25hdG9taWMsIGdldHRlcj1fbWF4aW11bVJlY29nbml0aW9uRHVyYXRpb24sIHNldHRl
cj1fc2V0TWF4aW11bVJlY29nbml0aW9uRHVyYXRpb246KSBOU1RpbWVJbnRlcnZhbCBfbWF4aW11
bVJlY29nbml0aW9uRHVyYXRpb247CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisK
KyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjZW5kaWYgLy8gSEFWRShTUEVF
Q0hSRUNPR05JWkVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZTU5MTM5ZmJiNDU2NTBk
ZWY5OTZmODIxZDVjYWZhNDBiNzJkOGVjYS4uODRmNTg2ODc2MWUyOWE5NDYwYzZjYTU2NWU0Y2Nj
ZDFlMGY1MDJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC05Miw2ICs5Miw5IEBAIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcAogTW9kdWxl
cy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCiBNb2R1bGVzL3BsdWdpbnMv
WW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNo
UmVjb2duaXplckNvY29hLm1tCitNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25p
emVyVGFzay5tbQorTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tN
b2NrLm1tCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1t
CiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lv
cy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTIyYWMyMzAzZGRiYjAwNDM3OTI0NDgy
YjBkNTZkNzA3ZGUxMzM4ZS4uNjdmNmE4MzRmYmM3ODljZWQ2YTM2NmM1MWUyNjMzYmQxZDliYmQ4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjgxNyw2ICsyODE3LDggQEAKIAkJOTNBODA2MUUxRTAzQjU4NTAwOEExRjI2IC8q
IEpTRG91YmxlUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQTgwNjFBMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0RvdWJsZVJhbmdlLmggKi87IH07
CiAJCTkzQTgwNjIwMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0xvbmdSYW5nZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBODA2MUMxRTAzQjU4NTAwOEEx
RjI2IC8qIEpTTG9uZ1JhbmdlLmggKi87IH07CiAJCTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAv
KiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNC
MzhFQzMyNTgyMURCNDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCQTI1ODIxOTNC
MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCAqLzsgfTsKKwkJOTNCMzhFQzQy
NTgyMURCNzAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMzhFQkIyNTgyMTkzRDAw
MTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oICovOyB9OwogCQk5M0I2QTBF
NjBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjZBMEU1MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250
ZXh0TWVudS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTkzQjcwRDY0MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjcwRDQ4MDlFQjBDN0MwMDlE
ODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5M0I3MEQ2QTA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVudExpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I3
MEQ0RTA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNTMxLDYgKzExNTMzLDExIEBA
CiAJCTkzQTgwNjFDMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0xvbmdSYW5nZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0xvbmdSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0IyRDgxNTBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VkZGVuVGVybWluYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCMkQ4MTcwRjk5MjBFRTAwNkFFNkIyIC8q
IFN1ZGRlblRlcm1pbmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU3VkZGVuVGVybWluYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzQjM4RUI4MjU4MjE4OTkwMDE5OEU2MyAvKiBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTcGVlY2hSZWNvZ25pemVyQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUI5MjU4MjE5M0EwMDE5
OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAvKiBX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2Nr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJU
YXNrTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVCQzI1ODIxOTNF
MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRl
eHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0TWVudS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0Njgg
LyogSlNET01CaW5kaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TUJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzBENEQwOUVCMEM3
QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNFdmVudExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIzMTc3LDYgKzIzMTg0LDE4IEBACiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJOTNCMzhFQjYyNTgyMTgzMzAwMTk4RTYzIC8qIGNv
Y29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5M0Iz
OEVCODI1ODIxODk5MDAxOThFNjMgLyogU3BlZWNoUmVjb2duaXplckNvY29hLm1tICovLAorCQkJ
CTkzQjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICov
LAorCQkJCTkzQjM4RUJDMjU4MjE5M0UwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
ay5tbSAqLywKKwkJCQk5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2du
aXplclRhc2tNb2NrLmggKi8sCisJCQkJOTNCMzhFQjkyNTgyMTkzQTAwMTk4RTYzIC8qIFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk5M0MwOUE4MjBCMDY0RjA1MDA1QUJE
NEQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTI1NzA5LDYgKzI1NzI4LDcgQEAKIAkJQUEyQTVBQjcxNkE0ODVBNDAwOTc1QTI1IC8qIHNwZWVj
aCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTNCMzhF
QjYyNTgyMTgzMzAwMTk4RTYzIC8qIGNvY29hICovLAogCQkJCUFBMkE1QUJBMTZBNDg1RDUwMDk3
NUEyNSAvKiBET01XaW5kb3crU3BlZWNoU3ludGhlc2lzLmlkbCAqLywKIAkJCQlBQTJBNUFCODE2
QTQ4NUQ1MDA5NzVBMjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCAqLywKIAkJCQlB
QTJBNUFCOTE2QTQ4NUQ1MDA5NzVBMjUgLyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmggKi8s
CkBAIC0zNTI4Myw2ICszNTMwMyw4IEBACiAJCQkJOTdBQUJEMjUxNEZBMDlENTAwNzQ1N0FFIC8q
IFdlYlNvY2tldEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQyNzE0RkEwOUQ1MDA3
NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUUxMkU5
RjI0RkU3NEUyMDA5M0ZGQjQgLyogV2ViU29ja2V0SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTNCMzhFQzMyNTgyMURCNDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0IzOEVDNDI1ODIxREI3MDAxOThFNjMgLyogV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjg3NTZCMjFFMjJD
MzM1MDA0MkM0MEQgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMURFQTQ1NjFCMzlGNEQ5MDBGNzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BM
YXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1ODBGQTMxNDk2OTM5MTAwRkI1QkQ4IC8qIFdl
YlRpbGVkQmFja2luZ0xheWVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcAppbmRleCBkNmZhODljNTQ4
MzI2MmMxMDFhMjZkMDMwMzIzNTU3MjA2YjEyZjYxLi42YTZlZTg0OGUyY2E2OTUzYTdkYjFjNjkz
YjE5MjAwN2RjMWRkZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCkBAIC0zNiwyMiArMzYsMjEgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKKworU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9u
U2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lv
bkNoZWNrZXImJiBwZXJtaXNzaW9uQ2hlY2tlciwgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmbW9j
a1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmIGNoZWNrSWZFbmFibGVkCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLVNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNwZWVjaFJlY29nbml0aW9u
U2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
aGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIsIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5j
dGlvbiYmIGZ1bmN0aW9uKQorICAgICwgUmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9u
JiYgZnVuY3Rpb24KKyNlbmRpZgorICAgICkKICAgICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNv
bm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3Blcm1p
c3Npb25DaGVja2VyKFdURk1vdmUocGVybWlzc2lvbkNoZWNrZXIpKQorICAgICwgbV9jaGVja0lm
bW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZChXVEZNb3ZlKGNoZWNrSWZFbmFibGVkKSkKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV9yZWFsdGltZU1lZGlhU291cmNlQ3JlYXRl
RnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCisjZW5kaWYKIHsKIH0KLSNlbHNlCi1TcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Npb25D
aGVja2VyKQotICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCi0gICAgLCBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAsIG1fcGVybWlzc2lvbkNoZWNrZXIoV1RGTW92
ZShwZXJtaXNzaW9uQ2hlY2tlcikpCi17Ci19Ci0jZW5kaWYKIAogdm9pZCBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRp
bnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luKQogewpAQCAtODAsMTEgKzc5LDExIEBAIHZvaWQg
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBoYW5kbGVSZXF1ZXN0KGlkZW50aWZpZXIpOworICAgICAgICBoYW5kbGVSZXF1ZXN0KCp3
ZWFrUmVxdWVzdCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6
OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQordm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZl
cjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVl
c3QpCiB7CiAgICAgaWYgKCFtX3JlY29nbml6ZXIpIHsKICAgICAgICAgbV9yZWNvZ25pemVyID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyPihbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKV0oYXV0byYgdXBkYXRlKSB7CkBAIC05NSwxNiArOTQsMjkgQEAgdm9p
ZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb24KICAgICAgICAgICAgIGlmICghbV9yZXF1ZXN0cy5jb250YWlu
cyhjbGllbnRJZGVudGlmaWVyKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAg
ICAgIHNlbmRVcGRhdGUodXBkYXRlKTsKKwogICAgICAgICAgICAgYXV0byB0eXBlID0gdXBkYXRl
LnR5cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlVHlwZTo6RXJyb3IgfHwgdHlwZSA9PSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OkVuZCkKLSAgICAgICAgICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZShjbGll
bnRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlmICh0eXBlICE9IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IgJiYgdHlwZSAhPSBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgIHNlbmRVcGRhdGUodXBkYXRlKTsKKyAgICAgICAgICAgIGlmIChtX2lzUmVzZXR0aW5n
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1faXNSZXNldHRpbmcgPSB0
cnVlOworCisgICAgICAgICAgICBtX3JlY29nbml6ZXItPnJlc2V0KCk7CisgICAgICAgICAgICBt
X3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIG1faXNSZXNl
dHRpbmcgPSBmYWxzZTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIAotICAgIG1fcmVjb2duaXpl
ci0+cmVzZXQoKTsKIAorICAgIGlmIChhdXRvIGN1cnJlbnRDbGllbnRJZGVudGlmaWVyID0gbV9y
ZWNvZ25pemVyLT5jdXJyZW50Q2xpZW50SWRlbnRpZmllcigpKSB7CisgICAgICAgIGF1dG8gZXJy
b3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsICJBbm90aGVyIHJlcXVlc3QgaXMgc3RhcnRlZCJf
cyB9OworICAgICAgICBzZW5kVXBkYXRlKCpjdXJyZW50Q2xpZW50SWRlbnRpZmllciwgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFcnJvciwgZXJyb3IpOworICAgICAgICBt
X3JlY29nbml6ZXItPnJlc2V0KCk7CisgICAgfQorCisgICAgYXV0byBjbGllbnRJZGVudGlmaWVy
ID0gcmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCk7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICBhdXRvIHNvdXJjZU9yRXJyb3IgPSBtX3JlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5j
dGlvbigpOwogICAgIGlmICghc291cmNlT3JFcnJvcikgewpAQCAtMTEyLDEwICsxMjQsMTIgQEAg
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24KICAgICAgICAgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoY2xpZW50SWRlbnRpZmllciwgV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJy
b3JUeXBlOjpBdWRpb0NhcHR1cmUsIHNvdXJjZU9yRXJyb3IuZXJyb3JNZXNzYWdlIH0pKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3JlY29nbml6ZXItPnN0YXJ0KGNsaWVudElkZW50
aWZpZXIsIHNvdXJjZU9yRXJyb3Iuc291cmNlKCkpOworCisgICAgYm9vbCBtb2NrRGV2aWNlQ2Fw
dHVyZXNFbmFibGVkID0gbV9jaGVja0lmbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCgpOwor
ICAgIG1fcmVjb2duaXplci0+c3RhcnQoY2xpZW50SWRlbnRpZmllciwgc291cmNlT3JFcnJvci5z
b3VyY2UoKSwgbW9ja0RldmljZUNhcHR1cmVzRW5hYmxlZCwgcmVxdWVzdC5sYW5nKCksIHJlcXVl
c3QuY29udGludW91cygpLCByZXF1ZXN0LmludGVyaW1SZXN1bHRzKCksIHJlcXVlc3QubWF4QWx0
ZXJuYXRpdmVzKCkpOwogI2Vsc2UKICAgICBtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlm
aWVyKTsKLSAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJy
b3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVkaW9DYXB0dXJlLCAi
QXVkaW8gY2FwdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQifSk7CisgICAgc2VuZFVwZGF0ZShjbGll
bnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9y
LCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25FcnJvclR5cGU6OkF1ZGlvQ2FwdHVyZSwgIkF1ZGlvIGNhcHR1cmUgaXMgbm90IGltcGxl
bWVudGVkIl9zIH0pOwogI2VuZGlmCiB9CiAKQEAgLTEzNSw3ICsxNDksNyBAQCB2b2lkIFNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjphYm9ydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZAogewogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SWRlbnRpZmllcik7CiAg
ICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlm
aWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewotICAgICAgICBtX3JlY29nbml6ZXItPnN0b3Ao
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6U2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6Tm8p
OworICAgICAgICBtX3JlY29nbml6ZXItPmFib3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTE0OCw3ICsxNjIsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZh
bGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaQogICAgIE1FU1NB
R0VfQ0hFQ0soY2xpZW50SWRlbnRpZmllcik7CiAgICAgaWYgKG1fcmVxdWVzdHMucmVtb3ZlKGNs
aWVudElkZW50aWZpZXIpKSB7CiAgICAgICAgIGlmIChtX3JlY29nbml6ZXIgJiYgbV9yZWNvZ25p
emVyLT5jdXJyZW50Q2xpZW50SWRlbnRpZmllcigpID09IGNsaWVudElkZW50aWZpZXIpCi0gICAg
ICAgICAgICBtX3JlY29nbml6ZXItPnN0b3AoKTsKKyAgICAgICAgICAgIG1fcmVjb2duaXplci0+
YWJvcnQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4IGVkNjcyNjRhYTEzMWUxZTE0MjFlYWE0MTRkNDE3
MTNjNjk1ZDgzMjQuLmViMTAyM2EyMWU2OGQwMDJhNzJkMmJjOTZjYTZkMjU3YjRiNDU3MTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
aApAQCAtNDcsMTUgKzQ3LDE2IEBAIGVudW0gY2xhc3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uRGVjaXNpb24gOiBib29sOwogCiB1c2luZyBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50
aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkNoZWNrZXIgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
RGVjaXNpb24pPiYmKT47Cit1c2luZyBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZtb2NrU3BlZWNo
UmVjb2duaXRpb25FbmFibGVkID0gRnVuY3Rpb248Ym9vbCgpPjsKIAogY2xhc3MgU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdl
U2VuZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogICAgIHVzaW5nIFJlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5j
dGlvbiA9IEZ1bmN0aW9uPFdlYkNvcmU6OkNhcHR1cmVTb3VyY2VPckVycm9yKCk+OwotICAgIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29n
bml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tl
ciYmLCBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24mJik7CisgICAgU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXJJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYsIFNw
ZWVjaFJlY29nbml0aW9uQ2hlY2tJZm1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQmJiwgUmVh
bHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uJiYpOwogI2Vsc2UKLSAgICBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJik7Cisg
ICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25D
aGVja2VyJiYsIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJZm1vY2tTcGVlY2hSZWNvZ25pdGlvbkVu
YWJsZWQmJik7CiAjZW5kaWYKIAogICAgIHZvaWQgc3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250
aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYmKTsKQEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdCYpOwotICAgIHZvaWQgaGFuZGxlUmVxdWVzdChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGhh
bmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CiAgICAgdm9p
ZCBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgT3B0aW9uYWw8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiA9IFdURjo6bnVs
bG9wdCk7CiAgICAgdm9pZCBzZW5kVXBkYXRlKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlJik7CiAKQEAgLTgxLDYgKzgyLDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+PiBtX3JlcXVlc3Rz
OwogICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgbV9wZXJtaXNzaW9uQ2hl
Y2tlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcj4gbV9y
ZWNvZ25pemVyOworICAgIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJZm1vY2tTcGVlY2hSZWNvZ25p
dGlvbkVuYWJsZWQgbV9jaGVja0lmbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZDsKKyAgICBi
b29sIG1faXNSZXNldHRpbmcgeyBmYWxzZSB9OwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24gbV9yZWFsdGltZU1lZGlhU291
cmNlQ3JlYXRlRnVuY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAppbmRleCA2OGRmNjUyNWU1MWIzMGU2NGVkYTNlNmZmNDJiZmU2YzUxZWZjM2I1Li5h
M2JlMjhjYTMyYWI2Yzg2ODEwZTg0ZmY3MzBiNWYwOTFlZTNmNGMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE3MjIsMjAgKzE3MjIsMjcgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNwZWVj
aFJlY29nbml0aW9uU2VydmVySWRlbnQKIAogICAgIEFTU0VSVCghbV9zcGVlY2hSZWNvZ25pdGlv
blNlcnZlck1hcC5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgYXV0byYgc3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFwLmFkZChpZGVudGlmaWVy
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIg
PSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9u
KCkpLCBpZGVudGlmaWVyLCBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oYXV0
byYgb3JpZ2luLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgIGF1dG8g
cGVybWlzc2lvbkNoZWNrZXIgPSBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0o
YXV0byYgb3JpZ2luLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgewogICAgICAg
ICBpZiAoIXdlYWtQYWdlKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTcGVlY2hS
ZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6RGVueSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICB3ZWFrUGFnZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbihvcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9Cisg
ICAgfTsKKyAgICBhdXRvIGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gW3dlYWtQ
YWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkgeworICAgICAgICByZXR1cm4gd2Vha1Bh
Z2UgJiYgd2Vha1BhZ2UtPnByZWZlcmVuY2VzKCkubW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgp
OworICAgIH07CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICwgW3dlYWtQYWdlID0g
bWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkgeworICAgIGF1dG8gY3JlYXRlUmVhbHRpbWVNZWRp
YVNvdXJjZSA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBhZ2UpXSgpIHsKICAgICAg
ICAgcmV0dXJuIHdlYWtQYWdlID8gd2Vha1BhZ2UtPmNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2VG
b3JTcGVlY2hSZWNvZ25pdGlvbigpIDogQ2FwdHVyZVNvdXJjZU9yRXJyb3IgeyAiUGFnZSBpcyBp
bnZhbGlkIiB9OwotICAgIH0KKyAgICB9OworICAgIHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0g
bWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigp
KSwgaWRlbnRpZmllciwgV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlciksIFdURk1vdmUoY2hlY2tJ
Zk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpLCBXVEZNb3ZlKGNyZWF0ZVJlYWx0aW1lTWVkaWFT
b3VyY2UpKTsKKyNlbHNlCisgICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtYWtlVW5pcXVl
PFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlm
aWVyLCBXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSwgV1RGTW92ZShjaGVja0lmbW9ja1NwZWVj
aFJlY29nbml0aW9uRW5hYmxlZCkpOwogI2VuZGlmCi0gICAgKTsKKwogICAgIGFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgaWRlbnRpZmllciwgKnNwZWVjaFJlY29nbml0aW9uU2VydmVyKTsKIH0KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGRjODYwMmM4ZDFjNzJjMjdlZjNlNGEyYzRhNjM4MTc2ZDNlZTg4MjUuLjQ0MmEwZjM4ZGU1
MmQzYmNlZjg0YWQwYzYzMjAwMTRjODUxNjUzOTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
MC0xMi0xMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL2lvcy9zdGFydC1yZWNvZ25pdGlvbi10
aGVuLXN0b3AtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaHJlY29n
bml0aW9uL2lvcy9zdGFydC1yZWNvZ25pdGlvbi10aGVuLXN0b3AuaHRtbDogQWRkZWQuCisKIDIw
MjAtMTItMTAgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UENNOiBUdXJuIGZlYXR1cmUgb24gYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9pb3Mvc3RhcnQtcmVjb2duaXRpb24tdGhlbi1zdG9wLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vaW9zL3N0YXJ0
LXJlY29nbml0aW9uLXRoZW4tc3RvcC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ2MjFmNzA5
M2IwZmMyN2QzNzcyMjMyMTI1MDE4Mjg2MzkxZTY3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vaW9zL3N0YXJ0LXJlY29nbml0aW9uLXRoZW4t
c3RvcC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNCBAQAorVmVyaWZ5IHRoYXQgZXZlbnRzIGFy
ZSByZWNlaXZlZCBjb3JyZXRseSB3aGVuIHN0YXJ0IGFuZCBzdG9wIHJlY29nbml0aW9uIG5vcm1h
bGx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyByZWNvZ25pdGlvbiA9
IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
cmVjb2duaXRpb24uc3RhcnQoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1JlY2VpdmVkIHN0
YXJ0IGV2ZW50CitSZWNlaXZlZCBhdWRpb3N0YXJ0IGV2ZW50CitSZWNlaXZlZCBzcGVlY2hzdGFy
dCBldmVudAorUmVjZWl2ZWQgcmVzdWx0IGV2ZW50CitQQVNTIGV2ZW50LnJlc3VsdHMubGVuZ3Ro
IGlzIDEKK1BBU1MgZXZlbnQucmVzdWx0cy5pdGVtKDApLmlzRmluYWwgaXMgdHJ1ZQorUEFTUyBl
dmVudC5yZXN1bHRzLml0ZW0oMCkubGVuZ3RoIGlzIDEKK1BBU1MgZXZlbnQucmVzdWx0cy5pdGVt
KDApLml0ZW0oMCkudHJhbnNjcmlwdCBpcyAiVGVzdCIKK1BBU1MgZXZlbnQucmVzdWx0cy5pdGVt
KDApLml0ZW0oMCkuY29uZmlkZW5jZSBpcyAxCitQQVNTIHJlY29nbml0aW9uLnN0b3AoKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1JlY2VpdmVkIGF1ZGlvZW5kIGV2ZW50CitSZWNlaXZlZCBz
cGVlY2hlbmQgZXZlbnQKK1JlY2VpdmVkIGVuZCBldmVudAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc3BlZWNocmVjb2duaXRpb24vaW9zL3N0YXJ0LXJlY29nbml0aW9uLXRoZW4tc3RvcC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9pb3Mvc3RhcnQtcmVjb2duaXRp
b24tdGhlbi1zdG9wLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZiYTE1OTNhNDIzYjM0MWE1NzAzYTc3ZWJk
NTVkMzliYjVkNDQwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNo
cmVjb2duaXRpb24vaW9zL3N0YXJ0LXJlY29nbml0aW9uLXRoZW4tc3RvcC5odG1sCkBAIC0wLDAg
KzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oIlZlcmlmeSB0aGF0IGV2ZW50cyBhcmUgcmVjZWl2ZWQgY29ycmV0bHkgd2hlbiBzdGFy
dCBhbmQgc3RvcCByZWNvZ25pdGlvbiBub3JtYWxseS4iKTsKKworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7Cit9CisKK3ZhciBoYXNSZWNlaXZlZFJl
c3VsdCA9IGZhbHNlOworc2hvdWxkTm90VGhyb3coInJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJl
Y29nbml0aW9uKCk7Iik7CityZWNvZ25pdGlvbi5jb250aW51b3VzID0gdHJ1ZTsKKworcmVjb2du
aXRpb24ub25zdGFydCA9IChldmVudCkgPT4geworICAgIGRlYnVnKCJSZWNlaXZlZCBzdGFydCBl
dmVudCIpOworfQorCityZWNvZ25pdGlvbi5vbmF1ZGlvc3RhcnQgPSAoZXZlbnQpID0+IHsKKyAg
ICBkZWJ1ZygiUmVjZWl2ZWQgYXVkaW9zdGFydCBldmVudCIpOworfQorCityZWNvZ25pdGlvbi5v
bnNwZWVjaHN0YXJ0ID0gKGV2ZW50KSA9PiB7CisgICAgZGVidWcoIlJlY2VpdmVkIHNwZWVjaHN0
YXJ0IGV2ZW50Iik7Cit9CisKK3JlY29nbml0aW9uLm9ucmVzdWx0ID0gKGV2ZW50KSA9PiB7Cisg
ICAgaWYgKGhhc1JlY2VpdmVkUmVzdWx0KQorICAgICAgICByZXR1cm47CisgICAgaGFzUmVjZWl2
ZWRSZXN1bHQgPSB0cnVlOworCisgICAgZGVidWcoIlJlY2VpdmVkIHJlc3VsdCBldmVudCIpOwor
ICAgIHNob3VsZEJlKCJldmVudC5yZXN1bHRzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmVU
cnVlKCJldmVudC5yZXN1bHRzLml0ZW0oMCkuaXNGaW5hbCIpOworICAgIHNob3VsZEJlKCJldmVu
dC5yZXN1bHRzLml0ZW0oMCkubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnJlc3VsdHMuaXRlbSgwKS5pdGVtKDApLnRyYW5zY3JpcHQiLCAiVGVzdCIpOwor
ICAgIHNob3VsZEJlKCJldmVudC5yZXN1bHRzLml0ZW0oMCkuaXRlbSgwKS5jb25maWRlbmNlIiwg
IjEiKTsKKworICAgIHNob3VsZE5vdFRocm93KCJyZWNvZ25pdGlvbi5zdG9wKCkiKTsKK30KKwor
cmVjb2duaXRpb24ub25hdWRpb2VuZCA9IChldmVudCkgPT4geworICAgIGRlYnVnKCJSZWNlaXZl
ZCBhdWRpb2VuZCBldmVudCIpOworfQorCityZWNvZ25pdGlvbi5vbnNwZWVjaGVuZCA9IChldmVu
dCkgPT4geworICAgIGRlYnVnKCJSZWNlaXZlZCBzcGVlY2hlbmQgZXZlbnQiKTsKK30KKworcmVj
b2duaXRpb24ub25lbmQgPSAoZXZlbnQpID0+IHsKKyAgICBkZWJ1ZygiUmVjZWl2ZWQgZW5kIGV2
ZW50Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworc2hvdWxkTm90VGhyb3coInJlY29n
bml0aW9uLnN0YXJ0KCkiKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="commit-queue"
          id="433432"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416028</attachid>
            <date>2020-12-11 12:07:16 -0800</date>
            <delta_ts>2020-12-14 08:46:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201211120715.patch</filename>
            <type>text/plain</type>
            <size>69946</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjJjMmZmNTQ1OWJjOGFj
OGQzMzllZWZkZjg0MjEzMjdmYzlhOWMwNi4uNTAwMjRhMDljM2E2OWIyYzI3NWM5Y2FjYmQ1ODhk
Njk4NzgzMjBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIwLTEyLTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
V2ViU3BlZWNoUmVjb2duaXplclRhc2ssIHdoaWNoIGNvbm5lY3RzIHRvIHNwZWVjaCByZWNvZ25p
dGlvbiBzZXJ2aWNlIHVzaW5nIFNwZWVjaCBmcmFtZXdvcmsgQVBJcy4KKworICAgICAgICBUZXN0
OmZhc3Qvc3BlZWNocmVjb2duaXRpb24vaW9zL3N0YXJ0LXJlY29nbml0aW9uLXRoZW4tc3RvcC5o
dG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml6ZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BDYXB0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmRhdGFDYXB0dXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmFib3J0UmVjb2duaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29nbml0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXplcjo6c2V0U291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oOgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pemVyOjpkYXRhQ2FwdHVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pemVyOjpyZXNldFJlY29nbml0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbTogQWRkZWQuCisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBpbml0V2l0aElkZW50aWZpZXI6bG9j
YWxlOmRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6cmVwb3J0SW50ZXJpbVJlc3VsdHM6bWF4QWx0ZXJu
YXRpdmVzOmRlbGVnYXRlQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6
ZXJUYXNrSW1wbCBjYWxsYmFja1dpdGhSZXN1bHQ6aXNGaW5hbDpdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tJbXBsIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZTpdKToKKyAgICAg
ICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIGFib3J0XSk6CisgICAgICAgICgtW1dl
YlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzdG9wXSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrSW1wbCBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAgICAoLVtX
ZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgc2VuZFNwZWVjaEVuZElmTmVlZGVkXSk6CisgICAg
ICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzZW5kRW5kSWZOZWVkZWRdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHNwZWVjaFJlY29nbml6ZXI6YXZh
aWxhYmlsaXR5RGlkQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFz
a0ltcGwgc3BlZWNoUmVjb2duaXRpb25UYXNrOmRpZEh5cG90aGVzaXplVHJhbnNjcmlwdGlvbjpd
KToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHNwZWVjaFJlY29nbml0
aW9uVGFzazpkaWRGaW5pc2hSZWNvZ25pdGlvbjpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVj
b2duaXplclRhc2tJbXBsIHNwZWVjaFJlY29nbml0aW9uVGFza1dhc0NhbmNlbGxlZDpdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHNwZWVjaFJlY29nbml0aW9uVGFz
azpkaWRGaW5pc2hTdWNjZXNzZnVsbHk6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6
ZXJUYXNrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpy
ZXBvcnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYXVkaW9TYW1wbGVzQXZhaWxhYmxl
Ol0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBhYm9ydF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFzayBzdG9wXSk6CisgICAgICAgICogTW9kdWxlcy9z
cGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmg6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbTog
QWRkZWQuCisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBpbml0V2l0aElk
ZW50aWZpZXI6bG9jYWxlOmRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6cmVwb3J0SW50ZXJpbVJlc3Vs
dHM6bWF4QWx0ZXJuYXRpdmVzOmRlbGVnYXRlQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrTW9jayBhdWRpb1NhbXBsZXNBdmFpbGFibGU6XSk6CisgICAgICAg
ICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBhYm9ydF0pOgorICAgICAgICAoLVtXZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2sgc3RvcF0pOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIw
LTEyLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQWNjZXB0IGNsaWNrIG1lYXN1cmVtZW50IGRhdGEgZnJvbSBob3N0aW5nIGFwcGxpY2F0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiYjg5MWYxOGJmYTJkMWNkZGZhODc2YjgzZDAxYTNk
ZDVjODk4OGEyLi4wY2E5NGQwZTVmNjY2YTE5NWIyODFhNGFkOTJlOGQ3ZDlmZDAyYWVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMi0xMSAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcmVjb2duaXplciBmb3Ig
U3BlZWNoUmVjb2duaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxOTQ1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNvZnQgbGlu
a2luZyB0byBTcGVlY2ggZnJhbWV3b3JrIGFuZCBTUEkuCisKKyAgICAgICAgKiBQQUwueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwYWwvY29jb2EvU3BlZWNoU29mdExpbmsu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2du
aXplci5oLgorICAgICAgICAqIHBhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5tbTogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oLgorICAg
ICAgICAqIHBhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaC4KKwogMjAyMC0xMi0xMCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQ3JlYXRlIGEgZm9y
bWF0IHJlYWRlciBwbHVnLWluIGZvciBXZWJNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRiOWZkZDhhNGZiMmMxYmZh
OWZlZDA5YjdlM2JkMWQ3MTJlZmIyNDguLjQ2YWE4Zjk1YjFmZjA1MmNlZjYyMDM2NWU3Y2UyNzA2
NjUxNjA5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTItMTEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHJlY29nbml6ZXIg
Zm9yIFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTk0NTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxOTE0NDY1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKyAgICAgICAgKFdl
YktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmFib3J0KToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKToKKwogMjAyMC0xMi0xMCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFj
Y2VwdCBjbGljayBtZWFzdXJlbWVudCBkYXRhIGZyb20gaG9zdGluZyBhcHBsaWNhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcApp
bmRleCBmOTE2ZDJiYTRkMjgwZjc1ODYxMmI1N2NjMTIxOTRmOWI0ZDNiNWI1Li5mODlkNWUxZDZk
YmRjMTRmOTFjZTg5ZDEzMzNhYWU5ZWRiNzFjMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcApAQCAtMjcsMTAgKzI3LDEwIEBA
CiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXplci5oIgogCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb25VcGRhdGUuaCIKKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICNpbmNsdWRlICJNZWRpYVV0aWxpdGllcy5oIgotI2luY2x1ZGUgPHBhbC9hdmZv
dW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDUsNDIgKzQ1LDQ3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXQo
KQogICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291cmNlID0gbnVsbHB0cjsKKyAgICBzdG9wQ2FwdHVy
ZSgpOworICAgIHJlc2V0UmVjb2duaXRpb24oKTsKKyAgICBtX2NsaWVudElkZW50aWZpZXIgPSBX
VEY6Om51bGxvcHQ7Cit9CiAKLSAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25FcnJv
ciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCAiQW5vdGhlciByZXF1ZXN0
IGlzIHN0YXJ0ZWQiIH07Ci0gICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpjcmVhdGVFcnJvcigqbV9jbGllbnRJZGVudGlmaWVyLCBlcnJvcikpOwordm9pZCBT
cGVlY2hSZWNvZ25pemVyOjphYm9ydCgpCit7CisgICAgQVNTRVJUKG1fY2xpZW50SWRlbnRpZmll
cik7CisgICAgc3RvcENhcHR1cmUoKTsKKyAgICBhYm9ydFJlY29nbml0aW9uKCk7Cit9CiAKLSAg
ICBtX2NsaWVudElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cit2b2lkIFNwZWVjaFJlY29nbml6
ZXI6OnN0b3AoKQoreworICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIpOworICAgIHN0b3BD
YXB0dXJlKCk7CisgICAgc3RvcFJlY29nbml0aW9uKCk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFT
b3VyY2U+JiYgc291cmNlKQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydChTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFJlZjxS
ZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25F
bmFibGVkLCBjb25zdCBTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywg
Ym9vbCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzKQogewotICAgIEFT
U0VSVCghbV9zb3VyY2UpOwotCi0gICAgbV9jbGllbnRJZGVudGlmaWVyID0gaWRlbnRpZmllcjsK
KyAgICBBU1NFUlQoIW1fY2xpZW50SWRlbnRpZmllcik7CisgICAgbV9jbGllbnRJZGVudGlmaWVy
ID0gY2xpZW50SWRlbnRpZmllcjsKICAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OlN0YXJ0KSk7CiAKLSAgICBzZXRTb3VyY2UoV1RGTW92ZShzb3VyY2UpKTsK
KyAgICBpZiAoIXN0YXJ0UmVjb2duaXRpb24obW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCwg
Y2xpZW50SWRlbnRpZmllciwgbG9jYWxlSWRlbnRpZmllciwgY29udGludW91cywgaW50ZXJpbVJl
c3VsdHMsIG1heEFsdGVybmF0aXZlcykpIHsKKyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9y
VHlwZTo6U2VydmljZU5vdEFsbG93ZWQsICJGYWlsZWQgdG8gc3RhcnQgcmVjb2duaXRpb24iX3Mg
fTsKKyAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGVycm9yKSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RhcnRDYXB0dXJlKFdURk1vdmUoc291cmNl
KSk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXplcjo6c2V0U291cmNlKFJlZjxSZWFsdGltZU1l
ZGlhU291cmNlPiYmIHNvdXJjZSkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRDYXB0dXJl
KFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBhdXRvIGRhdGFDYWxs
YmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShjb25zdCBhdXRvJiB0aW1lLCBj
b25zdCBhdXRvJiBkYXRhLCBjb25zdCBhdXRvJiBkZXNjcmlwdGlvbiwgYXV0byBzYW1wbGVDb3Vu
dCkgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGF1dG8gYnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVC
dWZmZXIoZGF0YSwgZGVzY3JpcHRpb24sIFBBTDo6dG9DTVRpbWUodGltZSksIHNhbXBsZUNvdW50
KTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0jZWxzZQotICAgICAgICBVTlVTRURf
UEFSQU0odGltZSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICAgICAgVU5VU0VE
X1BBUkFNKGRlc2NyaXB0aW9uKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHNhbXBsZUNvdW50KTsK
LSNlbmRpZgorICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+ZGF0
YUNhcHR1cmVkKHRpbWUsIGRhdGEsIGRlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7CiAgICAgfTsK
IAogICAgIGF1dG8gc3RhdGVVcGRhdGVDYWxsYmFjayA9IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKHRoaXMpXShjb25zdCBhdXRvJiB1cGRhdGUpIHsKQEAgLTg5LDkgKzk0LDYgQEAgdm9p
ZCBTcGVlY2hSZWNvZ25pemVyOjpzZXRTb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYg
c291cmNlKQogCiAgICAgICAgIEFTU0VSVChtX2NsaWVudElkZW50aWZpZXIgJiYgbV9jbGllbnRJ
ZGVudGlmaWVyLnZhbHVlKCkgPT0gdXBkYXRlLmNsaWVudElkZW50aWZpZXIoKSk7CiAgICAgICAg
IG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUpOwotCi0gICAgICAgIGlmICh1cGRhdGUudHlwZSgp
ID09IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IpCi0gICAgICAgICAgICBtX3Nv
dXJjZSA9IG51bGxwdHI7CiAgICAgfTsKIAogICAgIG1fc291cmNlID0gbWFrZVVuaXF1ZTxTcGVl
Y2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2U+KCptX2NsaWVudElkZW50aWZpZXIsIFdURk1vdmUo
ZGF0YUNhbGxiYWNrKSwgV1RGTW92ZShzdGF0ZVVwZGF0ZUNhbGxiYWNrKSwgV1RGTW92ZShzb3Vy
Y2UpKTsKQEAgLTk5LDMwICsxMDEsNDAgQEAgdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzZXRTb3Vy
Y2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQogCiAjZW5kaWYKIAotdm9pZCBT
cGVlY2hSZWNvZ25pemVyOjpzdG9wKFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQgc2hvdWxkR2Vu
ZXJhdGVGaW5hbFJlc3VsdCkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcENhcHR1cmUoKQog
ewotICAgIGlmICghbV9jbGllbnRJZGVudGlmaWVyKQorICAgIGlmICghbV9zb3VyY2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHN0b3BJbnRlcm5hbCgpOworICAgIG1fc291cmNlID0gbnVsbHB0
cjsKKyAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0
ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkF1ZGlv
RW5kKSk7Cit9CiAKLSAgICBpZiAoc2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCA9PSBTaG91bGRH
ZW5lcmF0ZUZpbmFsUmVzdWx0OjpZZXMpIHsKLSAgICAgICAgLy8gVE9ETzogZ2VuZXJhdGUgcmVh
bCByZXN1bHQgd2hlbiBzcGVlY2ggcmVjb2duaXRpb24gYmFja2VuZCBpcyBpbXBsZW1lbnRlZC4K
LSAgICAgICAgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4gcmVzdWx0RGF0YXM7
Ci0gICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3Jl
YXRlUmVzdWx0KCptX2NsaWVudElkZW50aWZpZXIsIHJlc3VsdERhdGFzKSk7Ci0gICAgfQorI2lm
ICFIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6ZGF0YUNh
cHR1cmVkKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3Qg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkKK3sKK30KIAorYm9vbCBTcGVlY2hSZWNv
Z25pemVyOjpzdGFydFJlY29nbml0aW9uKGJvb2wsIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlv
bkNsaWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wsIHVpbnQ2NF90KQor
eworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0UmVj
b2duaXRpb24oKQorewogICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RW5kKSk7Ci0gICAgbV9jbGllbnRJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OwogfQog
Ci12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0b3BJbnRlcm5hbCgpCit2b2lkIFNwZWVjaFJlY29n
bml6ZXI6OnN0b3BSZWNvZ25pdGlvbigpCiB7Ci0gICAgaWYgKCFtX3NvdXJjZSkKLSAgICAgICAg
cmV0dXJuOworICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
Y3JlYXRlKCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6
RW5kKSk7Cit9CiAKLSAgICBtX3NvdXJjZSA9IG51bGxwdHI7Ci0gICAgbV9kZWxlZ2F0ZUNhbGxi
YWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRlbnRpZmllciwg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpBdWRpb0VuZCkpOwordm9pZCBTcGVlY2hSZWNv
Z25pemVyOjpyZXNldFJlY29nbml0aW9uKCkKK3sKIH0KIAorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml6ZXIuaAppbmRleCBlYzVhYzEzMGI4YTA0NzdkYTkxZmQxZTFlN2ZjMmM3MGE0YTMyNjNh
Li4xNDk1ZGEyOWE0OGM1MDg5N2JiYmZiZDAxZDQzYTJhNGYwZGEwYjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCkBAIC0yOCw2ICsy
OCwxMSBAQAogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oIgogI2lu
Y2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIuaCIKIAor
I2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CitP
QkpDX0NMQVNTIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrOworI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25VcGRhdGU7CkBAIC00MCwxMSArNDUs
MTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIH5TcGVlY2hSZWNvZ25pemVyKCkgPSBk
ZWZhdWx0OwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFJl
ZjxSZWFsdGltZU1lZGlhU291cmNlPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFJlZjxSZWFsdGlt
ZU1lZGlhU291cmNlPiYmLCBib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIGNvbnN0
IFN0cmluZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1S
ZXN1bHRzLCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXNldCgpOwotICAgIGVudW0gY2xhc3MgU2hvdWxkR2VuZXJhdGVGaW5hbFJl
c3VsdCB7IE5vLCBZZXMgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3AoU2hvdWxkR2Vu
ZXJhdGVGaW5hbFJlc3VsdCA9IFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQ6Olllcyk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rv
cCgpOwogCiAgICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcj4gY3VycmVudENsaWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dElkZW50aWZpZXI7IH0KIApAQCAtNTIsMTIgKzU3LDIyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dG9wSW50ZXJuYWwoKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgdm9pZCBzZXRT
b3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpOworICAgIHZvaWQgc3RhcnRDYXB0dXJl
KFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmKTsKICNlbmRpZgorICAgIHZvaWQgc3RvcENhcHR1
cmUoKTsKKyAgICB2b2lkIGRhdGFDYXB0dXJlZChjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0
IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVf
dCBzYW1wbGVDb3VudCk7CisgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGJvb2wgbW9ja1NwZWVj
aFJlY29nbml0aW9uRW5hYmxlZCwgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyLCBib29sIGNvbnRpbnVvdXMs
IGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IGFsdGVybmF0aXZlcyk7CisgICAgdm9pZCBh
Ym9ydFJlY29nbml0aW9uKCk7CisgICAgdm9pZCBzdG9wUmVjb2duaXRpb24oKTsKKyAgICB2b2lk
IHJlc2V0UmVjb2duaXRpb24oKTsKIAogICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXI+IG1fY2xpZW50SWRlbnRpZmllcjsKICAgICBEZWxlZ2F0
ZUNhbGxiYWNrIG1fZGVsZWdhdGVDYWxsYmFjazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlZWNo
UmVjb2duaXRpb25DYXB0dXJlU291cmNlPiBtX3NvdXJjZTsKKworI2lmIEhBVkUoU1BFRUNIUkVD
T0dOSVpFUikKKyAgICBSZXRhaW5QdHI8V2ViU3BlZWNoUmVjb2duaXplclRhc2s+IG1fdGFzazsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29h
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFmNDI4ZjRmNmIzZTRkOTg4YTVlZTc0YjYwM2VjYjkyY2Y5ZGU2ZTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9T
cGVlY2hSZWNvZ25pemVyQ29jb2EubW0KQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU3BlZWNoUmVjb2duaXplci5oIgorCisjaWYgSEFW
RShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0ICJNZWRpYVV0aWxpdGllcy5oIgorI2ltcG9y
dCAiU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCIKKyNpbXBvcnQgIldlYlNwZWVjaFJlY29nbml6
ZXJUYXNrTW9jay5oIgorI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8cGFsL2F2
Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmRhdGFDYXB0dXJlZChjb25zdCBNZWRpYVRpbWUm
IHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQoreworICAgIGF1dG8g
YnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIoZGF0YSwgZGVzY3JpcHRpb24sIFBBTDo6
dG9DTVRpbWUodGltZSksIHNhbXBsZUNvdW50KTsKKyAgICBbbV90YXNrIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZTpidWZmZXIuZ2V0KCldOworfQorCitib29sIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0
UmVjb2duaXRpb24oYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRz
LCB1aW50NjRfdCBhbHRlcm5hdGl2ZXMpCit7CisgICAgYXV0byB0YXNrQ2xhc3MgPSBtb2NrU3Bl
ZWNoUmVjb2duaXRpb25FbmFibGVkID8gW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBjbGFz
c10gOiBbV2ViU3BlZWNoUmVjb2duaXplclRhc2sgY2xhc3NdOworICAgIG1fdGFzayA9IGFkb3B0
TlMoW1t0YXNrQ2xhc3MgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIGxvY2Fs
ZTpsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6Y29udGludW91cyByZXBv
cnRJbnRlcmltUmVzdWx0czppbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6YWx0ZXJuYXRp
dmVzIGRlbGVnYXRlQ2FsbGJhY2s6W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyld
KGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJiB1cGRhdGUpIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2RlbGVnYXRlQ2FsbGJh
Y2sodXBkYXRlKTsKKyAgICB9XSk7CisKKyAgICByZXR1cm4gISFtX3Rhc2s7Cit9CisKK3ZvaWQg
U3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29nbml0aW9uKCkKK3sKKyAgICBBU1NFUlQobV90YXNr
KTsKKyAgICBbbV90YXNrIHN0b3BdOworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFib3J0
UmVjb2duaXRpb24oKQoreworICAgIEFTU0VSVChtX3Rhc2spOworICAgIFttX3Rhc2sgYWJvcnRd
OworfQorCit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24oKQoreworICAg
IGlmICghbV90YXNrKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRhc2sgPSBzdGQ6OmV4
Y2hhbmdlKG1fdGFzaywgbnVsbHB0cik7CisgICAgW3Rhc2sgYWJvcnRdOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNv
Z25pemVyVGFzay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWM0MDM5MmQ1MTU0NmRhNzVlNTMzMDAy
YWUyOGY2NTQ2N2ZhOWEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2suaApAQCAtMCwwICsxLDUxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCAiU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgorI2ltcG9ydCAiU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUuaCIKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwordHlw
ZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOworCitA
Y2xhc3MgV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsOworCitAaW50ZXJmYWNlIFdlYlNwZWVj
aFJlY29nbml6ZXJUYXNrIDogTlNPYmplY3QgeworQHByaXZhdGUKKyAgICBSZXRhaW5QdHI8V2Vi
U3BlZWNoUmVjb2duaXplclRhc2tJbXBsPiBfaW1wbDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZp
ZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1S
ZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9u
ZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrOworLSAodm9pZClhdWRpb1NhbXBsZXNB
dmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcjsKKy0gKHZvaWQpYWJvcnQ7
CistICh2b2lkKXN0b3A7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2subW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2Nv
YS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWM4ZDU3YTgyZmYyMDEx
NzY4ZTU4MjUxNDg0OTVkYWM4MWRiNDlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0KQEAgLTAs
MCArMSwzMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldl
YlNwZWVjaFJlY29nbml6ZXJUYXNrLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisK
KyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCisjaW1wb3J0IDxwYWwvY29jb2Ev
U3BlZWNoU29mdExpbmsuaD4KKworLy8gU2V0IHRoZSBtYXhpbXVtIGR1cmF0aW9uIHRvIGJlIGFu
IGhvdXI7IHdlIGNhbiBhZGp1c3QgdGhpcyBpZiBuZWVkZWQuCitzdGF0aWMgY29uc3RleHByIHNp
emVfdCBtYXhpbXVtUmVjb2duaXRpb25EdXJhdGlvbiA9IDYwICogNjA7CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIFdl
YlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCA6IE5TT2JqZWN0PFNGU3BlZWNoUmVjb2duaXRpb25U
YXNrRGVsZWdhdGUsIFNGU3BlZWNoUmVjb2duaXplckRlbGVnYXRlPiB7CitAcHJpdmF0ZQorICAg
IFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgX2lkZW50aWZpZXI7
CisgICAgQmxvY2tQdHI8dm9pZChjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpPiBfZGVs
ZWdhdGVDYWxsYmFjazsKKyAgICBib29sIF9kb011bHRpcGxlUmVjb2duaXRpb25zOworICAgIHVp
bnQ2NF90IF9tYXhBbHRlcm5hdGl2ZXM7CisgICAgUmV0YWluUHRyPFNGU3BlZWNoUmVjb2duaXpl
cj4gX3JlY29nbml6ZXI7CisgICAgUmV0YWluUHRyPFNGU3BlZWNoQXVkaW9CdWZmZXJSZWNvZ25p
dGlvblJlcXVlc3Q+IF9yZXF1ZXN0OworICAgIFdlYWtPYmpDUHRyPFNGU3BlZWNoUmVjb2duaXRp
b25UYXNrPiBfdGFzazsKKyAgICBib29sIF9oYXNTZW50U3BlZWNoU3RhcnQ7CisgICAgYm9vbCBf
aGFzU2VudFNwZWVjaEVuZDsKKyAgICBib29sIF9oYXNTZW50RW5kOworfQorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmll
ciBkb011bHRpcGxlUmVjb2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJl
c3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25n
KWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFNwZWVjaFJlY29n
bml0aW9uVXBkYXRlJikpY2FsbGJhY2s7CistICh2b2lkKWNhbGxiYWNrV2l0aFJlc3VsdDooU0ZU
cmFuc2NyaXB0aW9uICopdHJhbnNjcmlwdGlvbiBpc0ZpbmFsOihCT09MKWlzRmluYWw7CistICh2
b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVy
OworLSAodm9pZClhYm9ydDsKKy0gKHZvaWQpc3RvcDsKKy0gKHZvaWQpc2VuZFNwZWVjaFN0YXJ0
SWZOZWVkZWQ7CistICh2b2lkKXNlbmRTcGVlY2hFbmRJZk5lZWRlZDsKKy0gKHZvaWQpc2VuZEVu
ZElmTmVlZGVkOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTcGVlY2hSZWNvZ25pemVy
VGFza0ltcGwKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNT
dHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250
aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVy
bmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9p
ZCheKShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfaWRl
bnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgX2RvTXVsdGlwbGVSZWNvZ25pdGlvbnMgPSBjb250
aW51b3VzOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgX2hhc1NlbnRT
cGVlY2hTdGFydCA9IGZhbHNlOworICAgIF9oYXNTZW50U3BlZWNoRW5kID0gZmFsc2U7CisgICAg
X2hhc1NlbnRFbmQgPSBmYWxzZTsKKworICAgIGlmICghYWx0ZXJuYXRpdmVzKQorICAgICAgICBh
bHRlcm5hdGl2ZXMgPSAxOworICAgIF9tYXhBbHRlcm5hdGl2ZXMgPSBhbHRlcm5hdGl2ZXM7CisK
KyAgICBpZiAoIVtsb2NhbGVJZGVudGlmaWVyIGxlbmd0aF0pCisgICAgICAgIF9yZWNvZ25pemVy
ID0gYWRvcHROUyhbUEFMOjphbGxvY1NGU3BlZWNoUmVjb2duaXplckluc3RhbmNlKCkgaW5pdF0p
OworICAgIGVsc2UKKyAgICAgICAgX3JlY29nbml6ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jU0ZT
cGVlY2hSZWNvZ25pemVySW5zdGFuY2UoKSBpbml0V2l0aExvY2FsZTpbTlNMb2NhbGUgbG9jYWxl
V2l0aExvY2FsZUlkZW50aWZpZXI6bG9jYWxlSWRlbnRpZmllcl1dKTsKKyAgICBpZiAoIV9yZWNv
Z25pemVyKSB7CisgICAgICAgIFtzZWxmIHJlbGVhc2VdOworICAgICAgICByZXR1cm4gbmlsOwor
ICAgIH0KKworICAgIGlmICghW19yZWNvZ25pemVyIGlzQXZhaWxhYmxlXSkgeworICAgICAgICBb
c2VsZiByZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBbX3JlY29n
bml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisKKyAgICBfcmVxdWVzdCA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NTRlNwZWVjaEF1ZGlvQnVmZmVyUmVjb2duaXRpb25SZXF1ZXN0SW5zdGFuY2UoKSBpbml0
XSk7CisgICAgaWYgKFtfcmVjb2duaXplciBzdXBwb3J0c09uRGV2aWNlUmVjb2duaXRpb25dKQor
ICAgICAgICBbX3JlcXVlc3Qgc2V0UmVxdWlyZXNPbkRldmljZVJlY29nbml0aW9uOllFU107Cisg
ICAgW19yZXF1ZXN0IHNldFNob3VsZFJlcG9ydFBhcnRpYWxSZXN1bHRzOmludGVyaW1SZXN1bHRz
XTsKKyAgICBbX3JlcXVlc3Qgc2V0VGFza0hpbnQ6U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tIaW50
RGljdGF0aW9uXTsKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgW19yZXF1ZXN0
IHNldERldGVjdE11bHRpcGxlVXR0ZXJhbmNlczpZRVNdOworICAgIFtfcmVxdWVzdCBfc2V0TWF4
aW11bVJlY29nbml0aW9uRHVyYXRpb246bWF4aW11bVJlY29nbml0aW9uRHVyYXRpb25dOworI2Vu
ZGlmCisKKyAgICBfdGFzayA9IFtfcmVjb2duaXplciByZWNvZ25pdGlvblRhc2tXaXRoUmVxdWVz
dDpfcmVxdWVzdC5nZXQoKSBkZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAodm9pZCljYWxsYmFja1dpdGhSZXN1bHQ6KFNGVHJhbnNjcmlwdGlvbiAqKXRyYW5zY3JpcHRp
b24gaXNGaW5hbDooQk9PTClpc0ZpbmFsCit7CisgICAgYXV0byBzZWdtZW50cyA9IFt0cmFuc2Ny
aXB0aW9uIHNlZ21lbnRzXTsKKyAgICBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRh
PiBkYXRhczsKKyAgICBkYXRhcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNlZ21lbnRzLmNvdW50
KTsKKyAgICBmb3IgKFNGVHJhbnNjcmlwdGlvblNlZ21lbnQqIHNlZ21lbnQgaW4gc2VnbWVudHMp
IHsKKyAgICAgICAgLy8gTm90ZSBzZWdtZW50IGNvbmZpZGVuY2UgaXMgcmVwb3J0ZWQgMCB3aGVu
IHJlc3VsdCBpcyBub3QgZmluYWwuCisgICAgICAgIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvbkFs
dGVybmF0aXZlRGF0YT4gYWx0ZXJuYXRpdmVzOworICAgICAgICBhbHRlcm5hdGl2ZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShfbWF4QWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgYWx0ZXJuYXRpdmVz
LnVuY2hlY2tlZEFwcGVuZChTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YSB7IFtzZWdt
ZW50IHN1YnN0cmluZ10sIFtzZWdtZW50IGNvbmZpZGVuY2VdIH0pOworICAgICAgICBmb3IgKE5T
U3RyaW5nKiBzZWdtZW50QWx0ZXJuYXRpdmUgOiBbc2VnbWVudCBhbHRlcm5hdGl2ZVN1YnN0cmlu
Z3NdKSB7CisgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmVzLnNpemUoKSA9PSBfbWF4QWx0ZXJu
YXRpdmVzKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8gRklYTUU6IGNh
bGN1bGF0ZSBvciBnZXQgYWx0ZXJuYXRpdmUgY29uZmlkZW5jZSBpZiBwb3NzaWJsZS4KKyAgICAg
ICAgICAgIGFsdGVybmF0aXZlcy51bmNoZWNrZWRBcHBlbmQoU3BlZWNoUmVjb2duaXRpb25BbHRl
cm5hdGl2ZURhdGEgeyBzZWdtZW50QWx0ZXJuYXRpdmUsIDAuMCB9KTsKKyAgICAgICAgfQorICAg
ICAgICBkYXRhcy51bmNoZWNrZWRBcHBlbmQoU3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhIHsg
V1RGTW92ZShhbHRlcm5hdGl2ZXMpLCBib29sKGlzRmluYWwpIH0pOworICAgIH0KKyAgICBfZGVs
ZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KF9pZGVu
dGlmaWVyLCBkYXRhcykpOworfQorCistICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01T
YW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBbX3JlcXVlc3QgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXI6c2FtcGxlQnVmZmVyXTsK
K30KKworLSAodm9pZClhYm9ydAoreworICAgIGlmICghX3Rhc2sgfHwgW190YXNrIHN0YXRlXSA9
PSBTRlNwZWVjaFJlY29nbml0aW9uVGFza1N0YXRlQ2FuY2VsaW5nKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoW190YXNrIHN0YXRlXSA9PSBTRlNwZWVjaFJlY29nbml0aW9uVGFza1N0YXRl
Q29tcGxldGVkKSB7CisgICAgICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAg
ICAgIFtzZWxmIHNlbmRFbmRJZk5lZWRlZF07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAgIFtfcmVxdWVzdCBlbmRBdWRpb107
CisgICAgW190YXNrIGNhbmNlbF07Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIGlmICghX3Rh
c2sgfHwgW190YXNrIHN0YXRlXSA9PSBTRlNwZWVjaFJlY29nbml0aW9uVGFza1N0YXRlQ2FuY2Vs
aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoW190YXNrIHN0YXRlXSA9PSBTRlNwZWVj
aFJlY29nbml0aW9uVGFza1N0YXRlQ29tcGxldGVkKSB7CisgICAgICAgIFtzZWxmIHNlbmRTcGVl
Y2hFbmRJZk5lZWRlZF07CisgICAgICAgIFtzZWxmIHNlbmRFbmRJZk5lZWRlZF07CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOworICAg
IFtfcmVxdWVzdCBlbmRBdWRpb107CisgICAgW190YXNrIGZpbmlzaF07Cit9CisKKy0gKHZvaWQp
c2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWQKK3sKKyAgICBpZiAoX2hhc1NlbnRTcGVlY2hTdGFydCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgX2hhc1NlbnRTcGVlY2hTdGFydCA9IHRydWU7CisgICAg
X2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRp
ZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hTdGFydCkpOworfQorCist
ICh2b2lkKXNlbmRTcGVlY2hFbmRJZk5lZWRlZAoreworICAgIGlmICghX2hhc1NlbnRTcGVlY2hT
dGFydCB8fCBfaGFzU2VudFNwZWVjaEVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2hhc1Nl
bnRTcGVlY2hFbmQgPSB0cnVlOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6U3BlZWNoRW5kKSk7Cit9CisKKy0gKHZvaWQpc2VuZEVuZElmTmVlZGVkCit7CisgICAgaWYg
KF9oYXNTZW50RW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBfaGFzU2VudEVuZCA9IHRydWU7
CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShf
aWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKK30KKworI3By
YWdtYSBtYXJrIFNGU3BlZWNoUmVjb2duaXplckRlbGVnYXRlCisKKy0gKHZvaWQpc3BlZWNoUmVj
b2duaXplcjooU0ZTcGVlY2hSZWNvZ25pemVyICopc3BlZWNoUmVjb2duaXplciBhdmFpbGFiaWxp
dHlEaWRDaGFuZ2U6KEJPT0wpYXZhaWxhYmxlCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGlmIChhdmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghX3Rh
c2spCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlv
bkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxvd2VkLCAi
U3BlZWNoIHJlY29nbml0aW9uIHNlcnZpY2UgYmVjb21lcyB1bmF2YWlsYWJsZSJfcyB9OworICAg
IGF1dG8gdXBkYXRlID0gU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKF9pZGVu
dGlmaWVyLCBXVEZNb3ZlKGVycm9yKSk7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sodXBkYXRlKTsK
K30KKworI3ByYWdtYSBtYXJrIFNGU3BlZWNoUmVjb2duaXRpb25UYXNrRGVsZWdhdGUKKworLSAo
dm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2s6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFz
ayBkaWRIeXBvdGhlc2l6ZVRyYW5zY3JpcHRpb246KFNGVHJhbnNjcmlwdGlvbiAqKXRyYW5zY3Jp
cHRpb24KK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgW3NlbGYgc2VuZFNw
ZWVjaFN0YXJ0SWZOZWVkZWRdOworICAgIFtzZWxmIGNhbGxiYWNrV2l0aFJlc3VsdDp0cmFuc2Ny
aXB0aW9uIGlzRmluYWw6Tk9dOworfQorCistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFzazoo
U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrIGRpZEZpbmlzaFJlY29nbml0aW9uOihTRlNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0ICopcmVjb2duaXRpb25SZXN1bHQKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworCisgICAgW3NlbGYgY2FsbGJhY2tXaXRoUmVzdWx0OnJlY29nbml0
aW9uUmVzdWx0LmJlc3RUcmFuc2NyaXB0aW9uIGlzRmluYWw6WUVTXTsKKworICAgIGlmICghX2Rv
TXVsdGlwbGVSZWNvZ25pdGlvbnMpIHsKKyAgICAgICAgW3NlbGYgc2VuZFNwZWVjaEVuZElmTmVl
ZGVkXTsKKyAgICAgICAgW3NlbGYgc2VuZEVuZElmTmVlZGVkXTsKKyAgICB9Cit9CisKKy0gKHZv
aWQpc3BlZWNoUmVjb2duaXRpb25UYXNrV2FzQ2FuY2VsbGVkOihTRlNwZWVjaFJlY29nbml0aW9u
VGFzayAqKXRhc2sKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgW3NlbGYg
c2VuZFNwZWVjaEVuZElmTmVlZGVkXTsKKyAgICBbc2VsZiBzZW5kRW5kSWZOZWVkZWRdOworfQor
CistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFzazooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sg
Kil0YXNrIGRpZEZpbmlzaFN1Y2Nlc3NmdWxseTooQk9PTClzdWNjZXNzZnVsbHkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFzdWNjZXNzZnVsbHkpIHsKKyAgICAg
ICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlv
bkVycm9yVHlwZTo6QWJvcnRlZCwgdGFzay5lcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiB9Owor
ICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
RXJyb3IoX2lkZW50aWZpZXIsIFdURk1vdmUoZXJyb3IpKSk7CisgICAgfQorICAgIAorICAgIFtz
ZWxmIHNlbmRFbmRJZk5lZWRlZF07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBs
b2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6
KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0
cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2Fs
bGJhY2s6KHZvaWQoXikoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjawor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgX2ltcGwgPSBhZG9wdE5TKFtbV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIGFsbG9j
XSBpbml0V2l0aElkZW50aWZpZXI6aWRlbnRpZmllciBsb2NhbGU6bG9jYWxlSWRlbnRpZmllciBk
b011bHRpcGxlUmVjb2duaXRpb25zOmNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6aW50
ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOmFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNr
OmNhbGxiYWNrXSk7CisKKyAgICBpZiAoIV9pbXBsKSB7CisgICAgICAgIFtzZWxmIHJlbGVhc2Vd
OworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIHJldHVybiBzZWxmOworfQorCist
ICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVm
ZmVyCit7CisgICAgW19pbXBsIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZTpzYW1wbGVCdWZmZXJdOwor
fQorCistICh2b2lkKWFib3J0Cit7CisgICAgW19pbXBsIGFib3J0XTsKK30KKworLSAodm9pZClz
dG9wCit7CisgICAgW19pbXBsIHN0b3BdOworfQorCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxM
X0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTJmZmVmZDMyMjE4Y2Y0ZmE5MjI2Zjk5YmU1ZmM5NDRlZWQ5OTdkMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29n
bml6ZXJUYXNrTW9jay5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgSEFWRShT
UEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0ICJXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oIgor
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0Bj
bGFzcyBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2s7CisKK0BpbnRlcmZhY2UgV2ViU3BlZWNo
UmVjb2duaXplclRhc2tNb2NrIDogV2ViU3BlZWNoUmVjb2duaXplclRhc2sgeworQHByaXZhdGUK
KyAgICBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
IF9pZGVudGlmaWVyOworICAgIEJsb2NrUHRyPHZvaWQoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25VcGRhdGUmKT4gX2RlbGVnYXRlQ2FsbGJhY2s7CisgICAgYm9vbCBfZG9NdWx0aXBs
ZVJlY29nbml0aW9uczsKKyAgICBib29sIF9oYXNTZW50U3BlZWNoU3RhcnQ7CisgICAgYm9vbCBf
aGFzU2VudFNwZWVjaEVuZDsKKyAgICBib29sIF9jb21wbGV0ZWQ7Cit9CisKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJ
ZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJ
bnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2ln
bmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjazsKKy0gKHZvaWQpYXVkaW9T
YW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXI7CistICh2b2lk
KWFib3J0OworLSAodm9pZClzdG9wOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29h
L1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ZGZjNzZhMDZhZDQ5NWY1NmY1NzAxM2YzYTk1ZWE1ZjYyZjU1NGFlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXpl
clRhc2tNb2NrLm1tCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIldlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oIgorCisjaWYgSEFW
RShTUEVFQ0hSRUNPR05JWkVSKQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworQGltcGxlbWVudGF0aW9uIFdlYlNwZWVjaFJlY29nbml6ZXJU
YXNrTW9jaworCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9jYWxlOihOU1N0
cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOihCT09MKWNvbnRp
bnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJu
YXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOih2b2lk
KF4pKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikpY2FsbGJhY2sKK3sKKyAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9kb011
bHRpcGxlUmVjb2duaXRpb25zID0gY29udGludW91czsKKyAgICBfaWRlbnRpZmllciA9IGlkZW50
aWZpZXI7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBfY29tcGxldGVk
ID0gZmFsc2U7CisgICAgX2hhc1NlbnRTcGVlY2hTdGFydCA9IGZhbHNlOworICAgIF9oYXNTZW50
U3BlZWNoRW5kID0gZmFsc2U7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClhdWRp
b1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgoreworICAg
IGlmICghX2hhc1NlbnRTcGVlY2hTdGFydCkgeworICAgICAgICBfaGFzU2VudFNwZWVjaFN0YXJ0
ID0gdHJ1ZTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRh
dGU6OmNyZWF0ZShfaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVl
Y2hTdGFydCkpOworICAgIH0KKworICAgIC8vIEZha2Ugc29tZSByZWNvZ25pdGlvbiByZXN1bHRz
LgorICAgIFZlY3RvcjxTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YT4gYWx0ZXJuYXRp
dmVzOworICAgIGFsdGVybmF0aXZlcy5hcHBlbmQoU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2
ZURhdGEgeyAiVGVzdCIsIDEuMCB9KTsKKyAgICBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25SZXN1
bHREYXRhPiBkYXRhczsKKyAgICBkYXRhcy5hcHBlbmQoU3BlZWNoUmVjb2duaXRpb25SZXN1bHRE
YXRhIHsgV1RGTW92ZShhbHRlcm5hdGl2ZXMpLCB0cnVlICB9KTsKKyAgICBfZGVsZWdhdGVDYWxs
YmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KF9pZGVudGlmaWVyLCBk
YXRhcykpOworCisgICAgaWYgKCFfZG9NdWx0aXBsZVJlY29nbml0aW9ucykKKyAgICAgICAgW3Nl
bGYgYWJvcnRdOworfQorCistICh2b2lkKWFib3J0Cit7CisgICAgaWYgKF9jb21wbGV0ZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICBfY29tcGxldGVkID0gdHJ1ZTsKKworICAgIGlmICghX2hhc1Nl
bnRTcGVlY2hFbmQgJiYgX2hhc1NlbnRTcGVlY2hTdGFydCkgeworICAgICAgICBfaGFzU2VudFNw
ZWVjaEVuZCA9IHRydWU7CisgICAgICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6U3BlZWNoRW5kKSk7CisgICAgfQorCisgICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVj
b2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpFbmQpKTsKK30KKworLSAodm9pZClzdG9wCit7CisgICAgW3NlbGYgYWJvcnRdOwor
fQorCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNzE1NmFj
MmQxOWQwZWIyZGUwNjRlN2YwNmI2ZGU5MzNiZTdiZDQwLi4wZGZkNDk5MTc1NjgzYmI5NjUwY2M0
MGZmMmJhYTNhNGMwMWRlOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDQsNiArMTQ0LDkgQEAKIAkJNjNDN0VEQzcyMUFG
QUUwNDAwNkE3Qjk5IC8qIE5TUHJvZ3Jlc3NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRTM2OUY5MjFBRkE4M0YwMDFDMTRCQyAvKiBOU1Byb2dy
ZXNzU1BJLmggKi87IH07CiAJCTdBMzZEMEY5MjIzQUQ5QUIwMEIwNTIyRSAvKiBDb21tb25Dcnlw
dG9TUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
MzZEMEY4MjIzQUQ5QUIwMEIwNTIyRSAvKiBDb21tb25DcnlwdG9TUEkuaCAqLzsgfTsKIAkJN0Ez
QTZBODAyMENBREI0NzAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBM0E2QTdGMjBDQURCNDYwMDMxN0FBRSAvKiBO
U0ltYWdlU1BJLmggKi87IH07CisJCTkzQjM4RUJFMjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNCMzhFQkQyNTgyMUNCNjAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLmggKi87IH07CisJCTkz
QjM4RUMwMjU4MjFDRDgwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJGMjU4MjFDRDcwMDE5OEU2
MyAvKiBTcGVlY2hTb2Z0TGluay5tbSAqLzsgfTsKKwkJOTNCMzhFQzIyNTgyMUQyMjAwMTk4RTYz
IC8qIFNwZWVjaFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNCMzhFQzEyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5oICovOyB9OwogCQk5
M0RCN0QzNzI0NjI2QkNEMDA0QkQ4QTMgLyogTlNUZXh0SW5wdXRDb250ZXh0U1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0RCN0QzNjI0NjI2QkND
MDA0QkQ4QTMgLyogTlNUZXh0SW5wdXRDb250ZXh0U1BJLmggKi87IH07CiAJCTkzREI3RDNBMjQ2
MjZGODYwMDRCRDhBMyAvKiBOU1VuZG9NYW5hZ2VyU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0RCN0QzOTI0NjI2Rjg2MDA0QkQ4QTMgLyogTlNV
bmRvTWFuYWdlclNQSS5oICovOyB9OwogCQlBMTAyNjU4OTFGNTY3NDdBMDBCNEM4NDQgLyogSElU
b29sYm94U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTAyNjU4ODFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmggKi87IH07CkBAIC0z
NDAsNiArMzQzLDkgQEAKIAkJNjNFMzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8qIE5TUHJvZ3Jlc3NT
UEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTlNQcm9ncmVzc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QTM2RDBGODIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbkNyeXB0b1NQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTNBNkE3RjIwQ0FEQjQ2MDAzMTdBQUUgLyogTlNJ
bWFnZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0ltYWdlU1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJEMjU4MjFDQjYwMDE5OEU2MyAv
KiBTcGVlY2hTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVl
Y2hTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVCRjI1ODIx
Q0Q3MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTcGVlY2hTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTNCMzhFQzEyNTgyMUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNEQjdEMzYyNDYyNkJDQzAwNEJEOEEzIC8qIE5TVGV4dElucHV0Q29udGV4
dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1RleHRJbnB1dENvbnRl
eHRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNEQjdEMzkyNDYyNkY4NjAw
NEJEOEEzIC8qIE5TVW5kb01hbmFnZXJTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTlNVbmRvTWFuYWdlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0U1OTA5QzFGOTNCRjFFMDA2N0Y4Q0YgLyogVW5lbmNvZGFibGVIYW5kbGluZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVbmVuY29kYWJsZUhhbmRsaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01MTEsNiArNTE3LDcgQEAKIAkJCQk0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2
ZWFsU1BJLmggKi8sCiAJCQkJNTcwQUI4RjAyMEFFMkU4RDAwQjhCRTg3IC8qIFNlY0tleVByb3h5
U1BJLmggKi8sCiAJCQkJMEMyREExM0MxRjNCRUI0OTAwREJDMzE3IC8qIFNlcnZlcnNTUEkuaCAq
LywKKwkJCQk5M0IzOEVDMTI1ODIxRDIyMDAxOThFNjMgLyogU3BlZWNoU1BJLmggKi8sCiAJCQkJ
MEMyREExMkIxRjNCRUI0OTAwREJDMzE3IC8qIFVSTEZvcm1hdHRpbmdTUEkuaCAqLywKIAkJCQkw
QzJEQTEzRDFGM0JFQjQ5MDBEQkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmggKi8sCiAJ
CQkpOwpAQCAtNjgyLDYgKzY4OSw4IEBACiAJCQkJMzE2NDdGQUUyNTE3NTlEQjAwMTBGOEZCIC8q
IE9wZW5HTFNvZnRMaW5rQ29jb2EubW0gKi8sCiAJCQkJQTFGNjNDOUQyMUE0REJGNzAwNkZCNDNC
IC8qIFBhc3NLaXRTb2Z0TGluay5oICovLAogCQkJCUExRjYzQzlFMjFBNERCRjcwMDZGQjQzQiAv
KiBQYXNzS2l0U29mdExpbmsubW0gKi8sCisJCQkJOTNCMzhFQkQyNTgyMUNCNjAwMTk4RTYzIC8q
IFNwZWVjaFNvZnRMaW5rLmggKi8sCisJCQkJOTNCMzhFQkYyNTgyMUNENzAwMTk4RTYzIC8qIFNw
ZWVjaFNvZnRMaW5rLm1tICovLAogCQkJCTA3NjExREI0MjQzRkE1QkUwMEQ4MDcwNCAvKiBVc2Fn
ZVRyYWNraW5nU29mdExpbmsuaCAqLywKIAkJCQkwNzYxMURCNTI0M0ZBNUJGMDBEODA3MDQgLyog
VXNhZ2VUcmFja2luZ1NvZnRMaW5rLm1tICovLAogCQkJKTsKQEAgLTkwNyw2ICs5MTYsOCBAQAog
CQkJCUEzQUI2RTU2MUYzRDFEREIwMDlDMTRCMSAvKiBTbGVlcERpc2FibGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBM0FCNkU2MTFGM0QxRTM5MDA5QzE0QjEgLyogU2xlZXBEaXNhYmxlckNvY29h
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMzc4OEU5ODFGMDVCNkNFMDA2Nzk0MjUgLyogU291bmQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTkzQjM4RUJFMjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCMzhFQzIyNTgyMUQyMjAwMTk4RTYzIC8q
IFNwZWVjaFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTExNzVCNDkxRjZBRkY4RTAwQzRCOUYw
IC8qIFNwZWVjaFN5bnRoZXNpc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MjExRjQz
QTRDNzAwMkVBQzAyIC8qIFNRTGl0ZTNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMzA4QjE0
MjBBMjE3MDUwMDNGQjkyOSAvKiBTeXN0ZW1QcmV2aWV3U1BJLmggaW4gSGVhZGVycyAqLywKQEAg
LTEwMzcsNiArMTA0OCw3IEBACiAJCQkJQTNBQjZFNjAxRjNEMUUzOTAwOUMxNEIxIC8qIFNsZWVw
RGlzYWJsZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzc4OEU5QzFGMDVCNzgyMDA2
Nzk0MjUgLyogU291bmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTM3ODhFOUUxRjA1Qjc4RTAw
Njc5NDI1IC8qIFNvdW5kTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTNCMzhFQzAyNTgyMUNE
ODAwMTk4RTYzIC8qIFNwZWVjaFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNBQjZF
NTcxRjNEMUREQjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTNBQjZFNjUxRjNEMjE3RjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlL
aXRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
b2NvYS9TcGVlY2hTb2Z0TGluay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3M2Y3NTQ5OTUwYTBhMzQ5ZjE2M2Ew
YThiZDk5NmM4ZTMyZjgwZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NvY29hL1NwZWVjaFNvZnRMaW5rLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0IDxT
cGVlY2gvU3BlZWNoLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5L
X0ZSQU1FV09SS19GT1JfSEVBREVSKFBBTCwgU3BlZWNoKTsKK1NPRlRfTElOS19DTEFTU19GT1Jf
SEVBREVSKFBBTCwgU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCk7CitTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX0hFQURFUihQQUwsIFNGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0KTsKK1NPRlRfTElOS19D
TEFTU19GT1JfSEVBREVSKFBBTCwgU0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVz
dCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNoUmVjb2duaXRpb25U
YXNrKTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgU0ZTcGVlY2hSZWNvZ25pemVy
KTsKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgU0ZUcmFuc2NyaXB0aW9uU2VnbWVu
dCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGVHJhbnNjcmlwdGlvbik7CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9TcGVlY2hT
b2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDZhMDMxZTg2M2I5ZDhkNTYxYmZmNjY4Mzg4MzZiMDZjNmY3ODk3MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29m
dExpbmsubW0KQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0IDxTcGVlY2gvU3BlZWNo
Lmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfU09VUkNFKFBBTCwgU3BlZWNoKQorCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCwgUEFMX0VYUE9S
VCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFNwZWVjaCwg
U0ZTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoQXVkaW9CdWZmZXJS
ZWNvZ25pdGlvblJlcXVlc3QsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VS
Q0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXRpb25UYXNrLCBQQUxf
RVhQT1JUKTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3Bl
ZWNoLCBTRlNwZWVjaFJlY29nbml6ZXIsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGVHJhbnNjcmlwdGlvblNlZ21lbnQs
IFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFM
LCBTcGVlY2gsIFNGVHJhbnNjcmlwdGlvbiwgUEFMX0VYUE9SVCk7CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9TcGVlY2hTUEkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTdj
YmRiNzNlYjFhNDAxY2FkODI0ZDEzYTFmYjIxZDk0NzNjYzhjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvU3BlZWNoU1BJLmgKQEAgLTAsMCArMSw0
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCisKKyNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxTcGVlY2gvU0ZTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3RfUHJpdmF0ZS5oPgorCisjZWxzZQorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgor
CitAaW50ZXJmYWNlIFNGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0ICgpCitAcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCBkZXRlY3RNdWx0aXBsZVV0dGVyYW5jZXM7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgZ2V0dGVyPV9tYXhpbXVtUmVjb2duaXRpb25EdXJhdGlvbiwgc2V0dGVyPV9zZXRNYXhp
bXVtUmVjb2duaXRpb25EdXJhdGlvbjopIE5TVGltZUludGVydmFsIF9tYXhpbXVtUmVjb2duaXRp
b25EdXJhdGlvbjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8v
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNlbmRpZiAvLyBIQVZFKFNQRUVDSFJFQ09HTkla
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBlNTkxMzlmYmI0NTY1MGRlZjk5NmY4MjFk
NWNhZmE0MGI3MmQ4ZWNhLi44NGY1ODY4NzYxZTI5YTk0NjBjNmNhNTY1ZTRjY2NkMWUwZjUwMmIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTkyLDYgKzkyLDkgQEAgTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCiBNb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1
Z2luUmVwbGFjZW1lbnQuY3BwCitNb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVy
Q29jb2EubW0KK01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1t
CitNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KIGFjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2li
aWxpdHlPYmplY3RJT1MubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1MjJhYzIzMDNkZGJiMDA0Mzc5MjQ0ODJiMGQ1NmQ3MDdk
ZTEzMzhlLi42N2Y2YTgzNGZiYzc4OWNlZDZhMzY2YzUxZTI2MzNiZDFkOWJiZDg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
ODE3LDYgKzI4MTcsOCBAQAogCQk5M0E4MDYxRTFFMDNCNTg1MDA4QTFGMjYgLyogSlNEb3VibGVS
YW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNB
ODA2MUExRTAzQjU4NTAwOEExRjI2IC8qIEpTRG91YmxlUmFuZ2UuaCAqLzsgfTsKIAkJOTNBODA2
MjAxRTAzQjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E4MDYxQzFFMDNCNTg1MDA4QTFGMjYgLyogSlNM
b25nUmFuZ2UuaCAqLzsgfTsKIAkJOTNCMkQ4MTYwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRl
cm1pbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0IyRDgxNTBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5M0IzOEVDMzI1ODIx
REI0MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAv
KiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovOyB9OworCQk5M0IzOEVDNDI1ODIxREI3MDAx
OThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyog
V2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi87IH07CiAJCTkzQjZBMEU2MEIwQkNBNUMw
MEY1MDI3QSAvKiBDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBE
NjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpT
RE9NQmluZGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTkzQjcwRDZBMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjcwRDRFMDlFQjBD
N0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE1MzEsNiArMTE1MzMsMTEgQEAKIAkJOTNBODA2
MUMxRTAzQjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTTG9uZ1JhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQjJEODE1MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWRkZW5UZXJtaW5hdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0IyRDgxNzBGOTkyMEVFMDA2QUU2QjIgLyogU3VkZGVuVGVy
bWluYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdWRk
ZW5UZXJtaW5hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQjgy
NTgyMTg5OTAwMTk4RTYzIC8qIFNwZWVjaFJlY29nbml6ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNwZWVjaFJlY29nbml6ZXJDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQjkyNTgyMTkzQTAwMTk4RTYzIC8qIFdl
YlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQkEyNTgyMTkzQjAwMTk4RTYzIC8qIFdlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNwZWVj
aFJlY29nbml6ZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJC
MjU4MjE5M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUJDMjU4MjE5M0UwMDE5OEU2MyAv
KiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0I2QTBFNTBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1lbnUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRNZW51Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJp
bmRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQmluZGluZy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ0RDA5RUIwQzdDMDA5RDg0Njgg
LyogSlNFdmVudExpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0V2ZW50TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjMxNzcsNiArMjMxODQsMTggQEAKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OworCQk5M0IzOEVCNjI1ODIxODMzMDAxOThFNjMgLyogY29jb2EgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTkzQjM4RUI4MjU4MjE4
OTkwMDE5OEU2MyAvKiBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gKi8sCisJCQkJOTNCMzhFQkEy
NTgyMTkzQjAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggKi8sCisJCQkJOTNC
MzhFQkMyNTgyMTkzRTAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tICovLAor
CQkJCTkzQjM4RUJCMjU4MjE5M0QwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01v
Y2suaCAqLywKKwkJCQk5M0IzOEVCOTI1ODIxOTNBMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2du
aXplclRhc2tNb2NrLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTkzQzA5QTgyMEIwNjRGMDUwMDVBQkQ0RCAvKiBtYWMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjU3MDksNiAr
MjU3MjgsNyBAQAogCQlBQTJBNUFCNzE2QTQ4NUE0MDA5NzVBMjUgLyogc3BlZWNoICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5M0IzOEVCNjI1ODIxODMz
MDAxOThFNjMgLyogY29jb2EgKi8sCiAJCQkJQUEyQTVBQkExNkE0ODVENTAwOTc1QTI1IC8qIERP
TVdpbmRvdytTcGVlY2hTeW50aGVzaXMuaWRsICovLAogCQkJCUFBMkE1QUI4MTZBNDg1RDUwMDk3
NUEyNSAvKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwICovLAogCQkJCUFBMkE1QUI5MTZB
NDg1RDUwMDk3NUEyNSAvKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuaCAqLywKQEAgLTM1Mjgz
LDYgKzM1MzAzLDggQEAKIAkJCQk5N0FBQkQyNTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0
RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI3MTRGQTA5RDUwMDc0NTdBRSAvKiBX
ZWJTb2NrZXRIYW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTEyRTlGMjRGRTc0RTIw
MDkzRkZCNCAvKiBXZWJTb2NrZXRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Iz
OEVDMzI1ODIxREI0MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2suaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzQjM4RUM0MjU4MjFEQjcwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25p
emVyVGFza01vY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTFGODc1NkIyMUUyMkMzMzUwMDQyQzQw
RCAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxREVBNDU2MUIzOUY0RDkwMEY3NzE3OCAvKiBXZWJTeXN0ZW1CYWNrZHJvcExheWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjU4MEZBMzE0OTY5MzkxMDBGQjVCRDggLyogV2ViVGlsZWRCYWNr
aW5nTGF5ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCmluZGV4IGQ2ZmE4OWM1NDgzMjYyYzEwMWEy
NmQwMzAzMjM1NTcyMDZiMTJmNjEuLjZhNmVlODQ4ZTJjYTY5NTNhN2RiMWM2OTNiMTkyMDA3ZGMx
ZGRlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25p
dGlvblNlcnZlci5jcHAKQEAgLTM2LDIyICszNiwyMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorCitTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYm
IHBlcm1pc3Npb25DaGVja2VyLCBTcGVlY2hSZWNvZ25pdGlvbkNoZWNrSWZtb2NrU3BlZWNoUmVj
b2duaXRpb25FbmFibGVkJiYgY2hlY2tJZkVuYWJsZWQKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiBw
ZXJtaXNzaW9uQ2hlY2tlciwgUmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uJiYgZnVu
Y3Rpb24pCisgICAgLCBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24mJiBmdW5jdGlv
bgorI2VuZGlmCisgICAgKQogICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikp
CiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fcGVybWlzc2lvbkNoZWNr
ZXIoV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCisgICAgLCBtX2NoZWNrSWZtb2NrU3BlZWNo
UmVjb2duaXRpb25FbmFibGVkKFdURk1vdmUoY2hlY2tJZkVuYWJsZWQpKQorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAgICAgLCBtX3JlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbihX
VEZNb3ZlKGZ1bmN0aW9uKSkKKyNlbmRpZgogewogfQotI2Vsc2UKLVNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24sIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIpCi0g
ICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAsIG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQotICAgICwgbV9wZXJtaXNzaW9uQ2hlY2tlcihXVEZNb3ZlKHBlcm1pc3Np
b25DaGVja2VyKSkKLXsKLX0KLSNlbmRpZgogCiB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
OjpzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIsIFN0cmluZyYmIGxhbmcsIGJvb2wgY29udGludW91cywgYm9v
bCBpbnRlcmltUmVzdWx0cywgdWludDY0X3QgbWF4QWx0ZXJuYXRpdmVzLCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mJiBvcmlnaW4pCiB7CkBAIC04MCwxMSArNzksMTEgQEAgdm9pZCBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVj
aFJlY29nbmkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGhhbmRs
ZVJlcXVlc3QoaWRlbnRpZmllcik7CisgICAgICAgIGhhbmRsZVJlcXVlc3QoKndlYWtSZXF1ZXN0
KTsKICAgICB9KTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVx
dWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
IGNsaWVudElkZW50aWZpZXIpCit2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVS
ZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAg
ICBpZiAoIW1fcmVjb2duaXplcikgewogICAgICAgICBtX3JlY29nbml6ZXIgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI+KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpXShhdXRvJiB1cGRhdGUpIHsKQEAgLTk1LDE2ICs5NCwyOSBAQCB2b2lkIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbgogICAgICAgICAgICAgaWYgKCFtX3JlcXVlc3RzLmNvbnRhaW5zKGNsaWVudElk
ZW50aWZpZXIpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAgICAgc2VuZFVw
ZGF0ZSh1cGRhdGUpOworCiAgICAgICAgICAgICBhdXRvIHR5cGUgPSB1cGRhdGUudHlwZSgpOwot
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlOjpFcnJvciB8fCB0eXBlID09IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlw
ZTo6RW5kKQotICAgICAgICAgICAgICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZp
ZXIpOworICAgICAgICAgICAgaWYgKHR5cGUgIT0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlOjpFcnJvciAmJiB0eXBlICE9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlVHlwZTo6RW5kKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgc2Vu
ZFVwZGF0ZSh1cGRhdGUpOworICAgICAgICAgICAgaWYgKG1faXNSZXNldHRpbmcpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9pc1Jlc2V0dGluZyA9IHRydWU7CisKKyAg
ICAgICAgICAgIG1fcmVjb2duaXplci0+cmVzZXQoKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdHMu
cmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOworICAgICAgICAgICAgbV9pc1Jlc2V0dGluZyA9IGZh
bHNlOwogICAgICAgICB9KTsKICAgICB9Ci0gICAgCi0gICAgbV9yZWNvZ25pemVyLT5yZXNldCgp
OwogCisgICAgaWYgKGF1dG8gY3VycmVudENsaWVudElkZW50aWZpZXIgPSBtX3JlY29nbml6ZXIt
PmN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkpIHsKKyAgICAgICAgYXV0byBlcnJvciA9IFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yVHlwZTo6QWJvcnRlZCwgIkFub3RoZXIgcmVxdWVzdCBpcyBzdGFydGVkIl9zIH07CisgICAg
ICAgIHNlbmRVcGRhdGUoKmN1cnJlbnRDbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBlcnJvcik7CisgICAgICAgIG1fcmVjb2duaXpl
ci0+cmVzZXQoKTsKKyAgICB9CisKKyAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSByZXF1ZXN0
LmNsaWVudElkZW50aWZpZXIoKTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGF1dG8g
c291cmNlT3JFcnJvciA9IG1fcmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uKCk7CiAg
ICAgaWYgKCFzb3VyY2VPckVycm9yKSB7CkBAIC0xMTIsMTAgKzEyNCwxMiBAQCB2b2lkIFNwZWVj
aFJlY29nbml0aW9uU2VydmVyOjpoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbgogICAgICAgICBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkF1
ZGlvQ2FwdHVyZSwgc291cmNlT3JFcnJvci5lcnJvck1lc3NhZ2UgfSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIG1fcmVjb2duaXplci0+c3RhcnQoY2xpZW50SWRlbnRpZmllciwgc291
cmNlT3JFcnJvci5zb3VyY2UoKSk7CisKKyAgICBib29sIG1vY2tEZXZpY2VDYXB0dXJlc0VuYWJs
ZWQgPSBtX2NoZWNrSWZtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkKCk7CisgICAgbV9yZWNv
Z25pemVyLT5zdGFydChjbGllbnRJZGVudGlmaWVyLCBzb3VyY2VPckVycm9yLnNvdXJjZSgpLCBt
b2NrRGV2aWNlQ2FwdHVyZXNFbmFibGVkLCByZXF1ZXN0LmxhbmcoKSwgcmVxdWVzdC5jb250aW51
b3VzKCksIHJlcXVlc3QuaW50ZXJpbVJlc3VsdHMoKSwgcmVxdWVzdC5tYXhBbHRlcm5hdGl2ZXMo
KSk7CiAjZWxzZQogICAgIG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwotICAg
IHNlbmRVcGRhdGUoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25V
cGRhdGVUeXBlOjpFcnJvciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsICJBdWRpbyBjYXB0
dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCJ9KTsKKyAgICBzZW5kVXBkYXRlKGNsaWVudElkZW50aWZp
ZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IsIFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9y
VHlwZTo6QXVkaW9DYXB0dXJlLCAiQXVkaW8gY2FwdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQiX3Mg
fSk7CiAjZW5kaWYKIH0KIApAQCAtMTM1LDcgKzE0OSw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OmFib3J0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJZGVudGlmaWVyKTsKICAgICBpZiAobV9y
ZWNvZ25pemVyICYmIG1fcmVjb2duaXplci0+Y3VycmVudENsaWVudElkZW50aWZpZXIoKSA9PSBj
bGllbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgIG1fcmVjb2duaXplci0+c3RvcChXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pemVyOjpTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0OjpObyk7CisgICAgICAg
IG1fcmVjb2duaXplci0+YWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ4
LDcgKzE2Miw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmludmFsaWRhdGUoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpCiAgICAgTUVTU0FHRV9DSEVDSyhj
bGllbnRJZGVudGlmaWVyKTsKICAgICBpZiAobV9yZXF1ZXN0cy5yZW1vdmUoY2xpZW50SWRlbnRp
ZmllcikpIHsKICAgICAgICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29nbml6ZXItPmN1cnJl
bnRDbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikKLSAgICAgICAgICAgIG1f
cmVjb2duaXplci0+c3RvcCgpOworICAgICAgICAgICAgbV9yZWNvZ25pemVyLT5hYm9ydCgpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmgKaW5kZXggZWQ2NzI2NGFhMTMxZTFlMTQyMWVhYTQxNGQ0MTcxM2M2OTVkODMy
NC4uZWIxMDIzYTIxZTY4ZDAwMmE3MmQyYmM5NmNhNmQyNTdiNGI0NTcxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC00Nywx
NSArNDcsMTYgQEAgZW51bSBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lv
biA6IGJvb2w7CiAKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciA9IFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyOwogdXNpbmcgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
Q2hlY2tlciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbik+
JiYpPjsKK3VzaW5nIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJZm1vY2tTcGVlY2hSZWNvZ25pdGlv
bkVuYWJsZWQgPSBGdW5jdGlvbjxib29sKCk+OwogCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvblNlcnZlcj4sIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAgICAgdXNpbmcgUmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uID0gRnVu
Y3Rpb248V2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IoKT47Ci0gICAgU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXJJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYsIFJlYWx0
aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbiYmKTsKKyAgICBTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50
aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwgU3BlZWNoUmVjb2du
aXRpb25DaGVja0lmbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmLCBSZWFsdGltZU1lZGlh
U291cmNlQ3JlYXRlRnVuY3Rpb24mJik7CiAjZWxzZQotICAgIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRp
ZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmKTsKKyAgICBTcGVlY2hS
ZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiwg
U3BlZWNoUmVjb2duaXRpb25DaGVja0lmbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBzdGFydChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJv
b2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYpOwpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
dm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0Jik7Ci0gICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpOworICAgIHZvaWQgaGFuZGxlUmVxdWVz
dChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKICAgICB2b2lkIHNlbmRVcGRh
dGUoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpT
cGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+ID0gV1RGOjpudWxsb3B0KTsKICAg
ICB2b2lkIHNlbmRVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUm
KTsKIApAQCAtODEsNiArODIsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4+IG1fcmVxdWVzdHM7CiAgICAgU3Bl
ZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciBtX3Blcm1pc3Npb25DaGVja2VyOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyPiBtX3JlY29nbml6ZXI7
CisgICAgU3BlZWNoUmVjb2duaXRpb25DaGVja0lmbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxl
ZCBtX2NoZWNrSWZtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkOworICAgIGJvb2wgbV9pc1Jl
c2V0dGluZyB7IGZhbHNlIH07CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbiBtX3JlYWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVG
dW5jdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDY4ZGY2NTI1ZTUxYjMwZTY0ZWRhM2U2ZmY0MmJmZTZjNTFlZmMzYjUuLmY4ZDM2YzRiZjUw
Yjc0ZTlkYTMxNDgwZDAyZDMxZTJkMmU5YTkwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTcyMiwyMCArMTcyMiwyNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXJJZGVudAogCiAgICAgQVNTRVJUKCFtX3NwZWVjaFJlY29nbml0aW9uU2VydmVyTWFw
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBhdXRvJiBzcGVlY2hSZWNvZ25pdGlvblNlcnZl
ciA9IG1fc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1ha2VVbmlx
dWU8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50
aWZpZXIsIFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBhZ2UpXShhdXRvJiBvcmlnaW4s
IGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CisgICAgYXV0byBwZXJtaXNzaW9u
Q2hlY2tlciA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHRhcmdldFBhZ2UpXShhdXRvJiBvcmln
aW4sIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vh
a1BhZ2UpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFNwZWVjaFJlY29nbml0aW9u
UGVybWlzc2lvbkRlY2lzaW9uOjpEZW55KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCiAgICAgICAgIHdlYWtQYWdlLT5yZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
KG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0KKyAgICB9OworICAg
IGF1dG8gY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBbd2Vha1BhZ2UgPSBtYWtl
V2Vha1B0cih0YXJnZXRQYWdlKV0oKSB7CisgICAgICAgIHJldHVybiB3ZWFrUGFnZSAmJiB3ZWFr
UGFnZS0+cHJlZmVyZW5jZXMoKS5tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKCk7CisgICAgfTsK
KwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgLCBbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0
cih0YXJnZXRQYWdlKV0oKSB7CisgICAgYXV0byBjcmVhdGVSZWFsdGltZU1lZGlhU291cmNlID0g
W3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkgewogICAgICAgICByZXR1cm4g
d2Vha1BhZ2UgPyB3ZWFrUGFnZS0+Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZvclNwZWVjaFJl
Y29nbml0aW9uKCkgOiBDYXB0dXJlU291cmNlT3JFcnJvciB7ICJQYWdlIGlzIGludmFsaWQiIH07
Ci0gICAgfQorICAgIH07CisgICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtYWtlVW5pcXVl
PFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlm
aWVyLCBXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2VyKSwgV1RGTW92ZShjaGVja0lmTW9ja0NhcHR1
cmVEZXZpY2VzRW5hYmxlZCksIFdURk1vdmUoY3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZSkpOwor
I2Vsc2UKKyAgICBzcGVlY2hSZWNvZ25pdGlvblNlcnZlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXI+KG1ha2VSZWYoKmNvbm5lY3Rpb24oKSksIGlkZW50aWZpZXIsIFdURk1v
dmUocGVybWlzc2lvbkNoZWNrZXIpLCBXVEZNb3ZlKGNoZWNrSWZNb2NrQ2FwdHVyZURldmljZXNF
bmFibGVkKSk7CiAjZW5kaWYKLSAgICApOworCiAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVu
dGlmaWVyLCAqc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOwogfQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGM4NjAyYzhk
MWM3MmMyN2VmM2U0YTJjNGE2MzgxNzZkM2VlODgyNS4uNDQyYTBmMzhkZTUyZDNiY2VmODRhZDBj
NjMyMDAxNGM4NTE2NTM5MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTEyLTExICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3Qvc3BlZWNocmVjb2duaXRpb24vaW9zL3N0YXJ0LXJlY29nbml0aW9uLXRoZW4tc3RvcC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc3BlZWNocmVjb2duaXRpb24vaW9zL3N0
YXJ0LXJlY29nbml0aW9uLXRoZW4tc3RvcC5odG1sOiBBZGRlZC4KKwogMjAyMC0xMi0xMCAgSm9o
biBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFR1cm4gZmVh
dHVyZSBvbiBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJl
Y29nbml0aW9uL2lvcy9zdGFydC1yZWNvZ25pdGlvbi10aGVuLXN0b3AtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9pb3Mvc3RhcnQtcmVjb2duaXRpb24t
dGhlbi1zdG9wLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDYyMWY3MDkzYjBmYzI3ZDM3NzIy
MzIxMjUwMTgyODYzOTFlNjc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
cGVlY2hyZWNvZ25pdGlvbi9pb3Mvc3RhcnQtcmVjb2duaXRpb24tdGhlbi1zdG9wLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDI0IEBACitWZXJpZnkgdGhhdCBldmVudHMgYXJlIHJlY2VpdmVkIGNv
cnJldGx5IHdoZW4gc3RhcnQgYW5kIHN0b3AgcmVjb2duaXRpb24gbm9ybWFsbHkuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJl
Y29nbml0aW9uKCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyByZWNvZ25pdGlvbi5z
dGFydCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUmVjZWl2ZWQgc3RhcnQgZXZlbnQKK1Jl
Y2VpdmVkIGF1ZGlvc3RhcnQgZXZlbnQKK1JlY2VpdmVkIHNwZWVjaHN0YXJ0IGV2ZW50CitSZWNl
aXZlZCByZXN1bHQgZXZlbnQKK1BBU1MgZXZlbnQucmVzdWx0cy5sZW5ndGggaXMgMQorUEFTUyBl
dmVudC5yZXN1bHRzLml0ZW0oMCkuaXNGaW5hbCBpcyB0cnVlCitQQVNTIGV2ZW50LnJlc3VsdHMu
aXRlbSgwKS5sZW5ndGggaXMgMQorUEFTUyBldmVudC5yZXN1bHRzLml0ZW0oMCkuaXRlbSgwKS50
cmFuc2NyaXB0IGlzICJUZXN0IgorUEFTUyBldmVudC5yZXN1bHRzLml0ZW0oMCkuaXRlbSgwKS5j
b25maWRlbmNlIGlzIDEKK1BBU1MgcmVjb2duaXRpb24uc3RvcCgpIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUmVjZWl2ZWQgYXVkaW9lbmQgZXZlbnQKK1JlY2VpdmVkIHNwZWVjaGVuZCBldmVu
dAorUmVjZWl2ZWQgZW5kIGV2ZW50CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNv
Z25pdGlvbi9pb3Mvc3RhcnQtcmVjb2duaXRpb24tdGhlbi1zdG9wLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL2lvcy9zdGFydC1yZWNvZ25pdGlvbi10aGVuLXN0b3Au
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NmJhMTU5M2E0MjNiMzQxYTU3MDNhNzdlYmQ1NWQzOWJiNWQ0NDA3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9p
b3Mvc3RhcnQtcmVjb2duaXRpb24tdGhlbi1zdG9wLmh0bWwKQEAgLTAsMCArMSw2MSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVmVyaWZ5
IHRoYXQgZXZlbnRzIGFyZSByZWNlaXZlZCBjb3JyZXRseSB3aGVuIHN0YXJ0IGFuZCBzdG9wIHJl
Y29nbml0aW9uIG5vcm1hbGx5LiIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK30KKwordmFyIGhhc1JlY2VpdmVkUmVzdWx0ID0gZmFsc2U7
CitzaG91bGROb3RUaHJvdygicmVjb2duaXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKTsi
KTsKK3JlY29nbml0aW9uLmNvbnRpbnVvdXMgPSB0cnVlOworCityZWNvZ25pdGlvbi5vbnN0YXJ0
ID0gKGV2ZW50KSA9PiB7CisgICAgZGVidWcoIlJlY2VpdmVkIHN0YXJ0IGV2ZW50Iik7Cit9CisK
K3JlY29nbml0aW9uLm9uYXVkaW9zdGFydCA9IChldmVudCkgPT4geworICAgIGRlYnVnKCJSZWNl
aXZlZCBhdWRpb3N0YXJ0IGV2ZW50Iik7Cit9CisKK3JlY29nbml0aW9uLm9uc3BlZWNoc3RhcnQg
PSAoZXZlbnQpID0+IHsKKyAgICBkZWJ1ZygiUmVjZWl2ZWQgc3BlZWNoc3RhcnQgZXZlbnQiKTsK
K30KKworcmVjb2duaXRpb24ub25yZXN1bHQgPSAoZXZlbnQpID0+IHsKKyAgICBpZiAoaGFzUmVj
ZWl2ZWRSZXN1bHQpCisgICAgICAgIHJldHVybjsKKyAgICBoYXNSZWNlaXZlZFJlc3VsdCA9IHRy
dWU7CisKKyAgICBkZWJ1ZygiUmVjZWl2ZWQgcmVzdWx0IGV2ZW50Iik7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnJlc3VsdHMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LnJl
c3VsdHMuaXRlbSgwKS5pc0ZpbmFsIik7CisgICAgc2hvdWxkQmUoImV2ZW50LnJlc3VsdHMuaXRl
bSgwKS5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQucmVz
dWx0cy5pdGVtKDApLml0ZW0oMCkudHJhbnNjcmlwdCIsICJUZXN0Iik7CisgICAgc2hvdWxkQmUo
ImV2ZW50LnJlc3VsdHMuaXRlbSgwKS5pdGVtKDApLmNvbmZpZGVuY2UiLCAiMSIpOworCisgICAg
c2hvdWxkTm90VGhyb3coInJlY29nbml0aW9uLnN0b3AoKSIpOworfQorCityZWNvZ25pdGlvbi5v
bmF1ZGlvZW5kID0gKGV2ZW50KSA9PiB7CisgICAgZGVidWcoIlJlY2VpdmVkIGF1ZGlvZW5kIGV2
ZW50Iik7Cit9CisKK3JlY29nbml0aW9uLm9uc3BlZWNoZW5kID0gKGV2ZW50KSA9PiB7CisgICAg
ZGVidWcoIlJlY2VpdmVkIHNwZWVjaGVuZCBldmVudCIpOworfQorCityZWNvZ25pdGlvbi5vbmVu
ZCA9IChldmVudCkgPT4geworICAgIGRlYnVnKCJSZWNlaXZlZCBlbmQgZXZlbnQiKTsKKworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCitzaG91bGROb3RUaHJvdygicmVjb2duaXRpb24uc3RhcnQo
KSIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416163</attachid>
            <date>2020-12-14 08:46:23 -0800</date>
            <delta_ts>2020-12-14 09:48:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219459-20201214084622.patch</filename>
            <type>text/plain</type>
            <size>72539</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uZTYxNTgyNDNjMWJkMDQ0NTJhMjEyY2RhYzQzOTU5
NGExMTIwZmE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTEyLTE0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCByZWNvZ25p
emVyIGZvciBTcGVlY2hSZWNvZ25pdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkxNDQ2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZCBX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzaywgd2hpY2ggY29ubmVjdHMgdG8gc3BlZWNoIHJlY29nbml0
aW9uIHNlcnZpY2UgdXNpbmcgU3BlZWNoIGZyYW1ld29yayBBUElzLgorCisgICAgICAgIFRlc3Rz
OiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL2lvcy9yZXN0YXJ0LXJlY29nbml0aW9uLWFmdGVyLXN0
b3AuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9pb3Mvc3RhcnQt
cmVjb2duaXRpb24tdGhlbi1zdG9wLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6
cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJvcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyOjpzdGFydENhcHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXpl
cjo6c3RvcENhcHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6ZGF0
YUNhcHR1cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0UmVj
b2duaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNv
Z25pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdG9wUmVjb2du
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25p
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzZXRTb3VyY2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6c3RvcEludGVybmFs
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmg6
CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1t
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OmRhdGFDYXB0dXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjpzdGFydFJlY29nbml0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnN0b3BSZWNvZ25pdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pemVyOjphYm9ydFJlY29nbml0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2duaXRpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6
ZXJUYXNrLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBs
IGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBvcnRJ
bnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAgICAg
ICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIGNhbGxiYWNrV2l0aFJlc3VsdDppc0Zp
bmFsOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgYXVkaW9TYW1w
bGVzQXZhaWxhYmxlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwg
YWJvcnRdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHN0b3BdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHNlbmRTcGVlY2hTdGFydElm
TmVlZGVkXSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzZW5kU3Bl
ZWNoRW5kSWZOZWVkZWRdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBs
IHNlbmRFbmRJZk5lZWRlZF0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza0lt
cGwgc3BlZWNoUmVjb2duaXplcjphdmFpbGFiaWxpdHlEaWRDaGFuZ2U6XSk6CisgICAgICAgICgt
W1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzcGVlY2hSZWNvZ25pdGlvblRhc2s6ZGlkSHlw
b3RoZXNpemVUcmFuc2NyaXB0aW9uOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVy
VGFza0ltcGwgc3BlZWNoUmVjb2duaXRpb25UYXNrOmRpZEZpbmlzaFJlY29nbml0aW9uOl0pOgor
ICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgc3BlZWNoUmVjb2duaXRpb25U
YXNrV2FzQ2FuY2VsbGVkOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza0lt
cGwgc3BlZWNoUmVjb2duaXRpb25UYXNrOmRpZEZpbmlzaFN1Y2Nlc3NmdWxseTpdKToKKyAgICAg
ICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgaW5pdFdpdGhJZGVudGlmaWVyOmxvY2FsZTpk
b011bHRpcGxlUmVjb2duaXRpb25zOnJlcG9ydEludGVyaW1SZXN1bHRzOm1heEFsdGVybmF0aXZl
czpkZWxlZ2F0ZUNhbGxiYWNrOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFz
ayBhdWRpb1NhbXBsZXNBdmFpbGFibGU6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6
ZXJUYXNrIGFib3J0XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIHN0b3Bd
KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFz
a01vY2suaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNo
UmVjb2duaXplclRhc2tNb2NrLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2du
aXplclRhc2tNb2NrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0
aW9uczpyZXBvcnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFj
azpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIGF1ZGlvU2FtcGxl
c0F2YWlsYWJsZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIGFi
b3J0XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBzdG9wXSk6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjAtMTItMTQgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgUkVHUkVTU1NJT04oMjcwNDM1KSBbR1N0cmVhbWVyXSBNYW55IG1l
ZGlhIHNvdXJjZSB0ZXN0cyBmYWlsaW5nIGFuZCB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpp
bmRleCAwOTEwNDFkNTUzODNkNjYyMWE1MDkzOTRjYzI0NjNmZjkzYmU0NzM1Li5iMzc1ZDY3NDA1
YjBmZWQ5ZjI1ZGVmZDU5MTc5YjY2YWRhN2ZjZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMC0xMi0xNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2duaXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQ1OQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91
ZW5uIEZhYmxldC4KKworICAgICAgICBBZGQgc29mdCBsaW5raW5nIHRvIFNwZWVjaCBmcmFtZXdv
cmsgYW5kIFNQSS4KKworICAgICAgICAqIFBBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBhbC9jb2NvYS9TcGVlY2hTb2Z0TGluay5oOiBBZGRlZC4KKyAgICAgICAgKiBw
YWwvY29jb2EvU3BlZWNoU29mdExpbmsubW06IEFkZGVkLgorICAgICAgICAqIHBhbC9zcGkvY29j
b2EvU3BlZWNoU1BJLmg6IEFkZGVkLgorCiAyMDIwLTEyLTEzICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBDcmVhdGUgYSBNZWRpYVRvb2xib3ggZm9ybWF0
IHJlYWRlciBwbHVnLWluIGZvciBXZWJNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM4M2Y1NjU4YTZmYjAxNjE1NjBl
OTc5YTYyMTc2ZmFhYmJlNjBhNTYuLmUxZjczMzA0NDQzYmY5YTRiNjQwMzRmNmIxYmVmNTQyYWZm
ZWNmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTItMTQgIFNpaHVpIExpdSAg
PHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHJlY29nbml6ZXIgZm9y
IFNwZWVjaFJlY29nbml0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTk0NTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxOTE0NDY1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6cmVxdWVzdFBlcm1pc3Npb25Gb3JSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6YWJvcnQpOgorICAg
ICAgICAoV2ViS2l0OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aW52YWxpZGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIpOgorCiAyMDIwLTEyLTE0ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtH
VEtdIFNob3VsZCBlbmFibGUgV2ViUHJvY2Vzc0NhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuY3BwCmluZGV4IGY5MTZkMmJhNGQyODBm
NzU4NjEyYjU3Y2MxMjE5NGY5YjRkM2I1YjUuLmY4OWQ1ZTFkNmRiZGMxNGY5MWNlODlkMTMzM2Fh
ZTllZGI3MWMyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml6ZXIuY3BwCkBAIC0yNywxMCArMjcsMTAgQEAKICNpbmNsdWRlICJTcGVlY2hS
ZWNvZ25pemVyLmgiCiAKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
Ik1lZGlhVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVB
VkZvdW5kYXRpb24uaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw0MiAr
NDUsNDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pemVyOjpyZXNldCgpCiAgICAgaWYgKCFtX2NsaWVu
dElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3NvdXJjZSkKLSAgICAg
ICAgbV9zb3VyY2UgPSBudWxscHRyOworICAgIHN0b3BDYXB0dXJlKCk7CisgICAgcmVzZXRSZWNv
Z25pdGlvbigpOworICAgIG1fY2xpZW50SWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKK30KIAot
ICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRp
b25FcnJvclR5cGU6OkFib3J0ZWQsICJBbm90aGVyIHJlcXVlc3QgaXMgc3RhcnRlZCIgfTsKLSAg
ICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9y
KCptX2NsaWVudElkZW50aWZpZXIsIGVycm9yKSk7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OmFi
b3J0KCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRJZGVudGlmaWVyKTsKKyAgICBzdG9wQ2FwdHVy
ZSgpOworICAgIGFib3J0UmVjb2duaXRpb24oKTsKK30KIAotICAgIG1fY2xpZW50SWRlbnRpZmll
ciA9IFdURjo6bnVsbG9wdDsKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcCgpCit7CisgICAg
QVNTRVJUKG1fY2xpZW50SWRlbnRpZmllcik7CisgICAgc3RvcENhcHR1cmUoKTsKKyAgICBzdG9w
UmVjb2duaXRpb24oKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLXZvaWQgU3Bl
ZWNoUmVjb2duaXplcjo6c3RhcnQoU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllciBpZGVudGlmaWVyLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UpCit2
b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
JiYgc291cmNlLCBib29sIG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxlSWRlbnRpZmllciwgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRz
LCB1aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMpCiB7Ci0gICAgQVNTRVJUKCFtX3NvdXJjZSk7Ci0K
LSAgICBtX2NsaWVudElkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIEFTU0VSVCghbV9jbGll
bnRJZGVudGlmaWVyKTsKKyAgICBtX2NsaWVudElkZW50aWZpZXIgPSBjbGllbnRJZGVudGlmaWVy
OwogICAgIG1fZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
KCptX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3RhcnQp
KTsKIAotICAgIHNldFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpOworICAgIGlmICghc3RhcnRSZWNv
Z25pdGlvbihtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkLCBjbGllbnRJZGVudGlmaWVyLCBs
b2NhbGVJZGVudGlmaWVyLCBjb250aW51b3VzLCBpbnRlcmltUmVzdWx0cywgbWF4QWx0ZXJuYXRp
dmVzKSkgeworICAgICAgICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25F
cnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxs
b3dlZCwgIkZhaWxlZCB0byBzdGFydCByZWNvZ25pdGlvbiJfcyB9OworICAgICAgICBtX2RlbGVn
YXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9y
KGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUoZXJyb3IpKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBzdGFydENhcHR1cmUoV1RGTW92ZShzb3VyY2UpKTsKIH0KIAotdm9pZCBTcGVl
Y2hSZWNvZ25pemVyOjpzZXRTb3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNl
KQordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdGFydENhcHR1cmUoUmVmPFJlYWx0aW1lTWVkaWFT
b3VyY2U+JiYgc291cmNlKQogewogICAgIGF1dG8gZGF0YUNhbGxiYWNrID0gW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldKGNvbnN0IGF1dG8mIHRpbWUsIGNvbnN0IGF1dG8mIGRhdGEsIGNv
bnN0IGF1dG8mIGRlc2NyaXB0aW9uLCBhdXRvIHNhbXBsZUNvdW50KSB7Ci0gICAgICAgIGlmICgh
d2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcihkYXRhLCBkZXNjcmlw
dGlvbiwgUEFMOjp0b0NNVGltZSh0aW1lKSwgc2FtcGxlQ291bnQpOwotICAgICAgICBVTlVTRURf
UEFSQU0oYnVmZmVyKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTSh0aW1lKTsKLSAgICAg
ICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgICAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRpb24p
OwotICAgICAgICBVTlVTRURfUEFSQU0oc2FtcGxlQ291bnQpOwotI2VuZGlmCisgICAgICAgIGlm
ICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5kYXRhQ2FwdHVyZWQodGltZSwgZGF0
YSwgZGVzY3JpcHRpb24sIHNhbXBsZUNvdW50KTsKICAgICB9OwogCiAgICAgYXV0byBzdGF0ZVVw
ZGF0ZUNhbGxiYWNrID0gW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGNvbnN0
IGF1dG8mIHVwZGF0ZSkgewpAQCAtODksOSArOTQsNiBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6
OnNldFNvdXJjZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UpCiAKICAgICAgICAg
QVNTRVJUKG1fY2xpZW50SWRlbnRpZmllciAmJiBtX2NsaWVudElkZW50aWZpZXIudmFsdWUoKSA9
PSB1cGRhdGUuY2xpZW50SWRlbnRpZmllcigpKTsKICAgICAgICAgbV9kZWxlZ2F0ZUNhbGxiYWNr
KHVwZGF0ZSk7Ci0KLSAgICAgICAgaWYgKHVwZGF0ZS50eXBlKCkgPT0gU3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlOjpFcnJvcikKLSAgICAgICAgICAgIG1fc291cmNlID0gbnVsbHB0cjsKICAg
ICB9OwogCiAgICAgbV9zb3VyY2UgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uQ2FwdHVy
ZVNvdXJjZT4oKm1fY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShkYXRhQ2FsbGJhY2spLCBXVEZN
b3ZlKHN0YXRlVXBkYXRlQ2FsbGJhY2spLCBXVEZNb3ZlKHNvdXJjZSkpOwpAQCAtOTksMzAgKzEw
MSw0MCBAQCB2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnNldFNvdXJjZShSZWY8UmVhbHRpbWVNZWRp
YVNvdXJjZT4mJiBzb3VyY2UpCiAKICNlbmRpZgogCi12b2lkIFNwZWVjaFJlY29nbml6ZXI6OnN0
b3AoU2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdCBzaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0KQor
dm9pZCBTcGVlY2hSZWNvZ25pemVyOjpzdG9wQ2FwdHVyZSgpCiB7Ci0gICAgaWYgKCFtX2NsaWVu
dElkZW50aWZpZXIpCisgICAgaWYgKCFtX3NvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c3RvcEludGVybmFsKCk7CisgICAgbV9zb3VyY2UgPSBudWxscHRyOworICAgIG1fZGVsZWdhdGVD
YWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKCptX2NsaWVudElkZW50aWZp
ZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6QXVkaW9FbmQpKTsKK30KIAotICAgIGlm
IChzaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0ID09IFNob3VsZEdlbmVyYXRlRmluYWxSZXN1bHQ6
OlllcykgewotICAgICAgICAvLyBUT0RPOiBnZW5lcmF0ZSByZWFsIHJlc3VsdCB3aGVuIHNwZWVj
aCByZWNvZ25pdGlvbiBiYWNrZW5kIGlzIGltcGxlbWVudGVkLgotICAgICAgICBWZWN0b3I8U3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiByZXN1bHREYXRhczsKLSAgICAgICAgbV9kZWxlZ2F0
ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVSZXN1bHQoKm1fY2xpZW50
SWRlbnRpZmllciwgcmVzdWx0RGF0YXMpKTsKLSAgICB9CisjaWYgIUhBVkUoU1BFRUNIUkVDT0dO
SVpFUikKKwordm9pZCBTcGVlY2hSZWNvZ25pemVyOjpkYXRhQ2FwdHVyZWQoY29uc3QgTWVkaWFU
aW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiwgc2l6ZV90KQoreworfQogCitib29sIFNwZWVjaFJlY29nbml6ZXI6OnN0YXJ0UmVjb2du
aXRpb24oYm9vbCwgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiwgYm9vbCwgYm9vbCwgdWludDY0X3QpCit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlvbigpCit7CiAgICAg
bV9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xp
ZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKLSAgICBt
X2NsaWVudElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2du
aXplcjo6c3RvcEludGVybmFsKCkKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6c3RvcFJlY29nbml0
aW9uKCkKIHsKLSAgICBpZiAoIW1fc291cmNlKQotICAgICAgICByZXR1cm47CisgICAgbV9kZWxl
Z2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoKm1fY2xpZW50SWRl
bnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKK30KIAotICAgIG1f
c291cmNlID0gbnVsbHB0cjsKLSAgICBtX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmNyZWF0ZSgqbV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OkF1ZGlvRW5kKSk7Cit2b2lkIFNwZWVjaFJlY29nbml6ZXI6OnJlc2V0UmVjb2du
aXRpb24oKQorewogfQogCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCmluZGV4IGVj
NWFjMTMwYjhhMDQ3N2RhOTFmZDFlMWU3ZmMyYzcwYTRhMzI2M2EuLjE0OTVkYTI5YTQ4YzUwODk3
YmJiZmJkMDFkNDNhMmE0ZjBkYTBiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKQEAgLTI4LDYgKzI4LDExIEBACiAjaW5jbHVkZSAi
U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgogCisjaWYgSEFWRShTUEVFQ0hSRUNP
R05JWkVSKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK09CSkNfQ0xBU1MgV2ViU3BlZWNo
UmVjb2duaXplclRhc2s7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTsKQEAgLTQwLDExICs0NSwxMSBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgflNwZWVjaFJlY29nbml6ZXIoKSA9IGRlZmF1bHQ7CiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoU3BlZWNoUmVjb2duaXRpb25D
b25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIGJv
b2wgbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVu
dGlmaWVyLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IG1h
eEFsdGVybmF0aXZlcyk7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0KCk7
Ci0gICAgZW51bSBjbGFzcyBTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0IHsgTm8sIFllcyB9Owot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcChTaG91bGRHZW5lcmF0ZUZpbmFsUmVzdWx0ID0g
U2hvdWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6WWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFib3J0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wKCk7CiAKICAgICBPcHRpb25h
bDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBjdXJyZW50Q2xp
ZW50SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50SWRlbnRpZmllcjsgfQogCkBA
IC01MiwxMiArNTcsMjIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BJbnRlcm5hbCgpOwogCiAj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICB2b2lkIHNldFNvdXJjZShSZWY8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4mJik7CisgICAgdm9pZCBzdGFydENhcHR1cmUoUmVmPFJlYWx0aW1lTWVkaWFT
b3VyY2U+JiYpOwogI2VuZGlmCisgICAgdm9pZCBzdG9wQ2FwdHVyZSgpOworICAgIHZvaWQgZGF0
YUNhcHR1cmVkKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEm
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90IHNhbXBsZUNvdW50KTsKKyAg
ICBib29sIHN0YXJ0UmVjb2duaXRpb24oYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVk
LCBTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGxvY2FsZUlkZW50aWZpZXIsIGJvb2wgY29udGludW91cywgYm9vbCBpbnRlcmltUmVzdWx0
cywgdWludDY0X3QgYWx0ZXJuYXRpdmVzKTsKKyAgICB2b2lkIGFib3J0UmVjb2duaXRpb24oKTsK
KyAgICB2b2lkIHN0b3BSZWNvZ25pdGlvbigpOworICAgIHZvaWQgcmVzZXRSZWNvZ25pdGlvbigp
OwogCiAgICAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
Zmllcj4gbV9jbGllbnRJZGVudGlmaWVyOwogICAgIERlbGVnYXRlQ2FsbGJhY2sgbV9kZWxlZ2F0
ZUNhbGxiYWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVT
b3VyY2U+IG1fc291cmNlOworCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorICAgIFJldGFp
blB0cjxXZWJTcGVlY2hSZWNvZ25pemVyVGFzaz4gbV90YXNrOworI2VuZGlmCiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQy
ZmZkNGI1Y2YzYTliMGMwYzZhMTg2YmQ4N2FhZTM1MDFhNjk3NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2Nv
YS5tbQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJTcGVlY2hSZWNvZ25pemVyLmgiCisKKyNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIp
CisKKyNpbXBvcnQgIk1lZGlhVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZS5oIgorI2ltcG9ydCAiV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmgiCisjaW1w
b3J0IDxTcGVlY2gvU3BlZWNoLmg+CisjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGlt
ZUFWRm91bmRhdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU3BlZWNoUmVj
b2duaXplcjo6ZGF0YUNhcHR1cmVkKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgYXV0byBidWZmZXIgPSBjcmVhdGVBdWRp
b1NhbXBsZUJ1ZmZlcihkYXRhLCBkZXNjcmlwdGlvbiwgUEFMOjp0b0NNVGltZSh0aW1lKSwgc2Ft
cGxlQ291bnQpOworICAgIFttX3Rhc2sgYXVkaW9TYW1wbGVzQXZhaWxhYmxlOmJ1ZmZlci5nZXQo
KV07Cit9CisKK2Jvb2wgU3BlZWNoUmVjb2duaXplcjo6c3RhcnRSZWNvZ25pdGlvbihib29sIG1v
Y2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQsIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVy
LCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVpbnQ2NF90IGFsdGVybmF0
aXZlcykKK3sKKyAgICBhdXRvIHRhc2tDbGFzcyA9IG1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJs
ZWQgPyBbV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIGNsYXNzXSA6IFtXZWJTcGVlY2hSZWNv
Z25pemVyVGFzayBjbGFzc107CisgICAgbV90YXNrID0gYWRvcHROUyhbW3Rhc2tDbGFzcyBhbGxv
Y10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIgbG9jYWxlOmxvY2FsZUlkZW50aWZpZXIg
ZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOmlu
dGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczphbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFj
azpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oY29uc3QgV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGUmIHVwZGF0ZSkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fZGVsZWdhdGVDYWxsYmFjayh1cGRhdGUp
OworICAgIH1dKTsKKworICAgIHJldHVybiAhIW1fdGFzazsKK30KKwordm9pZCBTcGVlY2hSZWNv
Z25pemVyOjpzdG9wUmVjb2duaXRpb24oKQoreworICAgIEFTU0VSVChtX3Rhc2spOworICAgIFtt
X3Rhc2sgc3RvcF07Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXplcjo6YWJvcnRSZWNvZ25pdGlv
bigpCit7CisgICAgQVNTRVJUKG1fdGFzayk7CisgICAgW21fdGFzayBhYm9ydF07Cit9CisKK3Zv
aWQgU3BlZWNoUmVjb2duaXplcjo6cmVzZXRSZWNvZ25pdGlvbigpCit7CisgICAgaWYgKCFtX3Rh
c2spCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFzayA9IHN0ZDo6ZXhjaGFuZ2UobV90
YXNrLCBudWxscHRyKTsKKyAgICBbdGFzayBhYm9ydF07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25p
emVyVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YzQwMzkyZDUxNTQ2ZGE3NWU1MzMwMDJhZTI4ZjY1NDY3
ZmE5YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9j
b2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25p
dGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLmgiCisjaW1wb3J0ICJTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZS5oIgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCit0eXBlZGVmIHN0cnVj
dCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CisKK0BjbGFzcyBXZWJT
cGVlY2hSZWNvZ25pemVyVGFza0ltcGw7CisKK0BpbnRlcmZhY2UgV2ViU3BlZWNoUmVjb2duaXpl
clRhc2sgOiBOU09iamVjdCB7CitAcHJpdmF0ZQorICAgIFJldGFpblB0cjxXZWJTcGVlY2hSZWNv
Z25pemVyVGFza0ltcGw+IF9pbXBsOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVu
dGlmaWVyOihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyKWlkZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRp
cGxlUmVjb2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJP
T0wpaW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0
aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlJikpY2FsbGJhY2s7CistICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZToo
Q01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyOworLSAodm9pZClhYm9ydDsKKy0gKHZvaWQp
c3RvcDsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25p
emVyVGFzay5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVj
aFJlY29nbml6ZXJUYXNrLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwMjUwNzc3YmI1MDRiZTIxZTJkOTMxMTBm
YjM5MWMxMzNiMDg0NjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQpAQCAtMCwwICsxLDI5NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViU3BlZWNoUmVj
b2duaXplclRhc2suaCIKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9TcGVlY2hTUEkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2lt
cG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9TcGVlY2hTb2Z0
TGluay5oPgorCisvLyBTZXQgdGhlIG1heGltdW0gZHVyYXRpb24gdG8gYmUgYW4gaG91cjsgd2Ug
Y2FuIGFkanVzdCB0aGlzIGlmIG5lZWRlZC4KK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGlt
dW1SZWNvZ25pdGlvbkR1cmF0aW9uID0gNjAgKiA2MDsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2UgV2ViU3BlZWNoUmVj
b2duaXplclRhc2tJbXBsIDogTlNPYmplY3Q8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tEZWxlZ2F0
ZSwgU0ZTcGVlY2hSZWNvZ25pemVyRGVsZWdhdGU+IHsKK0Bwcml2YXRlCisgICAgU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBfaWRlbnRpZmllcjsKKyAgICBCbG9j
a1B0cjx2b2lkKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+IF9kZWxlZ2F0ZUNhbGxi
YWNrOworICAgIGJvb2wgX2RvTXVsdGlwbGVSZWNvZ25pdGlvbnM7CisgICAgdWludDY0X3QgX21h
eEFsdGVybmF0aXZlczsKKyAgICBSZXRhaW5QdHI8U0ZTcGVlY2hSZWNvZ25pemVyPiBfcmVjb2du
aXplcjsKKyAgICBSZXRhaW5QdHI8U0ZTcGVlY2hBdWRpb0J1ZmZlclJlY29nbml0aW9uUmVxdWVz
dD4gX3JlcXVlc3Q7CisgICAgV2Vha09iakNQdHI8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2s+IF90
YXNrOworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hTdGFydDsKKyAgICBib29sIF9oYXNTZW50U3Bl
ZWNoRW5kOworICAgIGJvb2wgX2hhc1NlbnRFbmQ7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aElkZW50aWZpZXI6KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlw
bGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9P
TClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRp
dmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRh
dGUmKSljYWxsYmFjazsKKy0gKHZvaWQpY2FsbGJhY2tXaXRoUmVzdWx0OihTRlRyYW5zY3JpcHRp
b24gKil0cmFuc2NyaXB0aW9uIGlzRmluYWw6KEJPT0wpaXNGaW5hbDsKKy0gKHZvaWQpYXVkaW9T
YW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXI7CistICh2b2lk
KWFib3J0OworLSAodm9pZClzdG9wOworLSAodm9pZClzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZDsK
Ky0gKHZvaWQpc2VuZFNwZWVjaEVuZElmTmVlZGVkOworLSAodm9pZClzZW5kRW5kSWZOZWVkZWQ7
CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbAor
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9j
YWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVw
b3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1
bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0
IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikpY2FsbGJhY2sKK3sKKyAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9pZGVudGlmaWVyID0g
aWRlbnRpZmllcjsKKyAgICBfZG9NdWx0aXBsZVJlY29nbml0aW9ucyA9IGNvbnRpbnVvdXM7Cisg
ICAgX2RlbGVnYXRlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICBfaGFzU2VudFNwZWVjaFN0YXJ0
ID0gZmFsc2U7CisgICAgX2hhc1NlbnRTcGVlY2hFbmQgPSBmYWxzZTsKKyAgICBfaGFzU2VudEVu
ZCA9IGZhbHNlOworCisgICAgX21heEFsdGVybmF0aXZlcyA9IGFsdGVybmF0aXZlcyA/IGFsdGVy
bmF0aXZlcyA6IDE7CisKKyAgICBpZiAoIVtsb2NhbGVJZGVudGlmaWVyIGxlbmd0aF0pCisgICAg
ICAgIF9yZWNvZ25pemVyID0gYWRvcHROUyhbUEFMOjphbGxvY1NGU3BlZWNoUmVjb2duaXplcklu
c3RhbmNlKCkgaW5pdF0pOworICAgIGVsc2UKKyAgICAgICAgX3JlY29nbml6ZXIgPSBhZG9wdE5T
KFtQQUw6OmFsbG9jU0ZTcGVlY2hSZWNvZ25pemVySW5zdGFuY2UoKSBpbml0V2l0aExvY2FsZTpb
TlNMb2NhbGUgbG9jYWxlV2l0aExvY2FsZUlkZW50aWZpZXI6bG9jYWxlSWRlbnRpZmllcl1dKTsK
KyAgICBpZiAoIV9yZWNvZ25pemVyKSB7CisgICAgICAgIFtzZWxmIHJlbGVhc2VdOworICAgICAg
ICByZXR1cm4gbmlsOworICAgIH0KKworICAgIGlmICghW19yZWNvZ25pemVyIGlzQXZhaWxhYmxl
XSkgeworICAgICAgICBbc2VsZiByZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9
CisKKyAgICBbX3JlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisKKyAgICBfcmVxdWVzdCA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NTRlNwZWVjaEF1ZGlvQnVmZmVyUmVjb2duaXRpb25SZXF1ZXN0
SW5zdGFuY2UoKSBpbml0XSk7CisgICAgaWYgKFtfcmVjb2duaXplciBzdXBwb3J0c09uRGV2aWNl
UmVjb2duaXRpb25dKQorICAgICAgICBbX3JlcXVlc3Qgc2V0UmVxdWlyZXNPbkRldmljZVJlY29n
bml0aW9uOllFU107CisgICAgW19yZXF1ZXN0IHNldFNob3VsZFJlcG9ydFBhcnRpYWxSZXN1bHRz
OmludGVyaW1SZXN1bHRzXTsKKyAgICBbX3JlcXVlc3Qgc2V0VGFza0hpbnQ6U0ZTcGVlY2hSZWNv
Z25pdGlvblRhc2tIaW50RGljdGF0aW9uXTsKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CisgICAgW19yZXF1ZXN0IHNldERldGVjdE11bHRpcGxlVXR0ZXJhbmNlczpZRVNdOworICAgIFtf
cmVxdWVzdCBfc2V0TWF4aW11bVJlY29nbml0aW9uRHVyYXRpb246bWF4aW11bVJlY29nbml0aW9u
RHVyYXRpb25dOworI2VuZGlmCisKKyAgICBfdGFzayA9IFtfcmVjb2duaXplciByZWNvZ25pdGlv
blRhc2tXaXRoUmVxdWVzdDpfcmVxdWVzdC5nZXQoKSBkZWxlZ2F0ZTpzZWxmXTsKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAodm9pZCljYWxsYmFja1dpdGhSZXN1bHQ6KFNGVHJhbnNjcmlwdGlv
biAqKXRyYW5zY3JpcHRpb24gaXNGaW5hbDooQk9PTClpc0ZpbmFsCit7CisgICAgYXV0byBzZWdt
ZW50cyA9IFt0cmFuc2NyaXB0aW9uIHNlZ21lbnRzXTsKKyAgICBWZWN0b3I8U3BlZWNoUmVjb2du
aXRpb25SZXN1bHREYXRhPiBkYXRhczsKKyAgICBkYXRhcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHNlZ21lbnRzLmNvdW50KTsKKyAgICBmb3IgKFNGVHJhbnNjcmlwdGlvblNlZ21lbnQqIHNlZ21l
bnQgaW4gc2VnbWVudHMpIHsKKyAgICAgICAgLy8gTm90ZSBzZWdtZW50IGNvbmZpZGVuY2UgaXMg
cmVwb3J0ZWQgMCB3aGVuIHJlc3VsdCBpcyBub3QgZmluYWwuCisgICAgICAgIFZlY3RvcjxTcGVl
Y2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YT4gYWx0ZXJuYXRpdmVzOworICAgICAgICBhbHRl
cm5hdGl2ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShfbWF4QWx0ZXJuYXRpdmVzKTsKKyAgICAg
ICAgYWx0ZXJuYXRpdmVzLnVuY2hlY2tlZEFwcGVuZChTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0
aXZlRGF0YSB7IFtzZWdtZW50IHN1YnN0cmluZ10sIFtzZWdtZW50IGNvbmZpZGVuY2VdIH0pOwor
ICAgICAgICBmb3IgKE5TU3RyaW5nKiBzZWdtZW50QWx0ZXJuYXRpdmUgOiBbc2VnbWVudCBhbHRl
cm5hdGl2ZVN1YnN0cmluZ3NdKSB7CisgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmVzLnNpemUo
KSA9PSBfbWF4QWx0ZXJuYXRpdmVzKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgLy8gRklYTUU6IGNhbGN1bGF0ZSBvciBnZXQgYWx0ZXJuYXRpdmUgY29uZmlkZW5jZSBpZiBw
b3NzaWJsZS4KKyAgICAgICAgICAgIGFsdGVybmF0aXZlcy51bmNoZWNrZWRBcHBlbmQoU3BlZWNo
UmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgeyBzZWdtZW50QWx0ZXJuYXRpdmUsIDAuMCB9KTsK
KyAgICAgICAgfQorICAgICAgICBkYXRhcy51bmNoZWNrZWRBcHBlbmQoU3BlZWNoUmVjb2duaXRp
b25SZXN1bHREYXRhIHsgV1RGTW92ZShhbHRlcm5hdGl2ZXMpLCBib29sKGlzRmluYWwpIH0pOwor
ICAgIH0KKyAgICBfZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3Jl
YXRlUmVzdWx0KF9pZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGFzKSkpOworfQorCistICh2b2lkKWF1
ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBbX3JlcXVlc3QgYXBwZW5kQXVkaW9TYW1w
bGVCdWZmZXI6c2FtcGxlQnVmZmVyXTsKK30KKworLSAodm9pZClhYm9ydAoreworICAgIGlmICgh
X3Rhc2sgfHwgW190YXNrIHN0YXRlXSA9PSBTRlNwZWVjaFJlY29nbml0aW9uVGFza1N0YXRlQ2Fu
Y2VsaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoW190YXNrIHN0YXRlXSA9PSBTRlNw
ZWVjaFJlY29nbml0aW9uVGFza1N0YXRlQ29tcGxldGVkKSB7CisgICAgICAgIFtzZWxmIHNlbmRT
cGVlY2hFbmRJZk5lZWRlZF07CisgICAgICAgIFtzZWxmIHNlbmRFbmRJZk5lZWRlZF07CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbc2VsZiBzZW5kU3BlZWNoRW5kSWZOZWVkZWRdOwor
ICAgIFtfcmVxdWVzdCBlbmRBdWRpb107CisgICAgW190YXNrIGNhbmNlbF07Cit9CisKKy0gKHZv
aWQpc3RvcAoreworICAgIGlmICghX3Rhc2sgfHwgW190YXNrIHN0YXRlXSA9PSBTRlNwZWVjaFJl
Y29nbml0aW9uVGFza1N0YXRlQ2FuY2VsaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
W190YXNrIHN0YXRlXSA9PSBTRlNwZWVjaFJlY29nbml0aW9uVGFza1N0YXRlQ29tcGxldGVkKSB7
CisgICAgICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgICAgIFtzZWxmIHNl
bmRFbmRJZk5lZWRlZF07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbc2VsZiBzZW5k
U3BlZWNoRW5kSWZOZWVkZWRdOworICAgIFtfcmVxdWVzdCBlbmRBdWRpb107CisgICAgW190YXNr
IGZpbmlzaF07Cit9CisKKy0gKHZvaWQpc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWQKK3sKKyAgICBp
ZiAoX2hhc1NlbnRTcGVlY2hTdGFydCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2hhc1NlbnRT
cGVlY2hTdGFydCA9IHRydWU7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRp
b25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpTcGVlY2hTdGFydCkpOworfQorCistICh2b2lkKXNlbmRTcGVlY2hFbmRJZk5lZWRlZAorewor
ICAgIGlmICghX2hhc1NlbnRTcGVlY2hTdGFydCB8fCBfaGFzU2VudFNwZWVjaEVuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgX2hhc1NlbnRTcGVlY2hFbmQgPSB0cnVlOworICAgIF9kZWxlZ2F0
ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoRW5kKSk7Cit9CisKKy0gKHZvaWQpc2Vu
ZEVuZElmTmVlZGVkCit7CisgICAgaWYgKF9oYXNTZW50RW5kKQorICAgICAgICByZXR1cm47CisK
KyAgICBfaGFzU2VudEVuZCA9IHRydWU7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVj
b2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRh
dGVUeXBlOjpFbmQpKTsKK30KKworI3ByYWdtYSBtYXJrIFNGU3BlZWNoUmVjb2duaXplckRlbGVn
YXRlCisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXplcjooU0ZTcGVlY2hSZWNvZ25pemVyICopc3Bl
ZWNoUmVjb2duaXplciBhdmFpbGFiaWxpdHlEaWRDaGFuZ2U6KEJPT0wpYXZhaWxhYmxlCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChhdmFpbGFibGUgfHwgIV90YXNr
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVjb2duaXRpb25F
cnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxsb3dlZCwgIlNw
ZWVjaCByZWNvZ25pdGlvbiBzZXJ2aWNlIGJlY29tZXMgdW5hdmFpbGFibGUiX3MgfTsKKyAgICBf
ZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoX2lk
ZW50aWZpZXIsIFdURk1vdmUoZXJyb3IpKSk7Cit9CisKKyNwcmFnbWEgbWFyayBTRlNwZWVjaFJl
Y29nbml0aW9uVGFza0RlbGVnYXRlCisKKy0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNrOihT
RlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sgZGlkSHlwb3RoZXNpemVUcmFuc2NyaXB0aW9u
OihTRlRyYW5zY3JpcHRpb24gKil0cmFuc2NyaXB0aW9uCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIFtzZWxmIHNlbmRTcGVlY2hTdGFydElmTmVlZGVkXTsKKyAgICBbc2Vs
ZiBjYWxsYmFja1dpdGhSZXN1bHQ6dHJhbnNjcmlwdGlvbiBpc0ZpbmFsOk5PXTsKK30KKworLSAo
dm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2s6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFz
ayBkaWRGaW5pc2hSZWNvZ25pdGlvbjooU0ZTcGVlY2hSZWNvZ25pdGlvblJlc3VsdCAqKXJlY29n
bml0aW9uUmVzdWx0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFtzZWxm
IGNhbGxiYWNrV2l0aFJlc3VsdDpyZWNvZ25pdGlvblJlc3VsdC5iZXN0VHJhbnNjcmlwdGlvbiBp
c0ZpbmFsOllFU107CisKKyAgICBpZiAoIV9kb011bHRpcGxlUmVjb2duaXRpb25zKSB7CisgICAg
ICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAgICAgIFtzZWxmIHNlbmRFbmRJ
Zk5lZWRlZF07CisgICAgfQorfQorCistICh2b2lkKXNwZWVjaFJlY29nbml0aW9uVGFza1dhc0Nh
bmNlbGxlZDooU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2sgKil0YXNrCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKworICAgIFtzZWxmIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF07CisgICAg
W3NlbGYgc2VuZEVuZElmTmVlZGVkXTsKK30KKworLSAodm9pZClzcGVlY2hSZWNvZ25pdGlvblRh
c2s6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzayBkaWRGaW5pc2hTdWNjZXNzZnVsbHk6
KEJPT0wpc3VjY2Vzc2Z1bGx5Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IGlmICghc3VjY2Vzc2Z1bGx5KSB7CisgICAgICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25p
dGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsIHRhc2suZXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24gfTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKF9pZGVudGlmaWVyLCBXVEZNb3ZlKGVy
cm9yKSkpOworICAgIH0KKyAgICAKKyAgICBbc2VsZiBzZW5kRW5kSWZOZWVkZWRdOworfQorCitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzaworCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRp
ZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJp
bVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBs
b25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlJikpY2FsbGJhY2sKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9pbXBsID0gYWRvcHROUyhbW1dlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZp
ZXIgbG9jYWxlOmxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczpjb250aW51
b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOmludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczph
bHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazpjYWxsYmFja10pOworCisgICAgaWYgKCFfaW1w
bCkgeworICAgICAgICBbc2VsZiByZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9
CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6
KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgoreworICAgIFtfaW1wbCBhdWRpb1NhbXBs
ZXNBdmFpbGFibGU6c2FtcGxlQnVmZmVyXTsKK30KKworLSAodm9pZClhYm9ydAoreworICAgIFtf
aW1wbCBhYm9ydF07Cit9CisKKy0gKHZvaWQpc3RvcAoreworICAgIFtfaW1wbCBzdG9wXTsKK30K
KworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFz
a01vY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrTW9jay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZmZlZmQzMjIxOGNmNGZhOTIyNmY5OWJl
NWZjOTQ0ZWVkOTk3ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2suaApAQCAtMCwwICsxLDU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCAi
V2ViU3BlZWNoUmVjb2duaXplclRhc2suaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorCitO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAY2xhc3MgV2ViU3BlZWNoUmVjb2duaXplclRhc2tN
b2NrOworCitAaW50ZXJmYWNlIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayA6IFdlYlNwZWVj
aFJlY29nbml6ZXJUYXNrIHsKK0Bwcml2YXRlCisgICAgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBfaWRlbnRpZmllcjsKKyAgICBCbG9ja1B0cjx2
b2lkKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+IF9kZWxlZ2F0ZUNh
bGxiYWNrOworICAgIGJvb2wgX2RvTXVsdGlwbGVSZWNvZ25pdGlvbnM7CisgICAgYm9vbCBfaGFz
U2VudFNwZWVjaFN0YXJ0OworICAgIGJvb2wgX2hhc1NlbnRTcGVlY2hFbmQ7CisgICAgYm9vbCBf
Y29tcGxldGVkOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZp
ZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRp
b25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJl
c3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0
ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
JikpY2FsbGJhY2s7CistICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZm
ZXJSZWYpc2FtcGxlQnVmZmVyOworLSAodm9pZClhYm9ydDsKKy0gKHZvaWQpc3RvcDsKKworQGVu
ZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2su
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25p
emVyVGFza01vY2subW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjZjZWM5MTU0MmI3NDc2NWE5YzFmZmJjMmYyOGUx
YTUwODVjNTVlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQpAQCAtMCwwICsxLDkzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJTcGVlY2hSZWNv
Z25pemVyVGFza01vY2suaCIKKworI2lmIEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbXBsZW1l
bnRhdGlvbiBXZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2sKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSWRlbnRpZmllcjooU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0
aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihC
T09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5h
dGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSYpKWNhbGxiYWNrCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBfZG9NdWx0aXBsZVJlY29nbml0aW9ucyA9IGNvbnRpbnVv
dXM7CisgICAgX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNr
ID0gY2FsbGJhY2s7CisgICAgX2NvbXBsZXRlZCA9IGZhbHNlOworICAgIF9oYXNTZW50U3BlZWNo
U3RhcnQgPSBmYWxzZTsKKyAgICBfaGFzU2VudFNwZWVjaEVuZCA9IGZhbHNlOworCisgICAgcmV0
dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1
ZmZlclJlZilzYW1wbGVCdWZmZXIKK3sKKyAgICBpZiAoIV9oYXNTZW50U3BlZWNoU3RhcnQpIHsK
KyAgICAgICAgX2hhc1NlbnRTcGVlY2hTdGFydCA9IHRydWU7CisgICAgICAgIF9kZWxlZ2F0ZUNh
bGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoU3RhcnQpKTsKKyAgICB9CisKKyAgICAvLyBG
YWtlIHNvbWUgcmVjb2duaXRpb24gcmVzdWx0cy4KKyAgICBWZWN0b3I8U3BlZWNoUmVjb2duaXRp
b25BbHRlcm5hdGl2ZURhdGE+IGFsdGVybmF0aXZlczsKKyAgICBhbHRlcm5hdGl2ZXMuYXBwZW5k
KFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhIHsgIlRlc3QiLCAxLjAgfSk7CisgICAg
VmVjdG9yPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4gZGF0YXM7CisgICAgZGF0YXMuYXBw
ZW5kKFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YSB7IFdURk1vdmUoYWx0ZXJuYXRpdmVzKSwg
dHJ1ZSAgfSk7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6
OmNyZWF0ZVJlc3VsdChfaWRlbnRpZmllciwgV1RGTW92ZShkYXRhcykpKTsKKworICAgIGlmICgh
X2RvTXVsdGlwbGVSZWNvZ25pdGlvbnMpCisgICAgICAgIFtzZWxmIGFib3J0XTsKK30KKworLSAo
dm9pZClhYm9ydAoreworICAgIGlmIChfY29tcGxldGVkKQorICAgICAgICByZXR1cm47CisgICAg
X2NvbXBsZXRlZCA9IHRydWU7CisKKyAgICBpZiAoIV9oYXNTZW50U3BlZWNoRW5kICYmIF9oYXNT
ZW50U3BlZWNoU3RhcnQpIHsKKyAgICAgICAgX2hhc1NlbnRTcGVlY2hFbmQgPSB0cnVlOworICAg
ICAgICBfZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9p
ZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaEVuZCkpOworICAg
IH0KKworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVh
dGUoX2lkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7Cit9CisK
Ky0gKHZvaWQpc3RvcAoreworICAgIFtzZWxmIGFib3J0XTsKK30KKworQGVuZAorCitOU19BU1NV
TUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzcxNTZhYzJkMTlkMGViMmRlMDY0ZTdmMDZi
NmRlOTMzYmU3YmQ0MC4uMGRmZDQ5OTE3NTY4M2JiOTY1MGNjNDBmZjJiYWEzYTRjMDFkZTliYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTQ0LDYgKzE0NCw5IEBACiAJCTYzQzdFREM3MjFBRkFFMDQwMDZBN0I5OSAvKiBOU1By
b2dyZXNzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2M0UzNjlGOTIxQUZBODNGMDAxQzE0QkMgLyogTlNQcm9ncmVzc1NQSS5oICovOyB9OwogCQk3
QTM2RDBGOTIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTM2RDBGODIyM0FEOUFCMDBCMDUy
MkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi87IH07CiAJCTdBM0E2QTgwMjBDQURCNDcwMDMxN0FB
RSAvKiBOU0ltYWdlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QTNBNkE3RjIwQ0FEQjQ2MDAzMTdBQUUgLyogTlNJbWFnZVNQSS5oICovOyB9Owor
CQk5M0IzOEVCRTI1ODIxQ0I2MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUJEMjU4MjFDQjYwMDE5
OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5oICovOyB9OworCQk5M0IzOEVDMDI1ODIxQ0Q4MDAxOThF
NjMgLyogU3BlZWNoU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0IzOEVCRjI1ODIxQ0Q3MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsu
bW0gKi87IH07CisJCTkzQjM4RUMyMjU4MjFEMjIwMDE5OEU2MyAvKiBTcGVlY2hTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjM4RUMxMjU4MjFE
MjIwMDE5OEU2MyAvKiBTcGVlY2hTUEkuaCAqLzsgfTsKIAkJOTNEQjdEMzcyNDYyNkJDRDAwNEJE
OEEzIC8qIE5TVGV4dElucHV0Q29udGV4dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNEQjdEMzYyNDYyNkJDQzAwNEJEOEEzIC8qIE5TVGV4dElu
cHV0Q29udGV4dFNQSS5oICovOyB9OwogCQk5M0RCN0QzQTI0NjI2Rjg2MDA0QkQ4QTMgLyogTlNV
bmRvTWFuYWdlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNEQjdEMzkyNDYyNkY4NjAwNEJEOEEzIC8qIE5TVW5kb01hbmFnZXJTUEkuaCAqLzsg
fTsKIAkJQTEwMjY1ODkxRjU2NzQ3QTAwQjRDODQ0IC8qIEhJVG9vbGJveFNQSS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwMjY1ODgxRjU2NzQ3QTAw
QjRDODQ0IC8qIEhJVG9vbGJveFNQSS5oICovOyB9OwpAQCAtMzQwLDYgKzM0Myw5IEBACiAJCTYz
RTM2OUY5MjFBRkE4M0YwMDFDMTRCQyAvKiBOU1Byb2dyZXNzU1BJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5TUHJvZ3Jlc3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EzNkQwRjgy
MjNBRDlBQjAwQjA1MjJFIC8qIENvbW1vbkNyeXB0b1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb21tb25DcnlwdG9TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0EzQTZBN0YyMENBREI0NjAwMzE3QUFFIC8qIE5TSW1hZ2VTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNJbWFnZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0IzOEVCRDI1ODIxQ0I2MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlZWNoU29mdExpbmsuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNCMzhFQkYyNTgyMUNENzAwMTk4RTYzIC8qIFNwZWVj
aFNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3Bl
ZWNoU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUMxMjU4
MjFEMjIwMDE5OEU2MyAvKiBTcGVlY2hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3BlZWNoU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzREI3RDM2
MjQ2MjZCQ0MwMDRCRDhBMyAvKiBOU1RleHRJbnB1dENvbnRleHRTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTlNUZXh0SW5wdXRDb250ZXh0U1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzREI3RDM5MjQ2MjZGODYwMDRCRDhBMyAvKiBOU1VuZG9NYW5h
Z2VyU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TVW5kb01hbmFnZXJT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNTkwOUMxRjkzQkYxRTAwNjdG
OENGIC8qIFVuZW5jb2RhYmxlSGFuZGxpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5lbmNvZGFibGVI
YW5kbGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTExLDYgKzUxNyw3IEBA
CiAJCQkJNDQyOTU2Q0MyMThBNzJERTAwODBEQjU0IC8qIFJldmVhbFNQSS5oICovLAogCQkJCTU3
MEFCOEYwMjBBRTJFOEQwMEI4QkU4NyAvKiBTZWNLZXlQcm94eVNQSS5oICovLAogCQkJCTBDMkRB
MTNDMUYzQkVCNDkwMERCQzMxNyAvKiBTZXJ2ZXJzU1BJLmggKi8sCisJCQkJOTNCMzhFQzEyNTgy
MUQyMjAwMTk4RTYzIC8qIFNwZWVjaFNQSS5oICovLAogCQkJCTBDMkRBMTJCMUYzQkVCNDkwMERC
QzMxNyAvKiBVUkxGb3JtYXR0aW5nU1BJLmggKi8sCiAJCQkJMEMyREExM0QxRjNCRUI0OTAwREJD
MzE3IC8qIFdlYkZpbHRlckV2YWx1YXRvclNQSS5oICovLAogCQkJKTsKQEAgLTY4Miw2ICs2ODks
OCBAQAogCQkJCTMxNjQ3RkFFMjUxNzU5REIwMDEwRjhGQiAvKiBPcGVuR0xTb2Z0TGlua0NvY29h
Lm1tICovLAogCQkJCUExRjYzQzlEMjFBNERCRjcwMDZGQjQzQiAvKiBQYXNzS2l0U29mdExpbmsu
aCAqLywKIAkJCQlBMUY2M0M5RTIxQTREQkY3MDA2RkI0M0IgLyogUGFzc0tpdFNvZnRMaW5rLm1t
ICovLAorCQkJCTkzQjM4RUJEMjU4MjFDQjYwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5oICov
LAorCQkJCTkzQjM4RUJGMjU4MjFDRDcwMDE5OEU2MyAvKiBTcGVlY2hTb2Z0TGluay5tbSAqLywK
IAkJCQkwNzYxMURCNDI0M0ZBNUJFMDBEODA3MDQgLyogVXNhZ2VUcmFja2luZ1NvZnRMaW5rLmgg
Ki8sCiAJCQkJMDc2MTFEQjUyNDNGQTVCRjAwRDgwNzA0IC8qIFVzYWdlVHJhY2tpbmdTb2Z0TGlu
ay5tbSAqLywKIAkJCSk7CkBAIC05MDcsNiArOTE2LDggQEAKIAkJCQlBM0FCNkU1NjFGM0QxRERC
MDA5QzE0QjEgLyogU2xlZXBEaXNhYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNBQjZFNjEx
RjNEMUUzOTAwOUMxNEIxIC8qIFNsZWVwRGlzYWJsZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTM3ODhFOTgxRjA1QjZDRTAwNjc5NDI1IC8qIFNvdW5kLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5M0IzOEVCRTI1ODIxQ0I2MDAxOThFNjMgLyogU3BlZWNoU29mdExpbmsuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTkzQjM4RUMyMjU4MjFEMjIwMDE5OEU2MyAvKiBTcGVlY2hTUEkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExMTc1QjQ5MUY2QUZGOEUwMEM0QjlGMCAvKiBTcGVlY2hTeW50aGVzaXNT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDNUFGOTIxMUY0M0E0QzcwMDJFQUMwMiAvKiBTUUxp
dGUzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTMwOEIxNDIwQTIxNzA1MDAzRkI5MjkgLyog
U3lzdGVtUHJldmlld1NQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDM3LDYgKzEwNDgsNyBAQAog
CQkJCUEzQUI2RTYwMUYzRDFFMzkwMDlDMTRCMSAvKiBTbGVlcERpc2FibGVyQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTM3ODhFOUMxRjA1Qjc4MjAwNjc5NDI1IC8qIFNvdW5kLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUEzNzg4RTlFMUYwNUI3OEUwMDY3OTQyNSAvKiBTb3VuZE1hYy5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTkzQjM4RUMwMjU4MjFDRDgwMDE5OEU2MyAvKiBTcGVlY2hT
b2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEzQUI2RTU3MUYzRDFEREIwMDlDMTRCMSAv
KiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzQUI2RTY1MUYz
RDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkUxMzQyQ0QyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNo
U29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNzNmNzU0OTk1MGEwYTM0OWYxNjNhMGE4YmQ5OTZjOGUzMmY4MGUzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9TcGVlY2hTb2Z0
TGluay5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEhBVkUoU1BFRUNIUkVDT0dOSVpFUikKKworI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURF
UihQQUwsIFNwZWVjaCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNo
UmVjb2duaXRpb25SZXN1bHQpOworU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBTRlNw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdCk7CitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUws
IFNGU3BlZWNoQXVkaW9CdWZmZXJSZWNvZ25pdGlvblJlcXVlc3QpOworU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBTRlNwZWVjaFJlY29nbml0aW9uVGFzayk7CitTT0ZUX0xJTktfQ0xB
U1NfRk9SX0hFQURFUihQQUwsIFNGU3BlZWNoUmVjb2duaXplcik7CitTT0ZUX0xJTktfQ0xBU1Nf
Rk9SX0hFQURFUihQQUwsIFNGVHJhbnNjcmlwdGlvblNlZ21lbnQpOworU09GVF9MSU5LX0NMQVNT
X0ZPUl9IRUFERVIoUEFMLCBTRlRyYW5zY3JpcHRpb24pOworCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvU3BlZWNoU29mdExpbmsubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1NwZWVjaFNvZnRMaW5rLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YTAz
MWU4NjNiOWQ4ZDU2MWJmZjY2ODM4ODM2YjA2YzZmNzg5NzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1NwZWVjaFNvZnRMaW5rLm1tCkBAIC0wLDAgKzEs
NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEhBVkUoU1BFRUNI
UkVDT0dOSVpFUikKKworI2ltcG9ydCA8U3BlZWNoL1NwZWVjaC5oPgorI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIFNwZWVj
aCkKKworU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gs
IFNGU3BlZWNoUmVjb2duaXRpb25SZXN1bHQsIFBBTF9FWFBPUlQpOworU09GVF9MSU5LX0NMQVNT
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBTcGVlY2gsIFNGU3BlZWNoUmVjb2duaXRpb25S
ZXF1ZXN0LCBQQUxfRVhQT1JUKTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQ
T1JUKFBBTCwgU3BlZWNoLCBTRlNwZWVjaEF1ZGlvQnVmZmVyUmVjb2duaXRpb25SZXF1ZXN0LCBQ
QUxfRVhQT1JUKTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwg
U3BlZWNoLCBTRlNwZWVjaFJlY29nbml0aW9uVGFzaywgUEFMX0VYUE9SVCk7CitTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFNwZWVjaCwgU0ZTcGVlY2hSZWNvZ25p
emVyLCBQQUxfRVhQT1JUKTsKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgU3BlZWNoLCBTRlRyYW5zY3JpcHRpb25TZWdtZW50LCBQQUxfRVhQT1JUKTsKK1NPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgU3BlZWNoLCBTRlRyYW5zY3Jp
cHRpb24sIFBBTF9FWFBPUlQpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NvY29hL1NwZWVjaFNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY29jb2EvU3BlZWNoU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk3Y2JkYjczZWIxYTQwMWNhZDgyNGQx
M2ExZmIyMWQ5NDczY2M4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL1NwZWVjaFNQSS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWYgSEFWRShTUEVFQ0hSRUNPR05JWkVSKQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KworI2ltcG9ydCA8U3BlZWNoL1NGU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0X1ByaXZhdGUuaD4K
KworI2Vsc2UKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBTRlNwZWVj
aFJlY29nbml0aW9uUmVxdWVzdCAoKQorQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgZGV0ZWN0
TXVsdGlwbGVVdHRlcmFuY2VzOworQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1fbWF4aW11
bVJlY29nbml0aW9uRHVyYXRpb24sIHNldHRlcj1fc2V0TWF4aW11bVJlY29nbml0aW9uRHVyYXRp
b246KSBOU1RpbWVJbnRlcnZhbCBfbWF4aW11bVJlY29nbml0aW9uRHVyYXRpb247CisKK0BlbmQK
KworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAvLyBVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQorCisjZW5kaWYgLy8gSEFWRShTUEVFQ0hSRUNPR05JWkVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggZTU5MTM5ZmJiNDU2NTBkZWY5OTZmODIxZDVjYWZhNDBiNzJkOGVjYS4uODRm
NTg2ODc2MWUyOWE5NDYwYzZjYTU2NWU0Y2NjZDFlMGY1MDJiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CkBAIC05Miw2ICs5Miw5IEBAIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lckNvY29hLmNwcAogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxh
Y2VtZW50Lm1tCiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAor
TW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCitNb2R1bGVzL3Nw
ZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQorTW9kdWxlcy9zcGVlY2gvY29j
b2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2Nv
Y29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENh
Y2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZTJmZTllOTVmZmNhZTc1ZDkyMmM5M2M4MDAxZjBiNjIzNjQwYTU1Yy4uYTg3NTM0Y2JkYzg1
YWEzNmZmOGZjZTRiMGUwOWI2MDg5M2Y5NTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjgxOSw2ICsyODE5LDggQEAKIAkJ
OTNBODA2MUUxRTAzQjU4NTAwOEExRjI2IC8qIEpTRG91YmxlUmFuZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTgwNjFBMUUwM0I1ODUwMDhBMUYy
NiAvKiBKU0RvdWJsZVJhbmdlLmggKi87IH07CiAJCTkzQTgwNjIwMUUwM0I1ODUwMDhBMUYyNiAv
KiBKU0xvbmdSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNBODA2MUMxRTAzQjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggKi87IH07CiAJ
CTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAw
NkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNCMzhFQzMyNTgyMURCNDAwMTk4RTYzIC8qIFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0IzOEVCQTI1ODIxOTNCMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXpl
clRhc2suaCAqLzsgfTsKKwkJOTNCMzhFQzQyNTgyMURCNzAwMTk4RTYzIC8qIFdlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCMzhFQkIyNTgyMTkzRDAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJU
YXNrTW9jay5oICovOyB9OwogCQk5M0I2QTBFNjBCMEJDQTVDMDBGNTAyN0EgLyogQ29udGV4dE1l
bnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjZB
MEU1MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQjcwRDY0MDlFQjBDN0MwMDlEODQ2OCAv
KiBKU0RPTUJpbmRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0I3MEQ2QTA5RUIw
QzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I3MEQ0RTA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVu
dExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTExNTQxLDYgKzExNTQzLDExIEBACiAJCTkzQTgwNjFDMUUwM0I1ODUwMDhBMUYyNiAv
KiBKU0xvbmdSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0xvbmdS
YW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyRDgxNTBGOTkyMEQyMDA2
QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3VkZGVuVGVybWluYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTNCMkQ4MTcwRjk5MjBFRTAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3VkZGVuVGVybWluYXRpb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjM4RUI4MjU4MjE4OTkwMDE5OEU2MyAvKiBT
cGVlY2hSZWNvZ25pemVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBTcGVlY2hSZWNvZ25pemVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzQjM4RUI5MjU4MjE5M0EwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFz
a01vY2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTcGVl
Y2hSZWNvZ25pemVyVGFza01vY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
QjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0IzOEVCQjI1ODIxOTNEMDAxOThFNjMgLyog
V2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5M0IzOEVCQzI1ODIxOTNFMDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXpl
clRhc2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTcGVl
Y2hSZWNvZ25pemVyVGFzay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNkEw
RTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUJpbmRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNCNzBENEQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVudExpc3RlbmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMTkxLDYgKzIzMTk4LDE4IEBA
CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJOTNC
MzhFQjYyNTgyMTgzMzAwMTk4RTYzIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5M0IzOEVCODI1ODIxODk5MDAxOThFNjMgLyogU3BlZWNo
UmVjb2duaXplckNvY29hLm1tICovLAorCQkJCTkzQjM4RUJBMjU4MjE5M0IwMDE5OEU2MyAvKiBX
ZWJTcGVlY2hSZWNvZ25pemVyVGFzay5oICovLAorCQkJCTkzQjM4RUJDMjU4MjE5M0UwMDE5OEU2
MyAvKiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbSAqLywKKwkJCQk5M0IzOEVCQjI1ODIxOTNE
MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggKi8sCisJCQkJOTNCMzhF
QjkyNTgyMTkzQTAwMTk4RTYzIC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbSAqLywK
KwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQk5M0MwOUE4MjBCMDY0RjA1MDA1QUJENEQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI1NzIzLDYgKzI1NzQyLDcgQEAKIAkJQUEyQTVB
QjcxNkE0ODVBNDAwOTc1QTI1IC8qIHNwZWVjaCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJOTNCMzhFQjYyNTgyMTgzMzAwMTk4RTYzIC8qIGNvY29hICov
LAogCQkJCUFBMkE1QUJBMTZBNDg1RDUwMDk3NUEyNSAvKiBET01XaW5kb3crU3BlZWNoU3ludGhl
c2lzLmlkbCAqLywKIAkJCQlBQTJBNUFCODE2QTQ4NUQ1MDA5NzVBMjUgLyogRE9NV2luZG93U3Bl
ZWNoU3ludGhlc2lzLmNwcCAqLywKIAkJCQlBQTJBNUFCOTE2QTQ4NUQ1MDA5NzVBMjUgLyogRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmggKi8sCkBAIC0zNTMwMyw2ICszNTMyMyw4IEBACiAJCQkJ
OTdBQUJEMjUxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5N0FBQkQyNzE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MUUxMkU5RjI0RkU3NEUyMDA5M0ZGQjQgLyogV2ViU29ja2V0
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNCMzhFQzMyNTgyMURCNDAwMTk4RTYz
IC8qIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0IzOEVD
NDI1ODIxREI3MDAxOThFNjMgLyogV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxRjg3NTZCMjFFMjJDMzM1MDA0MkM0MEQgLyogV2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMURFQTQ1NjFCMzlGNEQ5MDBG
NzcxNzggLyogV2ViU3lzdGVtQmFja2Ryb3BMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1
ODBGQTMxNDk2OTM5MTAwRkI1QkQ4IC8qIFdlYlRpbGVkQmFja2luZ0xheWVyLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0
aW9uU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9u
U2VydmVyLmNwcAppbmRleCBkNmZhODljNTQ4MzI2MmMxMDFhMjZkMDMwMzIzNTU3MjA2YjEyZjYx
Li42YTZlZTg0OGUyY2E2OTUzYTdkYjFjNjkzYjE5MjAwN2RjMWRkZWJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuY3BwCkBAIC0z
NiwyMiArMzYsMjEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKworU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXImJiBwZXJtaXNzaW9uQ2hlY2tlciwg
U3BlZWNoUmVjb2duaXRpb25DaGVja0lmbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCYmIGNo
ZWNrSWZFbmFibGVkCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLVNwZWVjaFJlY29nbml0aW9u
U2VydmVyOjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24sIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlmaWVyLCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYgcGVybWlzc2lvbkNoZWNrZXIsIFJl
YWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbiYmIGZ1bmN0aW9uKQorICAgICwgUmVhbHRp
bWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9uJiYgZnVuY3Rpb24KKyNlbmRpZgorICAgICkKICAg
ICA6IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCiAgICAgLCBtX3Blcm1pc3Npb25DaGVja2VyKFdURk1vdmUocGVybWlzc2lv
bkNoZWNrZXIpKQorICAgICwgbV9jaGVja0lmbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZChX
VEZNb3ZlKGNoZWNrSWZFbmFibGVkKSkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwg
bV9yZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCisj
ZW5kaWYKIHsKIH0KLSNlbHNlCi1TcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6U3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2hlY2tlciYmIHBlcm1pc3Npb25DaGVja2VyKQotICAgIDogbV9jb25uZWN0aW9uKFdU
Rk1vdmUoY29ubmVjdGlvbikpCi0gICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAs
IG1fcGVybWlzc2lvbkNoZWNrZXIoV1RGTW92ZShwZXJtaXNzaW9uQ2hlY2tlcikpCi17Ci19Ci0j
ZW5kaWYKIAogdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6c3RhcnQoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
LCBTdHJpbmcmJiBsYW5nLCBib29sIGNvbnRpbnVvdXMsIGJvb2wgaW50ZXJpbVJlc3VsdHMsIHVp
bnQ2NF90IG1heEFsdGVybmF0aXZlcywgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luKQog
ewpAQCAtODAsMTEgKzc5LDExIEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OnJlcXVl
c3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBoYW5kbGVSZXF1ZXN0KGlkZW50aWZpZXIp
OworICAgICAgICBoYW5kbGVSZXF1ZXN0KCp3ZWFrUmVxdWVzdCk7CiAgICAgfSk7CiB9CiAKLXZv
aWQgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQor
dm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX3JlY29nbml6ZXIp
IHsKICAgICAgICAgbV9yZWNvZ25pemVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pemVyPihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYgdXBkYXRl
KSB7CkBAIC05NSwxNiArOTQsMjkgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6aGFu
ZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24KICAgICAgICAg
ICAgIGlmICghbV9yZXF1ZXN0cy5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgICAgIHNlbmRVcGRhdGUodXBkYXRlKTsKKwogICAg
ICAgICAgICAgYXV0byB0eXBlID0gdXBkYXRlLnR5cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBl
ID09IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IgfHwgdHlwZSA9
PSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKLSAgICAgICAgICAg
ICAgICBtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlm
ICh0eXBlICE9IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IgJiYg
dHlwZSAhPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVuZCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHNlbmRVcGRhdGUodXBkYXRlKTsKKyAg
ICAgICAgICAgIGlmIChtX2lzUmVzZXR0aW5nKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIG1faXNSZXNldHRpbmcgPSB0cnVlOworCisgICAgICAgICAgICBtX3JlY29nbml6
ZXItPnJlc2V0KCk7CisgICAgICAgICAgICBtX3JlcXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlm
aWVyKTsKKyAgICAgICAgICAgIG1faXNSZXNldHRpbmcgPSBmYWxzZTsKICAgICAgICAgfSk7CiAg
ICAgfQotICAgIAotICAgIG1fcmVjb2duaXplci0+cmVzZXQoKTsKIAorICAgIGlmIChhdXRvIGN1
cnJlbnRDbGllbnRJZGVudGlmaWVyID0gbV9yZWNvZ25pemVyLT5jdXJyZW50Q2xpZW50SWRlbnRp
ZmllcigpKSB7CisgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsICJB
bm90aGVyIHJlcXVlc3QgaXMgc3RhcnRlZCJfcyB9OworICAgICAgICBzZW5kVXBkYXRlKCpjdXJy
ZW50Q2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpFcnJvciwgZXJyb3IpOworICAgICAgICBtX3JlY29nbml6ZXItPnJlc2V0KCk7CisgICAgfQor
CisgICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0gcmVxdWVzdC5jbGllbnRJZGVudGlmaWVyKCk7
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBhdXRvIHNvdXJjZU9yRXJyb3IgPSBtX3Jl
YWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbigpOwogICAgIGlmICghc291cmNlT3JFcnJv
cikgewpAQCAtMTEyLDEwICsxMjQsMTIgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6
aGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24KICAgICAg
ICAgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJy
b3IoY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsIHNvdXJjZU9y
RXJyb3IuZXJyb3JNZXNzYWdlIH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3Jl
Y29nbml6ZXItPnN0YXJ0KGNsaWVudElkZW50aWZpZXIsIHNvdXJjZU9yRXJyb3Iuc291cmNlKCkp
OworCisgICAgYm9vbCBtb2NrRGV2aWNlQ2FwdHVyZXNFbmFibGVkID0gbV9jaGVja0lmbW9ja1Nw
ZWVjaFJlY29nbml0aW9uRW5hYmxlZCgpOworICAgIG1fcmVjb2duaXplci0+c3RhcnQoY2xpZW50
SWRlbnRpZmllciwgc291cmNlT3JFcnJvci5zb3VyY2UoKSwgbW9ja0RldmljZUNhcHR1cmVzRW5h
YmxlZCwgcmVxdWVzdC5sYW5nKCksIHJlcXVlc3QuY29udGludW91cygpLCByZXF1ZXN0LmludGVy
aW1SZXN1bHRzKCksIHJlcXVlc3QubWF4QWx0ZXJuYXRpdmVzKCkpOwogI2Vsc2UKICAgICBtX3Jl
cXVlc3RzLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKLSAgICBzZW5kVXBkYXRlKGNsaWVudElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RXJyb3IsIFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yVHlwZTo6QXVkaW9DYXB0dXJlLCAiQXVkaW8gY2FwdHVyZSBpcyBub3QgaW1wbGVtZW50
ZWQifSk7CisgICAgc2VuZFVwZGF0ZShjbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVycm9yLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkF1ZGlvQ2FwdHVyZSwg
IkF1ZGlvIGNhcHR1cmUgaXMgbm90IGltcGxlbWVudGVkIl9zIH0pOwogI2VuZGlmCiB9CiAKQEAg
LTEzNSw3ICsxNDksNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uU2VydmVyOjphYm9ydChXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZAogewogICAgIE1FU1NBR0Vf
Q0hFQ0soY2xpZW50SWRlbnRpZmllcik7CiAgICAgaWYgKG1fcmVjb2duaXplciAmJiBtX3JlY29n
bml6ZXItPmN1cnJlbnRDbGllbnRJZGVudGlmaWVyKCkgPT0gY2xpZW50SWRlbnRpZmllcikgewot
ICAgICAgICBtX3JlY29nbml6ZXItPnN0b3AoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXplcjo6U2hv
dWxkR2VuZXJhdGVGaW5hbFJlc3VsdDo6Tm8pOworICAgICAgICBtX3JlY29nbml6ZXItPmFib3J0
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0OCw3ICsxNjIsNyBAQCB2b2lkIFNw
ZWVjaFJlY29nbml0aW9uU2VydmVyOjppbnZhbGlkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaQogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SWRlbnRpZmllcik7CiAg
ICAgaWYgKG1fcmVxdWVzdHMucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpKSB7CiAgICAgICAgIGlm
IChtX3JlY29nbml6ZXIgJiYgbV9yZWNvZ25pemVyLT5jdXJyZW50Q2xpZW50SWRlbnRpZmllcigp
ID09IGNsaWVudElkZW50aWZpZXIpCi0gICAgICAgICAgICBtX3JlY29nbml6ZXItPnN0b3AoKTsK
KyAgICAgICAgICAgIG1fcmVjb2duaXplci0+YWJvcnQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4IGVk
NjcyNjRhYTEzMWUxZTE0MjFlYWE0MTRkNDE3MTNjNjk1ZDgzMjQuLmViMTAyM2EyMWU2OGQwMDJh
NzJkMmJjOTZjYTZkMjU3YjRiNDU3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaApAQCAtNDcsMTUgKzQ3LDE2IEBAIGVudW0gY2xh
c3MgU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24gOiBib29sOwogCiB1c2luZyBT
cGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cjsKIHVzaW5nIFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNoZWNrZXIgPSBGdW5jdGlvbjx2
b2lkKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uRGVjaXNpb24pPiYmKT47Cit1c2luZyBTcGVlY2hS
ZWNvZ25pdGlvbkNoZWNrSWZtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkID0gRnVuY3Rpb248
Ym9vbCgpPjsKIAogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIHVzaW5nIFJl
YWx0aW1lTWVkaWFTb3VyY2VDcmVhdGVGdW5jdGlvbiA9IEZ1bmN0aW9uPFdlYkNvcmU6OkNhcHR1
cmVTb3VyY2VPckVycm9yKCk+OwotICAgIFNwZWVjaFJlY29nbml0aW9uU2VydmVyKFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYsIFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciwgU3BlZWNo
UmVjb2duaXRpb25QZXJtaXNzaW9uQ2hlY2tlciYmLCBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRl
RnVuY3Rpb24mJik7CisgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25p
dGlvblBlcm1pc3Npb25DaGVja2VyJiYsIFNwZWVjaFJlY29nbml0aW9uQ2hlY2tJZm1vY2tTcGVl
Y2hSZWNvZ25pdGlvbkVuYWJsZWQmJiwgUmVhbHRpbWVNZWRpYVNvdXJjZUNyZWF0ZUZ1bmN0aW9u
JiYpOwogI2Vsc2UKLSAgICBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihSZWY8SVBDOjpDb25uZWN0
aW9uPiYmLCBTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0
aW9uUGVybWlzc2lvbkNoZWNrZXImJik7CisgICAgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiwgU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyLCBT
cGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DaGVja2VyJiYsIFNwZWVjaFJlY29nbml0aW9uQ2hl
Y2tJZm1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQmJik7CiAjZW5kaWYKIAogICAgIHZvaWQg
c3RhcnQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmll
ciwgU3RyaW5nJiYgbGFuZywgYm9vbCBjb250aW51b3VzLCBib29sIGludGVyaW1SZXN1bHRzLCB1
aW50NjRfdCBtYXhBbHRlcm5hdGl2ZXMsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmKTsKQEAgLTY1
LDcgKzY2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOwotICAgIHZv
aWQgaGFuZGxlUmVxdWVzdChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIGhhbmRsZVJlcXVlc3QoV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
cj4gPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdERhdGE+PiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZW5kVXBkYXRlKGNv
bnN0IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik7CiAKQEAgLTgxLDYgKzgyLDgg
QEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVj
dGlvbkNsaWVudElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3Q+PiBtX3JlcXVlc3RzOwogICAgIFNwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNoZWNrZXIgbV9wZXJtaXNzaW9uQ2hlY2tlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXplcj4gbV9yZWNvZ25pemVyOworICAgIFNwZWVjaFJlY29nbml0
aW9uQ2hlY2tJZm1vY2tTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQgbV9jaGVja0lmbW9ja1NwZWVj
aFJlY29nbml0aW9uRW5hYmxlZDsKKyAgICBib29sIG1faXNSZXNldHRpbmcgeyBmYWxzZSB9Owog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ3JlYXRl
RnVuY3Rpb24gbV9yZWFsdGltZU1lZGlhU291cmNlQ3JlYXRlRnVuY3Rpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2OGRmNjUyNWU1MWIzMGU2
NGVkYTNlNmZmNDJiZmU2YzUxZWZjM2I1Li5mOGQzNmM0YmY1MGI3NGU5ZGEzMTQ4MGQwMmQzMWUy
ZDJlOWE5MDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKQEAgLTE3MjIsMjAgKzE3MjIsMjcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNw
ZWVjaFJlY29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnQKIAogICAg
IEFTU0VSVCghbV9zcGVlY2hSZWNvZ25pdGlvblNlcnZlck1hcC5jb250YWlucyhpZGVudGlmaWVy
KSk7CiAgICAgYXV0byYgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtX3NwZWVjaFJlY29nbml0
aW9uU2VydmVyTWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0g
ICAgc3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9u
U2VydmVyPihtYWtlUmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyLCBbd2Vha1BhZ2UgPSBt
YWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oYXV0byYgb3JpZ2luLCBhdXRvJiYgY29tcGxldGlvbkhh
bmRsZXIpIG11dGFibGUgeworICAgIGF1dG8gcGVybWlzc2lvbkNoZWNrZXIgPSBbd2Vha1BhZ2Ug
PSBtYWtlV2Vha1B0cih0YXJnZXRQYWdlKV0oYXV0byYgb3JpZ2luLCBhdXRvJiYgY29tcGxldGlv
bkhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtQYWdlKSB7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25EZWNpc2lvbjo6
RGVueSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICB3ZWFrUGFn
ZS0+cmVxdWVzdFNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbihvcmlnaW4sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKLSAgICB9CisgICAgfTsKKyAgICBhdXRvIGNoZWNrSWZNb2NrQ2Fw
dHVyZURldmljZXNFbmFibGVkID0gW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSld
KCkgeworICAgICAgICByZXR1cm4gd2Vha1BhZ2UgJiYgd2Vha1BhZ2UtPnByZWZlcmVuY2VzKCku
bW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOworICAgIH07CisKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgICwgW3dlYWtQYWdlID0gbWFrZVdlYWtQdHIodGFyZ2V0UGFnZSldKCkgewor
ICAgIGF1dG8gY3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZSA9IFt3ZWFrUGFnZSA9IG1ha2VXZWFr
UHRyKHRhcmdldFBhZ2UpXSgpIHsKICAgICAgICAgcmV0dXJuIHdlYWtQYWdlID8gd2Vha1BhZ2Ut
PmNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2VGb3JTcGVlY2hSZWNvZ25pdGlvbigpIDogQ2FwdHVy
ZVNvdXJjZU9yRXJyb3IgeyAiUGFnZSBpcyBpbnZhbGlkIiB9OwotICAgIH0KKyAgICB9OworICAg
IHNwZWVjaFJlY29nbml0aW9uU2VydmVyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblNl
cnZlcj4obWFrZVJlZigqY29ubmVjdGlvbigpKSwgaWRlbnRpZmllciwgV1RGTW92ZShwZXJtaXNz
aW9uQ2hlY2tlciksIFdURk1vdmUoY2hlY2tJZk1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQpLCBX
VEZNb3ZlKGNyZWF0ZVJlYWx0aW1lTWVkaWFTb3VyY2UpKTsKKyNlbHNlCisgICAgc3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0aW9uU2VydmVyPihtYWtl
UmVmKCpjb25uZWN0aW9uKCkpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHBlcm1pc3Npb25DaGVja2Vy
KSwgV1RGTW92ZShjaGVja0lmTW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCkpOwogI2VuZGlmCi0g
ICAgKTsKKwogICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllciwgKnNwZWVjaFJlY29n
bml0aW9uU2VydmVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIwYzcxM2YwOTlkODViN2RmNjlmNmQxYjEwMTY1
ZDI4NjhhN2Y0NzUuLjk2MDcxYzg5N2ViZDhjOGExY2M2NTRkMDYzYTFjYjc5YjQxMTc4ZWMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0xMi0xNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgcmVjb2duaXplciBmb3IgU3BlZWNoUmVjb2du
aXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
OTQ1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE5MTQ0NjU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIGZhc3Qvc3BlZWNocmVjb2duaXRpb24v
aW9zL3Jlc3RhcnQtcmVjb2duaXRpb24tYWZ0ZXItc3RvcC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3Qvc3BlZWNocmVjb2duaXRpb24vaW9zL3Jlc3RhcnQtcmVjb2duaXRpb24t
YWZ0ZXItc3RvcC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0aW9u
L2lvcy9zdGFydC1yZWNvZ25pdGlvbi10aGVuLXN0b3AtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL2lvcy9zdGFydC1yZWNvZ25pdGlvbi10aGVu
LXN0b3AuaHRtbDogQWRkZWQuCisKIDIwMjAtMTItMTQgIExhdXJvIE1vdXJhICA8bG1vdXJhQGln
YWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU1NJT04oMjcwNDM1KSBbR1N0cmVhbWVyXSBNYW55
IG1lZGlhIHNvdXJjZSB0ZXN0cyBmYWlsaW5nIGFuZCB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL2lvcy9yZXN0YXJ0LXJlY29nbml0aW9u
LWFmdGVyLXN0b3AtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25p
dGlvbi9pb3MvcmVzdGFydC1yZWNvZ25pdGlvbi1hZnRlci1zdG9wLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NzU4ODI5ZDVmMGIyMzA4NTc1NDlhZjI1MmUwNzYxZGQ0ZGIwNWYxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9pb3MvcmVzdGFy
dC1yZWNvZ25pdGlvbi1hZnRlci1zdG9wLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitW
ZXJpZnkgdGhhdCByZWNvZ25pdGlvbiBjYW4gYmUgcmVzdGFydGVkIGFmdGVyIGJlaW5nIHN0b3Bw
ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJlY29nbml0aW9uID0g
bmV3IFNwZWVjaFJlY29nbml0aW9uKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHJl
Y29nbml0aW9uLnN0YXJ0KCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitSZWNlaXZlZCBzdGFy
dCBldmVudAorUmVjZWl2ZWQgYXVkaW9zdGFydCBldmVudAorUmVjZWl2ZWQgc3BlZWNoc3RhcnQg
ZXZlbnQKK1BBU1MgcmVjb2duaXRpb24uc3RvcCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgor
UmVjZWl2ZWQgZW5kIGV2ZW50CisoV2lsbCByZXN0YXJ0IHJlY29nbml0aW9uKQorUEFTUyByZWNv
Z25pdGlvbi5zdGFydCgpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUmVjZWl2ZWQgc3RhcnQg
ZXZlbnQKK1JlY2VpdmVkIGF1ZGlvc3RhcnQgZXZlbnQKK1JlY2VpdmVkIHNwZWVjaHN0YXJ0IGV2
ZW50CitQQVNTIHJlY29nbml0aW9uLnN0b3AoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1Jl
Y2VpdmVkIGVuZCBldmVudAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRp
b24vaW9zL3Jlc3RhcnQtcmVjb2duaXRpb24tYWZ0ZXItc3RvcC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9pb3MvcmVzdGFydC1yZWNvZ25pdGlvbi1hZnRlci1zdG9w
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmQzODZiZDE2NDcyYThkYjk3NWU2MDQ3MDQyODJmODIwN2ZjOTY4
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24v
aW9zL3Jlc3RhcnQtcmVjb2duaXRpb24tYWZ0ZXItc3RvcC5odG1sCkBAIC0wLDAgKzEsNDYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlZl
cmlmeSB0aGF0IHJlY29nbml0aW9uIGNhbiBiZSByZXN0YXJ0ZWQgYWZ0ZXIgYmVpbmcgc3RvcHBl
ZC4iKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAganNUZXN0SXNBc3luYyA9IHRy
dWU7Cit9CisKK3ZhciBoYXNTdG9wcGVkID0gZmFsc2U7CitzaG91bGROb3RUaHJvdygicmVjb2du
aXRpb24gPSBuZXcgU3BlZWNoUmVjb2duaXRpb24oKSIpOworcmVjb2duaXRpb24uY29udGludW91
cyA9IHRydWU7CisKK3JlY29nbml0aW9uLm9uc3RhcnQgPSAoZXZlbnQpID0+IHsKKyAgICBkZWJ1
ZygiUmVjZWl2ZWQgc3RhcnQgZXZlbnQiKTsKK30KKworcmVjb2duaXRpb24ub25hdWRpb3N0YXJ0
ID0gKGV2ZW50KSA9PiB7CisgICAgZGVidWcoIlJlY2VpdmVkIGF1ZGlvc3RhcnQgZXZlbnQiKTsK
K30KKworcmVjb2duaXRpb24ub25zcGVlY2hzdGFydCA9IChldmVudCkgPT4geworICAgIGRlYnVn
KCJSZWNlaXZlZCBzcGVlY2hzdGFydCBldmVudCIpOworCisgICAgc2hvdWxkTm90VGhyb3coInJl
Y29nbml0aW9uLnN0b3AoKSIpOworfQorCityZWNvZ25pdGlvbi5vbmVuZCA9IChldmVudCkgPT4g
eworICAgIGRlYnVnKCJSZWNlaXZlZCBlbmQgZXZlbnQiKTsKKworICAgIGlmICghaGFzU3RvcHBl
ZCkgeworICAgICAgICBoYXNTdG9wcGVkID0gdHJ1ZTsKKyAgICAgICAgZGVidWcoIihXaWxsIHJl
c3RhcnQgcmVjb2duaXRpb24pIik7CisgICAgICAgIHNob3VsZE5vdFRocm93KCJyZWNvZ25pdGlv
bi5zdGFydCgpIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
fQorfQorCitzaG91bGROb3RUaHJvdygicmVjb2duaXRpb24uc3RhcnQoKSIpOworCis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL2lvcy9zdGFydC1yZWNvZ25p
dGlvbi10aGVuLXN0b3AtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNv
Z25pdGlvbi9pb3Mvc3RhcnQtcmVjb2duaXRpb24tdGhlbi1zdG9wLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZThhZWJkMTA0ZTk0NDhiNWY2MTFhMDdmZTEyM2U3NjE0ZWZmODYyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9pb3Mvc3RhcnQt
cmVjb2duaXRpb24tdGhlbi1zdG9wLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitWZXJp
ZnkgdGhhdCBldmVudHMgYXJlIHJlY2VpdmVkIGNvcnJldGx5IHdoZW4gc3RhcnQgYW5kIHN0b3Ag
cmVjb2duaXRpb24gbm9ybWFsbHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJlY29nbml0aW9uKCkgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIHJlY29nbml0aW9uLnN0YXJ0KCkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitSZWNlaXZlZCBzdGFydCBldmVudAorUmVjZWl2ZWQgYXVkaW9zdGFydCBldmVudAorUmVj
ZWl2ZWQgc3BlZWNoc3RhcnQgZXZlbnQKK1JlY2VpdmVkIHJlc3VsdCBldmVudAorUEFTUyBldmVu
dC5yZXN1bHRzLmxlbmd0aCBpcyAxCitQQVNTIGV2ZW50LnJlc3VsdHMuaXRlbSgwKS5pc0ZpbmFs
IGlzIHRydWUKK1BBU1MgZXZlbnQucmVzdWx0cy5pdGVtKDApLmxlbmd0aCBpcyAxCitQQVNTIGV2
ZW50LnJlc3VsdHMuaXRlbSgwKS5pdGVtKDApLnRyYW5zY3JpcHQgaXMgIlRlc3QiCitQQVNTIGV2
ZW50LnJlc3VsdHMuaXRlbSgwKS5pdGVtKDApLmNvbmZpZGVuY2UgaXMgMQorUEFTUyByZWNvZ25p
dGlvbi5zdG9wKCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitSZWNlaXZlZCBhdWRpb2VuZCBl
dmVudAorUmVjZWl2ZWQgc3BlZWNoZW5kIGV2ZW50CitSZWNlaXZlZCBlbmQgZXZlbnQKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL2lvcy9zdGFydC1yZWNvZ25pdGlv
bi10aGVuLXN0b3AuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3BlZWNocmVjb2duaXRpb24vaW9z
L3N0YXJ0LXJlY29nbml0aW9uLXRoZW4tc3RvcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMGVmNTk0ODk4
OGYyNzVhNGZhZDc3YTllYWNmZGE3ZDA3MGNjZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3NwZWVjaHJlY29nbml0aW9uL2lvcy9zdGFydC1yZWNvZ25pdGlvbi10aGVuLXN0
b3AuaHRtbApAQCAtMCwwICsxLDYxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgdGhhdCBldmVudHMgYXJlIHJlY2VpdmVkIGNv
cnJldGx5IHdoZW4gc3RhcnQgYW5kIHN0b3AgcmVjb2duaXRpb24gbm9ybWFsbHkuIik7CisKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworfQorCit2
YXIgaGFzUmVjZWl2ZWRSZXN1bHQgPSBmYWxzZTsKK3Nob3VsZE5vdFRocm93KCJyZWNvZ25pdGlv
biA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpIik7CityZWNvZ25pdGlvbi5jb250aW51b3VzID0g
dHJ1ZTsKKworcmVjb2duaXRpb24ub25zdGFydCA9IChldmVudCkgPT4geworICAgIGRlYnVnKCJS
ZWNlaXZlZCBzdGFydCBldmVudCIpOworfQorCityZWNvZ25pdGlvbi5vbmF1ZGlvc3RhcnQgPSAo
ZXZlbnQpID0+IHsKKyAgICBkZWJ1ZygiUmVjZWl2ZWQgYXVkaW9zdGFydCBldmVudCIpOworfQor
CityZWNvZ25pdGlvbi5vbnNwZWVjaHN0YXJ0ID0gKGV2ZW50KSA9PiB7CisgICAgZGVidWcoIlJl
Y2VpdmVkIHNwZWVjaHN0YXJ0IGV2ZW50Iik7Cit9CisKK3JlY29nbml0aW9uLm9ucmVzdWx0ID0g
KGV2ZW50KSA9PiB7CisgICAgaWYgKGhhc1JlY2VpdmVkUmVzdWx0KQorICAgICAgICByZXR1cm47
CisgICAgaGFzUmVjZWl2ZWRSZXN1bHQgPSB0cnVlOworCisgICAgZGVidWcoIlJlY2VpdmVkIHJl
c3VsdCBldmVudCIpOworICAgIHNob3VsZEJlKCJldmVudC5yZXN1bHRzLmxlbmd0aCIsICIxIik7
CisgICAgc2hvdWxkQmVUcnVlKCJldmVudC5yZXN1bHRzLml0ZW0oMCkuaXNGaW5hbCIpOworICAg
IHNob3VsZEJlKCJldmVudC5yZXN1bHRzLml0ZW0oMCkubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnJlc3VsdHMuaXRlbSgwKS5pdGVtKDApLnRyYW5zY3Jp
cHQiLCAiVGVzdCIpOworICAgIHNob3VsZEJlKCJldmVudC5yZXN1bHRzLml0ZW0oMCkuaXRlbSgw
KS5jb25maWRlbmNlIiwgIjEiKTsKKworICAgIHNob3VsZE5vdFRocm93KCJyZWNvZ25pdGlvbi5z
dG9wKCkiKTsKK30KKworcmVjb2duaXRpb24ub25hdWRpb2VuZCA9IChldmVudCkgPT4geworICAg
IGRlYnVnKCJSZWNlaXZlZCBhdWRpb2VuZCBldmVudCIpOworfQorCityZWNvZ25pdGlvbi5vbnNw
ZWVjaGVuZCA9IChldmVudCkgPT4geworICAgIGRlYnVnKCJSZWNlaXZlZCBzcGVlY2hlbmQgZXZl
bnQiKTsKK30KKworcmVjb2duaXRpb24ub25lbmQgPSAoZXZlbnQpID0+IHsKKyAgICBkZWJ1Zygi
UmVjZWl2ZWQgZW5kIGV2ZW50Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworc2hvdWxk
Tm90VGhyb3coInJlY29nbml0aW9uLnN0YXJ0KCkiKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>